📄 cd.vhd.bak
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cd IS
PORT(clk:IN STD_LOGIC;
dout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END cd;
ARCHITECTURE m OF cd IS
SIGNAL jishu1:STD_LOGIC_VECTOR(6 DOWNTO 0);
SIGNAL jishu2:INTEGER RANGE 0 TO 5;
SIGNAL dout_tmp:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
p1:PROCESS(clk)
BEGIN
IF(clk'EVENT AND clk='1') THEN
IF(jishu1="101111") THEN
jishu1<="000000";
ELSE
jishu1<=jishu1+1;
END IF;
END IF;
END PROCESS p1;
P2:PROCESS(jishu1)
BEGIN
IF(jishu1>="000000" AND jishu1<="000111") THEN jishu2<=0;
ELSIF(jishu1>"000111" AND jishu1<="001111") THEN jishu2<=1;
ELSIF(jishu1>"001111" AND jishu1<="010111") THEN jishu2<=2;
ELSIF(jishu1>"010111" AND jishu1<="011111") THEN jishu2<=3;
ELSIF(jishu1>"011111" AND jishu1<="100111") THEN jishu2<=4;
ELSIF(jishu1>"100111" AND jishu1<="101111") THEN jishu2<=5;
END IF;
END PROCESS p2;
p3:PROCESS(jishu1,jishu2)
BEGIN
CASE jishu2 IS
WHEN 0=> IF(jishu1="000000") THEN dout_tmp<="00000001";
ELSIF(jishu1="000001") THEN dout_tmp<="00000010";
ELSIF(jishu1="000010") THEN dout_tmp<="00000100";
ELSIF(jishu1="000011") THEN dout_tmp<="00001000";
ELSIF(jishu1="000100") THEN dout_tmp<="00010000";
ELSIF(jishu1="000101") THEN dout_tmp<="00100000";
ELSIF(jishu1="000110") THEN dout_tmp<="01000000";
ELSIF(jishu1="000111") THEN dout_tmp<="10000000";
END IF;
WHEN 1=> IF(jishu1="001000") THEN dout_tmp<="10000000";
ELSIF(jishu1="001001") THEN dout_tmp<="01000000";
ELSIF(jishu1="001010") THEN dout_tmp<="00100000";
ELSIF(jishu1="001011") THEN dout_tmp<="00010000";
ELSIF(jishu1="001100") THEN dout_tmp<="00001000";
ELSIF(jishu1="001101") THEN dout_tmp<="00000100";
ELSIF(jishu1="001110") THEN dout_tmp<="00000010";
ELSIF(jishu1="001111") THEN dout_tmp<="00000001";
END IF;
WHEN 2=> IF(jishu1="010000") THEN dout_tmp<="00000001";
ELSIF(jishu1="010001") THEN dout_tmp<="00000011";
ELSIF(jishu1="010010") THEN dout_tmp<="00000111";
ELSIF(jishu1="010011") THEN dout_tmp<="00001111";
ELSIF(jishu1="010100") THEN dout_tmp<="00011111";
ELSIF(jishu1="010101") THEN dout_tmp<="00111111";
ELSIF(jishu1="010110") THEN dout_tmp<="01111111";
ELSIF(jishu1="010111") THEN dout_tmp<="11111111";
END IF;
WHEN 3=> IF(jishu1="011000") THEN dout_tmp<="11111110";
ELSIF(jishu1="011001") THEN dout_tmp<="11111100";
ELSIF(jishu1="011010") THEN dout_tmp<="11111000";
ELSIF(jishu1="011011") THEN dout_tmp<="11110000";
ELSIF(jishu1="011100") THEN dout_tmp<="11100000";
ELSIF(jishu1="011101") THEN dout_tmp<="11000000";
ELSIF(jishu1="011110") THEN dout_tmp<="10000000";
ELSIF(jishu1="011111") THEN dout_tmp<="00000000";
END IF;
WHEN 4=> IF(jishu1="100000") THEN dout_tmp<="10000000";
ELSIF(jishu1="100001") THEN dout_tmp<="11000000";
ELSIF(jishu1="100010") THEN dout_tmp<="11100000";
ELSIF(jishu1="100011") THEN dout_tmp<="11110000";
ELSIF(jishu1="100100") THEN dout_tmp<="11111000";
ELSIF(jishu1="100101") THEN dout_tmp<="11111100";
ELSIF(jishu1="100110") THEN dout_tmp<="11111110";
ELSIF(jishu1="100111") THEN dout_tmp<="11111111";
END IF;
WHEN 5=> IF(jishu1="101000") THEN dout_tmp<="01111111";
ELSIF(jishu1="101001") THEN dout_tmp<="00111111";
ELSIF(jishu1="101010") THEN dout_tmp<="00011111";
ELSIF(jishu1="101011") THEN dout_tmp<="00001111";
ELSIF(jishu1="101100") THEN dout_tmp<="00000111";
ELSIF(jishu1="101101") THEN dout_tmp<="00000011";
ELSIF(jishu1="101110") THEN dout_tmp<="00000001";
ELSIF(jishu1="101111") THEN dout_tmp<="00000000";
END IF;
WHEN OTHERS=>NULL;
END CASE;
dout<=dout_tmp;
END PROCESS p3;
END m;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -