我是靠谱客的博主 隐形雪糕,最近开发中收集的这篇文章主要介绍FPGA状态机电路综合分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在FPGA中,状态机是比较常用的。特别是要处理一些串行执行的操作。但是对于我们编写的状态机,综合出来的电路应该是长什么样子的了?这个在初学的时候都是不关心的,但是深入的话,还是要了解的。

       状态机分为两种,一种是moore型,一种是mealy型。两种的区别就是输出逻辑是否会由输入决定。

       如下图:

       状态机分为三部分模块

第一部分为次态组合逻辑电路,通过将状态输出反馈到次态组合逻辑电路,在和输入信号决定,下一状态是什么状态。

       第二部分就是时序电路,就是一个触发器,将下一状态的值给现在的状态

       第三部分是输出逻辑,通过判断当前的状态,得到输出

在这里插入图片描述

module led(
    input                   clk,
    input                   rst_n,
    input                   change,
    output  reg [3:0]       led

    );
    localparam   led_0001    = 'd0;
    localparam  led_0010   = 'd1;
    localparam   led_0100    = 'd2;
    localparam   led_1000    = 'd3;
    reg [1:0]   state;
    
//
	always@(posedge clk or negedge rst_n) begin

        if(!rst_n)

            state <= led_0001;

        else

            case(state)

            led_0001:

                if(change)

                    state <= led_0010;

            led_0010:

                if(change)

                    state <= led_0100;

            led_0100:

                if(change)

                    state <= led_1000;

            led_1000:

                if(change)

                    state <= led_0001;

        endcase

    end

  //  
    `define use_case

    `ifdef use_case

    always@* begin

        case(state)

            led_0001:   led = 4'b0001;

            led_0010:   led = 4'b0010;

            led_0100:   led = 4'b0100;

            led_1000:   led = 4'b1000;

        endcase

        end

        `else
//
        always@* begin

            if(state == led_0001)

                led = 4'b0001;

            else if(state == led_0010)

                led = 4'b0010;

            else if(state == led_0100)

                led = 4'b0100;

            else

                led = 4'b1000;

        end

        `endif

endmodule

功能其实很简单,有4个状态,按照普通二进制编码。每个状态在输入信号change有效的时候状态跳转。在每个状态,4个LED输出是不一样的。

在代码中,使用了预编译`ifdef。这里输出逻辑采用if和case来实现,比较看看综合出来的电路区别。

ref

http://blog.chinaaet.com/weiqi7777/p/40172

最后

以上就是隐形雪糕为你收集整理的FPGA状态机电路综合分析的全部内容,希望文章能够帮你解决FPGA状态机电路综合分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部