VHDL时钟程序_第1页
VHDL时钟程序_第2页
VHDL时钟程序_第3页
VHDL时钟程序_第4页
VHDL时钟程序_第5页
全文预览已结束

下载本文档

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

文档简介

1、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Counter_m_f_s isport (clk,reset : in std_logic ;bcd_h_m: out std_logic_vector(3 downto 0); -秒钟个位输出bcd_l_m: out std_logic_vector(3 downto 0); -秒钟十位输出bcd_l_f: out std_logic_vector(3 downto 0); -分钟个位输出bcd_h_f: out std_logic

2、_vector(3 downto 0); -分钟十位输出bcd_l_s: out std_logic_vector(3 downto 0); -时钟个位输出bcd_h_s: out std_logic_vector(3 downto 0); -时钟十位输出up : out std_logic);end Counter_m_f_s ;architecture behav of Counter_m_f_s issignal bcd_h_m_r : std_logic_vector(3 downto 0); -秒钟个位内部信号signal bcd_l_m_r : std_logic_vector(3

3、 downto 0); -秒钟十位内部信号signal bcd_h_f_r : std_logic_vector(3 downto 0); -分钟个位内部信号signal bcd_l_f_r : std_logic_vector(3 downto 0); -分钟十位内部信号signal bcd_h_s_r : std_logic_vector(3 downto 0); -时钟个位内部信号signal bcd_l_s_r : std_logic_vector(3 downto 0); -时钟个位内部信号signal up_r1 : std_logic;signal up_r2 : std_log

4、ic;beginU1: process (clk, reset) -秒钟 begin if reset='0' then bcd_h_m_r <="0000" bcd_l_m_r <="0000" up_r1 <='0'else if clk'event and clk='1' then if bcd_h_m_r ="0101" and bcd_l_m_r ="1001" then bcd_h_m_r <="0000"

5、; -59秒,分钟进一 bcd_l_m_r <="0000" up_r1 <= '1' ; else if bcd_l_m_r(3 downto 0) = "1001" then -秒的个位为9,十位进一,分钟不进为 bcd_l_m_r(3 downto 0)<= "0000" ; bcd_h_m_r(3 downto 0) <= bcd_h_m_r(3 downto 0) + 1 ; up_r1 <= '0' else bcd_l_m_r(3 downto 0) <

6、= bcd_l_m_r(3 downto 0) + 1 ; up_r1 <= '0' end if; end if; end if; end if; end process;bcd_h_m <= bcd_h_m_r;bcd_l_m <= bcd_l_m_r;U2: process (up_r1 , reset) -分钟 beginif reset='0' then bcd_h_f_r <="0000" bcd_l_f_r <="0000" up_r2 <='0'else

7、if up_r1'event and up_r1='1' then if bcd_h_f_r ="0101" and bcd_l_f_r ="1001" then -59分,时钟进一 bcd_h_f_r <="0000" bcd_l_f_r <="0000" up_r2 <= '1' ; else if bcd_l_f_r(3 downto 0) = "1001" then -分的个位为9,十位进一,时钟不进位 bcd_l_f_r(3 d

8、ownto 0) <= "0000" ; bcd_h_f_r(3 downto 0) <= bcd_h_f_r(3 downto 0) + 1 ; up_r2 <= '0' else bcd_l_f_r(3 downto 0) <= bcd_l_f_r(3 downto 0) + 1 ; up_r2 <= '0' end if; end if; end if; end if; end process;bcd_h_f <= bcd_h_f_r;bcd_l_f <= bcd_l_f_r; U3: proc

9、ess ( up_r2 , reset) 时钟beginif reset='0' then bcd_h_s_r <="0000" bcd_l_s_r <="0000" up <='0'else if up_r2'event and up_r2='1' then if bcd_h_s_r ="0010" and bcd_l_s_r ="0011" then -23时,时钟进一。 bcd_h_s_r <="0000" b

10、cd_l_s_r <="0000" up <= '1' ; else if bcd_l_s_r(3 downto 0) = "1001" then bcd_l_s_r(3 downto 0)<= "0000" ; bcd_h_s_r(3 downto 0) <= bcd_h_s_r(3 downto 0) + 1 ; up <= '0' else bcd_l_s_r(3 downto 0) <= bcd_l_s_r(3 downto 0) + 1 ; up <=

11、 '0' end if; end if; end if; end if; end process;bcd_h_s <= bcd_h_s_r;bcd_l_s <= bcd_l_s_r; end architecture behav; 另外给大家数码管的驱动程序!LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_Unsigned.ALL;ENTITY showseg7 IS PORT(clk: IN STD_LOGIC;-d:in std_logic_vector(31 downto 0); seg0

12、,seg1,seg2,seg3,seg4,seg5,seg6,seg7,dig0,dig1,dig2,dig3,dig4,dig5,dig6,dig7:OUT STD_LOGIC );END ENTITY showseg7;ARCHITECTURE one OF showseg7 IS SIGNAL count: STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL seg_r: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL dig_r: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL data: STD_LOGIC_V

13、ECTOR(31 DOWNTO 0); SIGNAL disp_r: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk) -1kHz BEGIN IF clk'EVENT AND clk='1' THEN IF count<=7 THEN count<=count+1; ELSE count<="000" END IF; END IF; END PROCESS; PROCESS(count) BEGIN CASE count IS WHEN "000" => di

14、sp_r<=data(31 DOWNTO 28);dig_r<="01111111"-"00000000"- WHEN "001" => disp_r<=data(27 DOWNTO 24);dig_r<="10111111"-"00000000"- WHEN "010" => disp_r<=data(23 DOWNTO 20);dig_r<="11011111"-"00000000"-

15、 WHEN "011" => disp_r<=data(19 DOWNTO 16);dig_r<="11101111"-"00000000"- WHEN "100" => disp_r<=data(15 DOWNTO 12);dig_r<="11110111"-"00000000"- WHEN "101" => disp_r<=data(11 DOWNTO 8);dig_r<="1111101

16、1"-"00000000"- WHEN "110" => disp_r<=data(7 DOWNTO 4);dig_r<="11111101"-"00000000"- WHEN "111" => disp_r<=data(3 DOWNTO 0);dig_r<="11111110"-"00000000"- WHEN OTHERS => NULL; END CASE; END PROCESS; PROCESS

17、(disp_r) BEGIN CASE disp_r IS WHEN "0000" => seg_r<="11000000"-"10000001" WHEN "0001" => seg_r<="11111001"-"11111001" WHEN "0010" => seg_r<="10100100"-"10110001" WHEN "0011" => se

18、g_r<="10110000"-"11000010" WHEN "0100" => seg_r<="10011001"-"11011000" WHEN "0101" => seg_r<="10010010"-"10100100" WHEN "0110" => seg_r<="10000011"-"10100000" WHEN "0111" => seg_r<="11111000"-"10001111" WHEN "1000" => seg_r<="10000000"-"10000000" WHEN "1001" => seg_r<="10010000"-"10000100"- WHEN "1010" => seg_r<="

温馨提示

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

评论

0/150

提交评论