浅谈FPGA 四段式状态机

时间:2025-11-02  作者:Diven  阅读:0

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

猜您喜欢

光谱电化学(SEC)测量在分析化学中起着至关重要的作用,利用透明或半透明电极对电化学过程进行光学分析。电化学读数提供了有关电极状态的信息,而透射光谱的变化有助于...
2023-09-26 09:11:00

触发器是数据库中重要的对象,在特定事件发生时自动执行预定义的操作。触发器的参数主要包括事件、条件和动作。事件是触发器被激活的时刻,通常包括INSERT、UPDA...
2013-03-08 00:00:00

贴片电阻2R20,别看身材小巧,却在电子电路中是很重要的配件。2R20表示其阻值为2.2欧姆,这种电阻应用于各种电子设备,从智能手机到家用电器,都能看到的身影。...
2024-11-29 10:26:06

贴片电阻体积小巧,上面的标识也迷你,常常让人摸不着头脑。其实,解读这些标识并不难,掌握一些基本规则就能轻松识别。国际上,贴片电阻标识主要采用数字编码和字母编码两...
2024-11-26 11:29:19

0603贴片电阻体积微小,焊接需要一定的技巧,但掌握方法后并不困难。以下是一些焊接0603贴片电阻的实用技巧,即使是新手也能轻松上手。首先,准备工作至关重要。你...
2024-11-26 11:29:17


伏安表是用于测量电压和电流的仪器,其主要参数包括电压测量范围、电流测量范围、内阻、精度和响应时间等。电压测量范围是指伏安表能够测量的电压值的上下限,通常以伏特(...
2010-07-02 00:00:00

什么是门控时钟?Clockgating:在数据无效时,将寄存器时钟关闭的技术,能够有效降低功耗, 是低功耗设计的重要方法之一。门控时钟其实就是一个逻辑模块,在...
2022-12-05 12:28:00

在电子元件的世界里,找到合适的贴片电阻至关重要。为了方便工程师、电子爱好者以及所有需要快速查找贴片电阻参数的人群,我们推出了便捷的在线查询工具。无需繁琐的翻阅纸...
2025-04-14 15:03:33

贴片电阻作为电子元器件中的基础元件,应用于各种电路设计中。SEI(世达柏科技)作为国内知名的电子元器件制造商,其贴片电阻产品因品质稳定、性能优良而受到市场认可。...
2018-11-29 18:04:30