標(biāo)題: CycloneIV S-50MH顯示60s計(jì)時(shí)和流水燈 [打印本頁]

作者: xiaoliu    時(shí)間: 2014-11-10 15:18
標(biāo)題: CycloneIV S-50MH顯示60s計(jì)時(shí)和流水燈
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity water is
Port(clk:in std_logic;
     LEDR:out std_logic_vector(17 downto 0);
   second:out std_logic;
   Qb0,Qb1:out std_logic_vector(3 downto 0);   
     Qd0,Qd1:out std_logic_vector(6 downto 0));
end;
Architecture dd of water is
signal Qsfp,Qwfp:std_logic_vector(24 downto 0);
signal cps,cpw:std_logic;
signal qq0,qq1:std_logic_vector(3 downto 0);
signal N:integer range 0 to 73;
procedure sum( x:in std_logic_vector(3 downto 0);
               y:out std_logic_vector(6 downto 0))is
begin
     case x is   
     when"0000"=>y:="0111111";
     when"0001"=>y:="0000110";
     when"0010"=>y:="1011011";
     when"0011"=>y:="1001111";
     when"0100"=>y:="1100110";
     when"0101"=>y:="1101101";
     when"0110"=>y:="1111101";
     when"0111"=>y:="0000111";
     when"1000"=>y:="1111111";
     when"1001"=>y:="1101111";
     when others=>y:=Null;
    end case;
end sum;
begin
-------cps means 1s---cpw means flash LED------
Process(clk)
    begin
     if clk'event and clk='1' then
      Qsfp<=Qsfp+1;     --1s court
    Qwfp<=Qwfp+1;     --0.1s court
    ------------------------
          if Qsfp=24999999 then
             Qsfp<="0000000000000000000000000";
           cps<=not cps;  --1Hz  
        end if;            
    -------------------------
    if Qwfp=2499999 then
             Qwfp<="0000000000000000000000000";
           cpw<=not cpw;   --10Hz
        end if;
    --------------------------
       end if;
end process;
-------------- 60s court--------------
Process(cps)
    begin
     if cps'event and cps='1' then
         qq0<=qq0+1;
     ------ge-------
     if qq0=9 then
        qq0<="0000";
      qq1<=qq1+1;
     end if;
     ------shi-------
     if qq1=5 and qq0=9 then
         qq1<="0000";
     end if;
   end if;
end process;
----------display   60s court-------
process(qq0,qq1,cps)
    variable y0,y1:std_logic_vector(6 downto 0);
    begin
    second<=cps;
    Qb0<=qq0;
  Qb1<=qq1;
  sum(qq0,y0);
  sum(qq1,y1);
  Qd0<=not y0;
  Qd1<=not y1;
   end process;
---------display flash LED-----------
Process(cpw)

   begin
   if cpw'event and cpw='1' then
      N<=N+1;
      if N=89 then
       N<=0;
      end if;
      if N<18 then  
     LEDR(N)<='1';
  end if;
  if N>17 and N<36 then
      LEDR(35-N)<='0';
  end if;
  if N>35 and N<54 then
     LEDR(N-36)<='0';
   LEDR(N-35)<='1';
  end if;
  if N>53  and N< 73 then
     LEDR(72-N)<='0';
   LEDR(71-N)<='1';
  end if;
  if N>72  and N< 81 then  
    LEDR(N-72)<='1';
    LEDR(90-N)<='1';
  end if;
  If N>80  then
     LEDR(N-71)<='0';
   LEDR(90-N)<='0';
  end if;
   end if;





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1