找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2512|回复: 0
打印 上一主题 下一主题
收起左侧

CycloneIV S-50MH显示60s计时和流水灯

[复制链接]
跳转到指定楼层
楼主
ID:51269 发表于 2014-11-10 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表