基于VHDL语言的数字秒表的实现_第1页
基于VHDL语言的数字秒表的实现_第2页
基于VHDL语言的数字秒表的实现_第3页
基于VHDL语言的数字秒表的实现_第4页
基于VHDL语言的数字秒表的实现_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、1 设计方案1. 1 􀀂 系统功能要求( 1) 具有时钟秒表系统功能要求显示功能, 用6个数码管分别显示时、分、秒; 计时范围为:00: 00: 00 23: 59:59。( 2) 计时精度是1s;( 3) 具有启/ 停开关, 复位开关, 可以在任何情况下使用。1. 2 􀀂 总体框图根据系统设计要求, 系统的底层设计主要由六十进制计数器模块、二十四进制计数器模块、分频模块、LED显示模块组成。系统顶层设计图如图所示:图中左边为三个输入信号en,clk,reset;分为启/ 停开关,时钟信号和复位开关。中间是从上倒下时count24,count60,count

2、60,fenpinqi;右边是clock1和输出信号wei3.0, led6.0。2 􀀂 模块功能设计由六十进制计数器模块、二十四进制计数器模块、分频模块执行计时功能, 输入信号是256 Hz,通过分频后为1hz,时钟信号是1 Hz 作为秒表的秒输入, 秒为60 进制计数器, 分也为60 进制计数器, 小时采用二十四进制计数器, 各级进位作为高位的使能控制。2. 1 六十进制计数器模块该模块部分VHDL 源程序如下:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY c

3、ount60 ISPORT( en,Reset,clk: in STD_LOGIC; qa: out STD_LOGIC_VECTOR(3 DOWNTO 0); qb: out STD_LOGIC_VECTOR(3 DOWNTO 0); rco: OUT STD_LOGIC); END count60;ARCHITECTURE a OF count60 ISBEGINprocess(clk)variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0);variable tmb: STD_LOGIC_VECTOR(3 DOWNTO 0);beginIf Reset =&#

4、39;0'then tma:="0000" tmb:="0000" elsif clk'event and clk='1' thenif en='1' thenrco<=tmb(2)and tmb(0)and tma(3)and tma(0); if tma="1001" then tma:="0000" if tmb="0101" then tmb:="0000" else tmb:=tmb+1; end if; els

5、e tma:=tma+1; end if; end if; end if; qa<=tma;qb<=tmb; end process;END a;2. 2 二十四进制计数器模块该模块部分VHDL 源程序如下:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count24 ISPORT( en,Reset,clk: in STD_LOGIC; qa: out STD_LOGIC_VECTOR(3 DOWNTO 0); qb: out STD_LOGIC_VECTOR(3 D

6、OWNTO 0); END count24;ARCHITECTURE a1 OF count24 ISBEGINprocess(clk)variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0);variable tmb: STD_LOGIC_VECTOR(3 DOWNTO 0);beginIf Reset = '0'then tma:="0000" tmb:="0000" else if clk'event and clk='1' then if en='1' then

7、if tma="1001" then tma:="0000"tmb:=tmb+1; elsif tmb="0010" and tma="0011" then tma:="0000"tmb:="0000" else tma:=tma+1; end if; end if; end if;end if; qa<=tma;qb<=tmb; end process;END a1;2. 3 分频器模块该模块部分VHDL 源程序如下:LIBRARY IEEE;USE IEEE.

8、STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpinqi IS PORT (CLK,RST:in std_logic; CLK_OUT:out std_logic); END fenpinqi;ARCHITECTURE behav OF fenpinqi ISsignal clk_data:std_logic;SIGNAL CNT6 : INTEGER := 0;BEGIN PROCESS(CLK) BEGIN IF RST = '0' THEN CNT6<=0 ; ELSIF CLK'E

