基于FPGA的数字电子时钟设计与实现_第1页
基于FPGA的数字电子时钟设计与实现_第2页
基于FPGA的数字电子时钟设计与实现_第3页
基于FPGA的数字电子时钟设计与实现_第4页
基于FPGA的数字电子时钟设计与实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 课程设计 (论文 说明书题 目:基于 FPGA 的数字电子时 钟设计院 (系 :信息与通信学院专学生姓名:学 号:0900240115指导教师:职2012 年 12 月 25 日一、所用设备与器材1.1仪器设备使用仪器设备有 FPGA DE2-70开发板、 PC机、信号发生器。 图 1 FPGA DE2-70开发板图二.系统方案2.1 设计思想利用数字电子技术、 EDA 设计方法、 FPGA 等技术,设计、仿真并实现一个 基于 FPGA 的数字电子时钟基本功能, 其基本组成框图如图 1所示,振荡器采 用 ALTERA 的 DE2-70实验板的 50MHz 输出,分频器将 50MHz 的方波进

2、行分频进 而得到 1Hz 的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、 六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。扩 展功能设计为倒计时功能,从 59分 55秒至 59分 59秒,每秒亮一盏灯报时。20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎 渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的 提高, 同时也使现代电子产品性能更进一步, 产品更新换代的节奏也越来越快。20世纪 80年代末,出现了 FPGA(Field Progrommable Gate Array, CAE 和 CAD 技术的应用更为广泛,它们在 P

3、CB 设计的原理图输入,自动布局布线及 PCB 分析, 以及逻辑设计,逻辑仿真布尔综合和化简等方面担任了重要的角色,为电子设计自动化必须解决的电路建模,标准文档及仿真测试奠定了基础。硬 件描述语言是 EDA 技术的重要组成部分, VHDL 是作为电子设计主流硬件的描述 语言。本论文就是应用 VHDL 语言来实现秒表的电路设计。 VHDL 语言是标准硬 件描述语言,它的特点就是能形式化抽样表示电路结构及行为,支持逻辑设计 中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟 与验证及保证设计的正确性,支持电路由高层向底层的综合变换,便于文档管 理,易于理解和设计重用。EDA 技术

4、是在电子 CAD 技术基础上发展起来的计算机软件系统,是指以计 算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术 的最新成果,进行电子产品的自动设计。利用 EDA 工具, 电子设计师可以从概念、 算法、 协议等开始设计电子系统, 大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设 计出 IC 版图或 PCB 版图的整个过程在计算机上自动处理完成。现在对 EDA 的概念或范畴用得很宽。 包括在机械、 电子、通信、航空航天、 化工、矿产、生物、医学、军事等各个领域,都有 EDA 的应用。目前 EDA 技术 已在各大公司、 企事业单位和科研教学部门广泛使用。 例

5、如在飞机制造过程中, 从设计、性能测试及特性分析直到飞行模拟,都可能涉及到 EDA 技术。本文所 指的 EDA 技术,主要针对电子电路设计、 PCB 设计和 IC 设计。 EDA 设计可分为 系统级、电路级和物理实现级。用 VHDL 语言开发的流程 :(1 文本编辑:用任何文本编辑器都可以进行, 也可以用专用的 HDL 编辑环境。 通常 VHDL 文件保存为 .vhd 文件。(2 功能仿真:将文件调入 HDL 仿真软件进行功能仿真, 检查逻辑功能是否正 确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完 成以后,进行时序仿真。(3 逻辑综合:将源文件调入逻辑综合软件进行综合, 即把语言综合

6、成最简的 布尔表达式和信号的连接关系。逻辑综合软件会生成 .edf (edif 的 EDA 工业标准文件。(4布局布线:将 .edf 文件调入 PLD 厂家提供的软件中进行布线,即把设计 好的逻辑安放到 PLD/FPGA内。(5编程下载:确认仿真无误后,将文件下载到芯片中。本设计为一个多功能的数字钟,具有时、 分、秒计数显示功能,以 24小时 的循环计数:具有校对功能。 本设计采用 EDA 技术, 以硬件描述语言 VHDL 为系 统逻辑描述手段设计文件, 在 Quartus 工具软件下, 采用自顶向下的设计方 式,由各个基本模块共同构建了一个基本 FPGA 的数字钟。系统主芯片采用 EP2C7

7、0F896C6,有时钟模块、控制模块、计时模块、数据 译码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻 辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行 数字钟的校时、清零、启停功能。随着电子技术的发展,数字电路朝着速度快、容量大、体积小、重量轻的 方向发展。人们对时间计量的精度要求越来越高,钟表的数字化给人们生产生 活带来了极大的方便。数字钟是一种用数字电路技术实现时、分、秒计时的装 置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更 长的使用寿命,因此得到了广泛的使用。本次设计以数字电子为主, 实现对时、 分、 秒数字显示的计时装置

8、 , 周期为 24小时,显示满刻度为 23时 59分 59秒,并具有校时功能和报时功能的数字 电子钟。课程设计所采用的开发平台:Quartus II 是可编程片上系统的综合性 设计环境,它支持 CPLD 和 FPGA 器件的开发。 FPGA (Field Programmable Gate Array 现场可编程门阵列, 内部主要由许多可编程逻辑模块组成, 靠纵横交错 的分布式可编程互连线连接起来,可构成极其复杂的逻辑电路。本次课程设计 所采用的 FPGA 芯片 Cyclone II系列的 EP2C70F896C6。2.2工作原理及系统框图利用数字电子技术、 EDA 设计方法、 FPGA 等技

9、术,设计、仿真并实现一个 基于 FPGA 的数字电子时钟基本功能, 其基本组成框图如图 1所示, 振荡器采用 ALTERA 的 DE2-70实验板的 50MHz 输出,分频器将 50MHz 的方波进行分频进而 得到 1Hz 的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六 十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。电子 时钟扩展功能为倒计时流水灯。数字电子钟的电路组成框图片如下图 : 图 15 系统框图1. 数字钟电路系统由主体电路和扩展电路两大部分所组成。2. 数字电子时钟电路具有时、分、秒计时,秒计数器计满 60后向分计数器进 位,分计数器计满 60后向小

10、时计数器进位,小时计数器按照“ 24进制”规律 计数。3. 准确计时, 以数字形式显示时、 分、秒的时间,计数器的输出经译码器送显 示器。4. 具有分、时校正功能,校正输入脉冲频率为 1Hz5. 复位功能,时、分、秒计时清零。6. 扩展功能为:具有仿广播电台整点报时的功能,即每逢 59分 51秒、 52秒、 53秒、 54秒、 55秒及 57秒, LED 绿灯依此点亮, 59分 59秒时, LED 红灯亮, 形成倒计时流水灯报时。三.软件方案3.1 程序流程图小时采用 24进制计时,当 CP , EN 和 nCR 为高电平时计数,计数范围为 0,23, 使能信号 EN 等于 0时, 计时器保持

11、。 当高位大于 2或高位等于 2且低 位大于 3时,计时器清零,否则继续计时。流程图见下图。 图 16 24进制程序流程图当 CP , EN 和 nCR 为高电平时计数, 计数范围为 0,9, 使能信号 EN 等于 0时,计时器保持。当计时到 9的时候,计时器清零,否则继续计时。流程图 见下图。 图 17 10进制流程图当 CP , EN 和 nCR 为高电平时计数, 计数范围为 0,5, 使能信号 EN 等于 0时,计时器保持。当计时到 5的时候,计时器清零,否则继续计时。流程图 见下图。 图 18 6进制流程图分、秒采用 60进制计时,当 CP , EN 和 nCR 为高电平时计数,计数范

12、围 为 0,59,使能信号 EN 等于 0时,计时器保持。当个位等于 9时向十位进位; 当个位等于 9十位等于 5,计时器清零,否则继续计时。流程图见下图。 图 19 60进制流程图数码管有 7段组成,分共阳极和共阴极,本次设计采用共阳极数码管。当 输入为低电平时,数码管显示;当输入为高电平时,数码管不显示。用这样的 方法输入不同的高低信号控制数码管的显示。 图 20 from0to9流程图 图 21 分频模块流程图 图 22 总流程图3.2 程序清单module complete_clock(HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,_50MHzIn,_1Hz,_50Hz,

13、 _5KHz,_500KHz,AdjMinkey,AdjHrkey,nCR,Alarm,LED0,LED10,LED3,LED4,LED5,LED6,LED 7,LED8,LED9 ;output 7:0 HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;output Alarm,_1Hz,_50Hz,_5KHz,_500KHz;output LED0;output LED10;output LED3;output LED4;output LED5;output LED6;output LED7;output LED8;output LED9;wire 7:0 HEX0,HEX1,H

14、EX2,HEX3,HEX4,HEX5;input nCR,_50MHzIn;wire _1Hz,_50Hz,_5KHz,_500KHz;wire LED0;wire LED10;wire LED3;wire LED4;wire LED5;wire LED6;wire LED7;wire LED8;wire LED9;input AdjMinkey,AdjHrkey;wire 7:0 Second,Minute,Hour;Divided_Frequency C1(_5KHz,_500KHz,nCR,_50MHzIn;/调用分频模块,输入 50MHz 的 频率,经两次分频后变为 5KHz Divi

15、ded_Frequency U0(_1Hz,_50Hz,nCR,_5KHz;/调用分频模块,输入 5KHz 的频率,经 两次分频后变为 1Hztop_clock U1(Hour,Minute,Second,_1Hz,nCR,AdjMinkey,AdjHrkey;/调用校时模块, 对时、 分模块进行校时 baoshi U2(Alarm_Ring,Minute,Second,_50Hz,_5KHz;assign Alarm=Alarm_Ring;assign LED0=(Minute,Second=16'h5951;/定义 LED0为 59分 51秒时灯亮assign LED10=(Min

16、ute,Second=16'h5952;/定义 LED10为 59分 52秒时灯亮assign LED3=(Minute,Second=16'h5953;/定义 LED3为 59分 53秒时灯亮assign LED4=(Minute,Second=16'h5954;/定义 LED4为 59分 54秒时灯亮assign LED5=(Minute,Second=16'h5955;/定义 LED5为 59分 55秒时灯亮assign LED6=(Minute,Second=16'h5956;/定义 LED6为 59分 56秒时灯亮assign LED7=(Mi

17、nute,Second=16'h5957;/定义 LED7为 59分 57秒时灯亮assign LED8=(Minute,Second=16'h5958;/定义 LED8为 59分 58秒时灯亮assign LED9=(Minute,Second=16'h5959;/定义 LED9为 59分 59秒时灯亮 from0to9 U10(HEX0,Second3:0; /个位秒调用译码from0to9 U9(HEX1,Second7:4; /十位秒调用译码from0to9 U3(HEX2,Minute3:0; /个位分调用译码from0to9 U4(HEX3,Minute7:

18、4; /个位分调用译码from0to9 U5(HEX4,Hour3:0; /个位时调用译码from0to9 U6(HEX5,Hour7:4; /十位时调用译码endmodulemodule counter24(CntH,CntL,nCR,EN,CP;input CP,nCR,EN;output 3:0 CntH,CntL;reg 3:0 CntH,CntL;always (posedge CP or negedge nCRbeginif(nCR CntH,CntL<=8'h00;/当 nCR=0时,计时器清零else if(EN CntH,CntL<=CntH,CntL;/

19、当 EN=0时 , 停止计时,保持else if(CntH>2|(CntH>9|(CntH=2&&(CntL>=3CntH,CntL<=8'h00;else if(CntH=2&&(CntL<3begin CntH<=CntH;CntL<=CntL+1'b1;endelse if(CntL=9begin CntH<=CntH+1'b1;CntL<=4'b0000;endelsebegin CntH<=CntH;CntL<=CntL+1'b1;endendEn

20、dmodulemodule counter60(Q1,Q2,Q3,Q4,Q5,Q6,Cnt,Cnt1,Cnt24,nCR,EN,CP,LED,LED1,LED2; input CP,nCR,EN;output 7:0 Cnt;output 7:0 Cnt1;output 7:0 Cnt24;output 6:0 Q1;output 6:0 Q2;output 6:0 Q3;output 6:0 Q4;output 6:0 Q5;output 6:0 Q6;output LED;output LED1;output LED2;wire 7:0 Cnt;wire 7:0 Cnt1;wire 7:0

21、 Cnt24;wire 6:0 Q1;wire 6:0 Q2;wire 6:0 Q3;wire 6:0 Q4;wire 6:0 Q5;wire 6:0 Q6;wire LED;wire LED1;wire LED2;wire ENP;wire ENP1;wire ENP2;wire ENP3;counter10 UC0(Cnt3:0,nCR,EN,CP;counter6 UC1(Cnt7:4,nCR,ENP,CP;counter10 UC2(Cnt13:0,nCR,ENP1,CP;counter6 UC3(Cnt17:4,nCR,ENP2,CP;counter24 UC4(Cnt247:4,C

22、nt243:0,nCR,ENP3,CP;assign ENP=(Cnt3:0=4'h9;assign ENP1=(Cnt=8'h59;assign ENP2=(Cnt13:0=4'h9&&(Cnt=8'h59;assign ENP3=(Cnt1=8'h59&&(Cnt=8'h59;assign LED=CP;assign LED1=CP;assign LED2=CP;from0to9 UC5(Q1,Cnt3:0;from0to9 UC6(Q2,Cnt7:4;from0to9 UC7(Q3,Cnt13:0;from0

23、to9 UC8(Q4,Cnt17:4;from0to9 UC9(Q5,Cnt243:0;from0to9 UC10(Q6,Cnt247:4;Endmodulemodule from0to9(HEX,D;output 6:0 HEX;input 3:0 D;reg 6:0 HEX;always (Dbegincase(D4'd0:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b0000001; 4'd1:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b1001111; 4'd2:HEX0,HEX1,H

24、EX2,HEX3,HEX4,HEX5,HEX6=7'b0010010;4'd3:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b0000110; 4'd4:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b1001100; 4'd5:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b0100100; 4'd6:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b0100000; 4'd7:HEX0,HEX1,HE

25、X2,HEX3,HEX4,HEX5,HEX6=7'b0001111; 4'd8:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b0000000; 4'd9:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b0000100; default:HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6=7'b1111111; endcaseendendmodulemodule counter6(Q,nCR,EN,CP;input CP,nCR,EN;output 3:0 Q;reg 3:

26、0 Q;always (posedge CP or negedge nCRbeginif(nCR Q<=4'b0000;/当 nCR=0时,计时器清零else if(EN Q<=Q;/当 EN=0时 , 停止计时,保持else if(Q=4'b0101 Q<=4'b0000;else Q<=Q+1'b1;/计时器正常计时endEndmodulemodule counter10(Q,nCR,EN,CP;input CP,nCR,EN;output 3:0 Q;reg 3:0 Q;always (posedge CP or negedge n

27、CRbeginif(nCR Q<=4'b0000;/当 nCR=0时,计时器清零else if(EN Q<=Q;/当 EN=0时 , 停止计时,保持else if(Q=4'b1001 Q<=4'b0000;else Q<=Q+1'b1;/计时器正常计时endEndmodulemodule Divided_Frequency(_1HzOut,nCR,_5kHzIN;input _5kHzIN,nCR;output _1HzOut;supply1 Vdd;/定义 Vdd 是高电平wire 15:0 Q;/计时器的输出信号 (中间变量 wire

28、 EN1,EN2,EN3;/ 计时器的使能信号 (中间变量 counter10 DU0(Q3:0,nCR,Vdd,_5kHzIN;/调用十进制counter10 DU1(Q7:4,nCR,EN1,_5kHzIN;counter10 DU2(Q11:8,nCR,EN2,_5kHzIN;counter10 DU3(Q15:12,nCR,EN3,_5kHzIN;assign EN1=(Q3:0=4'h9;assign EN2=(Q7:4=4'h9&(Q3:0=4'h9;assign EN3=(Q11:8=4'h9&(Q7:4=4'h9&(Q3:0=4'h9;assign _1HzOut=Q15;/assign _500HzOut=Q0;endmodulemodule top_clock(Second,Minute,Hour,_1Hz,nCR,AdjMinKey,AdjHrkey;input _1Hz,nCR,AdjMinKey,AdjHrkey;output 7:0 Second,Min

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论