📄 sxkz.vhd
字号:
--时序控制电路的VHDL源程序
--SXKZ.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SXKZ IS
PORT(CHOSE_KEY:IN STD_LOGIC_VECTOR(1 DOWNTO 0);
CLK_IN:IN STD_LOGIC;
CLR:IN STD_LOGIC;
CLK:OUT STD_LOGIC);
END ENTITY SXKZ;
ARCHITECTURE ART OF SXKZ IS
SIGNAL CLLK:STD_LOGIC;
BEGIN
PROCESS(CLK_IN,CLR,CHOSE_KEY) IS
VARIABLE TEMP:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF CLR='1' THEN --当CLR='1'时清零,否则正常工作
CLLK<='0';TEMP:="0000";
ELSIF RISING_EDGE(CLK_IN) THEN
IF CHOSE_KEY="00" THEN
IF TEMP="0001" THEN
TEMP:="0000";
CLLK<=NOT CLLK ;
ELSE
TEMP:=TEMP+'1';
END IF;
-- 当CHOSE_KEY="00"时产生基准时钟频率的1/2的时钟信号
ELSIF CHOSE_KEY="01" THEN
IF TEMP="0011" THEN
TEMP:="0000";
CLLK<=NOT CLLK ;
ELSE
TEMP:=TEMP+'1';
END IF;
-- 当CHOSE_KEY="01"时产生基准时钟频率的1/4的时钟信号
ELSIF CHOSE_KEY="10" THEN
IF TEMP="0111" THEN
TEMP:="0000";
CLLK<=NOT CLLK ;
ELSE
TEMP:=TEMP+'1';
END IF;
ELSIF CHOSE_KEY="11" THEN
-- 当CHOSE_KEY="10"时产生基准时钟频率的1/8的时钟信号
IF TEMP="1111" THEN
TEMP:="0000";
CLLK<=NOT CLLK ;
ELSE
TEMP:=TEMP+'1';
END IF;
-- 当CHOSE_KEY="11"时产生基准时钟频率的1/16的时钟信号
END IF;
END IF;
END PROCESS;
CLK<=CLLK;
END ARCHITECTURE ART;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -