標題: 基于fsm 0-9計數(shù)器源程序 [打印本頁]

作者: BruderLung    時間: 2019-5-28 13:17
標題: 基于fsm 0-9計數(shù)器源程序
備注:
       輸出信號使用燈泡來顯示“0000”表示1,“1001”表示9。


原理:
      該電路的輸入為一個時鐘脈沖CLK和異步復(fù)位信號reset每段clk上升沿到達時計數(shù)器加一,直到九,下一個上升沿到達后計數(shù)結(jié)果為0,然后再周而復(fù)始的計數(shù)下去。reset高電平時正常技術(shù),當(dāng)reset為低電平時,計數(shù)從0開始,計數(shù)結(jié)果要接入LED燈泡顯示。



實現(xiàn)思路:
       根據(jù)計數(shù)原理設(shè)置10個狀態(tài),分別表示為S0-S9,S0的狀態(tài)對應(yīng)0,驅(qū)動燈泡顯示為“0000”,下一個時鐘脈沖到達后,無條件從S0轉(zhuǎn)到S1,S1狀態(tài)對應(yīng)1,驅(qū)動燈泡顯示為“0001”,以此類推,直到S9狀態(tài)。在此狀態(tài)下,當(dāng)時鐘到達后,直接轉(zhuǎn)到S0。



狀態(tài)轉(zhuǎn)化圖:




部分程序代碼:
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. entity fsm_jishu is
  4.         port(clk,reset :in std_logic;
  5.         q:out std_logic_vector(3 downto 0));
  6. end fsm_jishu;
  7. architecture wang of fsm_jishu is
  8. type state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9);
  9. signal currentstate,nextstate:state;
  10. begin
  11. --jincheng
  12. with currentstate select
  13. nextstate<=s1 when s0,
  14.                 s2 when s1,
  15.                 s3 when s2,
  16.                 s4 when s3,
  17.                 s5 when        s4,
  18.                 s6 when s5,
  19.                 s7 when s6,
  20.                 s8 when s7,
  21.                 s9 when s8,
  22.                 s0 when others;
  23. --suochunjincheng
  24. state_latch : process(clk,reset)
  25. begin
  26.         if         reset='0'then
  27.                 currentstate<=s0;
  28.         elsif        clk'event and clk='1'then
  29.                 currentstate<=nextstate;
  30.         end if;
  31. end process
復(fù)制代碼
詳細程序在附件
0-9計數(shù)器.docx (12.66 KB, 下載次數(shù): 5)





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