计数状态机设计VHDL代码Quartus仿真

名称:计数状态机设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

计数状态机

1功能描述    

内容:状态机有三个状态,IDLE,S1和S2。在IDLE状态如果en=1,则跳到S1状态,否则保持不变;在S1状态时,统计en=1的次数,如果达到5次,则跳到S2状态,否则保持不变;在S2状态,统计en=1的次数,如果达到7次,则跳回到IDLE状态,否则保持不变。(注:全部信号都是同步信号,即与时钟同步)(en可以是单周期脉冲,也可是多周期脉冲)

2信号列表

clk:50MHz的工作时钟,输入

rstn:系统复位信号,输入,低电平有效。

en:1位,输入,状态转换信号,高电平有效

state current:2位,输出,当前状态机的值。


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1. 工程文件


2. 程序文件


3. 程序编译


4. 仿真图



部分代码展示:


LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--计数状态机设计
ENTITY FSM IS
   PORT (
      clk,rst_n: IN STD_LOGIC;--时钟,复位
      en: IN STD_LOGIC;--输入
      state_current : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)--状态值
   );
END FSM;
ARCHITECTURE RTL OF FSM IS
   --定义状态机
   SIGNAL c_state  : STD_LOGIC_VECTOR(1 DOWNTO 0):="00";--定义当前状态
   CONSTANT IDLE : STD_LOGIC_VECTOR(1 DOWNTO 0):="00"; -- IDLE状态
   CONSTANT S1 : STD_LOGIC_VECTOR(1 DOWNTO 0):="01";  --S1状态
   CONSTANT S2 : STD_LOGIC_VECTOR(1 DOWNTO 0):="10";  --S2状态   
   SIGNAL count : STD_LOGIC_VECTOR(2 DOWNTO 0):="000";--en计数次数
BEGIN
--状态机控制--状态转移
   PROCESS (clk, rst_n)
   BEGIN
      IF (rst_n = '0') THEN
c_state <= IDLE;--复位
   ELSIF (clk'EVENT AND clk = '1') THEN
         CASE c_state IS
            WHEN IDLE =>--IDLE状态
               IF (en = '1') THEN
                  c_state <= S1;--跳转
ELSE
c_state <= IDLE;--保持
               END IF;
            WHEN S1 =>--S1状态
               IF (count = "101") THEN--计数5次,跳转
                  c_state <= S2;--跳转
ELSE
c_state <= S1;--保持
               END IF;
            WHEN S2 =>--S2状态
               IF (count = "111") THEN--计数7次,跳转
                  c_state <= IDLE;--跳转
ELSE
c_state <= S2;--保持
               END IF;
            WHEN OTHERS =>
c_state <= IDLE;--初始状态
         END CASE;
  end IF;
  END PROCESS;


代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 计数状态机设计VHDL代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员