FPGA课程设计报告.docx

上传人:b****4 文档编号:4245083 上传时间:2022-11-28 格式:DOCX 页数:29 大小:1.65MB
下载 相关 举报
FPGA课程设计报告.docx_第1页
第1页 / 共29页
FPGA课程设计报告.docx_第2页
第2页 / 共29页
FPGA课程设计报告.docx_第3页
第3页 / 共29页
FPGA课程设计报告.docx_第4页
第4页 / 共29页
FPGA课程设计报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

FPGA课程设计报告.docx

《FPGA课程设计报告.docx》由会员分享,可在线阅读,更多相关《FPGA课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。

FPGA课程设计报告.docx

FPGA课程设计报告

 

课程设计

 

开课学期:

2014年—2015年下学期

课程名称:

FPGA课程设计

学院:

信息科学与工程学院

专业:

集成电路设计与集成系统

班级:

集成1201班

学号:

20121221077

姓名:

任课教师:

 

2015年7月21日

基于FPGA的数字钟设计

摘要

 

本文介绍一种利用现场可编程逻辑器件FPGA产生多功能数字钟的设计方案。

数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,是人们日常生活中不可少的必需品。

本设计采用EDA技术,以硬件描述语言Verilog为系统逻辑描述手段设计文件,在QuartusII工具软件环境下,由各个基本模块共同构建了一个基于FPGA的数字钟。

 

系统由时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。

经编译和仿真所设计的程序,在可编程逻辑器件上下载验证。

开发板采用5CSEMA5F31C6N。

本次设计的多功能数字钟,具有时、分、秒的数码管显示功能,以24小时循环计数,具有整点报时功能,并有由按键输入进行数字钟的校时、清零、启停功能。

 

关键词:

可编程逻辑器件FPGAVerilog数字钟EDA技术

 

 

Abstract

ThispaperintroducesakindofbasedonfieldprogrammablelogicdeviceFPGAdesignofmulti-functiondigitalclock,thedigitalclockisusedindigitalcircuits,andsecondsdigitaldisplaytimingdeviceisinpeople'sdailylifenecessities.

ThisdesignusingEDAtechnology,hardwaredescriptionlanguageVeriloglogicsystemdescriptionmethodofdesigndocuments,intheQuartusIIsoftwareenvironment,byallthebasicmodulestogethertobuildaaFPGAbaseddigitalclock.

Systemconsistsoftheclockmodule,controlmodule,timemodule,datadecodingmodule,displayandbroadcastmodulecomposition.Programaftercompilationandsimulationdesign,programmablelogicdevicetodownloadverification.Developmentboardusingthemulti-functiondigitalclock5CSEMA5F31C6N.thisdesign,withtime,points,theseconddigitaltubedisplay,toa24-hourcyclecount,withthewholepointtimekeepingfunctionandinputbythekeyoftheschoolofdigitalclock,clear,openandstopfunction.

 

Keywords:

programmablelogicdeviceFPGAVerilogDigitalcloc

EDATechnology

 

 

前 言

 

现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。

支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。

前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronic design automatic,EDA)技术。

 

本设计采用的Verilog是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。

ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。

而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。

 

在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键按下的时候,系统应该完成该键所设置的功能。

因此,键信息输入是与软件结构密切相关的过程。

根据键盘的结构不同,采用不同的编码方法。

但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。

 

钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

 

第1章多功能数字钟概述

1.1数字钟的构成

数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路构成数字钟。

图3-1所示为数字钟的一般构成框图。

主要包括时间基准电路、计数器电路、控制电路、译码和显示电路。

其中的控制逻辑电路是比较灵活多样的,不断完善它可以增强数字钟的功能。

图1.1-1数字钟的一般组成框图

1.2多功能数字钟的基本原理

通过分析多功能数字钟的设计要求和所要实现的功能,应用层次化方法设计出数字钟应由计时模块、分频脉冲模块、译码显示模块、校时校分和清零模块、报时模块等几个模块组成,其原理框图如下图1.2-1所示:

图1.2-1数字钟的原理图

1.3计时电路 

通过分析数字钟的功能,知道数字钟计时周期是24小时,因此必须设置模24的小时计数器,两个模为60的计数器实现分和秒的计数,三个计数器之间构成进为关系,即秒计数器为分计数器提供计数脉冲信号,分计数器为时计数器提供计数脉冲信号。

另外,如果想要数字钟还可以显示星期的话,还应添加一个模7的星期计数器,由时计数器提供计数脉冲信号。

从全局设计考虑计时器应具有使能端和异步清零端。

 

多功能数字钟应该具有的功能:

显示时-分-秒。

整个电子钟的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的围是从0~23时。

复位后全部显示00-00-00。

在设计中为了显示的方便,分钟和秒钟(显示的围都是从00~59),小时(00~23)的十位和个位都应该采用十进制计数器。

图1.3-1总体结构

 

1.4异步清零电路 

为实现异步清零功能,可以将异步清零开关KK3分别和各个计数器的清零信号的取反相或非后再接给清零端。

