根据VHDL的数字时钟设计_第1页
根据VHDL的数字时钟设计_第2页
根据VHDL的数字时钟设计_第3页
根据VHDL的数字时钟设计_第4页
根据VHDL的数字时钟设计_第5页
免费预览已结束,剩余25页可下载查看

付费下载

下载本文档

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

文档简介

1、目录1 概述 1.1 数字时钟的工作原理 1.2 设计任务 2 系统总体方案设计 3 VHDL 模块电路设计 3.1 模块实现 3.1.1分频模块 pinlv 3.1.2按键去抖动模块 qudou 3.1.3 按键控制模块 self13.1.4 秒、分六十进制模块 cantsixty3.1.5 时计数模块 hourtwenty 3.1.6 秒、分、时组合后的模块 3.1.7 数码管显示模块 3.2 数字时钟的顶层设计原理图3.3 系统仿真与调试 结束语 参考文献 致谢 附录 源程序代码 错.误!未定义书签。 1101314161718191概述1.1数字时钟的工作原理数字钟电路的基本结构由两个

2、 60进制计数器和一个24进制计数器组成,分别对 秒、分、小时进行计时,当计时到 23时59分59秒时,再来一个计数脉冲,则计数 器清零,重新开始计时。秒计数器的计数时钟 CLK为1Hz的标准信号,可以由晶振 产生的50MHz信号通过分频得到。当数字钟处于计时状态时,秒计数器的进位输出 信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计 数信号,每一秒钟发出一个中断给 CPU, CPU采用NIOS,它响应中断,并读出小时、 分、秒等信息。CPU对读出的数据译码,使之动态显示在数码管上。1.2设计任务设计一个基于VHDL的数字时钟,具体功能要求如下:1 .在七段数码管上具

3、有时-分-秒的依次显示。2. 时、分、秒的个位记满十向高位进一,分、秒的十位记满五向高位进一,小 时按24进制计数,分、秒按60进制计数。3. 整点报时,当计数到整点时扬声器发出响声。4. 时间设置:可以通过按键手动调节秒和分的数值。此功能中可通过按键实现 整体清零和暂停的功能。5. LED灯循环显示:在时钟正常计数下,LED灯被依次循环点亮。2系统总体方案设计设计一个基于VHDL的数字时钟,我采用自顶向下分模块的设计。底层为实现 个弄能的模块,各模块由vhdi语言编程实现:顶层采用原理图形式调用。其中底层 模块包括秒、分、时三个计数器模块、按键去抖动模块、按键控制模块、时钟分频模 块、数码管

4、显示模块共7个模块。设计框图如下:F杪mg押1块尸_I甘计 r块卜图2.1数字时钟设计框图由图2.1可以清晰的看到数字钟系统设计中各功能模块间连接关系。系统时钟50MHZ经过分频后产生1秒的时钟信号,1秒的时钟信号作为秒计数模块的输入信 号,秒计数模块产生的进位信号作为分计数模块的输入信号,分计数模块的进位信号作为时计数模块的输入信号。秒计数模块、分计数模块、时计数模块的计数输出分别 送到显示模块。由于设计中要使用按键进行调节时间, 而按键的动作过程中存在产生 得脉冲的不稳定问题,所以就牵扯到按键去抖动的问题,对此系统中设置了按键去抖 动模块,按键去抖动模块产生稳定的脉冲信号送入按键控制模块,

5、按键控制模块根据按键的动作对秒、分、时进行调节。3 VHDL模块电路设计3.1模块实现由数字钟的顶层设计原理图可知:系统的外部输入即为系统的时钟信号CLK=50MHZ,系统的外部输出有蜂鸣器信号buzzer,LED显示信号LED3.1和shan(与按键去抖动模块的03相连),数码管显示信号xianshi7.O,数码管位选信号 xua nze7.O。下面将对内部功能模块进行详细说明,(本设计共包含 5个模块):3.1.1分频模块pinlv对系统的时钟50MHZ进行分频,设置不同长度的计数值,当系统时钟clk有变化时计数器开始计数,当计数到某个值时输出一个信号,计数值不同输出信号的周 期也就不同,

6、从而实现了对系统时钟进行不同的分频,产生不同频率的信号。由VHDL语言生成的模块图和程序说明如下:1 pinlvclk cjk2ms clkSOOms clklsinst13;;亠oH_. Ir - -LpiJ- LH -J b-h-"' -j-图3.1分频模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity piniv isport( clk:in std_logic;-系统时钟输入端口 clk2ms:out std_logic; clk500ms:out

