《fpga有限状态机》PPT课件

《fpga有限状态机》PPT课件

ID:36683490

大小:265.25 KB

页数:33页

时间:2019-05-09

《fpga有限状态机》PPT课件_第1页
《fpga有限状态机》PPT课件_第2页
《fpga有限状态机》PPT课件_第3页
《fpga有限状态机》PPT课件_第4页
《fpga有限状态机》PPT课件_第5页
资源描述:

《《fpga有限状态机》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、状态机设计的一般原则有限状态机有限状态机是由寄存器组和组合逻辑构成的硬件时序电路。其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态。状态机是逻辑设计中最重要的设计内容之一通过状态转移图设计手段可以将复杂的控制时序图形化表示,分解为状态之间的转换关系,将问题简化。有限状态机是设计复杂时序电路最有效的方法。特别是设计数字逻辑的控制核心时。moore有限状态机:输出仅依赖于内部状态,跟输入无关。mealy有限状态机:输出不仅决定于内部状态,还跟外部输入有关。状

2、态机设计的一般原则1、选择状态机的编码方式Binary、gray-code编码使用最少的触发器,较多的组合逻辑资源,而one-hot编码反之。另一方面,对于小型设计使用Binary、gray-code更有效,而大型状态机使用one-hot编码更高效。十位数二进制码格林码独热码约翰逊0000000000000_0000_0000_00010000_00001000100010000_0000_0000_00100000_00012001000110000_0000_0000_01000000_00113001100100

3、000_0000_0000_10000000_01114010001100000_0000_0001_00000000_11115010101110000_0000_0010_00000001_11116011001010000_0000_0100_00000011_11117011101000000_0000_1000_00000111_11118100011000000_0001_0000_00001111_11119100111010000_0010_0000_00001111_11101010101111000

4、0_0100_0000_0000111_1110011101111100000_1000_0000_0000111_1100012110010110001_0000_0000_0000111_1000013110110100010_0000_0000_0000111_0000014111010010100_0000_0000_0000110_0000015111110001000_0000_0000_0000100_000002、使用两段式状态机设计方法设计状态机的方法多种多样,但总结起来有两大类:第一种,将状态转移和

5、状态的操作、判断等写在一起;另一种是将状态转移单独写成一个部分,将状态的操作和判断写到另一个部分中。第二种设计方法较好,将同步时序和组合逻辑分别放到不同的程序块中实现不仅仅便于阅读、理解、维护,更有利于综合器优化代码,利于用户添加合适的时序约束条件,利于布局布线器实现设计。下面的状态转移图表示了一个四状态的有限状态机,它的同步时钟是Clock,输入信号是A和Reset,输出信号是F和G。状态的转移只能在同步时钟(Clock)的上升沿时发生,往哪个状态的转移则取决于目前所在的状态和输入的信号(Reset和A)。Veril

6、og中有许多方法可以用来描述有限状态机,最常用的是always语句和case语句。modulefsm(Clock,Reset,A,F,G);inputClock,Reset,A;outputF,G;regF,G;reg[1:0]state;//保持状态的寄存器组parameterIdle=2’b00,Start=2’b01,Stop=2’b10,Clear=2’b11;//对状态赋值always@(posedgeClock)if(!Reset)beginstate<=Idle;F<=0;G<=0;endelsecase

7、(state)idle:beginif(A)state<=Start;G<=0;endstart:if(!A)state<=Stop;Stop:beginif(A)state<=Clear;F<=1;endClear:beginif(!A)state<=Idle;F<=0;G<=1;endendcaseendmodule使用另一种风格的VerilogHDL模型来表示同一个有限状态。在这个模型中,我们把用always语句在时钟沿触发条件下的状态变化放在一个独立的块中,而把在状态控制下的两个输出分两个独立的组合逻辑alwa

8、ys块来描述。always@(posedgeClock)if(!Reset)beginstate<=Idle;endelsecase(state)Idle:if(A)state<=Start;Start:if(!A)state<=Stop;Stop:if(A)state<=Clear;Clear:if(!A)state<=Idle

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。