FPGA数字秒表设计_第1页
FPGA数字秒表设计_第2页
FPGA数字秒表设计_第3页
FPGA数字秒表设计_第4页
FPGA数字秒表设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、基于EDA勺数字秒表设计论文班级: 11 电信二班20111060223张忠义 20111060240基于EDA的数字秒表设计摘要:该设计是用于体育比赛的数字秒表,基于EDAft Quartus II 9.0sp2软件下应用VHD印言编写程序,采用ALTR怂司Cyclonell系列的EP2C8Q208芯片进行了计算机仿真,并给出了相应的仿真结果。本设计有效的克服了传统的数字秒表的缺点采用EDA支术采取自上而下的设计思路。绘制出了具体的逻辑电路,最后又通过硬件上对其进行调试和验证。该电路能够实现很好的计时功能,计时精度高,最长计时时间可达一个小时。关键字 :数字秒表;EDA; FPGA; VHD

2、L; Quartus II1 引言在科技高度发展的今天,集成电路和计算机应用得到了高速发展。尤其是计算机应用的发展。它在人们日常生活已逐渐崭露头角。大多数电子产品多是由计算机电路组成,如:手机、mp30而且将来的不久他们的身影将会更频繁的出现在我们身边。各种家用电器多会实现微电脑技术。电脑各部分在工作时多是一时间为基准的。本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表1。秒表在很多领域充当一个重要的角色。在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验。他们对时间精确度达到了几纳秒级别。2 设计要求(1)能对0秒59分59.99秒范围进行计时,显示最长时间是 59分

3、59秒;(2) 计时精度达到0.01s;(3) 设计复位开关和启停开关,复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。设计由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块实现秒表不同的功能3 数字秒表设计的目的本次设计的目的就是在掌握EDA 实验开发系统的初步使用基础上,了解EDA 技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。在掌握所学的计算机组成与结构课程理论知识时。通过对 数字秒表的设计, 进行理论与实际的结合,提高与计算 机有关设计能力,提高分析、解决计算机技术实际问题的能力。通过课程

4、设计深 入理解计算机结构与控制实现的技术,达到课程设计的目标。如上图所示,计时控制器的作用是控制计时。计时控制器的输入信号是启动, 暂停和清零。为符合惯例,将启动和暂停功能设置在同一个按键上, 按一次是启 动,按第二次是暂停,按第三次是清零。所以计时控制器共有2个开关输入信号, 即启动/暂停和清零信号。计时电路的输入信号、计数允许,保持和清零信号,输出为 100ms 1s和 min的计时数据。时基分频器是一个分频器,产生 100ms周期的脉冲.用于计时 电路时钟信号。显示电路为动态扫描电路。用以显示 min、1s, 100ms信号。5各模块实现计时模块的作用是针对计时过程进行控制。 计时控制模

5、块可用俩个按钮来完 成秒表的启动、停止和复位。时钟分频模块的作用把输入时钟信号变为分频输出信号。计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。它 是由十进制计数器和六进制计数器构成, 其中毫秒位、十毫秒位、秒位和分位采 用十进制计数器,十秒位和十分位采用六进制计数器。计时显示电路的作用是将计时值在 LED数码管上显示出来。计时电路产生的 值经过BCDt段译码后,驱动LED数码管。计时显示电路的实现方案采用扫描显 示。6仿真演示7实验结果演示/wnaaB /590S50W5B05、程序(1)分频模块:module fengpin(CLK,CLK1,CLK2); / 输入 50M

6、Hz 输出分频到 1Hz input CLK;output CLK1,CLK2;reg CLK1,CLK2;reg24:0 counted; / 中间变量counter定义为寄存器型reg24:0 counter2;parameter N1=500000;/50_000_000;parameter N2=2500;always(posedge CLK)begincounter1<=counter1+1'b1;/if(counter1= N1/2-1)beginCLK1 <= CLK1;counter1<=0;endcounter2<=counter2+1'

7、;b1;/if(counter2=N2/2-1)beginCLK2<=CLK2;counter2<=0;endendendmodule( 2)六进制计数器:module CNT6(CLK,RST,EN,CQ,DOUT);input CLK,EN,RST;output 3:0 DOUT;output CQ;reg 3:0 Q1;reg CQ;assign DOUT=Q1;always(posedge CLK or negedge RST)beginif(!RST) Q1<=0;beginif(Q1<5) Q1<=Q1+1'b1;else Q1<=3&#