这样,当KK3关闭(低电平)时,计数器正常计数;当开关KK3开启(高电平)时,计数器全部异步清零。

  

1.5校时、校分功能电路 

数字钟的校时和校分功能原理相同,通过开关KK1、KK2控制工作状态。

当KK1打到低电平、KK2打到低电平时,各计数器的ENT端接的都是正常计数信号,ENP端都是高电平,各个计数器均正常计数;当KK1打到高电平、KK2打到低电平时,分个计数器的ENP端接的是KK2的非(高电平),进位信号正常送入分十位计数器的ENT端,分计数器快速校分,而由于秒计数器和时计数器的个位的ENP端接的是KK1的非,所以秒计数器和时计数器被保持;当KK1打到低电平、KK2打到高电平时,正常进位信号被阻塞,分计数器可以不接受秒计数器的进位信号控制,校时信号便被送入CP端,时计数器可以进行快速校时。

 

以上3部分功能可放在同一模块中实现,电路图如1.5-1所示:

图1.5-1报时电路

仿真结果如下图1.3所示:

图1.3报时电路的仿真

 

第二章FPGA简介

2.1现场可编程逻辑门阵列FPGA

FPGA(现场可编程门阵列)与CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件的基础之上发展起来的。

但FPGA/CPLD的规模较大,非常适合于对时序、组合等逻辑电路应用场合,它可以替代几十甚至上百块通用IC芯片。

 

高速和高可靠是FPGA最明显的特点,当今的该类可编程器件,其最高工作频率可达百兆级,其时钟延迟可达纳秒级,结合其并行工作方式,在超高速应用领域和实时测控方面有非常广阔的应用前景。

 

FPGA的设计是基于查找表来实现的。

查找表就是实现将输入信号的各种组合功能以一定的次序写入RAM中,然后在输入信号的作用下,输出特定的函数运算结果。

其结构图如图2.1-1所示。

图2.1-1查表结构图

一个N输入查找表(LUT,LookUpTable)可以实现N个输入变量的任何逻辑功能,如N输入“与”、N输入“异或”等。

 

输入多于N个的函数、方程必须分开用几个查找表(LUT)实现(如图2.1-2所示)。

图2.1-2FPGA查找表单元部结构

2.2FPGA简介

FPGA是FiledProgranmmableGateArray的缩写,即现场可编程逻辑阵列。

FPGA是在CPLD的基础上发展起来的新型高性能可编程逻辑器件它一般采用SRAM工艺,也有一些专用器件采用Flash工艺或反熔丝(Anti_Fuse)工艺等。

FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。

FPGA的基本组成部分有可编程输入/输出单元,基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元、嵌专用硬核等。

FPGA的主要器件供应商有Xilinx、Altera、Lattice、Actel和Atmel等。

               

2.3QuartusII软件简介 

QuartusII是Alera公司推出的一款功能强大,兼容性最好的EDA工具软件。

该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点。

 

QuartusII是Altera公司推出的CPLD/FPGA开发工具,QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:

可利用原理图、结构框图、VerilogHDL、AHDL和Verilog完成电路描述,并将其保存为设计实体文件;芯片平面布局连线编辑;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、Verilog网表文件和Verilog网表文件;能生成第三方EDA软件使用的Verilog网表文件和Verilog网表文件。

 

第3章设计方案

多功能数字钟应该具有的功能有:

显示时—分—秒、整点报时、小时和分钟可调等基本功能。

整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的围为0~23时。

在实验中为了显示的方便,由于分钟和秒钟显示的围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为他的围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz进行分频。

对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。

管脚分配如下表:

端口名

使用模块信号

对应FPGA管脚

说明

S1

按键开关S1

R16

调整小时

S2

按键开关S2

P14

调整分钟

RST

按键开关S8

M15

复位

LED

LED模块D1

L14

整点倒计时

LEDAG0

数码管模块A段

N4

 

时间显示

LEDAG1

数码管模块B段

G4

LEDAG2

数码管模块C段

H4

LEDAG3

数码管模块D段

L5

LEDAG4

数码管模块E段

L4

LEDAG5

数码管模块F段

K4

LEDAG6

数码管模块G段

K5

SEL0

数码管选择位1

M4

8个数码管

的选择位

SEL1

数码管选择位2

F3

SEL2

数码管选择位3

F4

CP

脉冲源

J3

50Mhz脉冲

 

第4章设计实现

4.1顶层模块

本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图4.1-1所示:

图4.1-1顶层结构框图

4.2新建工程项目

在E盘建立项目工程文件夹,如E:

/fpga-keshe/lw-clock,打开QuartusII软件,执行【File】→【New Project Wizard】选项,按如图4.2-1所示设置。

图4.2-1新建工程项目

4.3选择芯片

该系统设计中,FPGA芯片用的是ALTERA公司的5CSEMA5F31C6,它由若干个逻辑单元和中央布线池加I/O端口构成,然后再选择VerilogHDL语言。

如图4.3-1所示。

图4.3-1选择所需芯片和语言

最后单击Finish按钮,创建好了设计工程,选择【FILE】>【NEW】菜单,出现如图4.3-2所示的新建设计文件类型窗口。

图4.3-2选择编程Verilog文本文件

在上图4.3-2中选择【VerilogHDLFile】,单击【OK】建立一个新的文本设计文件,命名为clock.v。

4.4子模块

4.4.1分频器

分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1000hz的信号,作为显示器的输入信号。

modulefenpin(CP,CPout,Cout,CP_En);

inputCP,

outputCPout;

regCPout;

reg[31:

0]Cout;

regCP_En;

always(posedgeCP)//将50MHz分频为1kHz

begin

Cout<=(Cout==32'd50000)?

32'd0:

(Cout+32'd1);

CP_En<=(Cout==32'd50000)?

1'd1:

1'd0;

CPout<=CP_En;

end

Endmodule

保存文件。

功能仿真波形如图4.4.2-1所示(以五分频为例):

图4.4.1-1

4.4.2控制器和计数器

控制器的作用是,调整小时和分钟的值,并能实现清零功能。

计数器的作用是实现分钟和秒钟满60进1,小时则由23跳到00。

当到达59分55秒的时候,LED灯会闪烁来进行报时。

因为控制器和计数器的驱动信号频率均为1Hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1Khz变为1Hz。

源程序如下:

modulekongzhiqi(CPout,S1,S2,RET,Hour,Minute,Second,LED);

inputCPout,S1,S2,RET;

output[5:

0]Hour;

output[5:

0]Minute;

output[5:

0]Second;

outputLED;

reg[5:

0]Hour;

reg[5:

0]Minute;

reg[5:

0]Second;

regR1;

regR2,R8,LED;

reg[10:

0]Cout;

regClk_En;

always(posedgeCPout)

begin

if(S1==0)

begin

R1=1;

end

if(S2==0)

begin

R2=1;

end

if(RET==0)

begin

R8=1;

end

Cout=(Cout==32'd1000)?

32'd0:

(Cout+32'd1);

Clk_En=(Cout==32'd1000)?

1'd1:

1'd0;

if(Clk_En)

begin

if(R1==1)

begin

if(Hour<24)

Hour=Hour+1;

if(Hour==24)

begin

Hour=0;

end

R1=0;

end

if(R2==1)

begin

if(Minute<60)

Minute=Minute+1;

if(Minute==60)

begin

Minute=0;

if(Hour<24)

Hour=Hour+1;

if(Hour==24)

begin

Hour=0;

end

end

R2=0;

end

if(Second<60)

Second=Second+1;

if(Second==60)

begin

Second=0;

if(Minute<60)

Minute=Minute+1;

if(Minute==60)

begin

Minute=0;

if(Hour<24)

Hour=Hour+1;

if(Hour==24)

begin

Hour=0;

end

end

end

if((Minute==59)&&(Second>55))//整点倒计时

begin

if(LED==1)

LED=0;

else

LED=1;

end

else

LED=0;

if(R8==1)//清零

begin

Hour=0;

Minute=0;

Second=0;

R8=0;

end

end

end

Endmodule

保存文件。

功能仿真波形如图4.4.2-1所示:

图4.4.2-1

4.4.3显示器

显示器的作用是将时—分—秒的值在数码管上依次显示出来。

从分频器输出的1Khz的信号作为数码管的扫描信号。

SEL表示三个数码管选择位,它的取值表示八个数码管,从左至右依次是111~000。

LEDGA表示七段数码管,它的取值决定特定位数上显示的数字。

源程序如下:

moduleclock(CPout,Hour,Minute,Second,SEL,LEDAG);

inputCPout;

inputHour,Minute,Second;

outputSEL,LEDAG;

reg[2:

0]SEL;

reg[6:

0]Led;

reg[3:

0]shi1,ge1,shi2,ge2,shi3,ge3;

always(posedgeCPout)

begin

shiwei1=Hour/10;

gewei1=Hour%10;

shiwei2=Minute/10;

gewei2=Minute%10;

shiwei3=Second/10;

gewei3=Second%10;

if(SEL==3'b110)//判断位选SEL的值,并将此位上的值输出到数码管

case(shiwei1)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7'b1011_011;

4'b0011:

Led=7'b1001_111;

4'b0100:

Led=7'b1100_110;

4'b0101:

Led=7'b1101_101;

4'b0110:

Led=7'b1111_101;

4'b0111:

Led=7'b0000_111;

4'b1000:

Led=7'b1111_111;

4'b1001:

Led=7'b1101_111;

default:

Led=7'b0000_000;

endcase

if(SEL==3'b101)

case(gewei1)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7'b1011_011;

4'b0011:

Led=7'b1001_111;

4'b0100:

Led=7'b1100_110;

4'b0101:

Led=7'b1101_101;

4'b0110:

Led=7'b1111_101;

4'b0111:

Led=7'b0000_111;

4'b1000:

Led=7'b1111_111;

4'b1001:

Led=7'b1101_111;

default:

Led=7'b0000_000;

endcase

if(SEL==3'b100)

Led=7'b1000_000;

if(SEL==3'b011)

case(shiwei2)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1