微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 明德扬最新分享---FPGA设计新技巧:四段式状态机

明德扬最新分享---FPGA设计新技巧:四段式状态机

时间:02-14 来源:互联网 点击:

四段式状态机




在FPGA中,相信有FPGA学习经验的都能了解,现在流行的状态机设计,一般可分为一段式、两段式和三段式,如果不了解的,可以自行百度。

上面的三种设计法虽然很流行,但设计时仍然要考虑很多因素,导致总是要反反复复调试才能设计成功。这不符合明德扬一次考虑一个因素、一次性设计正确的设计理念。为此,明德扬特推出四段式状态机的写法。


四段式不是指三个always代码,而是四段程序。使用四段式的写法,可参照明德扬GVIM特色指令Ztj产生的状态机模板。

第一段,同步时序的always模块,格式化描述次态迁移到现态寄存器。



1

  

2

  

3

  

4

  

5

  

6

  

7

  

8



always@(posedge clk or negedge  rst_n)begin

  

     if(!rst_n)begin

  

        state_c <= IDLE;

  

     end

  

     else begin

  

        state_c <= state_n;

  

     end

  

end




第二段,组合逻辑的always模块,描述状态转移条件判断。注意转移条件用信号来表示,信号名要按明德扬规则来命名。



1

  

2

  

3

  

4

  

5

  

6

  

7

  

8

  

9

  

10

  

11

  

12

  

13

  

14

  

15

  

16

  

17

  

18

  

19

  

20

  

21

  

22

  

23

  

24

  

25

  

26

  

27

  

28

  

29

  

30

  

31

  

32

  

33

  

34

  

35



always@(*)begin

  

     case(state_c)

  

        IDLE:begin

  

            if(idle2s1_start)begin

  

                state_n = S1;

  

            end

  

            else begin

  

                state_n = state_c;

  

            end

  

        end

  

        S1:begin

  

            if(s12s2_start)begin

  

                state_n = S2;

  

            end

  

            else begin

  

                state_n = state_c;

  

            end

  

        end

  

        S2:begin

  

            if(s22idl)begin

  

                state_n = IDLE;

  

            end

  

            else begin

  

                state_n = state_c;

  

            end

  

        end

  

        default:begin

  

            state_n = IDLE;

  

        end  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top