可编程ASIC状态机设计课件.ppt

上传人:牧羊曲112 文档编号:1312516 上传时间:2022-11-07 格式:PPT 页数:34 大小:168.12KB
返回 下载 相关 举报
可编程ASIC状态机设计课件.ppt_第1页
第1页 / 共34页
可编程ASIC状态机设计课件.ppt_第2页
第2页 / 共34页
可编程ASIC状态机设计课件.ppt_第3页
第3页 / 共34页
可编程ASIC状态机设计课件.ppt_第4页
第4页 / 共34页
可编程ASIC状态机设计课件.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《可编程ASIC状态机设计课件.ppt》由会员分享,可在线阅读,更多相关《可编程ASIC状态机设计课件.ppt(34页珍藏版)》请在三一办公上搜索。

1、可编程ASIC设计,状态机设计学时分配:2,1,可编程ASIC设计状态机设计1,进度,1.绪论 。2.设计流程 。3.模块化硬件与进程模型 。4.信号传输模型 。5.核心语法与基础电路设计 。6.状态机设计 。7.可靠设计与高速设计 。8. 可编程逻辑器件。9.数字信号处理的fpga实现。10.数字系统的RTL设计。,2,进度1.绪论 。2,回忆计数器设计,设计一电路,包含基4计数器,和译码输出模块。计数器的输出(Present_value)从0到3循环;当计数值为2时,译码输出(DataOut)为“1”,否则输出“0”。,Clk,Present_valueQ(n),Next_valueQ(n

2、+1),译码,DataOutZ(n),3,回忆计数器设计设计一电路,包含基4计数器,和译码输出模块。计,00/0,01/0,10/1,11/0,4,Regs1ClkPresent_valueNext_val,00/0,01/0,10/1,11/0,扩展一个输入端din,当din = 1时计数器递增计数;当din = 0时计数器递减计数。,din,5,Regs/-1ClkPresent_valueNext_v,再将计数器修改成一个状态转换器,状态为S0, S1, S2, S3。每个状态的取值根据具体情况而定。比如S0 = 00, S1 = 11, S3 = 01, S4 = 10。,din,6,

3、Regs/-1ClkPresent_valueNext_v,再将计数器修改成一个状态转换器,状态为S0, S1, S2, S3。每个状态的取值根据具体情况而定。比如S0 = 00, S1 = 11, S3 = 01, S4 = 10。,din,7,Regs译码ClkPresent_valueNext_val,din,现在我们得到了一个比较通用的时序电路,这种电路统称为状态机(State Machine)。,8,Regs译码ClkPresent_stateNext_sta,din,状态机分类,Moore机:输出仅是状态的译码,9,Regs译码ClkPresent_stateNext_sta,di

4、n,状态机分类,Moore机:输出仅是状态的函数,Mealy机:输出是状态和输入的函数,10,Regs译码ClkPresent_stateNext_sta,状态机的表示方法1,方法一:状态转换表,11,状态机的表示方法1方法一:状态转换表输入当前状态下一状态输出,状态机的表示方法2,方法二:算法流程图,方法与软件程序的流程图类似,状态转换表和算法流程图都不适合复杂系统的设计,12,状态机的表示方法2方法二:算法流程图 方法,状态机的表示方法3,方法三:状态转换图,这是最流行的表示方法,状态1,状态4,状态2,状态3,入,/出,入,入,入,/出,/出,/出,Moore,条件控制转移,直接控制转移

5、,13,状态机的表示方法3方法三:状态转换图这是最流行的表示方法状态,状态机的表示方法3,方法三:状态转换图,这是最流行的表示方法,状态1,状态4,状态2,状态3,入,/出,入,入,入,/出,/出,/出,/出,Mealy,条件控制转移,直接控制转移,14,状态机的表示方法3方法三:状态转换图这是最流行的表示方法状态,状态机的应用设计,例子:设计一个二进制序列检测器,当检测到10110序列时,就输出1(一个时钟周期的脉冲)。其他情况下输出0。 规定检测到一次之后,检测器复位到最初始的状态,重新从头检测。如下所示:,输入:01101101101100,输出:00000001000001,15,状态

6、机的应用设计例子:设计一个二进制序列检测器,当检测到10,状态转换图设计(Moore),1,0,1,1,0,S0/0,S1/0,S2/0,S3/0,S4/0,S5/1,Reset,1,1,0,0,1,1,0,1,0,0,1,0,1,0,1,1,0,s1,s2,s3,s4,s5,s0,问题1:如何保证状态机在初始时状态为s0?,问题2:在状态机跑飞,即脱离有效状态(s0s5)时,如何使状态机能恢复工作,Sx/0,16,状态转换图设计(Moore)10110S0/0S1/0S2/,波形,波形如下图所示,问题:如果需要将输出脉冲往前推一个时钟周期,该如何修改设计?,1,0,1,1,0,1,0,1,1

