1、数显电子钟系统设计实验名称:数显电子钟系统设计实验目的:1学习系统设计方法2设计一个电子钟系统实验步骤:电子钟框图按 Top_Down 方法作功能分割画出各层的功能模块图(注明 port)、画出模块连接关系,并分配 I/O 管脚VHDL 编码、仿真、综合。实验要求:1. 能够对 S(秒)、MIN(分)、Hr(小时)进行计时,按 24 小时计时制。2. 要求采用 Top_Down 的设计方法系统功能和个模块功能详细描述:电子钟主要有四个组成部分:时基分频器,计时器,显示电路,控制电路,实验通过 4MHz 时钟,分频产生 S(秒)时钟,对 S(秒)信号计数,并通过LED 数码管进行扫描显示。a)
2、时基分频器:对基本时钟(4MHZ)进行分频得到 S(秒)时钟(1HZ)和扫描时钟(250HZ)。b) 计时器:主要包括 S 计时器(60 进制)、MIN 计时器(60 进制)、Hr 计时器(24 进制)c) 显示电路:用 6 位扫描数码显示(七段数码管),扫描始终用 250Hz。d) 控制电路:对电子表进行启停和复位,清零的控制。每个模块的具体实现过程: 1 时基分频模块:设计思想:利用 N 位二进制计数器进行分频,第 0 位是二分频,第一位是四分频,以次类推。故要将 4MHZ 时钟产生 1HZ 时钟须 22 位二进制计数器(21 downto 0)对其进行分频。最后将 13 位和 21 位输
3、出即是 250HZ和 1HZ 时钟。关键代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clk_div ISPORT(clk : IN STD_LOGIC;RESET : in STD_LOGIC;clk_250HZ : OUT STD_LOGIC;clk_1HZ: OUT STD_LOGIC);END clk_div;ARCHITECTURE rtl OF clk_div ISSIGNAL count : STD_LOGIC_VECTOR(21 DOWNTO 0);BEGIN
4、PROCESS(clk,reset)BEGINif RESET = 1 thencount 0);elsif (clkevent AND clk=1 ) THENCount 0); bcd10 0); elsif (CLK=1 and CLKevent )thenif( ENABLE = 1) thenif (bcd1= 4 )then if( bcd10= 2 )then bcd1 0);bcd10 0); FULL 0);bcd10 0);case data_in iswhen “000“ = data_out data_out data_out data_out data_out dat
5、a_out NULL;end case;end process;end rtl;位选者器代码:library ieee;use ieee.std_logic_1164.all;entity sel is port(a, b, c, d, e, f: in std_logic_vector(3 downto 0);s: in std_logic_vector(2 downto 0);x: out std_logic_vector(3 downto 0);end sel;architecture archmux of sel isbeginprocess (a, b, c, d,e,f,s)beg
6、inif s = “000“ thenx = f; elsif s = “001“ thenx = e;elsif s = “010“ thenx = d; elsif s = “011“ thenx = c;elsif s = “100“ thenx = b;elsex = a;end if;end process;end archmux;7 段译码相关代码:library IEEE;use IEEE.STD_LOGIC_1164.all;entity led isport(hex : in STD_LOGIC_VECTOR(3 downto 0);led : out STD_LOGIC_V
7、ECTOR(6 downto 0);end led;architecture rtl of led isbeginwith HEX selectLED=“1111001“ when “0001“, -1“0100100“ when “0010“, -2“0110000“ when “0011“, -3“0011001“ when “0100“, -4“0010010“ when “0101“, -5“0000010“ when “0110“, -6“1111000“ when “0111“, -7“0000000“ when “1000“, -8“0010000“ when “1001“, -9“0001000“ when “1010“, -A“0000011“ when “1011“, -b“1000110“ when “1100“, -C“0100001“ when “1101“, -d“0000110“ when “1110“, -E“0001110“ when “1111“, -F“1000000“ when others; -0end rtl;其中 7 段译码电路仿真波形为:同样采用 BDE 方式实现显示电路: