计数状态机设计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位,输出,当前状态机的值。

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;

源代码

点击下方的公众号卡片获取

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值