⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cnt.vhd

📁 该程序是用VHDL语言实现的时钟程序
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY cnt IS
	PORT(	clk:	IN	STD_LOGIC;
			rst:	IN	STD_LOGIC;
			adj:	IN	STD_LOGIC;
			adjust:	IN	STD_LOGIC_VECTOR(4 downto 0);
			qsl:	OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
			qsh:	OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
			qml:	OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
			qmh:	OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
			qhl:	OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
			qhh:	OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
		);
END cnt;

ARCHITECTURE func1 OF cnt IS
SIGNAL inter_clk: STD_LOGIC;
SIGNAL tqsl,tqsh,tqml,tqmh,tqhl,tqhh: INTEGER RANGE 0 TO 10;
SIGNAL tqh : INTEGER RANGE 0 TO 25;
BEGIN

	inter_clk <= clk OR adj;

	tqhl <= tqh 	 WHEN tqh >= 0 AND tqh < 10 ELSE
			tqh - 10 WHEN tqh >= 10 AND tqh < 20 ELSE
			tqh - 20 WHEN tqh >= 20 AND tqh < 24 ELSE
			0;
	tqhh <= 0 WHEN tqh >= 0 AND tqh < 10 ELSE
			1 WHEN tqh >= 10 AND tqh < 20 ELSE
			2 WHEN tqh >= 20 AND tqh < 24 ELSE
			0;

	qsl <= CONV_STD_LOGIC_VECTOR(tqsl,4);
	qsh <= CONV_STD_LOGIC_VECTOR(tqsh,4);
	qml <= CONV_STD_LOGIC_VECTOR(tqml,4);
	qmh <= CONV_STD_LOGIC_VECTOR(tqmh,4);
	qhl <= CONV_STD_LOGIC_VECTOR(tqhl,4);
	qhh <= CONV_STD_LOGIC_VECTOR(tqhh,4);

	PROCESS(rst,inter_clk)
	BEGIN
		IF(rst='0') THEN
			tqsl<=0;
			tqml<=0;
			tqsh<=0;
			tqmh<=0;
			tqh<=0;
		ELSIF(inter_clk'EVENT AND inter_clk='1') THEN
			-- second
			IF (adj = '0' AND tqsl = 9) OR (adjust = "00001" AND tqsl = 9) THEN
				tqsl <= 0 ;
			ELSIF (adj = '0' AND tqsl /= 9) OR (adjust = "00001" AND tqsl /= 9) THEN
				tqsl <= tqsl + 1;
			ELSE
				tqsl <= tqsl;
			END IF;
			IF (adj = '0' AND tqsh = 5 AND tqsl = 9) OR (adjust(1) = '1' AND tqsh = 5) THEN
				tqsh <= 0 ;
			ELSIF (adj = '0' AND tqsh /= 5 AND tqsl = 9) OR (adjust(1) = '1' AND tqsh /= 5) THEN
				tqsh <= tqsh + 1;
			ELSE
				tqsh <= tqsh;
			END IF;
			-- minute
			IF (adj = '0' AND tqml = 9 AND tqsh = 5 AND tqsl = 9) OR (adjust(2) = '1' AND tqml = 9) THEN
				tqml <= 0 ;
			ELSIF (adj = '0' AND tqml /= 9 AND tqsh = 5 AND tqsl = 9) OR (adjust(2) = '1' AND tqml /= 9) THEN
				tqml <= tqml + 1;
			ELSE
				tqml <= tqml;
			END IF;
			IF (adj = '0' AND tqmh = 5 AND tqml = 9 AND tqsh = 5 AND tqsl = 9)
					 OR (adjust(3) = '1' AND tqmh = 5) THEN
				tqmh <= 0 ;
			ELSIF (adj = '0' AND tqmh /= 5 AND tqml = 9 AND tqsh = 5 AND tqsl = 9)
					 OR (adjust(3) = '1' AND tqmh /= 5) THEN
				tqmh <= tqmh + 1;
			ELSE
				tqmh <= tqmh;
			END IF;
			-- hour
			IF (adj = '0' AND tqh = 23 AND tqmh = 5 AND tqml = 9 AND tqsh = 5 AND tqsl = 9)
					 OR ( adjust(4) = '1' AND tqh = 23) THEN
				tqh <= 0 ;
			ELSIF (adj = '0' AND tqh /= 23 AND tqmh = 5 AND tqml = 9 AND tqsh = 5 AND tqsl = 9)
					 OR ( adjust(4) = '1' AND tqh /= 23) THEN
				tqh <= tqh + 1;
			ELSE
				tqh <= tqh;
			END IF;
	END IF;
	END PROCESS;
END func1;


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -