basys3开发板时钟设计报告_第1页
basys3开发板时钟设计报告_第2页
basys3开发板时钟设计报告_第3页
basys3开发板时钟设计报告_第4页
basys3开发板时钟设计报告_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、数字系统设计实验多功能时钟的设计SYSU目录、实验简介3二、时钟操作方法4三、设计模块概览6四、模块及代码详解.7一、实验简介1、实验内容:利用vivado开发工具和BASYS历F发板,采用硬件编程 语言verilog 设计一个时钟。以开发板上的四位七段数码管 支持时钟的显示,以 5个button和16个switch支持闹钟 的功能切换。2、实验目标:(1)实现基础功能时钟的显示。要求时钟精准,并且能够显示时、分、秒(2)实现基础功能设置时间。要求进入到设置时间的 功能,调整好时间后,从当前时间运行。(3)实现基础功能闹钟,可设置闹钟时间,当时间到 达后响起。附有闹钟开关控制闹钟。(4)实现扩

2、展功能秒表。进入秒表后从零开始计时, 计时最小单位10ms,最大单位小时。具有暂停重置的功能二、时钟操作方法1、显示模式:显示模式下,显示当前时间的时和分,显示为 24h制。分和时中间有一小数点以1HZ的频率闪烁。最左边的led灯表面当前的闹钟开关状态,led灯亮代表闹钟打开。显示模式的按键功能如下:中间的button :握住可显示当前时间的秒。左边的button :长按超过一秒可进入设置时间状态右边的button :长按超过一秒可进入设置闹钟的状态上边的button :按住可显示闹钟设置的时间,长按超过一秒可对闹钟进行开关下边的button :长按超过一秒进入秒表状态2、设置时间模式在显示模

3、式下长按左边的button即可进入设置时间模 式。设置时间模式下,要设置分,即分的两位闪烁;要设置 时即小时的两位闪烁。进入设置时间时,分时的初始状态即 为进入前的当前时间。设置时间模式的按键功能如下:中间的button :按一下确认更改将当前时间更改为设置时间 左边的button :按一下改变调试变量,可调分和小时 右边的button :按一下退由设置时间并对当前时间不做更改 上边的button :按一下即可将当前设置的变量加1,分钟大于59后即从零计,小时大于23后从零计下边的button :按一下即可将当前设置的变量减1,分钟小于0后即从59计,小时小于0后从23计3、设置闹钟模式:在显

4、示模式下长按右边的button即可进入设置闹钟模式。设置闹钟模式下,要设置分,即分的两位闪烁;要设置 时即小时的两位闪烁。进入设置闹钟时,分时的初始状态为 当前闹钟的分钟和小时。闹钟触发现象为led灯走马灯闪烁。 设置闹钟模式的按键功能如下:中间的button :按一下确认更改将闹钟更改为当前设置时间 左边的button :按一下改变调试变量,可调分和小时 右边的button :按一下退由设置闹钟并对闹钟不做更改 上边的button :按一下即可将当前设置的变量加1,分钟大于59后即从零计,小时大于23后从零计下边的button :按一下即可将当前设置的变量减1,分钟小于0后即从59计,小时小

5、于0后从23计4、秒表模式:在显示模式下长按下边的 button即可进入秒表模式。秒表模式的计数从零开始,最小单位为10ms。四位显示最初为秒+10毫秒,到达一分钟后自动跳转为分 十秒,到达一小时 后自动跳转为小时十分,到达一天后从零重计。秒表模式的按键功能如下: 中间的button :按一下暂停读秒,再按重新开始左边的button :按一下重置秒表 右边的button :按一下退由设秒表但不重置也不暂停上边的button :无功能下边的button :无功能三、设计模块概览设计模块关系如下:匕通(ra.lch_.I0F. V)6)岁 ALD:Lt - all-clk 一:匚:,V CIRL

6、- Ctrl C:trl. 口 Ye TIME - t ime_coxukt t ir -18 t 旃。唱士 " eku1d 二 二喧;一,同 STOP _ mtqpnatch it 1 _ cl, hl st<?p_chang:» 一 oL皿零 . :Za.ug:. v1白善 ALARM - alarm ,.ilarm : . 11si srchange -' ' " vir-"E CLOCK - clock_di splsy floek_displiy. vj U)q* cl ockchange -,:上口二二其中模块watch

7、_TOP为顶层模块,无其他功能,只是将各个子模块相连接。 watch_TOP的RTL图如下:其余模块功能简介如下:1、all_clk 模块:负责输由不同的分频2、ctrl模块:负责控制其他所有模块,感知当前状态并根 据不同的外部输入调整下一状态。根据当前状态选择要进行输由的数据。是整个设计中权限最高、最核心的模块3、time_count模块:是进行时钟计数,并设置时间的模块4、stopwatch模块:负责秒表计数及其显示的模块5、alarm模块:负责设置闹钟,并判断闹钟是否响起的模块6、clock_display 模块:负责显示当前的时间,接受来自 time_count模块的时间数据7、cha

8、nge模块:最底层模块,将四位二进制所表示的数据转化七段码四、模块及代码详解1、顶层模块watch_TOP:input clkzinput 4: 0 k呼output 3:0看 output 710 duanT output 15 C1 led顶层模块的输入输由以及所定义的变量如下:re 5. C J Sj 叫 k;x« 5 0甫_alarm, ie1 ,5 J, state _rtex t10 t at e_noi* ; tc 7 C duwu. diianlj duut5; Twn£i'Dj tellj iei3;T* clkl, cl以白旧; reitch;其

9、中输入输由全部与外部直接相连,clk与100MHz寸钟连接,key与5个button相连,wei与数码管三个控制位相 连,duan与数码管每位的各段相连,led与16个led灯相 连。定义的变量全部为 wire型变量,作用只是将各个模块 相连。其中 s, my h代表当前要显示的时间;m_alarm, h_alarm代表闹钟的时间;state_next , state_now 代表当前状态和 下一状态;duan0, duan1, duan2, duan3分别代表4种状态 下的每种状态的七段码段的输由;wei0 , wei1 , wei2 , wei3分别代表4种状态下的每种状态的七段码位的输由

10、;clk1 ,clk2 , clk3 代表了 1HZ, 1KHZ 2HZ的分频;alarm_switch 代表了闹钟的开关状态。以上变量的意义在子模块中均没有 任何改变,可一并代入理解。代码中将state_next 直接赋给state_now用以改变运行的当前状态,后续将再度提到。只是将各个顶层模块的代码没有什么其他实际性内容, 模块实例化并连接。将代码展示如下:心WJj:LK (clkl Ski X cljStclkZ cl£j (clld) ):eerl CT1LCul上匕1kj: key 'kty),a>七int,七。*电*口&a£口)¥

11、;,1,&口入 iei2"*iZL3AduhiiiiizOj.d口 wl :du nd L - dusn2. diulS dau&L ufm_swi tch jd4rn_gi: tel).金;»§1),(Juam (duan),si at *_h*et i'.sf at *_nc3i:f n ):阜l &t<tv_LLQ* 1匕tiffie_ccmnt FINE C.elk (elk) j.clkZ (cl ),一匚1上3 (elkJ), key tkey),stat*_no* (statnow), .*,!.£*总

