📄 test5.vhd
字号:
--------------------------------------这是一个秒表的程序,功能不是很多,但是也是足够用的了,我花了很长时间写的,很是精减,就是好用,不过只有这个程序,自己也是个新手,可怜很多时间都在程序上了课外生活就没有了。大家还得去分配引脚了。还有就是大家记得和我多多的交流了谢谢了----------------------------------------------------------------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TEST5 IS
PORT(OUT1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
OUT2:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);
OUT3:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CLK,CLR,CLK1,CON:IN STD_LOGIC
);
END ENTITY TEST5;
ARCHITECTURE MAIN OF TEST5 IS
type SEG7 is array (0 to 9) of std_logic_vector(7 downto 0);
constant seven_seg: SEG7 := (
"00111111",
"00000110",
"01011011",
"01001111",
"01100110",
"01101101",
"01111101",
"00000111",
"01111111",
"01100111"
);
SIGNAL TEMP:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
SIGNAL TEMP1:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
SIGNAL TEMP2:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
SIGNAL TEMP3:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
SIGNAL TEMP4:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
SIGNAL TEMP5:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
SIGNAL TEMP6:STD_LOGIC_VECTOR(1 DOWNTO 0):="00";
SIGNAL XUAN:STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
P1:PROCESS(CLK,CLR)
BEGIN
IF(CLR='1') THEN
TEMP<="0000";
TEMP1<="0000";
TEMP2<="0000";
TEMP3<="0000";
TEMP4<="0000";
TEMP5<="0000";
ELSIF(CON='1') THEN
TEMP<=TEMP;
TEMP1<=TEMP1;
TEMP2<=TEMP2;
TEMP3<=TEMP3;
TEMP4<=TEMP4;
TEMP5<=TEMP5;
ELSIF(CLK'EVENT AND CLK='1') THEN
IF(CLR='0' AND CON='0') THEN
TEMP6<=TEMP6+1;
IF(TEMP6="11") THEN
TEMP6<="00";
TEMP<=TEMP+1;
IF(TEMP="1001") THEN
TEMP1<=TEMP1+1;
TEMP<="0000";
IF(TEMP1="1001") THEN
TEMP2<=TEMP2+1;
TEMP1<="0000";
IF(TEMP2="1001") THEN
TEMP3<=TEMP3+1;
TEMP2<="0000";
IF(TEMP3="0101") THEN
TEMP4<=TEMP4+1;
TEMP3<="0000";
IF(TEMP4="1001") THEN
TEMP5<=TEMP5+1;
TEMP4<="0000";
IF(TEMP5="0101") THEN
TEMP5<="0000";
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END PROCESS P1;
------------------------------------------------------
P2:PROCESS(CLK1)
BEGIN
IF(CLK1'EVENT AND CLK1='1') THEN
XUAN<=XUAN+'1';
END IF;
IF(XUAN=6) THEN
XUAN<="000";
END IF;
CASE XUAN IS
WHEN "000"=>
OUT2<="000001";
OUT3<=seven_seg(CONV_INTEGER(TEMP));
WHEN "001"=>
OUT2<="000010";
OUT3<=seven_seg(CONV_INTEGER(TEMP1));
WHEN "010"=>
OUT2<="000100";
OUT3<=seven_seg(CONV_INTEGER(TEMP2));
WHEN "011"=>
OUT2<="001000";
OUT3<=seven_seg(CONV_INTEGER(TEMP3));
WHEN "100"=>
OUT2<="010000";
OUT3<=seven_seg(CONV_INTEGER(TEMP4));
WHEN "101"=>
OUT2<="100000";
OUT3<=seven_seg(CONV_INTEGER(TEMP5));
-------------------------
WHEN OTHERS=>
OUT2<="000000";
END CASE;
END PROCESS P2;
END ARCHITECTURE;
------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -