您的位置 首页 制造

浅谈FPGA 四段式状态机

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

在FPGA中,信任有FPGA学习经历的都能了解,现在盛行的状况机规划,一般可分为一段式、两段式和三段式,假如不了解的,能够自行百度。

上面的三种规划法尽管很盛行,但规划时依然要考虑许多要素,导致总是要反反复复调试才干规划成功。这不契合明德扬一次考虑一个要素、一次性规划正确的规划理念。为此,明德扬特推出四段式状况机的写法。

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

榜首段,同步时序的always模块,格局化描绘次态迁移到现态寄存器

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模块,描绘状况搬运条件判别。留意搬运条件用信号来表明,信号名要按明德扬规矩来命名。

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

endcase

end

assign idle2s1_start = state_c==IDLE && ;

assign s12s2_start = state_c==S1 && ;

assign s22idl_start = state_c==S2 && ;

第三段,用assign界说搬运条件。留意条件一定要加上现态。

assign idle2s1_start = state_c==IDLE && ;

assign s12s2_start = state_c==S1 && ;

assign s22idl_start = state_c==S2 && ;

第四段,规划输出信号。明德扬标准要求一个always规划一个信号,因此有多少个输出信号,就有多少个always。

always @(posedge clk or negedge rst_n)begin

if(!rst_n)begin

out1 《=1‘b0

end

else if(state_c==S1)begin

out1 《= 1’b1;

end

else begin

out1 《= 1‘b0;

end

end

明德扬四段式状况机契合一次只考虑一个要素的规划理念。榜首段代码,照抄格局,彻底不必想其他的。第二段代码,只考虑状况之间的跳转,也就是说各个状况机之间跳转联系。第三段代码,只考虑跳转条件。第三段,每个信号逐一规划。

明德扬为了确保一次规划正确,还拟定了一些标准。例如第二段的跳转条件,只准用信号名替代,而且拟定了跳转条件的命名标准,1是处理了命名困难的问题,2是对搬运条件一望而知,如idl2s1_start,就能够看出是IDLE跳到S1状况的条件。还有,明德扬规则搬运条件的格局,一定是“ 当时状况&&具体条件”,以防想不到的状况呈现。有了这些标准的确保,不管多杂乱的场合,任何规划都能有条理、有步骤地一次性规划正确。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/337681.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部