12、it).duanl fduvil )-自值上. m Qi% h(h);st&pwitch STOP (.clkQlkJ,.elk? (clk2),.clk3 (clltBX .key(key),.3tat«_now (st»t¥_noTi),. ti3 (»*i3X.iuaiiS duanj );alarm.elk (cZklj ,cllc2(clk2), .cllk3 (clk3 J ,key (key).小询, ,h也.stitt_nc* stat*_now),.al arn_sw i t el (al ar m_z» i t ch

13、 i ,g-alarm (jn_alsrrnp,h_alarm Qalarm), .w e i £ w ei 2 j ,duui2 (dutn2)?m闻);cldck-di splay lLC<£i dk2 (clki), cllcS 111s3), key (.key), stats_now (state_nc* L-s (s),.m (jn),h(h),m_al.-3rm im_alarm), h_al arm (h_il ar m) f.*色山duanO (duwiQ )2、分频模块allclk分频模块的主要功能是根据输入的100MHz勺时钟,进行分频,输由1H

14、Z, 1KHZ 2HZ频率的时钟。分频模块的代码比较简单,直接贴上:m »d-ule alL_cll£ L input elk, output r clkl;/ JJi?output rec cl%output re£ clk3/<2.12):i口E 31: 0 coimtl j counts, eountS ;alw aysi? (jjoe $dg$ cLk.)begin/应ifEuzitl 二二 49999999) bsginCOUJltl <= 0;dkl <= IlklJ end.巨工白白 efitmtl(二 c. Duntl + 1 :

15、 2W1£(n皿娓=4999) begingujitZ=0;dk2 <=之工展; exidsls« counts =tfiuntS + 1;但if (cowitJ = E 钥配999) btgifiwuM3 A 0;did <= f 0k3: end.eIee counts U count3 + 1:end«idnodul«其中输入clk即为100MHz勺时钟,输由clkl为1HZ频率的时钟;输由clk2为1KHZ频率的时钟;输由clk3为2HZ频率的时钟。寄存器变量count0 , countl , count2为分频时计数所用。分频的原理

16、是每个 clk的上升沿进行各个 count的计数,当到达相应的频率和100MH砌率倍数的一半时,将代表该频率的变量进行取反这样即可得到相应的频率的时钟输由。3、控制模块ctrl :控制模块ctrl是所有模块中最重要,最核心的模块。这个模块负责根据当前的状态及外部的输入决定下一个状态以及要输由的外部的显示的数据是哪一个模块的数据。该模块的输入输由及定义的变量如下:elk;i nput 1 4 二。key, input I/O Etat电 i nput 1 01 iuantiT d口anl, input 3' 0 *电i 1,/-iZ,jutpu.t r b g aiarm_Eii i +

17、 ckj output r*e 3:0 Aei, fiutpu.t reg 7:0 output reg t : Q st ate_neit );rt £ 31:。 cogtQ. c ountl,套。冈七2,u©unt t:其中clk代表100MHz勺时钟,key代表5个button , state_now代表当前状态,state_next代表下一状态。duan0,duanl , duan2, duan3分别代表4种状态下的每种状态的七 段码段的输由;wei0 , wei1 , wei2 , wei3分别代表4种状态 下的每种状态的七段码位的输由;具体对应是“0代表显示模式

18、,1代表设置时间模式,2代表设置闹钟模式,3代表秒 表模式”。对应关系在整个设计中均为如此,之后不再赘述。其余输入输由前文均有提过,意义相同不再赘述。寄存器变量 count0 , countl , count2 , count3 , count4 也是为计数所用,但注意这里计数的意义与分频模块 all_clk中不同,这里的计数是为按下 button时消抖所用。具体对应为“ 0代表中间的button , 1代表上边的button , 2代表下边的button , 3代表左边的 button , 4代表右边的 button key的编号也是这个意义。本处的对应关系在整个设计中应用到button的均

19、为如此(分频模块all_clk 中除外),以下不再赘述。控制模块ctrl以clk的上升沿作为触发条件,并用case 语句根据当前状态state_now进行不同操作。接下来将解释每种状态下的处理:显示模式(状态编号00):2* W0:i £ Ckey 1J - 1 ) count 1 K= ediiiitl + 1;begini £ t.c ountl )= 1000000(M) al3Lrm_zn tch二 aalsriiQ_3Tii tch; countl <= Q: endif (key 21) 回 t2(二七口b 七 2 + 1;els* begin if (c

20、oimt2 X ICXJOOOOOO)<= 2Jbll ;siintZ <= 0;endifOceyCs = 1 ?勺。皿3 6 county + 1; ils4 bginif(c oimt3 X 1OTMM00)Q?'辞!:CGUILt? 3 0;WT1山if (key1: =- 1 mat4 * 七口回±4 + L; 门" b«gitiif(eimt-1 X 1000000M) ststfi_ikcxt 仁 3'bl'C4ua.t4 仔 0; md w«i,=w eiO; I duan. <= duBwO :

21、当key1被按下,对应计数变量countl开始计数,计数超过1S时,变量alarm_switch进行取反,代表闹钟的开关。当key2被按下,对应计数变量count2开始计数,计数超过1S时,state_next 改为11,代表进入秒表模式。当key3被按下,对应计数变量count3开始计数,计数超过1S时,state_next改为01 ,代表进入设置时间模式。当key4被按下,对应计数变量count4开始计数,计数超过1S时,state_next改为10,代表进入设置闹钟模式。最后,要将显示模式的输由duan0和wei0赋值给总的输由duan和wei。设置时间模式(状态编号 01):T hOl

22、:i f (key01 = 1) cotintO <= c*nn.to + k elf eheEiitif (cpUjitG "gGOOD) st ate_next 存 2匕,; comlQ <= Q;endif keytf: - 1 y coimt 4 号 count4 + 1: gls«b«glB.if (donmiti A 40000k 2J bOC ;counit <= 4,-&Tidwei <= mil;duoxL = duarJ ; md当key0被按下,对应计数变量 count0开始计数,计 数超过1S时,代表确认设置

23、,state_next改为00,返回显 示模式。当key4被按下,对应计数变量count4开始计数,计数超过1S时,代表取消设置,state_next改为00,返回显 示模式。最后,要将设置时间模式的输由duanl和weil赋值给总的输由duan和wei。设置闹钟模式(状态编号10):2''LLu:b4ml £ Osey D3 - 1 J cc-HEit&。c oun f D + 1 ;begin.i f (couxitO y= 40000) £t<t«_Ti«xt *i= 2* t''U ; cDimtO

24、= 0;tndi f (iey 4 - 1) ccunt1* 3 counts + 1;上士befin.i f (couitt4 )= 40000) £t&t电_及4t g 21bm:*nd iuan二 &uan2:CTl,二设置闹钟模式下按键的意义与设置时间模式完全一样,代码基本相同,只不过最后要将设置闹钟模式的输由duan2和wei2赋值给总的输由 duan和wei。秒表模式(状态编号 11):2J til;begin:£保可:之二=1 ) coimt 4 G c Glint 4 4 1;litbe ginif (count4 " 鲂(3口。)

25、stat<= 2J -bC"'tnnit七二4 :«ikdU: weij ;duw duui3;en.d当key4被按下,对应计数变量 count4开始计数,计 数超过1S时,代表返回显示模式,state_next 改为00,注 意此时秒表仍在运行。最后,要将秒表模式的输由duan3和wei3赋值给总的输由duan和wei 。整个控制模块ctrl中的这条case语句默认是显示模式 (状态00)下的操作。4、显示模式(00):irupuit sclk2ii ztpixJt Ci11e3 rinpnt 4. 0 Lcey,input 10 state_now/i

26、nput E - 0 0input 5.0 时i npuL t 5.0 hTtpiT t 5 口 »_1&1Ti_n1 «TIWioutput fj,o审中i。,output 7: 0 dutfidD显示模式输由当前时间的显示以及部分隐藏的显示。d鼠也:3:0 i_B3krl = 4>J b 111u;r 电话:/(iuanlj_7 ;s5igw 咫 lQ = w&i_ctrl;wwMigjA duaziC1 7 - duazt3_7;显示模式的输入输由变量之前均已解释,意义相同不再赘述。变量data代表传入七段码转化模块的数据,wei_ctrl是位的

27、控制变量用来移位,并将其赋值给wei0 o B忆7和duan0_7都是为了使分和小时中间的点闪烁用的。下面这部分主要就是让那个点一秒钟闪烁一次,clk3频率为2HZilwiysiSclkl)be finif (sta.te_non =7 bM) duan_7 <=、dtian_;: 已1弓给 4uan_ 7 <二 1 :已云d接下来是显示模式主要的代码:alay£i> (pbtedgfi clk2 )bs ginif= 2* buu)begin.*si_ctrl = v«i_ctrl2 :Of ni_ctrlC3;ift»ti_ctrl 

28、7;'11411)luauiLi_7 <= ditaii_7. else duanO_7 仁 1 :i E (k«yD = 1)begLikcase (wei_ctrl)no: a式& <=,iadata 七 s/10;4J bl*jll: <= 4T fall 11;iJ bi'lll: data <- CMlll;dftfiyilt: d&la(= 0;e-iid*1“ if»yl二: 1)B e gi it4 htllJ: data=4JbllOl : data <= v_alirn/lC;4fKil: d

29、aU 仁 h_>l>na110:4bOlll;仁 h_al arrr /1 , J ;default;dataenicQisendelsetegincase mei _CJtrl)Vbliic; <=* 知露 V bl 1ul: data 仁/!: 4Jbl - i 1 :<= k«10;4Jbj 11: data <= h/10P defaul-t : data 仁 U ;»ndctE«enil眄日由上MWlwmi ndata.仁 4Jblll:d <- Vt.11 ID-»nd触发条件为1KHZ的clk2的上升沿首

30、先是数码管的移位,并且只显示第三位的小数点接下来是if else 语句,如果key0被按下,显示秒。如果key1被按下,显示闹钟的设置时间。否则显示当前的分和小时。如果不在当前状态(00)下,全部复位。每一个if语句中,有一个 case语句,根据 wei_ctrl的状态显示不同的数据,是七段码扫描显示的基本要求。5、设置时间模块(01):设置时间模块用来设置时间以及显示设置时间的状态1 np ut cllc.input曰玲input ilkS, input 4;0 k锁 input 1 :0 state附, out pul: 3 : 0 wei 11 out put 7 ,0 dusnl,ou

31、t pul reg 5:6 w, out put r « e 5:0 m, output reg IS' Oj Kreg 31 : 0 eoimt, GOTintO, eoiiatl, Ec uzkt 4 :reg 5-0h_set;reg: 3 ,G n芭wi_shan:reg: 3 0 data;reg duan_71dumlT;«ssi gxi w til = ,亳i_t 1tle1 | wassi gp. 'infill 7 - du3Lal_7;输入输由变量此前均已说明,不再赘述。5个count还是计数用。、;m_set和h_set代表设置时要显示

32、的分和时。wei_ctrl用来数码管的扫描移位,wei_shan是为了做到调 时间时的闪烁效果;data还是转化为七段码之前的数据。duan_7和duan0_7与之前相同;set_state 代表当前要设置 的是哪一位。al>ps (po se3ge cltjtegini £ (st e_rtow 2 b'. 1)bgginlF i)£&yEL) - 1) cGuntO(二 rauntO + 1 :be giniEQg4口 M WOWbeginw仁Q;m 仁 i»_£et ;h 仁 h_set;CDUIXtO 二 口:也五力if (

33、count =的等鹃 99)be gmcount <= C:0仁¥ 4 I ;士鼠mlsg eount二 ecunt + 1;if (s = SO)begins <= 0;m=rn干L;4lkd- M)hi G 0;叁hdifQi =,24) h 仁立电n_d上边这段代码是时钟的计时以及对中间的按键的使用中间的按键只能在当前状态下才能调用,如果按键key0被按下,则是确认设置时间,我们就将设置的时间赋值给要 显示的时间。计时的话,就是每一秒s+1 , s每到60置零,m+1并以此类推。下边的代码是小数点以及设置位闪烁的代码。首先小数 点还是每秒闪烁一次。而wei_shan

34、用来控制数码管的闪烁。如果设置状态set_state 为0,即设置分,那么前两位常亮, 后两位不断取反闪烁。如果设置小时,就刚好倒过来。always>3 (p ose1 萨 egtegini f (st 2* feL?1)begind*uan_7 <- Pdnan_7;i f5*t_stat« = 0)用G 2rb加;w ei_sharil :0 <= ei_shanl, 0:6zidbeginw ei_shsn3 :2 Y= "*w«i_stLan3: 2; “iuhanU ;0勺 Tb <1:end1莒上be 莓in dnan_7 &l

35、t;= 1.* el sian= 4; 11 11 1 j;end接下来是设置时间和分钟加或减的代码。还是当前状态下,按键有效,否则设置显示的时间就是当前显示时间key1被按下,则根据目前的要设置的状态分别对时或分进行加减,如果超生则置零。key2就是就是将加改成减,如果小于0就置为最大值。Key3如果被按下,就将设置状态 进行取反。即可调节当前要设置的是分还是小时elk)ginif= 2H b . 1)be名 inif 11 - 1) eountl <= caimtl + 1;Iss t 电gin.if(cowLtl 上切加。)begin= 0) b/me三et 令 m_set + 1

36、;if5_st = 59) m_s&t 仁 0: end.Ltitt = 1)be£iiLh_stt 仁 h_sst + 1;i£ftL_S4t =- 23) Aft 0 0; «ni 也nd QQiintl Q。:«ndi£ QccyLS = 1) counl2。c«nmt2 + 1 二liftifheinm_s* t = i fi £ fset s t ate b/irths£ t 仁 i£(h_s«t enieonnt5 二 口, tnd-=0)«_s*t - 1;-0)

37、 nt_set 仁 59:二二 1)k_=et - 1;=0) h_iet <= 23;i £ key3 - 1) cauiLt3 count3 4 1;elset«gl ItifX 钟川口)彳号岸;count3 <= 口:ejid*ndelsebcEinS4t_stat s= 0:m_sst。m;h_se t,二二 h;end接下来这一段是七段码的扫描显示,与此前的显示模式基本相同,只不过一直只显示我们设置的情况al* aysQ (p&s edge 帚 V? jbgini £ (stat G_rkom 2, hul )b«ginwe

38、i_ct_rl - wei_ctrl 2101, w ei_cttl3;if (»ei_ctrl =二 < bl 911) duml_7 勺 duan_7;eXs e ciuanl _ r C- 1 ;css? (wei_ctrl)41 bl 11 j: d*ta <=依/ 左 Tn_st/l(j;4J bl-jll:<=Kdl«tUO:4J LC 111:<= h_Eet/l&d&fault: da.t& <= Ci:endeaendeLs eb 号 ginwei_CLt工 4* Lill1.;data 住 4J ti

39、ll1;地&号n46、设置闹钟模块(10):设置闹钟模块是用来设置闹钟的时间以及做由相应的显示。input elkinput d1k2,inpwt &arrn_5iri 寸 thinput tiO k叨input 1 ;Cl 5taiinput 5:0 mT h,output r«g 5 : C* m_slarmj h alarm .output 3:0 H,outp ut 7 : & ilusn2,output 15:0 l*dre 16:0 1 ed_al arn = 1 :,h i曲4立巾;r* e 31 :0 count, cowitO, count

40、1, c&unt2T coun. ccunt: re 5:01 nts etf h_se t;r« E 3 0 *i_c:tirL i_ihuire £ 口 : 0 j data ;rec duan_J. duan2_7T set_statt.:3$*igii *士iZ = wei_ctrl | *ei_shui.sseign diLBn27 - duan27 ;= ltd_slarm15 0 | G8rm该模块的输入输由此前均有定义,意义相同不再赘述。定义的变量中,led_alarm 是为了在闹钟激活时led能 够以走马灯亮起的初始状态,alarm_switch

41、是闹钟开关状态, 从ctrl模块中传由,并在此处赋值给led灯。其余变量在设置时间模式中均有使用,意义相同不再赘述。接下来是时间到达闹钟设置时间时的代码。如果显示的时间和我们设置的闹钟的时间相同, led_alarm 就以50HZ 的频率进行移位,也就是走马灯显示。否则的话就置为初始 值,不做显示。aLw ays'.posedge rlk begini£ileh. = 1)if ijn = m_d.arm h = h_ilsrihj Le-gini f (cfliukt = 2000000 - 1) begirt lei_81irm 工工 il#d_alarm15 : 0,

42、lid_alarm16): COTUft 0 :J ; «nielse count x= eoimt 4 1 ;Wild工也d_al应巾=儿小二山一工ndalE4 L«d_slarm =1厂鼠_心;口_办侦_匚中1_”口上 匕工虱接下来分别是,小数点和设置位闪烁的代码,对闹钟的分和 时进行设置的代码,七段码扫描显示输由的代码,这些与设 置时间的代码基本相同。两处不同可对比观察,一个是key0被按下后,h_set和m_set赋值给 h_alarm 和s_alarm 而不 是h和四另一个是不为当前状态时,复位是之前设的闹钟 时间,而不是当前显示时间。其余直接贴上,不做解释。al

43、waysalw禽/舌鼻(posedge elk.) Jb&gin £ (st. a.1 jmg = 2fbi u) beginifQceyEO = 1) eoujitO <= eonmtO + 1 ; be giniEtcW N 4000) bfegiEi alarm <- m 5e t; ,K,halarm <= K_se t;*nd coimtO 二口; 1nd?elk3),be ginif(stiLte.iLow = 2f blu) begindumi_7二"dug;if t芦at_景at电=0) beginw&i_shait3:2仁

44、 2%匚* e i_shaxLEl : 0 仁 、ei jhen, 1 :0;Mid bagin式qhaji3:2仁、二h皿3:2;wei slianU ;0 <= 匚口ndend1 £4be ginduw_7=1.;>e iskan C- ,b JU'JU ;-endi f iJriyCl - 1) Eiuntl二 csiantl + 1 : els*bgixiif(coun-tl X 40000)liegiriif (s«t_sta,t6 - Q iH.giit_set <= m_s?t 十 hi f = 5fl) m_stt <= 口;

45、 end if- 1 beginh_set <= h_se t + 1;if(h_£et =23) h_sst <= 0; end电ZL4count1 <= 0;endi £ '.key 2 1 ) zowxt2 W= c onnt2 + 1 ; fels« b-egiixif(comt2 >= 00)tegLiiif= 0)biglXL _set 七 <n_set - 1:= 0*_set <= 59: endif (siOti'l! = 1 1beginh_£“ 餐 h_st t - i :i

46、63;Qi_Me七0 J h_set 0 23 L endeadcount2 4= 0;hAi f (Jc«t3 1 > counts <= c(?uiit3 + 1;虱后电b咤inif(eount3 X 40000) ssl ititt <=C 4 UIit3 +白;«ndenifistbegAnate 3 0:4=tn_il srm;h_st 仁 h_al arm :(poseige clk2)be 后 i.Ri f jlo« = 21 Til'J)b e 审iiKei_ctrl = *i_clrl2,0, »ei_ctrl

47、3:i f (n#i_etrl = 4J blul 1) dnw2_7 <= du«C7;式古电duan£_7仁1.ca5e (wi_c tvl)Uki 11。二4油口 <= m_«tK10;4'bll"二 data k m_5et/lU;mail二 ddu <= k_£6t110: data <- h_set/10;qfault: Q 0 ;4TlJel不片b/in.lita <= £11111:endend7、秒表模块(11):义的变量如下:1 npixt cl kj input clk2,

48、input ulk3r input 4 uj k炯 input il.01 5tate_iww output 3:Q output 7:O duan3秒表模块的作用主要是从零开始计时,输入输由以及定1r电三 6.0 rfts_iQ, s, m,i:T 31;。 CQUJttjC9iaittl,fSWt3j CQWti;rdu血_:, 如j eldp_et its:rec 3-Q data;r«£ 310 »ii_itri:te( il 0 dis_state;assign *e ji3 - i»ei _ctrl ;asi pi duan37 - duai

49、i3_7;输入输由变量此前均有说明,意义相同不再赘述。定义的变量中,ms_10是存储以10ms为单位的计时变量, stop_state 代表当前是暂停状态还是读秒状态。dis_state代表当前显示的状态,其余变量其他模块中均有使用,意义 相同不再赘述。下面的代码与此前的模块有很多相似之处,就不一一解释了,只将几个不同点来解释一下。一个是计时的模块中增 加了 ms_10这个变量,其余的可类比time_count模块。还有按键的功能为,key0被按下,则stop_state 取反,代 表当前是暂停还是读秒。Key3被按下,则是全部置零且置于暂停状态。而在七段码扫描显示部分,则可类比 clock_displa

温馨提示

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

评论

0/150

提交评论