VHDL时钟程序.doc

上传人:灯火****19 文档编号:135020587 上传时间:2020-06-11 格式:DOC 页数:5 大小:45.50KB
返回 下载 相关 举报
VHDL时钟程序.doc_第1页
第1页 / 共5页
VHDL时钟程序.doc_第2页
第2页 / 共5页
VHDL时钟程序.doc_第3页
第3页 / 共5页
VHDL时钟程序.doc_第4页
第4页 / 共5页
VHDL时钟程序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《VHDL时钟程序.doc》由会员分享,可在线阅读,更多相关《VHDL时钟程序.doc(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 clkevent and clk=1 then if bcd_h_m_r =0101 and bcd_l_m_r =1001 then bcd_h_m_r =0000; -59秒,分钟进一 bcd_l_m_r =0000; up_r1 = 1 ; else if bcd_l_m_r(3 downto 0) = 1001 then -秒的个位为9,十位进一,分钟不进为 bcd_l

5、_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) = 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

6、_r =0000; bcd_l_f_r =0000; up_r2 =0;else if up_r1event 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 downto 0) = 0000 ; bcd_h_f_r(3 downto 0) = bcd_h_f_r(3

7、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: process ( up_r2 , reset) 时钟beginif reset=0 then bcd_h_s_r =0000; bcd_l_s_r =0000; up =0;else if up_r2event and up_r2

8、=1 then if bcd_h_s_r =0010 and bcd_l_s_r =0011 then -23时,时钟进一。 bcd_h_s_r =0000; bcd_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 =

9、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,seg1,seg2,seg3,se

10、g4,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_VECTOR(31 DOWNTO 0)

11、; SIGNAL disp_r: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINdata = 00000001001000110100010101100111;-d;-这是一个接口,存放要显示的数据 PROCESS(clk) -1kHz BEGIN IF clkEVENT AND clk=1 THEN IF count=7 THEN count=count+1; ELSE count disp_r=data(31 DOWNTO 28);dig_r disp_r=data(27 DOWNTO 24);dig_r disp_r=data(23 DOWNTO 20);dig_r disp_r=data(19 DOWNTO 16);dig_r disp_r=data(15 DOWNTO 12);dig_r disp_r=data(11 DOWNTO 8);dig_r disp_r=data(7 DOWNTO 4);dig_r disp_r=data(3 DOWNTO 0);dig_r=11111110;-00000

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号