首页 > 技术 > 内容

浅谈FPGA 四段式状态机

时间:2026-01-16  作者:Diven  阅读:0

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状态的条件。还有,明德扬规定转移条件的格式,一定是“ 当前状态&&具体条件”,以防想不到的情况出现。有了这些规范的保证,无论多复杂的场合,任何设计都能有条理、有步骤地一次性设计正确。

猜您喜欢


雪崩激光二极管(Avalanche Laser Diode,ALD)是高性能的半导体激光器,应用于光通信、激光雷达、医疗器械等领域。与传统的激光二极管相比,雪崩...
2025-03-30 14:30:02
众所周知,长时间的眼部紫外线照射会影响长期的眼部健康。虽然通常可以通过纺织品或涂抹防晒霜来有效保护皮肤,但对眼睛敏感组织和周围皮肤进行有效的日常紫外线防护是一项...
2023-09-26 08:17:00
航空接头和防水接头在现代工业和日常生活中是重要配件。应用领域,涵盖了多个行业。在航空航天领域,航空接头被应用于飞机、卫星和航天器的电子设备连接,确保在极端环境下...
2023-09-23 00:00:00
电烙铁是电子焊接中不可少的工具,其烙铁头的种类繁多,适用于不同的焊接需求。常见的烙铁头有平头和尖头。平头适合大面积的焊接,如电路板的焊接;而尖头则适用于精细的焊...
2009-09-19 00:00:00
分流器电阻作为电路中关键的元件,应用于电流测量和电压分配等领域。ASJ(新加坡)分流器电阻因其优良的品质和稳定的性能,受到众多电子工程师和制造商的青睐。本文将围...
2012-09-08 04:15:11
电流检测电阻作为关键元件,应用于电流测量与保护电路中。丽景电子作为知名电子元器件供应商,其电流检测电阻因品质稳定、参数精准而受到关注。本文将围绕“丽景电子电流检...
2015-11-13 23:33:30
2021-06-27 00:00:00
电阻器作为基础且关键的元件,承担着调节电流和分压的作用。奇力新(CHILISIN)作为知名的电子元件制造商,其生产的金属膜电阻因优异的性能和稳定的品质在市场上受...
2013-06-05 08:42:30
十字盘头带垫机螺钉因其独特的设计和优越的性能,应用于各类机械设备和日常用品中。十字盘头设计使得螺钉在安装和拆卸时更加方便,能够有效减少滑丝的风险,提升工作效率。...
2008-02-18 00:00:00