7、std_logic;clk1s:out std_logic);-各频率信号的输出端口 end;architecture beh of piniv isbeginp1:process(clk);-进程 p1variable cou nt1: in teger range 0 to 49999999; begi nif(clk'event and clk='1')then count1:=count1 + 1;-在 clk 的上升沿计数if cou nt1<=24999999 then clk1s<-0'elsif cou nt1<=4999999

8、9 then clk1s<='1'else cou nt1:=0-产生周期为1s的时钟信号clk500ms<-0'elsif cou nt3<=24999999 then clk500ms<-1'else count3:=0-产生周期为500ms的时钟信号end if;end if;end process p1-结束进程 p1p2:process(clk);-进程 p2variable coun t2:i nteger range 0 to 99999;beg inif(clk'event and clk='1')

9、then count2:=count2+1;-在 clk 上升沿计数if cou nt2<=49999 then clk2ms<-0'elsif count2<=99999 then clk2ms<二'1'-产生周期为 2ms 的扫描信号end if;end if;end process p2-结束进程 p2p3:process(clk);-进程 p3variable cou nt3: in teger range 0 to 24999999;beginif(clk'event and clk='1')then count

10、3:=count3+1;-在 clk 上升沿计数if cou nt3<=12499999 thenend if;end if;end p rocess p3;end beh;3.1.2按键去抖动模块qudou本设计用到FPGA开发板上的四个按键,由于按键有反应时间、抖动的问题,可能当按键被按一次时而系统感应到几次,造成误差。所以应该进行按键消抖的处理, 让每按一次键系统只感应到一次按键。可以采用软件延时,触发反相器等方式进行消 除抖动,本设计中采用软件延时的方式。由VHDL语言生成的模块图和程序说明如下:« 1111- 4图3.2按键去抖动模块library ieee;use

11、ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all; en tity qudou isp ort(clk,k1,k2,k3,k4:in std_logic;o1,o2,o3,o4:out std_logic);-设置按键输入信号输出端口end;architecture beh of qudou is begi n process(clk,k1,k2,k3,k4) variable can t1:i nteger; variable can t2:i nteger; variable can t3:i nteger; variab

12、le can t4:i nteger; beginif clk'eve nt and clk-1' the nif k1='1' then can t1:=0;end if;-设置计数初值if k2='1' then can t2:=0;end if;-设置计数初值if k3='1' then ca nt3:=0;-设置计数初值 end if;if k4='1' then can t4:=0;end if;-设置计数初值if can t1>2499999 then o1<-0'else o1&l

13、t;='1'-延时 0.5send if;if can t2>2499999 then o2<='0'else o2<='1'-延时 0.5send if;if can t3>2499999 then o3<='0'else o3<='1'-延时 0.5send if;if can t4>2499999 then o4<='0'else o4<='1'-延时 0.5send if;can t1:=ca nt1+1;-加一计数can

14、 t2:=ca nt2+1;-加一计数can t3:=ca nt3+1;-加一计数can t4:=ca nt4+1;-加一计数end if;end p rocess;end beh;3.1.3按键控制模块selflok2按下时时钟暂本设计中使用了两个按键进行对时钟的暂停和调秒操作,当停,再按ok3则进行秒个位的加一计数,每按一次进行加一处理。当调节好时间后, 在按ok2键重新开始计数。由VHDL语言生成的模块图和程序说明如下: HH1 kOTc孙-41tTX图3.3按键控制模块1 :rit-2乍 H I . I Ilibrary ieee; use ieee.std_logic_1164.al

15、l; use ieee.std_logic_ un sig ned.all; en tity self1 isport(c:in std_logic;ok2:in std_logic;ok3:i n std_logic; ck:out std_logic);end ;-设置端口architecture bea of self1 issig nal m:std_logic;sig nal t:std_logic;begi np1:process(ok2,ok3,c);-ok2 和 ok3 触发进程beg inif ok2'event and ok2='0' then m&

16、lt;=not m;-由 ok2 的动作产生 m 的电平信号end if;if m='1' then ck<=not(ok3);-把按键ok3的脉冲信号给输出else ck<=c;-否则把正常计数时钟给输出end if;end p rocess p1-结束进程end bea;3.1.4秒、分六十进制模块 cantsixty本设中秒、分的六十进制是由个位的十进制和十位的六进制进行组合实现的。个位记到9时自动向高位进一,同时个位自动清零。当十位记到 5并且个位记到9 时,自动产生一个进位脉冲,同时个位和十位分别从零开始重新计数。由VHDL语言生成的模块图和程序说明如下:

17、 elkIcantsKtyI R I I R P I I R II總匸=gW.J .Ct0Litl3 0r&s&tout2j.ajcI .pa H Ip HH I I H. H HiUTFL汗 Ioutlll.OJJmPinIA cut5t3.Qnaaiir nail h n rn iirBi c i hvi BbpUFFUT I=y ci in st_| B ¥ - "图3.4六十进制模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity c

18、an tsixty ispo rt(clk:i n std_logic;reset: in std_logic;out1:out std_logic_vector(3 dow nto 0);out2:out std_logic_vector(3 dow nto 0);c:out std_logic);end;architecture beh of can tsixty issig nal ss1,ss2:std_logic_vector( 3 dow nto 0);begi np1:p rocess(clk,reset)beginif(reset='0')then ss1<

19、;="0000"ss2<="0000"elsif(clk'eve nt and clk='1')the nif ss仁"1001" and ss2="0101" then c<='1'-当计数到 59 时产生进位信号 else c<='0'-否则不产生end if;if ss仁"1001" then ss1<="0000"if ss2="0101" then ss2<=&

20、quot;0000"else ss2<=ss2+1;end if;else ss1<=ss1+1-;-计数过程end if;end if;end p rocess p1-结束进程 outiv二ss1;out2v=ss2-把信号送输出 end beh;3.1.5时计数模块hourtwenty时计数模块是二十四进制相对复杂一点,因为当十位0或着1时个位需要记到9 并产生进位信号,当十位是2时,个位记到3时,就全部从零开始重新计数。即是 在十位为不同值时个位两种计数过程。由VHDL语言生成的模块图和程序说明如下:> r_._亠J.一r.I h5tjrtweiity! ci

21、Ci rs-sdI|1 ckcLjtip.CJ耿 getciLit2p.fr诵配)5”尸二w百頁w丽:工 ptrjt_I、aui23.O , _ _ ) wovy%ifij5"*“ t>BIJ “ 0u“ I'in st图3.5时计数模块3.1.6秒、分、时组合后的模块把设计的秒、分、时模块连接起来,再通过仿真验证,各模块间的进位是否正确连接后的原理图如下»1_一二 F: 二 计. L. i - 二 L r - - 二 r I r - r 写-M. w 二 £ 丁 r: 一 F 丁 m L V 【TriV I-LT一空 . 一 4 L忌L-fr -

