明德扬最新分享---FPGA设计新技巧:四段式状态机
四段式状态机
在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 |
FPGA 相关文章:
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 采用EEPROM对大容量FPGA芯片数据实现串行加载(03-18)
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)