久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3802|回復: 0
打印 上一主題 下一主題
收起左側

用狀態機編寫的VHDL60分計時器

[復制鏈接]
跳轉到指定樓層
樓主
ID:77367 發表于 2015-4-19 03:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
---------------------------狀態機---------------------------
Library ieee;
Use ieee.std_logic_1164.all;
-------------------------------------------
Entity statem is
Port(clk,clr:in std_logic;
     Q0,Q1,Q2,Q3:out std_logic_vector(6 downto 0));
end;
---------------------------------------------
architecture dd of statem is
Type state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9);
signal ss0,ss1,ss2,ss3:state;
signal Q:integer range 0 to 19999999;
signal cp:std_logic;
procedure disp(s:in state;p:out std_logic_vector(6 downto 0))is
begin
   case s is
  when s0=>p:="1000000";
  when s1=>p:="1111001";
  when s2=>p:="0100100";
  when s3=>p:="0110000";
  when s4=>p:="0011001";
  when s5=>p:="0010010";
  when s6=>p:="0000010";
  when s7=>p:="1111000";
  when s8=>p:="0000000";
  when s9=>p:="0010000";
  end case;
end disp;
----------1s---------------
begin
process(clk)
   begin
       if clk'event and clk='1' then
            Q<=Q+1;
            if Q=0 then
               cp<=not cp;
            end if;
        end if;
end process;
----------------------------------
process(cp)
   begin
   if clr='0' then
     ss0<=s0;
     ss1<=s0;
     ss2<=s0;
     ss3<=s0;
elsif cp'event and cp='1' then
     case ss0 is
     when s0=>ss0<=s1;
     when s1=>ss0<=s2;
     when s2=>ss0<=s3;
     when s3=>ss0<=s4;
     when s4=>ss0<=s5;
     when s5=>ss0<=s6;
     when s6=>ss0<=s7;
     when s7=>ss0<=s8;
     when s8=>ss0<=s9;
     when s9=>ss0<=s0;
                      case ss1 is
                     when s0=>ss1<=s1;
                     when s1=>ss1<=s2;
                     when s2=>ss1<=s3;
                     when s3=>ss1<=s4;
                     when s4=>ss1<=s5;
                     when s5=>ss1<=s0;
                                      case ss2 is
                                      when s0=>ss2<=s1;
                                      when s1=>ss2<=s2;
                                      when s2=>ss2<=s3;
                                      when s3=>ss2<=s4;
                                      when s4=>ss2<=s5;
                                      when s5=>ss2<=s6;
                                      when s6=>ss2<=s7;
                                      when s7=>ss2<=s8;
                                      when s8=>ss2<=s9;
                                      when s9=>ss2<=s0;
                                                     case ss3 is
                                                     when s0=>ss3<=s1;
                                                     when s1=>ss3<=s2;
                                                     when s2=>ss3<=s3;
                                                     when s3=>ss3<=s4;
                                                     when s4=>ss3<=s5;
                                                     when s5=>ss3<=s0;
                                                     when others=>null;
                                                    end case;
                                     end case;
                    when others=>null;
            end case;
   end case;
end if;
end process;
process(ss0,ss1)
   variable sss0,sss1,sss2,sss3:std_logic_vector(6 downto 0);
   begin
    disp(ss0,sss0);
  disp(ss1,sss1);
  disp(ss2,sss2);
  disp(ss3,sss3);
  Q0<=sss0;Q1<=sss1;Q2<=sss2;Q3<=sss3;
end process;
end;
--------------------------------判斷語句-----------------------------------------------------
  Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity statem is
Port(clk,clr:in std_logic;
     Q0,Q1,Q2,Q3:out std_logic_vector(6 downto 0));
end;
architecture dd of statem is
signal ss0,ss2, ss1,ss3:std_logic_vector(3 downto 0);
signal Q:integer range 0 to 12999999;
signal cp:std_logic;
procedure disp0(s0:in std_logic_vector(3 downto 0);p0:out std_logic_vector(6 downto 0))is
begin
   case s0 is
  when "0000"=>p0:="1000000";
  when "0001"=>p0:="1111001";
  when "0010"=>p0:="0100100";
  when "0011"=>p0:="0110000";
  when "0100"=>p0:="0011001";
  when "0101"=>p0:="0010010";
  when "0110"=>p0:="0000010";
  when "0111"=>p0:="1111000";
  when "1000"=>p0:="0000000";
  when "1001"=>p0:="0010000";
  when others=>null;
  end case;
end disp0;
begin
process(clk)
   begin
if clk'event and clk='1' then
      Q<=Q+1;
    if Q=0 then
      cp<=not cp;
   end if;
end if;
end process;
process(cp)
   begin
     if clr='0' then
     ss0<="0000";
   ss1<="0000";
   ss2<="0000";
   ss3<="0000";
   elsif cp'event and cp='1' then
    ss0<=ss0+1;
      if ss0=9 then
      ss0<="0000";
      ss1<=ss1+1;
      if ss1=5 then
         ss1<="0000";
       ss2<=ss2+1;
       if ss2=9 then
          ss2<="0000";
        ss3<=ss3+1;
        if ss3=5 then
           ss3<="0000";
       end if;
       end if;
     end if;
    end if;
   end if;
end process;
process(ss0,ss1,ss2,ss3)
   variable sss0,sss1,sss2,sss3:std_logic_vector(6 downto 0);
   begin
    disp0(ss0,sss0);
  disp0(ss1,sss1);
  disp0(ss2,sss2);
  disp0(ss3,sss3);
  Q0<=sss0;Q1<=sss1;Q2<=sss2;Q3<=sss3;
end process;
end;


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区三区蜜桃久 | 久久久久久久久一区 | 久久精品日产第一区二区三区 | 九色在线观看 | 韩日精品一区 | 日本 欧美 国产 | 久久精品国产v日韩v亚洲 | 久久i| 色播久久 | 日韩精品一区二区不卡 | 中文字幕久久精品 | 欧美成人免费在线视频 | 在线不卡视频 | 香蕉二区 | 欧美高清dvd | 午夜视频在线播放 | 黄色av观看 | 国产一区二区三区在线 | 国产精品久久久久久久久久免费看 | 最新免费视频 | 久久久亚洲成人 | 午夜在线小视频 | 精品国产一区二区国模嫣然 | 久久另类视频 | 久久亚洲国产精品日日av夜夜 | sese视频在线观看 | 在线观看精品视频网站 | 国产不卡视频在线 | 一区视频| 国产精品1| 黄色国产大片 | 狠狠草视频| 久久久www成人免费精品张筱雨 | av天天干 | 91毛片在线观看 | 日日射夜夜骑 | 欧美在线激情 | 97超碰在线播放 | 一区二区精品视频 | 99精品在线 | 九九伦理片|