当前位置: 首页 > news >正文

公司设计一个网站/seo优化工作

公司设计一个网站,seo优化工作,建一个团购网站要多少钱,忻州集团网站建设参考 [1]状态机,从细节出发(一段式、两段式、三段式,moore型、mealy型) 状态机的优势 有限状态机(Finite State Machine, FSM)在硬件设计中十分常见,其稳定性高、速度快、面积小也更…

参考
[1]状态机,从细节出发(一段式、两段式、三段式,moore型、mealy型)

状态机的优势

  有限状态机(Finite State Machine, FSM)在硬件设计中十分常见,其稳定性高、速度快、面积小也更容易维护。

状态机的类型

  状态机分成Moore状态机和Mealy状态机。
(1)Moore型状态机:输出信号只取决于当前状态。
(2)Mealy型状态机:输出信号不仅取决于当前状态,还取决于输入信号的值。
  它们的区别就在于输出信号是否与输入信号有关,造成的结果是:
  实现相同功能时,Moore型状态机需要比Mealy型状态机多一个状态,且Moore型状态机的输出比Mealy型延后一个时钟周期。
在这里插入图片描述

在这里插入图片描述

  对于Moore状态机来说,优势在于

  • ​时序稳定性:输出仅由当前状态决定,在时钟边沿同步更新,避免输入信号毛刺导致的输出抖动。
  • ​设计简单:输出逻辑与输入解耦,代码结构清晰(如三段式状态机中输出独立于转移逻辑)。
  • ​同步性:适合对输出稳定性要求高的场景(如控制信号生成、显示驱动)。
      劣势在于
  • ​延迟较高:输出必须等待时钟边沿更新,响应速度可能不足(如高速通信协议)。
  • ​状态数可能更多:若相同状态需根据输入产生不同输出,需拆分成多个状态,增加复杂度
      对于Mealy状态机来说,优势在于
  • ​响应速度快:输出可随输入立即变化,无需等待时钟边沿,适合实时性要求高的场景。
  • ​状态数更少:因输出与输入相关,可能通过合并相似状态减少状态数量(例如用输入条件区分行为)。
  • ​资源占用低:在某些设计中,由于状态合并,寄存器资源消耗可能更少。
      劣势在于
  • 时序风险:输入信号的毛刺或异步变化可能导致输出不稳定(需额外同步逻辑)。
  • ​设计复杂度高:输出逻辑需同时处理状态和输入,代码调试难度增加。
  • ​时序收敛挑战:组合逻辑路径(输入→输出)可能成为关键路径,影响最大时钟频率。

状态机的描述方式

  以下面状态转移图为例,对一段式、二段式以及三段式状态机进行描述。状态转移线上的0/0等表示的意思是过程中data/flag的值,其中data为输入,flag为输出,可以看出,该状态机伪Mealy状态机,因为输出和输出的data有关。
在这里插入图片描述

  如果通过Moore状态机实现,会多一个状态,如下图所示。
在这里插入图片描述

1. 一段式

  一段式状态机只有一个always块,既实现状态跳转又实现逻辑输出。这种写法看起来很简洁,但是不利于维护,如果状态复杂一些就很容易出错,不推荐这种方法。

module fsm1(input wire clk  ,input wire rst  ,input wire data ,output reg flag
);
//*************code***********//parameter S0 = 'd0;parameter S1 = 'd1;parameter S2 = 'd2;parameter S3 = 'd3;reg [1:0] state;//第一段,状态跳转+时序逻辑输出always @(posedge clk or negedge rst)beginif(!rst)beginstate <= S0;flag <= 1'b0;endelse beginif(state==S0)beginstate <= (!data)?S0:S1;flag <= 1'b0;endelse if(state==S1)beginstate <= (!data)?S1:S2;flag <= 1'b0;endelse if(state==S2)beginstate <= (!data)?S2:S3;flag <= 1'b0;endelse if(state==S3)beginstate <= (!data)?S3:S0;flag <= data? 1'b1:1'b0;endelse beginstate <= S0;flag <= 1'b0;endendend//*************code***********//
endmodule

2. 二段式

  二段式状态机有两个always block,把时序逻辑和组合逻辑分隔开来。时序逻辑里进行当前状态和下一状态的切换,组合逻辑实现各个输入、输出以及状态判断。在两段式描述中,当前状态的输出用组合逻辑实现,可能存在竞争和冒险,产生毛刺,因此为了保险起见,二段式状态机实现会对输出多打一拍。二段式的输出是组合逻辑输出,因此在数字电路设计中,二段式状态机通常用于实现Moore型状态机。

module fsm2(input wire clk  ,input wire rst  ,input wire data ,output reg flag
);//*************code***********//parameter S0 = 'd0;parameter S1 = 'd1;parameter S2 = 'd2;parameter S3 = 'd3;parameter S4 = 'd4;reg [2:0] curr_state;reg [2:0] next_state;//第一段,时序逻辑always @(posedge clk or negedge rst)beginif(!rst)curr_state <= S0;elsecurr_state <= next_state;end//第二段,组合逻辑,状态跳转+输出always @(*)begincase(curr_state)S0: beginnext_state = (!data)?S0:S1;flag = 1'b0;endS1:beginnext_state = (!data)?S1:S2;flag = 1'b0;endS2:beginnext_state = (!data)?S2:S3;flag = 1'b0;endS3:beginnext_state = (!data)?S3:S4;flag = 1'b0;endS4:beginnext_state = (!data)?S0:S1;flag = 1'b1;enddefault:beginnext_state = S0;flag = 1'b0;endendcaseend//*************code***********//
endmodule

3. 三段式

  有三个always block,一个时序逻辑采用同步时序的方式描述状态转移,一个采用组合逻辑的方式判断状态转移条件、描述状态转移规律,第三个模块使用同步时序的方式描述每个状态的输出。代码容易维护,时序逻辑的输出解决了两段式组合逻辑的毛刺问题,但是从资源消耗的角度上看,三段式的资源消耗多一些。

module fsm1(input wire clk  ,input wire rst  ,input wire data ,output reg flag
);
//*************code***********//parameter S0 = 'd0;parameter S1 = 'd1;parameter S2 = 'd2;parameter S3 = 'd3;reg [1:0] curr_state;reg [1:0] next_state;//第一段always @(posedge clk or negedge rst)beginif(!rst)curr_state <= S0;elsecurr_state <= next_state;end//第二段always @(*)begincase(curr_state)S0	:next_state = (!data)?S0:S1;S1	:next_state = (!data)?S1:S2;S2	:next_state = (!data)?S2:S3;S3	:next_state = (!data)?S3:S0;default:next_state = S0;endcaseend//第三段,组合逻辑输出always @(posedge clk or negedge rst)beginif(!rst)flag <= 1'b0;else if(curr_state==S3 && data)flag <= 1'b1;else	flag <= 1'b0;end//*************code***********//
endmodule

总结

  对于Moore状态机和Mealy状态机,需要根据实际应用场景自行选择。而状态机的描述方法,更倾向于使用三段式状态机,逻辑清晰且便于维护。

http://www.whsansanxincailiao.cn/news/32034990.html

相关文章:

  • 做网站工作/济南百度代理
  • 我的网站怎么转网页呢/厦门关键词优化平台
  • 规则网站建设/外链推广平台
  • heritrix做网站/网络销售平台排名
  • wordpress阿里云服务器开启伪静态/谷歌seo运营
  • 潍坊美丽乡村建设一般发了哪个网站/app制作费用一览表
  • 哪里可以接网站开发的活/seo包括哪些方面
  • 用phpcms建网站流程/网络营销策划的基本原则
  • 哪家公司做网站/事件营销的经典案例
  • 有知道做网站的吗/网络营销十大成功案例
  • 银川做网站建设/厦门百度开户
  • 百度联盟怎么做网站加入/百度云官网登录首页
  • 魅影视频/站长seo推广
  • 小程序公司排名/合肥seo培训
  • 无锡做网站好/东莞百度推广排名
  • 深圳网站制作的公司/搜索引擎排名优化技术
  • 做网站爬闪/湖南网站建设营销推广
  • 怎么做网站站长/cctv 13新闻频道
  • 明星个人网站设计模板/网络营销与传统营销的区别
  • 政府网站欣赏/seo优化百度技术排名教程
  • 中国建设银行网站晋阳支行/东莞网络推广公司
  • 珠海市住房城乡建设局网站/流量平台排名
  • 网站动图是怎么做的/整站多关键词优化
  • 浙江网站建设公司电话/网站建设杭州
  • WordPress文章设置密码/南昌seo排名
  • 做淘宝网站如何提取中间的提成/市场营销专业就业方向
  • 单位网站等级保护必须做吗/bt磁力王
  • 宝安中心地铁站时间表/软文广告经典案例短的
  • 公司网站管理/营销型网站分为哪几种
  • 个人接做网站多少钱/情感营销经典案例