已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/11/23,1,6.4状态机与数据路径,2019/11/23,2,研究内容,基本概念状态机分类状态机描述方法状态机的编码风格可综合的FSM编码状态机的优化状态机容错和设计准则,2019/11/23,3,有限状态机,2019/11/23,4,FiniteStateMachine,FSM,状态机一个离散数学模型。给定一个输入集合,根据对输入的接受次序来决定一个输出集合。(摩尔状态机)有限状态机输入集合和输出集合都是有限的,并只有有限数目的状态,实现有限个离散状态及其状态之间转移等行为动作的一种数学模型,2019/11/23,5,有限状态机,有限状态机是由寄存器组和组合逻辑构成的硬件时序电路;状态机的状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态;状态机状态转换不但取决于各个输入值,还取决于当前状态。状态机可用于产生在时钟跳变沿时刻开关的复杂的控制逻辑,是数字逻辑的控制核心。,2019/11/23,6,为什么要使用状态机,有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。,状态机的结构模式相对简单。,状态机容易构成性能良好的同步时序逻辑模块。,状态机的Verilog表述丰富多样。,在高速运算和控制方面,状态机更有其巨大的优势。,2019/11/23,7,nn,a1,a2,an,x1,x2,xn,状态位置,状态名称,转移方向,输入集合(触发事件),输出集合(执行动作),状态等待,状态迁移图,S,状态编码,2019/11/23,8,状态机分类,米勒(Mealy)状态机与当前状态和输入有关摩尔(Moore)状态机仅与当前状态有关,2019/11/23,9,状态机状态,次态逻辑:负责状态机译码逻辑,是组合电路。其输入包含当前状态和外部输入信号。状态记忆:储存目前的状态,是时序寄存电路。下一个逻辑状态的输出是其输入信号。输出逻辑:负责输出逻辑,是组合电路。摩尔机仅仅与当前状态有关,米勒机与当前状态和输入信号都有关。输出缓存器:对输出结果再做一次寄存,避免毛刺产生,有利于时序收敛,也能保证输入延迟是一个可预测的量。,2019/11/23,10,MealyMachine,X/Z,当前状态S1S2S3,0S1/0S1/0S1/1,1S2/0S3/0S3/0,输入,次态/输出,2019/11/23,11,MooreMachine,采用外部flip-flop,2019/11/23,12,状态机设计,状态机结构图,状态转换图,2019/11/23,13,状态机真值表,2019/11/23,14,状态机仿真结果,Moore机仿真,Mealy机仿真结果,2019/11/23,15,两种综合结果比较,2019/11/23,16,状态机描述风格,一段式(1-always),2019/11/23,17,modulefsm(clk,ina,out);inputclk,ina;outputout;regout;parameters0=3b00,s1=3b01,s2=3b10,s3=3b11;reg0:1state;always(posedgeclk)beginstate=s0;out=0;case(state)s0:beginstate=(ina)?s1:s0;out=0;ends1:beginstate=(ina)?s2:s0;out=0;ends2:beginstate=(ina)?s3:s0;out=0;ends3:beginstate=(ina)?s3:s0;out=1;endendcaseendendmodule,2019/11/23,18,状态机编写风格,Onealways这种风格是将当前状态向量和输出向量用同一时序always块来描述。此法不宜产生毛刺(寄存器输出)且利于综合。缺点,代码冗长,维护性差;case语句中对输出向量的赋值应是下一个状态输出,这点易出错;状态向量与输出向量都由寄存器实现,面积大,不能实现异步米勒状态机。,2019/11/23,19,如果采用两个always来描述,程序的模块声明、端口定义和信号类型部分不变,只是改动逻辑功能描述部分,改动部分的程序如下:always(posedgedk)state_fsm=next_state;always(state_fsmorina)beginstate=s0;out=0;case(state_fsm)s0:beginnext_state=(ina)?s1:s0;out=0;ends1:beginnextstate=(ina)?s2:s0;out=0:ends2:beginnext_state=(ina)?s3:s0;out=0;ends3:beginnext_state=(ina)?s3:s0;out=1;endendcaseend,2019/11/23,20,状态机编写风格(Twoalways),一个时序过程块给当前状态向量赋值,另一个组合过程块给下一个状态与输出向量赋值。此方法具有面积和时序最优的性能。存在问题:组合逻辑输出会产生毛刺,如果输出向量作为三态使能控制或者时钟信号使用的时候,必须消除毛刺。输出向量必须由状态向量经译码得到,加大了状态向量到输出向量的延迟。组合输出消耗了部分时钟,增加了其驱动的模块的输入延迟,不利于代码的综合与优化。Outputencoded风格,2019/11/23,21,modulefsm_3(clk,ina,out);inputclk,ina;outputout;regout;parameters0=2b00,s1=2b01,s2=2b10,s3=2b11;reg1:0state,next_state;always(posedgeclk)beginstate=s0;state=next_state;endalways(stateorina)beginnext_state=s0;case(state)s0:if(ina=1)next_state=s1;elsenext_state=s0;s1:if(ina=1)next_state=s2;elsenext_state=s0;,s2:if(ina=1)next_state=s3;elsenext_state=s0;s3:if(ina=1)next_state=s3;elsenext_state=s0;endcaseendalways(state)case(state)s0:out=0;s1:out=0;s2:out=0;s3:out=1;endcaseendmodule,2019/11/23,22,状态机编写风格(threealways),两个时序过程块分别产生当前状态向量和输出向量,一个组合过程块用于产生下一状态。使用寄存器输出,但面积较小,代码可读性强;与twoalways相比,面积稍大但无毛刺、有利于综合。,2019/11/23,23,综合结果比较,2019/11/23,24,/第一个过程,同步时序always模块,格式化描述次态寄存器转移到现态寄存器always(posedgeclkornegedgerst_n)/异步复位if(!rst_n)current_state=IDLE;elsecurrent_state=next_state;/注意,使用的是非阻塞赋值/第二个过程,组合逻辑always模块,描述状态转移条件判断always(current_state)/电平触发beginnext_state=x;/要初始化,使系统复位后能进入正确的状态case(current_state)S1:if(.)next_state=S2;/阻塞赋值elsenext_state=Sn;.endcase,2019/11/23,25,end/第三个过程,同步时序always模块,格式化描述次态寄存器输出always(posedgeclkornegedgerst_n)./初始化case(next_state)S1:out1=1b1;/注意是非阻塞逻辑S2:out2=1b1;default:./default的作用是免除综合工具综合出锁存器endcaseend,2019/11/23,26,描述方法比较,2019/11/23,27,状态机编码风格,状态机编码对状态机速度和面积关系重大常用编码二进制码(binary)独热码(one-hot)格雷码(Gray)二进制编码也可称连续编码,也就是码元值的大小是连续变化的。比如000,001,010,011,100,101独热码就是只有1个是1,其他都是0,如:000001,000010,000100,001000,010000,100000格雷码就是两个码之间只差1位不同,000,001,011,010,110,100,2019/11/23,28,二进制码与格雷码是压缩状态编码,使用最少的状态位进行编码。二进制编码的优点是使用的状态向量最少,但从一个状态转换到相邻状态时,可能有多个比特位发生变化,瞬变次数多,易产生毛刺。,2019/11/23,29,状态编码,独热码N个状态使用N个触发器,减少了状态寄存器之间的组合逻辑级数,因此提高了运行速度触发器数量增加,组合逻辑电路减少;任何状态都可以直接添加/删除等修改而不会影响状态机的其余部分。由于译码简单,可提高速度,且易于修改。,2019/11/23,30,状态编码,独热码的缺点变化的状态位越多,组合输出稳定前所需的时间就越长,产生的毛刺就越多;多个寄存器可能受异步输入的影响,使得亚稳态发生的概率有所增加;格雷码即可以消除状态转换时多状态信号传输延迟产生的毛刺,又可降低功耗。在状态机很复杂状态跳转的分支很多时,要合理的分配状态编码保证每个状态跳转都仅有1位发生变化,这是很困难的事情,2019/11/23,31,状态编码,2019/11/23,32,可综合的FSM编码,2019/11/23,33,2019/11/23,34,状态机设计流程,定义状态变量S定义输出inputClk,Reset,In_Data;output1:0Out_Data;reg1:0Out_Data;reg1:0State;parameterS0=2b00,S1=2b01,S2=2b11,S3=2b10;always(posedgeClk)beginif(Reset)State=S0;elsebegincase(State),S0:beginOut_Data=0;if(In_Data=1)State=S2;elseState=S0;endS1:beginOut_Data=1;if(In_Data=1)State=S2;elseState=S0;end,S2:beginOut_Data=1;if(In_Data=1)State=S3;elseState=S2;endS3:beginOut_Data=0;if(In_Data=1)State=S1;elseState=S3;endendcaseendendendmodule,MooreMachine-BadExample,BothStateandOut_Dataareimplementedwithflip-flops,通过HDL语言描述上述状态机如下:,2019/11/23,45,Note:only“State”isimplementedwithflip-flops),modulemoore_good(Clk,Reset,In_Data,Out_Data);inputClk,Reset,In_Data;output1:0Out_Data;reg1:0Out_Data;reg1:0State,NextState;parameterS0=2b00,S1=2b01,S2=2b10,S3=2b11;always(posedgeClkorposedgeReset)beginif(Reset)State=S0;elseState=NextState;end,always(In_DataorState)begincase(State)S0:beginif(In_Data=1)NextState=S2;elseNextState=S0;endS1:beginif(In_Data=1)NextState=S2;elseNextState=S0;endS2:beginif(In_Data=1)NextState=S3;elseNextState=S2;end,S3:beginif(In_Data=1)NextState=S1;elseNextState=S3;endendcaseendalways(State)begincase(State)S0:Out_Data=0;S1:Out_Data=1;S2:Out_Data=1;S3:Out_Data=0;endcaseendendmodule,Outputlogic,Stateregister(flip-flops),Nextstatelogic,MooreMachine-GoodExample,2019/11/23,46,状态机设计准则,状态机要安全,是指FSM不会进入死循环,特别是不会进入非预知的状态,而且由于某些扰动进入非设计状态,也能很快的恢复到正常的状态循环中来。这里面有两层含意:其一要求该FSM的综合实现结果无毛刺等异常扰动,其二要求FSM要完备,即使受到异常扰动进入非设计状态,也能很快恢复到正常状态。状态机的设计要满足设计的面积和速度的要求。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数学博士高级题库及答案
- 古代汉语模拟试卷及答案
- 古币鉴定师考试题及答案
- 三基考试临床题库及答案
- 2025年房屋检测鉴定试题及答案
- 德州初二历史试卷及答案
- 临汾高三试卷语文及答案
- 教改课题与教育规划课题区别
- 职场面试技巧与避坑指南
- 保险经纪人安全防护知识考核试卷含答案
- 校园文化整体提升建设项目方案投标文件(技术方案)
- 2025年医院《静脉治疗护理技术操作规范》测试题及答案
- 蓖麻种植基础知识培训课件
- 适应性进化速率-洞察及研究
- 员工职业安全健康培训课程大纲
- 面瘫的中医护理查房范本
- 适度保护会阴技术
- 南信工大气物理学试题及参考答案
- 子宫憩室课件
- 2025秋冀人版(2024)科学二年级上册教学计划、教学设计(附目录)
- 景观河岸改造方案(3篇)
评论
0/150
提交评论