FPGA学习记录 第二天

本文记录了作者在FPGA学习过程中的第二天,主要探讨了同步有限状态机(FSM)的概念,包括Moore型和Mealy型状态机。通过自助可乐贩卖机的例子,详细阐述了如何分析输入输出、状态转换条件,以及编写和调试状态机代码。文中还提到了编码方式的选择,如独热码、二进制码和格雷码在不同情况下的应用。
摘要由CSDN通过智能技术生成

为了锐捷网络杯B组赛题,进行FPGA的学习,并最终完成基于FPGA的温控风扇的实现。

第二天


状态机:描述时序系统的状态,简称为FSM(Finite State Machine),全称同步有限状态机。同 步指状态的变化只发生在时钟的上升沿或下降沿,有限指状态的数量有限。

分类:Moore型、Mealy型。

Moore型:输出只与状态有关,与输入无关。

Mealy型:输出既与状态有关,又与输入有关。


一个简单的例子:自助可乐贩卖机

一台贩卖售价为3元的可乐贩卖机,每次可投入1元硬币,投入三枚时出一瓶可乐。

首先分析它的输入输出和状态

输入:是否投入1元硬币(0表示没投,1表示投了)

输出:是否出可乐(0表示不出,1表示出)

状态:初始状态、有1元、有2元、有3元(等效于初始状态)

然后分析状态转换条件(画出状态转换图)

最后根据状态转换图编程、调试

程序及仿真代码

module simple_fsm (
    input   wire    sys_clk     ,
    input   wire    sys_rst_n   ,
    input   wire    pi_one      ,

    output  reg     po_cola     
);

parameter   IDLE    =   3'b001,
            ONE     =   3'b010,
            TWO     =   3'b100;

reg     [2:0]   state;

always@(posedge sys_clk or negedge sys_rst_n) begin
    if(sys_rst_n == 1'b0)
        state <= IDLE;
    else    case (state)
        IDLE    :   state <= (pi_one == 1'b1 ? ONE  : IDLE);
        ONE     :   state <= (pi_one == 1'b1 ? TWO  : ONE );
        TWO     :   state <= (pi_one == 1'b1 ? IDLE : TWO );
        default :   state <= IDLE;
    endcase        
end

always@(posedge sy
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值