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

下载本文档

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

文档简介

1、AU谦室2尊通达学院2017/2018学年第一学期课程设计模块名称专业学生班级学生学号学生姓名指导教师实验报告VHDL课程设计设计题目数字秒表设计任务要求(1)计时精度10ms,计时范围04分59、99秒;(2)设置启动、停止与复位键控制秒表的工作(3)用数码管实时显示计时结果。设备及软件QuasterH目录一、课程设计目的与要求01、1课程设计目的01、2基本要求0二、设计方案-数字秒表的设计02、1设计功能02、2秒表基本原理及设计方法12、3数字秒表设计原理1三、开发环境1四、模块结构14、1数字秒表RTLM电路14、2计时器模块34、3取数模块44、4编码模块54、5数码管显示控制模块

2、84、6数码管地址选择模块9五、设计仿真与实验105、1计时器模块仿真105、2秒表仿真105、3pin引脚接口图105、4实验结果图10六、总结与体会116、1错误分析116、2心得体会11七、参考文献11、课程设计目的与要求1、1课程设计目的EDA技术综合设计与实践(注:EDA即电子设计自动化,ElectronicsDesignAutomation)就是继模拟电子技术基础、数字电子技术基础、电子技术基础实验、EDA等课程后,电子类等专业学生在电子技术实验技能方面综合性质的实验训练课程,就是电子技术基础的一个部分,其目的与任务就是通过一周的时间,让学生掌握EDA的基本方法,熟悉一种EDA软件

3、(QuartusII),并能利用EDA软件设计一个电子技术综合问题,并在实验板上成功下载,为以后进行工程实际问题的研究打下设计基础。1、 2基本要求(1) 通过课程设计使学生能熟练掌握一种EDA软件(QuartusII)的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程。(2) 通过课程设计使学生能利用EDA软件(QuartusII)进行至少一个电子技术综合问题的设计(内容可由老师指定或自由选择),设计输入采用VerilogHDL硬件描述语言输入法。(3) 通过课程设计使学生初步具有分析、寻找与排除电子电路中常见故障的能力。(4) 通过课程设计使学生能独立写出严谨的、有理论根据的、实事

4、求就是的、文理通顺的课程设计报告。-数字秒表的设计2、 1设计功能(1)计时功能:设计一个秒表,该秒表计时范围为0-59分59秒990毫秒,分辨率为10毫秒(0、01秒)。 2) 显示功能:分、秒、毫秒各用2位数码管(共6位数码管)显示。 3) 3)清零,启动计时,暂停及继续计时功能:2、2秒表基本原理及设计方法(1)秒表的基本结构:该秒表有3个输入端,分别为时钟输入(输入时钟为1毫秒)、复位输入与启动/暂停。(2)复位信号高电平有效,可以对整个系统异步清0;当启动/暂停为低电平时秒表开始计时,为高电平时暂停,变低后在原来的数值基础上再计数。(3)百分秒、秒与分钟信号用七段LED显示。(4)毫

5、秒计数器”采用100进制计数器,每累计1000毫秒(1秒)产生一个秒脉冲”信号,该信号将作为秒计数器”的时钟脉冲。秒计数器”采用60进制计数器,每累计60秒,发出一个分脉冲”信号,该信号将被送到分计数器分计数器”采用60进制计时器,可实现对60分钟的累计。2、3数字秒表设计原理数字秒表采用模块化设计电平日(2)计时器:以10ms(3R注哪信,一数桢块:k十时器输出的分、(20MHz)每I60一秒之10ms 产为萨赤,分辨率,清零蟠叫高电平有效),启勘/暂停靖数吗管“分脉迎”唯个“10iitr秒模十毫秒信号谑n(4)编硒前翦:将分、曲、十毫秒的十进制数转换成数码管(5)数码管显示控制模块号 en

6、ipt(0蠢秒脉i独样信号k ,每990ms产生逐位取效,变成将在数码管上显示数码泞同示的编湿示捽;|刃模块3ms使能更新不同数码管的数据,6位数码管更新二次共用时段伊进曾 18ms,就是同时点亮的,并不察觉有闪烁现,6位数码管一共用时 18ms。新频率大于50HZ,利用人的视觉暂留,好彳象6位LED象;(6)数码管地址选择模块:每隔3ms使能点亮不同的数码管三、开发环境开发环境:1、PC机一台2、WindowsXP32位操作系统3、Altera公司的QuartusII9、0软件4、基于CycloneII型EP2C8Q208C8的开发板四、模块结构4、1数字秒表RTL级电路modulecoun

7、ter_top(clk,en_count,clr,row_scan_sig,column_scan_sig);putclr;utput7:0/clear113r“_er必尸q!JJmijbFJI)«1hcMH1上f:-.Ich_d!to|7A巾5_卬7k-_hnIanJah.-IMur*trowan_sig;output5:.tik!JU1snirnE«r.E+r_s*p.Q"肛口cEmorc.ilaT5JTcolumn_scan_sig;wire7:0ms,sec,min;wire3:0ms_hun,ms_ten,sec_ten,sec_one,min_ten,