9、VENT AND CLK='1' THEN IF CNT6=2 THEN clk_data<=NOT clk_data;CNT6<=0;ELSE CNT6<=CNT6+1; END IF; END IF; CLK_OUT<=clk_data; END PROCESS;END behav; 2. 4 LED显示模块该模块部分VHDL 源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clock1 IS PORT(CLK: IN STD

10、_LOGIC;S1, S2, S3, S4, S5, S6: IN STD_LOGIC_VECTOR(3 DOWNTO 0);WEI: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);LED: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY;ARCHITECTURE behave OF clock1 ISSIGNAL CNT6 : INTEGER RANGE 0 TO 5 := 0;SIGNAL SHUJU: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PRO1:PROCESS(CLK)BEGINIF CLK&

11、#39;EVENT AND CLK = '1' THENCNT6 <= CNT6 + 1;CASE CNT6 ISWHEN 0 => WEI <= "000" SHUJU <= S1;WHEN 1 => WEI <= "001" SHUJU <= S2; WHEN 2 => WEI <= "010" SHUJU <= S3;WHEN 3 => WEI <= "011" SHUJU <= S4;WHEN 4 => WE

12、I <= "100" SHUJU <= S5;WHEN 5 => WEI <= "101" SHUJU <= S6;CNT6<=0;WHEN OTHERS => NULL;END CASE;END IF;END PROCESS;PRO2: PROCESS(SHUJU)BEGINCASE SHUJU ISWHEN "0000" => LED<= "1111110" ;WHEN "0001" => LED<= "011000

13、0" ; WHEN "0010" => LED<= "1101101" ; WHEN "0011" => LED<= "1111001" ; WHEN "0100" => LED<= "0110011" ; WHEN "0101" => LED<= "1011011" ; WHEN "0110" => LED<= "1011111&quo

14、t; ; WHEN "0111" => LED<= "1110000" ; WHEN "1000" => LED<= "1111111" ; WHEN "1001" => LED<= "1111011" ; WHEN others=> LED<= "0000000" ; END CASE;END PROCESS;END ; 3 仿真波形及分析 各部分模块完成后, 用Quartus 对程序编译、仿真、得到的仿真

15、波形,各模块仿真波形及顶层仿真波形如下:3.1 六十进制计数器模块仿真图1-1图1-2图1-1、图1-2均为二十四进制计数器仿真波形图CLK:时钟信号 RST:复位信号 低电平清零 En:置数端 低电平不让它继续计数qb、qa:分别为输出数的十位个位,qb取值范围为0-5,qa取值范围为0-9rco:进位信号,当qb=5,qa=0, rco=0时,clk上升沿来到后,qb=0, qa=0, rco=1; 当qb=5,qa=0, rco=1时,clk上升沿来到后,qb=0, qa=0, rco=03.2 二十四进制计数器模块仿真图2-1图2-2图2-1,图2-2 均为二十四进制计数器仿真波形图C

16、LK:时钟信号 RST:复位信号 低电平清零 En:置数端 低电平不让它继续计数qb、qa:输出的四位二进制数,分别对于要输出数的十位个位3.3 分频器模块仿真因时钟脉冲(为256hz)通过分频器256分频后频率(为1hz),仿真波形显示前一小段,不能看出输出规律,所以做仿真是用3分频后的波形,真正在实验箱上验证是再改。图3-1CLK:输入分频前的时钟信号 RST:复位信号 低电平清零Clkout:输出分频后的时钟信号 3.4 LED显示模块仿真Clk:时钟信号s1,s2,s3,s4,s5,s6:输入的的四位二进制数led:输出的七位二进制数,对应数码管脚的输出gfedcbawei:输出的三位

17、而进制数(输出范围为000-101),控制led输出,当wei=000时,led输出s1对应的十进制数的数码管脚gfedcba当wei=001时,led输出s2对应的十进制数的数码管脚gfedcba当wei=010时,led输出s3对应的十进制数的数码管脚gfedcba当wei=011时,led输出s4对应的十进制数的数码管脚gfedcba当wei=100时,led输出s5对应的十进制数的数码管脚gfedcba当wei=101时,led输出s6对应的十进制数的数码管脚gfedcba3.5 顶层仿真因时钟脉冲(为256hz)通过分频器256分频后频率(为1hz),仿真波形显示前一小段,不能看出输出规律,所以做仿真是

温馨提示

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

评论

0/150

提交评论