22、1-一尋T巨:ii亡谿i,yi 勺 IMOk.g Fr*w: oj±l 习匚F-F订一产二迈戸鬲iIIJ I I I >7 'W I - » r - V ! yp 70 h F 7-y |y"ri -Ri-br-l - L: I':疋飞;i-iqiB IBipi « Id R>"h"ip"« Bl-H IhBI hl <图3.6秒、分、时组合后原理图3.1.7数码管显示模块本模块中包含数码管的段选和位选设计,Led灯循环设计,以及整点报时的设计。模块的输入信号有数码管扫描频率 cl

23、k2ms,秒、分、时各模块的个位和十位输入,以及由分模块向时模块产生的进位脉冲信号。由VHDL语言生成的模块图和程序说明如下:¥ 口-吐 2rZ4" 523 .0;jc=rihfT. 0r*l3. 34 75 扇一MF迂 4"卜寮.3;clkZflTiiz:argi *iC31 .i"'l TW,"I I" * "I -. ¥-* 5,图3.7数码管显示原理图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all

24、;en tity qud ong isport(s1,s2,m1,m2,h1,h2:in std_logic_vector(3 dow nto 0); clk2ms: in std_logic;xia ng:i n std_logic;sig nal sel:std_logic_vector( 2 dow nto 0);sig nal A:std_logic_vector( 3 dow nto 0);sig nal t:std_logic_vector ( 11 dow nto 0);sig nal f:std_logic_vector(1 dow nto 0);sig nal coun t1

25、:std_logic_vector(1 dow nto 0);begi np1:p rocess(clk2ms)begi nif clk2ms'eve nt and clk2ms='1' the n sel<=sel+1;t<=t+1;if t二"110010000000" then t<=(others=>'0');end if;end if;f<=t(11)&t(10);if f二"01"the n led(3)<='0'else led(3)<

26、='1'end if;if f="10"the n led(2)<='0'else led(2)<='1'end if;if f="11" then led(1)<='0' else led(1)<='1' end if; -led的循环显示设计end p rocess p1;p2: process(sel,s1,s2,m1,m2,h1,h2) begincase sel iswhe n "000" =>xua nze<

27、二"11111110" A<=s1-秒个位在数码管 1 上显示 when "001" =>xuanze<二"11111101" A<二s2-秒十位在数码管 2 上显示 when "010" =>xuanze<二"11111011" A<二"1010"-数码管 3 上显示横杠 when "011" =>xuanze<二"11110111" A<=m1 -分个位在数码管 4 上显示

28、 when "100" =>xuanze<二"11101111" A<=m2-分十位在数码管 5 上显示 when "101" =>xuanze<二"11011111" A<二"1011"-数码管 6 上显示横杠 when "110" =>xuanze<二"10111111" A<=h1-时个位在数码管 7 上显示 when "111" =>xuanze<二"0

29、1111111" A<=h2-时十位在数码管 8 上显示 whe n others =>n ull;end case;end p rocess p2;p3:p rocess(A)begincase A is=> xia nshi <="11000000"-显示0=> xia nshi <="11111001"-显示1=> xia nshi <="10100100"-显示2=> xia nshi <="10110000"-显示3=> xia

30、nshi <="10011001"-显示4=> xia nshi <="10010010"-显示5=> xia nshi <="10000010"-显示6=> xia nshi <="11111000"-显示7=> xia nshi <="10000000"-显示8when "0000"whe n "0001"whe n "0010"whe n "0011"whe

31、 n "0100"whe n "0101"whe n "0110"whe n "0111"whe n "1000"when "1001" => Xia nshi <="10010000"whe n "1010" =>xia nshi <="10111111"whe n "1011" =>xia nshi <="10111111"-显示9-显示

32、-显示-whe n others =>n ull;-数码管的段选设计end case;end p rocess p3;P4:p rocess(xia ng)beginif xiang-1' then buzzer<='0'-当进位信号 xiang 为 1 时就把低电平给 buzzer-否则把高电平给buzzer不给蜂鸣器触发信号让蜂鸣器响else buzzer<='1'end if;end p rocess p4;-结束进程end behav;3.2数字钟的顶层设计原理图HHHgtlBiHN;亠,亠.J Pt E亠.亠.:;N H: j

33、QPP狀 HH N ;<£=區石:;:; f i :;:;1-'+- <_ anw c二 r;二餐& 氐IRC-(2 -.spi"n 亠Sr-芒二w=- al -T - - i = Tgr*三N.UJlu.u.-.u.u 二 -*-m虽聖目 J J- rllJW"M:>.-SZZIZHIkc-kb-*%右三hr.1 c 勺一亍£= J 皀MMIBM苓:二cf 1_-_flf 1图3.8数字钟的顶层设计原理图3.3系统仿真与调试将调试好的程序下载到实验板上进行验证,达到了设计的各项功能。时钟准确计数,各模块的进位也正确,当

34、按下实验板上的 key1键时系统复位清零,实验板上的 key2键可实现系统的暂停和开始,在系统暂停的状态下,按key3键可实现调节秒计数,每按一次计数加一,key4键可实现调节分模块,每按一次计数加一,长按则 一直加,当达到整点时,蜂鸣器发声。其中一些模块在Quartus II下的仿真如下:1).按键去抖动仿真:Sane血-卩320. P 帖80 0 卫rllrqunnnrLWUumwuuumwLWLnnnjmunrLTLrJunJirJuipu_ITTTurrnL"IIII'I图3.9按键去抖动仿真效果图由于0.5s太长,在本仿真中设置了很小的一个量 10clk,从图中可以

35、看出基本 实现了按键去抖动的效果。无论按键怎么抖动,输出总是保持稳态 10clk,当下一个 触发来了以后,就可以触发单稳态。2).六十进制波形仿真:cLkrEScutlLTUwvwwuwLrmnmmwLrmjmfwwLm0L.2图3.10六十进制波形仿真图由上图可见,当1s的时钟信号加入时,个位out1从0到9不断循环,而且当 个位out1记到9时产生一个进位信号 使十位out2加一,以此类推就实现了六十进 制计数。基本达到了正确计数的理想效果。3).二十四进制波形仿真:LnMruiTLmrLrLRRRrLrLnmmnnmmnnnnnnnnjelkrxsa0 autl田艸吃C; i Xur r

36、iTBO 0XiIIL I:I II I图3.11二十四进制波形仿真图由上图看出十位为0或1时,个位记到9时,十位才进行加一计数,但当十位 为2时,个位记到3时,十位变成了 0,个位又从0重新开始计数,这样就实现了 二十四进制的计数。从图形的显示波形可知,设计基本达到了正确计数的功能。4).秒、分、时组合后波形仿真:elkLrLruuuLrLrumrLrLmnrLrLrLnLRrLnjmrLrLrmnrLrLrmn04r ssethfrutlKout2mQutlF*ut2S out-1SQUt21-LO!1】U1结束语这个实验带给我的体会很多也很深, 我以前没有对数字时钟进行系统的设计, 这

