用VHDL编数字时钟
- 格式:docx
- 大小:68.79 KB
- 文档页数:6
3.2.分频器2:将2.5MHz时钟信号变频为1000Hz接时间扫描模块。
(1)编写程序如下:library ieee;use ieee.std_logic_1164.all;entity div0 isport(clk: in bit;q: buffer bit);end div0;architecture a of div0 issignal counter:integer range 0 to 1249;beginprocess(clk)beginif (clk'event and clk='1') thenif counter=1249 thencounter<=0;q<= not q;else counter<=counter+1;end if;end if;end process;end a;3.3.十进制计数器(1)编写程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk:in std_logic;clr:in std_logic;start:in std_logic;daout:buffer std_logic_vector(3 downto 0);co:out std_logic);end entity cnt10;architecture art of cnt10 isbeginprocess(clk,clr,start)beginif clr='0' then daout<="0000";elsif (clk'event and clk='1')thenif (start='1')thenif daout="1001"then daout<="0000";co<='1';else daout<=daout+'1';co<='0';end if;end if;end if;end process;end art;写程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt6 isport(clk,clr,start:in std_logic;daout:buffer std_logic_vector(3 downto 0);co:out std_logic);end entity cnt6;architecture art of cnt6 isbeginprocess(clk,clr,start)beginif clr='0' then daout<="0000";elsif (clk'event and clk='1')thenif (start='1')thenif daout="0101"then daout<="0000";co<='1';else daout<=daout+'1'; co<='0';end if;3end if;end if;end process;end art;3.5.时间扫描模块(1)编写程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity seltime isport(clk:in std_logic;din1,din2,din3,din4,din5,din6:in std_logic_vector(3 downto0);dp:out std_logic;sel: out std_logic_vector(2 downto 0);daout:out std_logic_vector(3 downto 0));end seltime;architecture fun of seltime issignal count:std_logic_vector(2 downto 0);beginsel<=count;process(clk)beginif(clk'event and clk='1') thenif(count>="101") then count<="000";else count<=count+1;end if;end if;case count iswhen "000" =>daout<= din1 (3 downto 0); dp<='0';when "001" =>daout<= din2 (3 downto 0); dp<='0';when "010" =>daout<= din3 (3 downto 0); dp<='1';when "011" =>daout<= din4 (3 downto 0); dp<='0';when "100" =>daout<= din5 (3 downto 0); dp<='1';when others =>daout<=din6 (3 downto 0); dp<='0';end case;end process;end fun;3.6.显示译码器(1)编写程序如下:library ieee;use ieee.std_logic_1164.all;entity deled isport(num:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0));end deled ;architecture a of deled isbeginprocess(num)begincase num iswhen"0000"=>led<="";when"0001"=>led<="";when"0010"=>led<="";when"0011"=>led<="";when"0100"=>led<="";when"0101"=>led<="";when"0110"=>led<="";when"0111"=>led<="";when"1000"=>led<="";when"1001"=>led<="";when others=>led<="";end case;end process;end a;3.7.报警器控制模块5(1)编写程序如下:library ieee;use ieee.std_logic_1164.all;entity alarm isport(I,clk: in bit;q: out bit);end alarm;architecture a of alarm issignal counter:integer range 0 to 49;signal q1:integer range 0 to 9;signal q0:bit;beginprocess(I,clk)beginif (clk=’1’ and clk’event) thenif (i=’1’)thenif counter=49 then counter<=0; q0<= not q0; q1<=q1+1;else counter<=counter+1;end if;q<=q0;end if; end if;end process;end a;1.顶层文件library ieee;use ieee.std_logic_1164.all;entity sec_clock isport(clk,stop,start:in std_logic;sel:out std_logic_vector(2 downto 0);speaker:out bit;a,b,c,d,e,f,g,dp:out std_logic);end sec_clock;architecture behave of sec_clock iscomponent div isport(clk,clr:in std_logic;q:buffer std_logic);end component;component div0 isport(clk:in std_logic;q:buffer std_logic);end component;component cnt10 isport(clk,clr,start:in std_logic;co:out std_logic;daout:buffer std_logic_vector(3 downto 0));end component;component cnt6 isport(clk,clr,start:in std_logic;co:out std_logic;daout:buffer std_logic_vector(3 downto 0));end component;component seltime isport(clk:in std_logic;din1,din2,din3,din4,din5,din6:in std_logic_vector(3 downto0);dp:out std_logic;sel:out std_logic_vector(2 downto 0);daout:out std_logic_vector(3 downto 0));end component;component deled isport(num:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0));end component;component alarm isport(clk,i:in std_logic;q:out bit);end component;signal co1,co2,co3,co4,co5,co6:std_logic;7signal do1,do2,do3,do4,do5,do6,do7:std_logic_vector(3 downto 0);signal q1,q2:std_logic;signal ledout:std_logic_vector(6 downto 0);beginf1:div port map(clk=>clk, clr=>stop, Q=>q1);f2:div0 port map(clk=>clk, Q=>q2);u1:cnt10 port map(clk=>q1, clr=>stop, start=>start, co=>co1,daout=>do1);u2:cnt10 port map(clk=>co1, clr=>stop, start=>start, co=>co2,daout=>do2);u3:cnt10 port map(clk=>co2, clr=>stop, start=>start, co=>co3,daout=>do3);u4:cnt6 port map(clk=>co3,clr=>stop,start=>start,co=>co4,daout=>do4);u5:cnt10 port map(clk=>co4,clr=>stop,start=>start,co=>co5,daout=>do5);u6:cnt6 port map(clk=>co5,clr=>stop,start=>start,co=>co6,daout=>do6);st:seltime port map(clk=>q2,din1=>do1,din2=>do2,din3=>do3,din4=>do4,din5=>do5,din6=>do6,dp,sel=>sel,daout=>do7);de:deled port map(num=>do7,led=>ledout);al:alarm port map(clk=>q1,I=>co6,Q=>speaker);a<=ledout(6);b<=ledout(5);c<=ledout(4);d<=ledout(3);e<=ledout(2);f<=ledout(1);g<=ledout(0);end behave;。
可编辑修改精选全文完整版数字时钟设计一、题目分析1、功能介绍1)具有时、分、秒计数显示功能,以24小时循环计时。
2)时钟计数显示时有LED灯的花样显示。
3)具有调节小时、分钟及清零的功能。
4)具有整点报时功能。
2、总体方框图3、性能指标及功能设计1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。
2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。
我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。
3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。
可以根据我们自己任意时间的复位。
4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。
产生“滴答.滴答”的报警声音。
5)LED灯在时钟显示时有花样显示信号产生。
即根据进位情况,LED不停的闪烁,从而产生“花样”信号。
二、选择方案1、方案选择方案一:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。
采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。
显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。
方案二:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。
采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。
显示:小时采用24进制,而分钟和秒均60进制。
终上所述,考虑到试验时的简单性,故我选择了方案二。
三、细化框图根据自顶向下的方法以及各功能模块的的功能实现上述设计方案应系统细化框图:四、编写程序、仿真和分析1、秒计数器1)VHDL 语言描述程序见附录 2)秒计数器的仿真波形图3)波形分析数字时钟控制单元 时调整 分调整使能端信号 CLK 信号时显示 分显示 秒显示24进制 60进制 60进制LED 显示整点报花样显利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即enmin=1;reset作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。
VHDL数字时钟设计序⾔这个是我在做FPGA界的HelloWorld——数字钟设计时随⼿写下的,再现了数字钟设计的过程⽬标分析1. 时钟具有时分秒的显⽰,需6个数码管。
为了减⼩功耗采⽤扫描法显⽰2. 按键设置时间,需要对按键进⾏消抖3. 时分秒即为2个60进制计数器,⼀个24进制计数器。
模块设计综上所述,我采⽤模块化设计⽅法进⾏设计,绘制框图如下。
1. 时钟分频产⽣各个模块所需频率时钟。
2. 按键处理模块对按键信号进⾏消抖、变长脉冲为短脉冲等处理。
3. 时间控制模块产⽣时间信号或对时间进⾏设置。
4. 数码管驱动模块负责对时间信号BCD码译码为数码管的段码并且扫描输出到数码管。
下⾯对各个模块分别详细叙述时钟分频模块我打算把时钟分频模块做成“数控N分频器”,通过给分频器传⼊数值N来对时钟信号进⾏N分频。
得到的信号频率为原时钟信号的频率/N,占空⽐为1/N。
稍微考虑下其他模块所需时钟:按键处理模块100Hz ,时间控制模块1Hz,数码管驱动50Hz。
⽽输⼊时钟为33.8688MHz。
我不想传⼊的N数值过⼤,我打算先对时钟进⾏两次:第⼀次调⽤时钟分频模块得到1Mhz,第⼆次得到1Khz。
这样N的位数为10可以满⾜需求。
代码如下library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_UNSIGNED.all;entity ClkDiv isport(clk_i:IN STD_LOGIC;N_i: IN STD_LOGIC_VECTOR(9 DOWNTO 0);clk_o:OUT STD_LOGIC);end ClkDiv;architecture behavior of ClkDiv issignal count:STD_LOGIC_VECTOR(9 DOWNTO 0):="0000000001";signal clk_temp:STD_LOGIC:='0';beginprocess(clk_i)beginif(clk_i'EVENT and clk_i='1')thenif (count=N_i)thencount<="0000000001";clk_temp<='1';elsecount<=count+1;clk_temp<='0';end if;end if;end process;clk_o<=clk_temp;end behavior;仿真结果如下:2分频:输出信号为f/2Hz,占空⽐1:23分频:输出信号为f/3Hz,占空⽐1:3按键处理模块去抖动根据以往的经验,按键按下弹起电平会有⼀⼩段⽑刺,可能会引起电路误操作,所以要对按键进⾏消抖处理使变为⼲净的矩形信号。
关于VHDL中的时钟是不是可综合的问题1。
VHDL综合器中把通过边沿触发其他信号的东西统统定义为时钟信号。
比如说,一个信号B的变化需要A的下降沿来触发,那么在相应的进程中就把A看作是时钟信号,即使A可能只变化了这一次。
2。
明确了1,就来看2。
任意一个信号或者变量只能有一个时钟驱动。
多时钟驱动的信号或变量会在综合时报错。
比如说,如下语句在一个进程中:if (clk'event and clk = '1') thenB <= '1';end if;if (A'event and A = '0') thenB < = '0';end if;这里面的B就叫做被时钟clk和时钟A同时驱动了,虽然我们平时不习惯把A 也叫做时钟,但是它在综合时似确实被这样认为的。
因此,这就要求我们在写程序之前,要把所有的信号都拼尽全力的用不多于一个时钟来驱动,当然不用时钟也是可以的。
同时也引申出一点,就是一个进程的敏感表表示的是进程间的驱动关系,这个需要极其认真地考虑,要弄清楚进程间究竟是用什么通信的,尤其牵扯到时钟的时候,到搞懂究竟是哪个时钟触发了信号。
切不可随意添加信号,在仿真时可能问题不大,但是综合的时候可能会有大问题。
这个从物理上也好理解,一个又边沿触发的信号物理上就是用一个D触发器实现的,无论这个触发信号是变化很长时间还是只变化一次,只要是牵扯到检测边沿,就需要一个D触发器。
而一个信号只能对应一个D触发器,一个D触发器只能由一个时钟驱动,所以以上语句是无法综合的。
也就是说,两个时钟同时触发的D触发器现阶段无法实现。
为什么无法实现呢?留个问题。
3。
使用异步电路只有如下一种书写方式可以综合:process(clk,reset)beginif (reset = '1') thenB <= '1';elsif (clk'event and clk = '0') thenB < = '0';end if;end process;下面的语句会在综合中报错:process(clk,reset)beginif (reset = '1') thenB <= '1';end if;if (clk'event and clk = '0') thenB < = '0';end if;end process;报的错误是同步时钟前面存在异步信号。
课程设计报告设计题目:用VHDL语言实现数字钟的设计班级:学号:姓名:指导老师:设计时间:摘要本设计是基于VHDL语言的数字钟,硬件平台是Xilinx的Virtex2系列FPGA 开发板。
该数字钟具备预置年月日时分秒的功能,通过按键还可以改变数字钟显示的内容和进入不同的设置状态,并通过加减按键调整系统时间。
在整个VHDl数字电路系统中,采用层次化设计方法,自顶向下进行设计。
设计中根据系统的功能要求合理划分出层次,进行分级设计和仿真验证,将较为复杂的数字系统逻辑简化为基本的模型从而降低实现的难度。
工程中底层实体实现了年月日、时分秒的双向计数器功能,另外还单独设计了系统的时钟模块,用来生成周期为125Hz的按键扫描时钟和周期为1Hz单位脉冲时钟。
为了消除按键的抖动,为此设计了按键消抖模块,采用了状态机来对按键进行消抖。
为了实现根据年份和月份对当前月的天数的判断逻辑,采用了函数对该逻辑进行分析,给出正确的判断结果。
为了提高利用率,在工程中建立了一个包集文件,对底层实体进行了统一封装,方便顶层的调用。
底层的所有实体系统的顶层主要完成了底层的元件例化,主控状态机对系统的状态转换进行控制,按键响应和时钟重新分配电路则完成了整个系统的控制逻辑。
关键词:层次化设计,元件例化,函数,状态机目录摘要 (2)一、课程设计目的 (4)二、课程设计内容及其要求 (4)三、VHDL程序设计 (5)1.设计方案论证 (5)2.设计思路与方法 (6)3.VHDL源代码及其仿真结果 (7)1、六进制可逆计数器 (7)2、十进制可逆计数器, (9)3、十二进制可逆计数器, (11)4、二十四进制可逆计数器 (13)5、天数计数器 (16)6、判断闰年和月份 (18)7、时钟分频模块 (22)8、按键消抖模块 (24)9、程序包 (27)10、顶层实体(主控状态机) (29)四、编程下载 (38)五、课程设计总结 (38)六、参考文献 (38)一、课程设计目的诞生于1983年的VHDL语言,在1987年被美国国防部和IEEE指定为标准硬件描述语言。
一、设计题目:基于VHDL语言的电子秒表设计(可调时,有闹钟、定时功能)二、设计目的:⑴掌握较复杂的逻辑设计和调试⑵学习用原理图+VHDL语言设计逻辑电路⑶学习数字电路模块层次设计⑷掌握QuartusII软件及Modelsim软件的使用方法三、设计内容:(一)设计要求1、具有以二十四小时计时、显示、整点报时、时间设置和闹钟的功能。
2、设计精度要求为1S。
(二).系统功能描述1 . 系统输入:系统状态及校时、定时转换的控制信号为k、set、ds;时钟信号clk,采用实验箱的50MHz;系统复位信号为reset。
输入信号均由按键产生。
系统输出:8位LED七段数码管显示输出,蜂鸣器声音信号输出。
多功能数字钟系统功能的具体描述如下:2. 计时:set=1,ds=1工作状态下,每日按24h计时制计时并显示,蜂鸣器无声,逢整点报时。
3. 校时:在set=0,ds=0状态下,按下“k键”,进入“小时”校准状态,之后按下“k键”则进入“分”校准状态,继续按下“k键”则进入“秒校准”状态,之后如此循环。
1)“小时”校准状态:在“小时”校准状态下,显示“小时”数码管以1Hz的频率递增计数。
2)“分”校准状态:在“分”校准状态下,显示“分”的数码管以1Hz的频率递增计数。
3)“秒”复零状态:在“秒复零”状态下,显示“分”的数码管以1Hz的频率递增计数。
4. 整点报时:蜂鸣器在“59”分钟的第50—59,以1秒为间隔分别发出1000Hz,500Hz的声音。
5. 显示:采用扫描显示方式驱动8个LED数码管显示小时、分、秒。
闹钟:闹钟定时时间到,蜂鸣器发出交替周期为1s的1000Hz、500Hz的声音,持续时间为一分钟;6. 闹钟定时设置:在set=0,ds=1状态下,按下“k”,进入闹钟的“时”设置状态,之后按下“k键”进入闹钟的“分”设置状态,继续按下“k 键”则进入“秒”设置状态, 之后如此循环。
1)闹钟“小时”设置状态:在闹钟“小时”设置状态下,显示“小时”的数码管以1Hz 的频率递增计数。
1 引言随着科学技术的不断发展,人们对时间计量的精度要求越来越高。
相对机械钟而言,数字钟能实现准确计时,并显示时,分,秒,而且可以方便,准确的对时间进行调节。
在此基础上,还可以实现整点报时的功能。
因此,数字钟的应用十分广泛。
所谓数字时钟,是指利用电子电路构成的计时器。
1.1课题的背景、目的电子技术是一门应用很广,发展极为迅速的科学技术,尤其由于数字电子技术具有高抗干扰能力、更高的可靠性和便于计算机处理等特点,近年来得到更加迅速的发展,数字通讯设备、数字电视、数字照相机、数字摄象机等数字化产品近年如雨后春笋般大量涌现,数字电子技术已经成为今后电子技术发展的主要方向。
现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
通过数字时钟的设计,巩固计算机组成原理课程,理论联系实际,提高分析、解决计算机技术的实际问题的独立工作能力;掌握用VHDL语言编制简单的小型模块,学会数字钟的设计方法,熟悉集成电路的使用方法,初步掌握电子钟的设计方法并实现时间的显示和校对,以及报时的功能,并能对数字电子钟进行扩展。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
1.2 课程设计的内容本课程设计实现一个数字时钟,具有按秒走时功能,能够分别显示小时(2位24小时)、分钟(2位)、秒(2位)。
具有整点报时、时间调整功能,且能够对计时系统的小时、分钟进行调整。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY Clock ISPORT( CLK5:IN STD_LOGIC;CLK3:IN STD_LOGIC; --时钟控制SET1:IN STD_LOGIC;SET2:IN STD_LOGIC; --模式控制SEG_SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);SEG_DA :OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END Clock;ARCHITECTURE ADO OF Clock ISSIGNAL SEG_BUF1,SEG_BUF2,SEG_BUF3,SEG_BUF4:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SEG_BUF5,SEG_BUF6,SEG_BUF7,SEG_BUF8:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SEG_CNT :STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL SEG_TEMP:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS (CLK3) --扫描累加BEGINIF CLK3'EVENT AND CLK3='1' THENSEG_CNT<=SEG_CNT+1;END IF;END PROCESS;SEG_SEL<=SEG_CNT;SEG_BUF3<="1111";SEG_BUF6<="1111";PROCESS(SEG_CNT,SEG_BUF1,SEG_BUF2,SEG_BUF3,SEG_BUF4,SEG_BUF5,SEG_BUF6,SEG_BUF7 ,SEG_BUF8)BEGINCASE SEG_CNT ISWHEN "000" => SEG_TEMP<=SEG_BUF1;WHEN "001" => SEG_TEMP<=SEG_BUF2;WHEN "010" => SEG_TEMP<=SEG_BUF3;WHEN "011" => SEG_TEMP<=SEG_BUF4;WHEN "100" => SEG_TEMP<=SEG_BUF5;WHEN "101" => SEG_TEMP<=SEG_BUF6;WHEN "110" => SEG_TEMP<=SEG_BUF7;WHEN "111" => SEG_TEMP<=SEG_BUF8;WHEN OTHERS => NULL;END CASE;END PROCESS;PROCESS (SEG_TEMP) --显示转换BEGINCASE SEG_TEMP ISWHEN "0000" => SEG_DA<=x"3F";WHEN "0001" => SEG_DA<=x"06";WHEN "0010" => SEG_DA<=x"5B";WHEN "0011" => SEG_DA<=x"4F";WHEN "0100" => SEG_DA<=x"66";WHEN "0101" => SEG_DA<=x"6D";WHEN "0110" => SEG_DA<=x"7D";WHEN "0111" => SEG_DA<=x"07";WHEN "1000" => SEG_DA<=x"7F";WHEN "1001" => SEG_DA<=x"6F";WHEN "1010" => SEG_DA<=x"77";WHEN "1011" => SEG_DA<=x"7B";WHEN "1100" => SEG_DA<=x"39";WHEN "1101" => SEG_DA<=x"3E";WHEN "1110" => SEG_DA<=x"79";WHEN "1111" => SEG_DA<=x"00";END CASE;END PROCESS;PROCESS(Clk5,SET1,SET2)BEGINif(SET1='1' AND SET2='1') then --系统复位SEG_BUF1<="0000";SEG_BUF2<="0000";SEG_BUF4<="0000";SEG_BUF5<="0000";SEG_BUF7<="0000";SEG_BUF8<="0000";elsif(Clk5'event and Clk5='1') thenif(SET1='1' and SET2='0') then --调节小时if(SEG_BUF7=9) thenSEG_BUF7<="0000";SEG_BUF8<=SEG_BUF8+1;elsif(SEG_BUF8>=2 and SEG_BUF7>=3) thenSEG_BUF7<="0000";SEG_BUF8<="0000";elseSEG_BUF7<=SEG_BUF7+1;end if;elsif(SET1='0' and SET2='1') then --调节分钟if(SEG_BUF4=9) thenSEG_BUF4<="0000";if(SEG_BUF5=5) thenSEG_BUF5<="0000";elseSEG_BUF5<=SEG_BUF5+1;end if;elseSEG_BUF4<=SEG_BUF4+1;end if;elsif(SET1='0' and SET2='0') then --正常计数SEG_BUF1<=SEG_BUF1;SEG_BUF2<=SEG_BUF2;SEG_BUF4<=SEG_BUF4;SEG_BUF5<=SEG_BUF5;SEG_BUF7<=SEG_BUF7;SEG_BUF8<=SEG_BUF8;if(SEG_BUF1=9) thenSEG_BUF1<="0000";if(SEG_BUF2=5) thenSEG_BUF2<="0000";if(SEG_BUF4=9) thenSEG_BUF4<="0000";if(SEG_BUF5=5) thenSEG_BUF5<="0000";if(SEG_BUF7=9) thenSEG_BUF7<="0000";SEG_BUF8<=SEG_BUF8+1;elsif(SEG_BUF8>=2 and SEG_BUF7>=3) thenSEG_BUF7<="0000";SEG_BUF8<="0000";elseSEG_BUF7<=SEG_BUF7+1;end if;elseSEG_BUF5<=SEG_BUF5+1;end if;elseSEG_BUF4<=SEG_BUF4+1;end if;elseSEG_BUF2<=SEG_BUF2+1;end if;elseSEG_BUF1<=SEG_BUF1+1;end if;end if;end if;end process;end ADO;引脚绑定:ClK3 PIN_25CLK5 PIN_89SET1 PIN_32SET2 PIN_33SEG_DA[7] PIN_128SEG_DA[6] PIN_142SEG_DA[5] PIN_141SEG_DA[4] PIN_138SEG_DA[3] PIN_137SEG_DA[2] PIN_136SEG_DA[1] PIN_135SEG_DA[0] PIN_133SEG_SEL[2] PIN_127SEG_SEL[1] PIN_126SEG_SEL[0] PIN_125仿真图:。