8、min_one;wire7:0ms_ten_dis,ms_hun_dis,sec_ten_dis,sec_one_dis,min_ten_dis,min_one_dis;countU0(、clk(clk),、clr(clr),、en_count(en_count),、ms(ms),、sec(sec),、min(min)/output-toU1);number_modU1(、clk(clk),、clr(clr),、en_count(en_count),、ms(ms),、sec(sec),、min(min),/input-fromU0、ms_ten(ms_ten),、ms_hun(ms_hun),

9、/output-toU2、sec_one(sec_one),、sec_ten(sec_ten),/output-toU2、min_one(min_one),、min_ten(min_ten)/output-toU2);encoderU2(、clk(clk),、clr(clr),、en_count(en_count),、ms_ten(ms_ten),、ms_hun(ms_hun),、sec_one(sec_one),、sec_ten(sec_ten),、min_one(min_one),、min_ten(min_ten,一一/input-fromU1/input-fromU1/input-fro

10、mU1、ms_ten_dis(ms_ten_dis),、ms_hun_dis(ms_hun_dis),、sec_one_dis(sec_one_dis),、sec_ten_dis(sec_ten_dis),/output-toU3/output-toU3、min_one_dis(min_one_dis),、min_ten_dis(min_ten_dis)/output-toU3);row_scanU3(一、clk(clk),、clr(clr),、en_count(en_count),、ms_ten_dis(ms_ten_dis),、ms_hun_dis(ms_hun_dis),、sec_one

11、_dis(sec_one_dis),、sec_ten_dis(sec_ten_dis),、min_one_dis(min_one_dis),、min_ten_dis(min_ten_dis),、row_scan_sig(row_scan_sig)/outputoftop/input-fromU2/input-fromU2/input-fromU2);columnscanU4、clk(clk),、clr(clr),、column_scan_sig(column_scan_sig)/outputoftop);endmodule4、2计时器模块输入信号:基准时钟clk,清零端clr,启动/暂停信号e

12、n_count输出信号:分min、秒seo毫秒msmodulecount(clk,clr,en_count,ms,sec,min);inputclk,clr,en_count;ms,sec,min;itlk叫er®ri_ca<jntcounfUOoutput7:0reg17:0count1;reg7:0r_min,r_sec,r_ms;parameterT10MS=18'd199_999;/parameterT10MS=18'd1;/*setT10MS=18'd1forsimulation*/always(posedgeclkorposedgeclr)i

13、f(clr)countl<=18'd0;elseif(countl=T10MS)countl<=18'd0;elsecount1<=count1+1'b1;always(posedgeclkorposedgeclr)if(clr)beginr_min<=8'd0;r_sec<=8'd0;r_ms<=8'd0;endelseif(en_count)beginr_min<=r_min;r_sec<=r_sec;r_ms<=r_ms;endelsebeginif(count1=T10MS)begin