7、,0,s1,s2,s3,s4,s5,s0,输入,时钟,输出,当前状态,发现当前状态为s4,并且输入为0时,输出为1。,17,波形波形如下图所示问题:如果需要将输出脉冲往前推一个时钟周期,状态转换图设计(Mealy),S0,S1,S2,S3,S4,S5,Reset,1,0,0,1,1,0,1,0,0,1,0,1,sX,/0,/0,/0,/0,/0,/0,/0,/0,/0,/1,/0,/0,1,0,1,1,0,1,0,1,1,0,s1,s2,s3,s4,s5,s0,/0,0/1,s0,18,状态转换图设计(Mealy)S0S1S2S3S4S5Rese,状态机的代码实现,状态定义Architectu

8、re rtl of Syn is - 其他信号定义。Type SynFsmState is ( s0, s1, s2, s3, s4, s5);Signal SynCst, SynNst : SynFsmState;Begin - 结构体。End rtl;,19,状态机的代码实现状态定义19,状态机的代码实现,状态寄存器进程描述,状态寄存器,输出译码,下一状态译码,当前状态,输出,下一状态,输入,时钟clk,20,状态机的代码实现状态寄存器进程描述状态输出下一状当前状态输出,状态寄存器进程描述,Process( clk, Reset )Begin if( Reset = 1 ) then Sy

9、nCst = S0; - 初始状态。 elsif( clkevent and clk = 1 ) then SynCst = SynNst; - 状态转换。 end if;End process;,21,状态寄存器进程描述Process( clk, Reset ),状态机的代码实现,状态转换进程描述,状态寄存器,输出译码,下一状态译码,当前状态,输出,下一状态,输入,时钟clk,22,状态机的代码实现状态转换进程描述状态输出下一状当前状态输出下,状态转换进程描述,Process( SynCst, din)Begin case SynCst is when s0 = when s1 = ,whe

10、n s5 = End case;End process;,if( din = 1 ) then SynNst = s1; else SynNst = s0; end if;,when others = SynNst = s0;,23,状态转换进程描述Process( SynCst, din),状态机的代码实现,输出进程描述,状态寄存器,输出译码,下一状态译码,当前状态,输出,下一状态,输入,时钟clk,24,状态机的代码实现输出进程描述状态输出下一状当前状态输出下一状,输出进程描述,Process(SynCst )Begin case SynCst is when s0 = when s1 =

11、 ,when s5 = when others = End case;End process;,Moore,Mealy,Dout = 0;,Dout = 0;,Dout = 0,if( din = 1 ) then else end if;, din ),25,输出进程描述Process(SynCst ) when,问题:当不发生任何状态转换时,能否不对SynNst赋值?状态转换后,输出没有改变时,能否不对输出赋值?,思考1,26,问题:当不发生任何状态转换时,能否不对SynNst赋值?状态,思考2,Mealy机的输入进入输出译码模块,从而输出可以比Moore机早一个时钟周期;但是这同时会造成

12、Mealy机的什么弱点?,如果Mealy机的输入有毛刺等干扰,这些干扰信号会直接传播到输出端。,27,思考2Mealy机的输入进入输出译码模块,从而输出可以比Mo,问题:Mealy机中,能否用“次态”信号替代“输入”信号,与“现态”信号进行译码输出?,思考3,28,问题:Mealy机中,能否用“次态”信号替代“输入”信号,与,问题:Mealy机中,能否用“次态”信号替代“输入”信号,与“现态”信号进行译码输出?,思考3,DataOutZ(n),29,问题:Mealy机中,能否用“次态”信号替代“输入”信号,与,问题:Mealy机中,能否用“次态”信号替代“输入”信号,与“现态”信号进行译码输出

13、?,思考3,或者,保留s5态,然后直接用“次态”信号进行译码输出?,30,问题:Mealy机中,能否用“次态”信号替代“输入”信号,与,状态机设计小结,Moore机的输出z仅是当前状态q的函数;而Mealy机的输出z是q和输入a的函数;Mealy机的输出z可以比Moore机早一个时钟周期;Mealy机中,输入端的干扰容易被传播到输出端,而Moore机则不会。这是Moore机比Mealy机稳定的地方。,31,状态机设计小结Moore机的输出z仅是当前状态q的函数;而M,状态机设计小结,记得使用others来包含所有的“无效态”,以保证状态机的安全运作。任何状态,任何条件下,都应该对“次态”和所有的输出z赋值,以避免生成锁存(后面内容会详细讲述)。,32,状态机设计小结记得使用others来包含所有的“无效态”,以,再次思考,状态机设计中,如果状态数很多,则状态Q的位数就比较多,从而容易导致输出Z产生明显的毛刺。如何解决这个问题?,33,再次思考状态机设计中,如果状态数很多,则状态Q的位数就比较多,再次思考,状态机设计中,状态编码采用Binary编码和One-hot编码对系统会造成什么样的性能影响?这两种编码对FPGA/CPLD的适用情况如何?,34,再次思考状态机设计中,状态编码采用Binary编码和One-,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号