|
你可以看一下标号是SHOW的这个进程,我没空写,这是我以前坐的!<br>
LIBRARY IEEE;<br>
USE IEEE.STD_LOGIC_1164.ALL;<br>
USE IEEE.STD_LOGIC_UNSIGNED.ALL;<br>
ENTITY JSXS IS<br>
PORT(CLR,CLK,EN: STD_LOGIC;<br>
SEL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);<br>
LED8D: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));<br>
END ENTITY JSXS;<br>
ARCHITECTURE ART OF JSXS IS<br>
SIGNAL CLK1S: STD_LOGIC;<br>
SIGNAL D3,D2,D1,D0: STD_LOGIC_VECTOR(3 DOWNTO 0);<br>
SIGNAL D: STD_LOGIC_VECTOR(3 DOWNTO 0);<br>
BEGIN<br>
CLKDIV1S

ROCESS(CLR,CLK)<br>
VARIABLE NCLK: STD_LOGIC;<br>
VARIABLE CNT: INTEGER RANGE 0 TO 249999;<br>
BEGIN<br>
IF CLR='1' THEN<br>
CNT:=0;<br>
NCLK:='0';<br>
ELSIF CLK'EVENT AND CLK='1' THEN<br>
IF CNT=249999 THEN<br>
CNT:=0;<br>
NCLK:='1';<br>
ELSE<br>
CNT:=CNT+1;<br>
NCLK:='0';<br>
END IF;<br>
END IF;<br>
CLK1S<=NCLK;<br>
END PROCESS CLKDIV1S;<br>
CNT3600

ROCESS(CLR,EN,CLK1S)<br>
VARIABLE Q3,Q2,Q1,Q0: STD_LOGIC_VECTOR(3 DOWNTO 0);<br>
BEGIN<br>
IF CLR='1' THEN<br>
Q3:="0000";<br>
Q2:="0000";<br>
Q1:="0000";<br>
Q0:="0000";<br>
ELSIF CLK1S'EVENT AND CLK1S='1' THEN<br>
IF EN='1' THEN<br>
IF Q0="1001" THEN<br>
Q0:="0000";<br>
IF Q1="0101" THEN<br>
Q1:="0000";<br>
IF Q2="1001" THEN<br>
Q2:="0000";<br>
IF Q3="0101" THEN<br>
Q3:="0000";<br>
ELSE <br>
Q3:=Q3+1;<br>
END IF;<br>
ELSE<br>
Q2:=Q2+1;<br>
END IF;<br>
ELSE<br>
Q1:=Q1+1;<br>
END IF;<br>
ELSE<br>
Q0:=Q0+1;<br>
END IF;<br>
END IF;<br>
END IF;<br>
D3<=Q3;<br>
D2<=Q2;<br>
D1<=Q1;<br>
D0<=Q0;<br>
END PROCESS CNT3600;<br>
SHOW

ROCESS(CLK,D3,D2,D1,D0)<br>
VARIABLE CNT: INTEGER RANGE 0 TO 3;<br>
VARIABLE Q: STD_LOGIC_VECTOR(3 DOWNTO 0);<br>
VARIABLE WEI: STD_LOGIC_VECTOR(3 DOWNTO 0);<br>
BEGIN<br>
IF CLK'EVENT AND CLK='1' THEN<br>
CNT:=CNT+1;<br>
CASE CNT IS<br>
WHEN 0=>WEI:="1110";Q:=D0;<br>
WHEN 1=>WEI:="1101";Q:=D1;<br>
WHEN 2=>WEI:="1011";Q:=D2;<br>
WHEN 3=>WEI:="0111";Q:=D3;<br>
END CASE;<br>
END IF;<br>
D<=Q;<br>
SEL<=WEI;<br>
END PROCESS SHOW;<br>
YM ROCESS(D)<br>
BEGIN<br>
CASE D IS<br>
WHEN "0000"=>LED8D<="11111100";<br>
WHEN "0001"=>LED8D<="01100000";<br>
WHEN "0010"=>LED8D<="11011010";<br>
WHEN "0011"=>LED8D<="11110010";<br>
WHEN "0100"=>LED8D<="01100110";<br>
WHEN "0101"=>LED8D<="10110110";<br>
WHEN "0110"=>LED8D<="10111110";<br>
WHEN "0111"=>LED8D<="11100000";<br>
WHEN "1000"=>LED8D<="11111110";<br>
WHEN "1001"=>LED8D<="11110110";<br>
WHEN OTHERS=>NULL;<br>
END CASE;<br>
END PROCESS YM;<br>
END ARCHITECTURE ART |
|