14、if(r_ms=8'd99)beginr_ms<=8'd0;if(r_sec=8'd59)beginr_sec<=8'd0;if(r_min=8'd59)r_min <= r_min + 1'b1;r_min<=8'd0;elseendelser_sec<=r_sec+1'b1;endelser_ms<=r_ms+1'b1;endendassignms=r_ms;assignsec=r_sec;assignmin=r_min;endmodule4、 3取数模块输入信号:基准时钟clk,清

15、零端clr,启动/暂停信号en_count,分min、秒sec、毫秒ms输出信号:毫秒的十位ms_ten、毫秒的百位ms_hun、秒的个位sec_one、秒的十位sec_ten、分的个位min_one、分的十位min_tenmodulenumber_mod(clk,clr,en_count,ms,sec,min,ms_ten,ms_hun,sec_one,sec_ten,min_one,min_ten);inputclk,clr,en_count;input7:0ms,sec,min;output3:0ms_hun,ms_ten,sec_ten,sec_one,min_ten,min_one;

16、/*/reg31:0r_ms_hun,r_ms_ten,r_sec_ten,r_sec_one,r_min_ten,r_min_one;/*在quartusII9、0版本中,“除法器”可以自己定义。在更高级的版本中,默认下“除法器”与“求余器”就是32位输出。但就是经过“编译”过后,编译器会“自动优化”最适合的位宽*/always(posedgeclkorposedgeclr)if(clr)beginr_ms_ten<=32'd0;r_ms_hun<=32'd0;endelseif(en_count)beginr_ms_ten<=r_ms_ten;r_ms_h

17、un<=r_ms_hun;endelsebeginr_ms_ten<=ms%10;r_ms_hun<=ms/10;endalways(posedgeclkorposedgeclr)if(clr)beginr_sec_one<=32'd0;r_sec_ten<=32'd0;endelseif(en_count)beginr_sec_one<=r_sec_one;r_sec_ten<=r_sec_ten;endelsebeginr_sec_one<=sec%10;r_sec_ten<=sec/10;endalways(posed

18、geclkorposedgeclr)if(clr)beginr_min_one<=32'd0;r_min_ten<=32'd0;endelseif(en_count)beginr_min_one<=r_min_one;r_min_ten<=r_min_ten;endelsebeginr_min_one<=min%10;r_min_ten<=min/10;end/*/assignms_ten=r_ms_ten3:0;assignms_hun=r_ms_hun3:0;assignsec_one=r_sec_one3:0;assignsec_ten

19、=r_sec_ten3:0;assignmin_one=r_min_one3:0;assignmin_ten=r_min_ten3:0;/*/endmodule4、4编码模块输入信号:基准日中钟clk,清零端clr,启动/暂停信号en_count,毫秒的十位ms_ten、毫秒的百位ms_hun、秒的个位sec_one秒的十位sec_ten、分的个位min_one、分的十位min_ten输出信号:毫秒的十位编码ms_ten_dis、毫秒的百位编码ms_hun_dis、秒的个位编码sec_one_dis、秒的十位编码sec_ten_dis、分的个位编码min_one_dis、分的十位编码min_t

20、en_dismoduleencoder(clk,clr,en_count,ms_ten,ms_hun,ms_ten_dis,ms_hun_dis,sec_one,sec_ten,sec_one_dis,sec_ten_dis,min_one,min_ten,min_one_dis,min_ten_dis);inputclk,clr,en_count;input3:0ms_ten,ms_hun,sec_ten,sec_one,min_ten,min_one;output7:0ms_ten_dis,ms_hun_dis,sec_ten_dis,sec_one_dis,min_ten_dis,min

21、_one_dis;/*不带小数点的数码管显示*/parameter _0 = 8'b1100_0000, _1 = 8'b1111_1001, _2 = 8'b1010_0100,_3 = 8'b1011_0000, _4 = 8'b1001_1001, _5 = 8'b1001_0010,_6 = 8'b1000_0010, _7 = 8'b1111_1000, _8 = 8'b1000_0000,_9 = 8'b1001_0000;/*带小数点的数码管显示*/parameter _0_ = 8'b010

22、0_0000, _1_ = 8'b0111_1001, _2_ = 8'b0010_0100, _3_ = 8'b0011_0000, _4_ = 8'b0001_1001, _5_ = 8'b0001_0010, _6_ = 8'b0000_0010, _7_ = 8'b0111_1000, _8_ = 8'b0000_0000, _9_ = 8'b0001_0000;/*/reg 7:0r_ms_ten_dis;always ( posedge clk or posedge clr ) if( clr )r_ms_te

23、n_dis <= _0; else if( en_count ) r_ms_ten_dis <= r_ms_ten_dis;elsecase(ms_ten)4'd0 : r_ms_ten_dis <= _0;4'd1 : r_ms_ten_dis <= _1;4'd2 : r_ms_ten_dis <= _2;4'd3 : r_ms_ten_dis <= _3;4'd4 : r_ms_ten_dis <= _4;4'd5 : r_ms_ten_dis <= _5;4'd6 : r_ms_te

24、n_dis <= _6;4'd7 : r_ms_ten_dis <= _7;4'd8 : r_ms_ten_dis <= _8;4'd9 : r_ms_ten_dis <= _9; endcase/*/reg 7:0r_ms_hun_dis;always (posedge clk or posedge clr) if( clr )r_ms_hun_dis <= _0; else if( en_count ) r_ms_hun_dis <= r_ms_hun_dis;else4'd0 :r_ms_hun_dis<=_0;4

25、'd1 :r_ms_hun_dis<=_1;4'd2 :r_ms_hun_dis<=_2;4'd3 :r_ms_hun_dis<=_3;4'd4 :r_ms_hun_dis<=_4;4'd5 :r_ms_hun_dis<=_5;4'd6 :r_ms_hun_dis<=_6;4'd7 :r_ms_hun_dis<=_7;4'd8 :r_ms_hun_dis<=_8;4'd9 :r_ms_hun_dis<=_9; endcase/*/case(ms_hun)reg 7:0r

26、_sec_one_dis;always ( posedge clk or posedge clr ) if( clr )r_sec_one_dis <= _0_; else if( en_count )r_sec_one_dis <= r_sec_one_dis; else case(sec_one)4'd0 : r_sec_one_dis <= _0_;/*4'd1 :r_sec_one_dis<=_1_;4'd2 :r_sec_one_dis<=_2_;4'd3 :r_sec_one_dis<=_3_;4'd4 :

27、r_sec_one_dis<=_4_;4'd5 :r_sec_one_dis<=_5_;4'd6 :r_sec_one_dis<=_6_;4'd7 :r_sec_one_dis<=_7_;4'd8 :r_sec_one_dis<=_8_;4'd9 :r_sec_one_dis<=_9_; endcase*/ reg 7:0r_sec_ten_dis;always(posedgeclkorposedgeclr)if(clr)r_sec_ten_dis<=_0;elseif(en_count)r_sec_ten_di

28、s<=r_sec_ten_dis;elsecase(sec_ten)4'd0:r_sec_ten_dis<=_0;4'd1:r_sec_ten_dis<=_1;4'd2:r_sec_ten_dis<=_2;4'd3:r_sec_ten_dis<=_3;4'd4:r_sec_ten_dis<=_4;4'd5:r_sec_ten_dis<=_5;4'd6:r_sec_ten_dis<=_6;4'd7:r_sec_ten_dis<=_7;4'd8:r_sec_ten_dis&

29、lt;=_8;4'd9:r_sec_ten_dis<=_9;endcase/*/reg7:0r_min_one_dis;always(posedgeclkorposedgeclr)if(clr)r_min_one_dis<=_0_;elseif(en_count)r_min_one_dis<=r_min_one_dis;elsecase(min_one)4'd0:r_min_one_dis<=_0_;4'd1:r_min_one_dis<=_1_;4'd2:r_min_one_dis<=_2_;4'd3:r_min_o

30、ne_dis<=_3_;4'd4:r_min_one_dis<=_4_;4'd5:r_min_one_dis<=_5_;4'd6:r_min_one_dis<=_6_;4'd7:r_min_one_dis<=_7_;4'd8:r_min_one_dis<=_8_;4'd9:r_min_one_dis<=_9_;endcase/*/reg7:0r_min_ten_dis;always(posedgeclkorposedgeclr)if(clr)r_min_ten_dis<=_0;elseif(en_c

31、ount)r_min_ten_dis<=r_min_ten_dis;elsecase(min_ten)4'd0:r_min_ten_dis<=_0;4'd1:r_min_ten_dis<=_1;4'd2:r_min_ten_dis<=_2;4'd3:r_min_ten_dis<=_3;4'd4:r_min_ten_dis<=_4;4'd5:r_min_ten_dis<=_5;4'd6:r_min_ten_dis<=_6;4'd7:r_min_ten_dis<=_7;4'

32、d8:r_min_ten_dis<=_8;4'd9:r_min_ten_dis<=_9;endcase/*/assignms_ten_dis=r_ms_ten_dis;assignms_hun_dis=r_ms_hun_dis;assignsec_one_dis=r_sec_one_dis;assignsec_ten_dis=r_sec_ten_dis;assignmin_one_dis=r_min_one_dis;assignmin_ten_dis=r_min_ten_dis;endmodule4、5数码管显示控制模块输入信号:基准时钟clk,清零端clr,启动/暂停信号

33、en_count,毫秒的十位编码ms_ten_dis、毫秒的百位编码ms_hun_dis、秒的个位编码sec_one_dis、秒的十位编码sec_ten_dis、分的个位编码min_one_dis、分的十位编码min_ten_dis输出信号:数码管显示控制信号row_scan_sig7:0modulerow_scan();clk,clr,en_count,row_scan_si!后ms_ten_dis,ms_hun_dis,sec one dis,sec ten dis;nir_one dis,min ten dis电 i C6U Fitinput clk; inputms_ten_disf7

34、.Oclr;inputms_hun_du|7.01en_count;input7:0ms t鼎dinput7:0ms hun裁min_on_dis7.O is;rriiiii_teri_diE7 .0input7:0sec onedis;input7:0sec_ten_dis;input7:0min_one_dis;input7:0min_ten_dis;output7:0row_scan_sig;parameterT3MS=16'd59_999;/parameterT3MS=16'd1;/*setT3MS=16'd1forsimulation*/reg15:0coun

35、t3;reg2:0t;reg7:0rdata;always(posedgeclkorposedgeclr)/*3mscounter*/if(clr)count3<=16'd0;elseif(count3=T3MS)count3<=16'd0;elsecount3<=count3+16'b1;/*控制扫描的次序,寄存器t表示了当前扫描的就是第几个数码管*/always(posedgeclkorposedgeclr)if(clr)t<=3'd0;elseif(t=3'd6)t<=3'd0;elseif(count3=T3

36、MS)t<=t+1'b1;always(posedgeclkorposedgeclr)if(clr)rdata<=8'b1100_0000;elseif(en_count)rdata<=rdata;elseif(count3=T3MS)case(t)3'd0:rdata<=ms_ten_dis;3'd1:rdata<=ms_hun_dis;3'd2:rdata<=sec_one_dis;3'd3:rdata<=sec_ten_dis;3'd4:rdata<=min_one_dis;3'

37、;d5:rdata<=min_ten_dis;endcaseassignrow_scan_sig=rdata;endmodule4、6数码管地址选择模块输入信号:基准时钟clk,清零端clr输出信号:数码管地址选择信号column_scan_sig5:0modulecolumn_scan(clk,clr,column_scan_sig);columnSCanJLMinputclk;inputclr;oik9;9 oket T3MS = 16'd1 for simulation*/output5:0column_scan_sig北parameterT3MS=16'd59_9

38、99;clr看口山面侬册期一/parameterT3MS=16'd1;/*setT3MS=16'd1forsimulation*/reg16:0count2;reg2:0t;reg5:0rcolumn_scan;always(posedgeclkorposedgeclr)/*3mscounter*/if(clr)count2<=16'd0;elseif(count2=T3MS)count2<=16'd0;elsecount2<=count2+16'b1;/*控制扫描的次序,寄存器t表示了当前扫描的就是第几个数码管*/always(pos

39、edgeclkorposedgeclr)if(clr)t<=3'd0;elseif(t=3'd6)t<=3'd0;elseif(count2=T3MS)t<=t+1'b1;always(posedgeclkorposedgeclr)if(clr)rcolumn_scan<=6'b000000;elseif(count2=T3MS)case(t)3'd0:rcolumn_scan<=6'b111110;3'd1:rcolumn_scan<=6'b111101;3'd2:rcolum

40、n_scan<=6'b111011;3'd3:rcolumn_scan<=6'b110111;3'd4:rcolumn_scan<=6'b101111;3'd5:rcolumn_scan<=6'b011111;endcaseassigncolumn_scan_sig=rcolumn_scan;endmodule五、设计仿真与实验5、1计时器模块仿真由于对系统时钟分频系数较大,在软件中仿真不易实现,因此将分频系数适当改小来仿真逻辑功能即可,下面对计时器模块(count、v文彳)单独进行功能仿真与时序仿真。由仿真结果波

41、形图可知,当毫秒计数ms计到99 似,均满足正常计数的逻辑功能;当清零信号clr后,秒计数sec加1,分计数min与秒计数sec类 为高电平时,系统输出min、sec、ms均异步置零,变低后在原来的数值基础上再计时。当启动/暂停信号en_count为高电平时暂停计时325.48us635.72us845.96屿856.2us计舟器模块功能仿真砧果5 2enc ount32S, 48 ns635 72 uiI8蜂.孵器模块时序便箕承累6&6.44 me的液加M皿rmminMWMlDWinnnjTOnnnnnnrLnjMirimn皿T皿min将计L000000,同时点亮6位数码管(colU

42、mn scan sigr为改痈亮敝码管)为11000000(对应数码管显示为百0);2启动/ 暂停信号en co 、'untclr 为数码管显示控制信号row_scan_sigcolumn_scan_sig 分时点亮不司的蟹下水黜»控制信号低电平时,数码管地址选择信号row_scan_sig保持不变。taire3 足.4 ust- 5tc r ew s c : V-j326.52 u5!器分频系数、数码管显示控制扫描时间、数礴管地址选择扫描时间适当改小来仿真逻辑功能用面对秒兄;系统进行功能仿真与藤序昉嗔蜘求时曼机学UH9"n13 w175 3 pin用唧接HMama” dk “ rlrcoijrnri £car_sic3二 力 r ri n li n ri li加枇Hen】中回IMi”tuMi:OutputJrp/.Ol itpLlI" Mtput 1 " IT1 it Output 0utpf Outpjt umt L'U.J.iJlP【M 2e-P 周_

温馨提示

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

评论

0/150

提交评论