首页 > 技术 > 内容

浅谈FPGA 四段式状态机

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

猜您喜欢


电阻器作为基础且关键的元件,其性能直接影响电路的稳定性和可靠性。Viking(光颉)作为知名的升功率电阻品牌,优异的性能和的应用赢得了市场的认可。本文将详细介绍...
2016-03-28 02:13:48
贴片电阻1001是一种应用于电子电路中的基础元件,其封装尺寸为0402,即长1.0mm,宽0.5mm。在电路中主要起到限流、分压、阻抗匹配等作用,确保电路稳定运...
2024-11-29 10:25:38
电阻作为基础元件,承担着调节电流、分压等重要功能。随着技术的发展,长电极电阻因其独特的结构和性能,逐渐在工业和电子设备中得到应用。格莱尔(GLE)作为知名的电子...
2017-10-09 11:43:08
干耦合超声检测方法由于无需在待检测材料表面涂抹水或油等液体耦合剂,操作方便,移动灵活,适用于固体火箭发动机壳体、飞机机翼等一些对结构完整性要求较高且需要长期使用...
2021-07-26 17:44:00
在现代电气工程中,电缆扎带是不可少的辅助工具,不仅能有效整理和固定电缆,还能提升整体美观和安全性。选择合适的电缆扎带时,架子和安装件的参数非常重要。电缆扎带的材...
2013-01-07 00:00:00
贴片电阻上的010代表其阻值为10Ω(欧姆)。 贴片电阻通常使用三位数字来表示阻值,其中前两位数字代表有效数字,第三位数字代表10的幂次方。 以010为例,01...
2024-11-29 10:25:33
BOURNS(伯恩斯)作为光敏电阻领域的知名品牌,其产品很好的性能和可靠性赢得了全球用户的信赖。本文将深入探讨BOURNS品牌的起源、发展历程、产品特点以及其在...
2016-12-23 06:48:18
企业品牌的地域界限日益模糊,但了解一个品牌背后的国家归属,不仅能帮助我们追溯其文化底蕴,还能深入理解其技术特色与市场定位。本文将深入探讨“三环集团(CCTC)四...
2023-08-10 23:49:39
压接插针是应用于电子连接领域的重要组件,主要用于电缆与电路板之间的可靠连接。其设计独特,能够确保在高频率和高电流条件下,提供稳定的电气性能。压接插针的制造材料通...
2025-03-08 00:00:00