8、39;b0000;endendalways(Q1)if(Q1=4'h5) CQ=1'b0;else CQ=1'b1;endmodule( 3)十进制计数器:module CNT10(CLK,RST,EN,CQ,DOUT);input CLK,EN,RST;output 3:0 DOUT;output CQ;reg 3:0 Q1;reg CQ;assign DOUT=Q1;always(posedge CLK or negedge RST)beginif(!RST) Q1<=0;else if(EN)beginif(Q1<9) Q1<=Q1+1'

9、b1;else Q1<=4'b0000;endendalways(Q1)if(Q1=4'h9) CQ=1'b0;else CQ=1'b1;endmodule( 4)二十四进制计数器:moduleCNT24(CLK,RST,EN,COUT);input CLK,EN,RST;output7:0 COUT;reg 7:0 COUT;always(posedge CLK)beginif(COUT7:4!=2)beginif(COUT3:0=4'b1001)beginCOUT7:4<=COUT7:4+4'b0001;COUT3:0<=4

10、'b0000;endelsebeginCOUT7:4<=COUT7:4;COUT3:0<=COUT3:0+4'b0001; endendelseif(COUT3:0=4'b0011)beginCOUT7:4<=4'b0000;COUT3:0<=4'b0000;elsebeginCOUT7:4<=COUT7:4;COUT3:0<=COUT3:0+4'b0001;end endendmodule( 5)数码管扫描显示模块:module scan_led(clk_1k,d,dig,seg); / input clk_

11、1k;input31:0 d;output7:0output7:0 seg;reg7:0 seg_r;reg7:0 dig_r;reg3:0 disp_dat;reg2:0count;模块名 scan_led/ 输入时钟/ 输入要显示的数据dig;/数码管选择输出引脚/ 数码管段输出引脚/ 定义数码管输出寄存器/ 定义数码管选择输出寄存器/ 定义显示数据寄存器/ 定义计数寄存器/ 输出数码管assign dig = dig_r;选择/ 输出数码管assign seg = seg_r;endcase译码结果/ 定义上升沿触发进程always (posedge clk_1k)count <=

12、 count + 1'b1;beginendalways (posedge clk_1k)begincase(count)/ 选择扫描显示数据3'd0:disp_dat = d31:28;/ 第一个数码管3'd1:disp_dat = d27:24;/ 第二个数码管3'd2:disp_dat = 4'ha;/ 第三个数码管3'd3:disp_dat = d19:16;/ 第四个数码管3'd4:disp_dat = d15:12;/ 第五个数码管3'd5:disp_dat = 4'hb;/ 第六个数码管3'd6:di

13、sp_dat = d7:4;/ 第七个数码管3'd7:disp_dat = d3:0;/ 第八个数码管endalways (disp_dat)begincase(count)/ 选择数码管显示位3'd0:dig_r = 8'b01111111;/ 选择第一个数码管显示3'd1:dig_r = 8'b10111111;/ 选择第二个数码管显示3'd2:dig_r = 8'b11011111;/ 选择第三个数码管显示3'd3:dig_r = 8'b11101111;/ 选择第四个数码管显示3'd4:dig_r = 8&

14、#39;b11110111;/ 选择第五个数码管显示3'd5:dig_r = 8'b11111011;/ 选择第六个数码管显示3'd6:dig_r = 8'b11111101;/ 选择第七个数码管显示3'd7:dig_r = 8'b11111110;/ 选择第八个数码管显示endcasecase(disp_dat)/ 七段译码4'h0:seg_r = 8'hc0;/ 显示04'h1:seg_r = 8'hf9;/ 显示1endcaseend4'h2:seg_r = 8'ha4;/ 显示24'

15、h3:seg_r = 8'hb0;/ 显示34'h4:seg_r = 8'h99;/ 显示44'h5:seg_r = 8'h92;/ 显示54'h6:seg_r = 8'h82;/ 显示64'h7:seg_r = 8'hf8;/ 显示74'h8:seg_r = 8'h80;/ 显示84'h9:seg_r = 8'h90;/ 显示94'ha:seg_r = 8'hbf;/ 显示a4'hb:seg_r = 8'hbf;/ 显示b/*4'hc:seg_r =

16、 8'hc6;/ 显示 c4'hd:seg_r = 8'ha1;/ 显示 d4'he:seg_r = 8'h86;/ 显示e4'hf:seg_r = 8'h8e;/ 显示f*/endmodule6、原理图:年口。 *.:13*v Q* Q中Q:OTop Vifrwx QK Ac 1Z*0 Q:gMAXIo"oEPM570T1MC5 ,143i心OOO 0 0£Q 0 0 0 VO AO O 0 © ©iVO ooo r B4 1 * * * «0UtpLOutpL7、引脚定义:Earned

17、 |QModeN-m-2囤EG,。】密田segp.,0<<new node>> | <k» Editx(yFilter:因Node NameDrectionLocationI/O BankI/O StandarddkInputPIN_1213.>VLtfTTL (defadt)digOutputPJNJB73.3TLEL (defkilt3Output灯心q23,3-VLmi. (default)led 6OulputF>IN_55j3.37 LVTTL (default)led 5Outputpm_563.3中 LVTTL (defedt)

18、led 4Outputpm_5723.3-VLmi (defadt)led3OutputPIN_5823.3-V LEL (defadt)l«l2OutputPIN_M23.>v lvttl (defkJt)lsdllOutputP1N.6623.3-v LVTTL (de fault JledOOutputPIN_673,3-V LEL (default)seg7Outputpm_7723.3-VLVTTL (default)g叵OutputpmjBZ23.37 LVTTL (defadt)seg国OutputPIN_7B23.3-V Lmi (defadt)seg4|OuitputPJNJ423.3-V IEL (default)seg3OutputPIN 一抬23.3-V LEI. (defsUt)s«g2OutputP1NJ31z3,3 L<TTL (default)seglOutputPDMJ833.3-VLVTTL (default)segO:Outputpm_7623.37 LVTTL (defadt*,CZutnL.8、实验总结本系统设计用了现在ED股计手段,基于FPG配用VHD语言编程实现数字秒表的设计。运用层次化设计方法,完成各电路模块

温馨提示

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

评论

0/150

提交评论