FPGA 三段式状态机

本文介绍了FPGA中的三段式状态机设计,包括定义、结构和实现步骤。状态机用于控制信号按预设顺序执行,适合FPGA的并行处理特性。文章提到了基于明德扬架构的三段式设计,包含时序逻辑、组合逻辑和输出逻辑的always块,并强调了Moore和Mealy型状态机的区别。文中还讨论了状态编码方式,如二进制、独热码和Gray码,并给出了Quartus编译后的状态机验证示例。
摘要由CSDN通过智能技术生成

定义

状态机能够控制信号按照设定好的状态进行转移,同时完成特定输出。
FPGA是并行运行的,而状态机是用来完成那些需要顺序执行的动作。通俗地说,就是把全部的情况分成几个场景,这些场景的工作方式不同。

结构

基于明德扬的状态机架构,结构清晰,易于修改。
三段式状态机,即三个always块描述状态机.
状态机结构图:(这里图有误,是两段式的)
在这里插入图片描述

  1. 时序逻辑always块,当前状态的复位,次态赋值给现态。
always@(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
    state_c <=  HEAD;
    end
    else begin
        state_c <= state_n;
    end
end
  1. 组合逻辑always块,描述次态转移的方向。转移条件用信号xx2xx_start命名**,写出转移方向,不用写出具体的转移条件。**状态不变不要写成 state_n = state_n,会产生锁存器。
always@(*)begin
    case(state_c)
        HEAD:begin
            if(hea2typ_start)begin
                state_n = TYPE;
            end
            else begin
                state_n = state_c;
            end
        end
        TYPE:begin
            if(typ2len_start)begin
                state_n = LEN;
            end
            else if(typ2dat_start)begin
                state_n = DATA;
            end
            else begin
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值