为什么要设计有限状态机
为什么要设计有限状态机?
clock S1 S2 S3
10ns
t 开 关 t
t
t S4 t Sn t
为什么要设计有限状态机?
如果我们能设计这样一个电路: 1)能记住自己目前所处的状态 ; 2)状态的变化只可能在同一个时钟的跳变沿 时刻发生,而不可能发生在任意时刻;
3)在时钟跳变沿时刻,如输入条件满足,则 进入下一状态,并记住自己目前所处的状态, 否则仍保留原来的状态;
Out[7] …... …... Out[0]
为什么要设计有限状态机? : 带寄存器的八位数据通路控制器的波形 ControlSwitch In[7] Q[7]
CLOCK D Q[7]
ControlSwitch
In[6]
Q[6]
CLOCK
。 。 。 D Q[6]
为什么要设计有限状态机?
组合逻辑举例之二:一个八位三态数据通路控制器
outbuf[0]
bus[0]
为什么要设计有限状态机? 八位三态数据通路控制器的波形: LinkBusSwitch
outbuf[7] outbuf[0]
bus[7]
…...
bus[0]
…...
outbuf [7:0] 31 bus[7:0]
LinkBusSwitch
02 02
15 15
32 32
62
`define ON 1 ‘b 1 `define OFF 1 ‘b 0 wire LinkBusSwitch; wire [7:0] outbuf; inout [7:0] bus; assign bus = (LinkBusSwitch== `ON) ? outbuf : 8 ‘hzz LinkBusSwitch outbuf[7] …... bus[7] …...
8 ‘ d 202 16‘ d 606
t t
t
关
为什么要设计有限状态机?
如果能严格以时钟跳变沿为前提,按排 好时序,来操作逻辑系统中每一个开关 Si,则系统中数据的流动和处理会按同 一时钟节拍有序地进行,避免了冒险和 竞争现象,时延问题就能有效地加以解 决。 利用有限状态机就能产生复杂的以时钟 跳变沿为前提的同步时序逻辑,并提供 操作逻辑系统的开关阵列所需要的复杂 控制时序(具有信号无锁和先后次序等要求的)。
ControlSwitch In[7]
Out[7]
…... …... Out[0]
In[0]
为什么要设计有限状态机? 一个八位数据通路控制器的波形: ControlSwitch In[7] In[0]
in [7:0] 31 out[7:0] ControlSwitch 开 关 t 00 02 02 15 15 32 32 62 00 88 t
88
ZZ 开 关
ZZ
t
t
为什么要设计有限状态机?
开关逻辑应用举例:寄存器间数据流动的控制开关
开关S1
组合逻辑
开关S2
组合逻辑
dd
dd
qq
qq
dd
dd
qq q
q
dd qq dd qq
寄存器1
寄存器2
寄存器3
clock
为什么要设计有限状态机?
开关逻辑应用举例:寄存器间数据流动的控制开关
开关S1
开关S3
有限状态机数字系统示意图
数字逻辑电路的构成:
- 组合逻辑:由与、或、非门组成的网络。常用
的有:多路器、数据通路开关、加法器、乘法器….
- 时序逻辑: 由多个触发器和多个组合逻辑块组
成的网络。常用的有:计数器、复杂的数据流动控制 逻辑、运算控制逻辑、指令分析和操作控制逻辑。同 步时序逻辑的设计是设计复杂的数字逻辑系统的核心。
开关S5
d q clock
寄存器A
d q
寄存器B
d q
寄存器C
开关S2
开关S4
开关S6
为什么要设计有限状态机?
开关逻辑的时延问题:控制数据运算和流动的开ห้องสมุดไป่ตู้
关的开启和关闭时序.
输出控制开关Sn
in [7:0] in [7:0] out [15:0]
组合逻辑
延时10ns
8 ‘ d 31 out[15:0] 16 ‘ d 93 Sn 开
为什么要设计有限状态机?
数字逻辑电路的构成:
- 组合逻辑:输出只是输入逻辑电平的函数 (有延时),与电路的原始状态无关。 - 时序逻辑:输出不只是输入的逻辑电平的函
数,还与前一状态有关。同步时序逻辑是在同 一时钟跳变节拍的前提下,如输入条件满足, 则进入下一状态,否则仍留在原来的状态的状 态机。
为什么要设计有限状态机?
4)在进入不同的状态时刻,对系统的开关阵 列做开启或关闭的操作。
为什么要设计有限状态机?
有了以上电路,我们就不难设计出复杂 的控制列序来操纵系统的开关阵列。能 达到以上要求的电路就是时序和组合电 路互相结合的产物:同步有限状态机和 由状态和时钟共同控制的开关逻辑。我 们只要掌握有限状态机的基本设计方法, 加上对基本电路的掌握,再加上对数据 处理的过程的细致了解,我们就能设计 出符合要求的复杂数字逻辑系统。
为什么要设计有限状态机?
组合逻辑举例之一:一个八位数据通路控制器
`define ON 1 ‘b 1
`define OFF 1 ‘b 0 wire ControlSwitch; wire [7:0] Out, In; assign Out = (ControlSwith== `ON) ? In : 8 ‘h00