| 
 | 
你可以看一下标号是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 |   
 
 
 
 |