37、次独立的设计,我遇到了很多问题,也走了很多弯路,还好最后终于通过自己的努力 看到了理想的结果。通过实验,我对EDA技术和FPGA技术有了更进一步的理解, 掌握了 FPGA的层次化设计电路的方法,掌握了用 VHDL语言编写各个功能模块 并通过波形确定电路设计是否正确。掌握了下载验到目标器件的过程。实验中遇到的问题很多,有的是很基础的但我却不知道,例如数码管的扫描频率, 刚开始时数码管不显示,我找了很多原因都没想到是扫描频率的问题, 浪费了很多时 间。还有分频的时候,看过很多分频的电路程序,但那些并不是都可以实现准确的分 频,需要通过波形进行验证。还有计数器的设计,我用了很长时间才编写出来,现在

38、看看,也没有那么难了。总之,我很感谢这次实验可以给我这样的机会,这个实验给了我很对的收获,我 相信这会对我以后的学习和工作都有帮助。参考文献1周立功,SOPC嵌入式系统基础教程,北京航空航天大学出版社,2008.42周立功,SOPC嵌入式系统实验教程,北京航空航天大学出版社,2006.73张志刚,FPGA与SOPC设计教程一DE实践,西安电子科技大学出版社,20074潘松黄继业,EDA技术实用教程,科学出版社,2006.8华清远见嵌入式培训中心,FPGA应用开发入门与典型实例,人民邮电出版社,2008.6非常感谢李老师对我们的细心详细的指导, 要不是李老师很仔细的检查我的课程设计,并从中发现我

39、的诸多错误,我现在也没法这么快的把课程设计完成。李老师为人随和亲切,上课时总是不忘记鼓励我们,老师非常耐心地给我们讲了 这次课程设计应该要注意的地方,我们应该用什么心态去看待这次的课程设计, 他说 对课程设计对于电子科学与技术专业的学生是有很大帮助的, 这可以提高我们的动手 能力和协同能力,所以李老师要求我们一定要认真对待! 老师的鼓励使我认识到以后 还要多学习各种电子方面的书籍,多进行操作,提高动手能力和理论水平!在这次课程设计中我也遇到了比较多的问题, 不过李老师每次都是不厌其烦给我们批改了, 经 过李老师的仔细批改,大部分的错误都解决了。老师无微不至的关怀和谆谆的教诲, 高深的学术造诣让

40、我获益匪浅,也让我学到了很多的关于课程设计的宝贵的经验,这是一生受益的事情!所以,再一次由衷的的感谢李老师,谢谢!附录源程序代码library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity szz isport( Clk,k1,k2,k3,k4,c1,c2,ok2,ok3,reset1,reset2,clk2ms,xia ng:in std_logic; s1,s2,m1,m2,h1,h2:in std_logic_vector(3 dow nto 0);Clk2ms,clk500ms,

41、clk1s,o1,o2,o3,o4,ck:out std_logic;out1,out2,out3,out4:out std_logic_vector(3 dow nto 0);xua nze,xia nshi:out std_logic_vector(7 dow nto 0);end szzarchitecture one of szz is sig nal m,t1:std_logic;sig nal hh1,hh2,ss1,ss2,A:std_logic_vector( 3 dow nto 0);sig nal sel:std_logic_vector( 2 dow nto 0);sig

42、 nal t2:std_logic_vector ( 11 dow nto 0);sig nal f,co un t1:std_logic_vector(1 dow nto 0); begi n分频模块pinivp1:p rocess(clk);-进程 p1variable cou nt1: in teger range 0 to 49999999;beginif(clk'event and clk='1')then count1:=count1 + 1;-在clk 的上升沿计数 if cou nt1<=24999999 then clk1s<-0'

43、elsif cou nt1<=49999999 then clk1s<='1'else cou nt1:=0-产生周期为1s的时钟信号clk500ms<-0'elsif cou nt3<=24999999 then clk500ms<-1'else count3:=0-产生周期为500ms的时钟信号end if;end if;end process p1-;-结束进程 p1p 2: process(clk);-进程 p2variable coun t2:i nteger range 0 to 99999;beginif(clk

44、9;eve nt and clk='1')the n cou nt2:=cou nt2+1;-在 clk 上升沿计数 if cou nt2<=49999 then clk2ms<-0'elsif count2<=99999 then clk2ms<='1'-产生周期为 2ms的扫描信号 end if;end if;end process p2-;-结束进程 p2p3:p rocess(clk);-进程 p3variable cou nt3: in teger range 0 to 24999999;beg inif(clk'

45、;eve nt and clk='1')the n cou nt3:=cou nt3+1;-在 clk 上升沿计数 if cou nt3<=12499999 then end if;end if;end p rocess p3; 按键去抖动模块qudoup4: process(clk,k1,k2,k3,k4)variable can t1:i nteger;variable can t2:i nteger;variable can t3:i nteger;variable can t4:i nteger;beginif clk'eve nt and clk-1&#

46、39; the nif k1='1' then can t1:=0;end if;-设置计数初值if k2='1' then can t2:=0;end if;-设置计数初值if k3='1' then ca nt3:=0;-设置计数初值 end if;if k4='1' then can t4:=0;end if;-设置计数初值if can t1>2499999 then o1<-0'else o1<='1'-延时 0.5s end if;if can t2>2499999 the

47、n o2<='0'else o2<='1'-延时 0.5s end if;if can t3>2499999 then o3<='0'else o3<='1'-延时 0.5send if;if can t4>2499999 then o4<='0'else o4<='1'-延时 0.5send if;can t1:=ca nt1+1;-加一计数can t2:=ca nt2+1;-加一计数can t3:=ca nt3+1;-加一计数can t4:=ca

48、nt4+1;-加一计数end if;end p rocess p4; 按键控制模块self1p5: process(ok2,ok3,c1);-ok2 和 ok3 触发进程beginif ok2'event and ok2='0' then m<二not m;-由ok2 的动作产生 m的电平信号end if;if m-1' the n ck<=not(ok3);-把按键ok3的脉冲信号给输出else ck<=c1 -否则把正常计数时钟给输出end if;end p rocess p5-结束进程六十进制模块can tsixtyp6:p rocess

49、(clk,reset1) beginif(reset1='0')then ss1<="0000"ss2<="0000"elsif(clk'eve nt and clk='1')the nif (ss仁"1001" and ss2="0101") then c2<='1'-当计数到 59时产生进位信号 else c2<='0'-否则不产生end if;if ss1="1001" then ss1<

50、="0000"if ss2="0101" then ss2<="0000"else ss2<=ss2+1;end if;else ss1<=ss1+1-;-计数过程end if;end if;end p rocess p6-结束进程out1<=ss1;out2<=ss2-把信号送输出 二十四进制模块 hourtwenty p7:p rocess(clk,reset2)begi nif(reset2='0')then hh1v二"0000"hh2v="0000&

51、quot;elsif(clk'eve nt and clk='1')the nif (hh仁"0011" and hh2="0010")a nd(ss仁"1001" and ss2="0101") then hh2<="0000"end if;if (hh1="1001")a nd(ss2二"0101" and ss仁"1001") the nhh2<=hh2+1;end if;end if;end

52、p rocess p7;p8:p rocess(clk,reset2) begi nif(reset2='0')then hh1v二"0000"hh2v="0000"elsif(clk'eve nt and clk='1')the nif (hh仁"0011" and hh2="0010")a nd(ss仁"1001" and ss2="0101") then hh1<="0000"end if;if (hh1

53、="1001")a nd(ss仁"1001" and ss2="0101") the nif (hh1="1001") thenhh1<="0000"else hh1<=hh1+1;end if;end if;end if;end p rocess p8;out3v=hh1;out4v=hh2;-把信号送输出 数码管显示模块qudongp9:p rocess(clk2ms)begi nif clk2ms'eve nt and clk2ms='1' then s

54、el<=sel+1;t2<=t2+1; if t2二"110010000000" then t2<=(others=>'0');end if;end if;f<=t2(11)&t2(10);if f="01" the n led(3)<='0'else led(3)<='1'end if;if f="10" the n led(2)<='0'else led(2)<='1'end if;if f="11" then led(1)<='0' else led(1)<='1'end if;-led的循环显示设计end p rocess p9;p10: process(sel,s1,s2,m1,m2

温馨提示

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

评论

0/150

提交评论