时序逻辑:输出不仅是当前输入电平的函数,还与目前电路的状态有关。
[color=rgba(0, 0, 0, 0.75)]
比较项目 | 组合逻辑电路 | 时序逻辑电路(状态机)(同步) |
输入输出关系 | 任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关 | 不仅仅取决于当前的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关 |
有无存储(记忆)单元 | 无(不能包含) | 包含 |
结构特点 | 只包含门电路 | 组合逻辑电路+存储电路 输出状态必须反馈到组合电路的输入端,与输入信号共同决定组合逻辑的输出 |
分析方法 | 从电路的输入到输出逐级写出逻辑函数式,最后得到表示输出与输入关系的逻辑函数式。然后用公式化简法或者卡诺图化简法得到函数式的化简或变换,以使逻辑关系简单明了。 有时还可以将逻辑函数式转换为真值表的形式。 | 1、写出每个触发器的驱动方程 2、将驱动方程带入触发器的特性方程得到状态方程组 3、根据逻辑图写出电路的输出方程 状态转换过程描述: 状态转换表、状态转换图、状态机流程图、时序图 |
设计方法 | 1、逻辑抽象 2、写出逻辑函数式 3、选定器件类型 4、将逻辑函数式化简或者变换成适当的形式 5、画出逻辑电路的连接图 6、工艺设计 | 1、逻辑抽象得到状态转换图或者状态转换表 2、状态化简 3、状态分配(状态编码) 4、选触发器求出状态方程、驱动方程和输出方程 5、根据方程式画出逻辑图 6、检查设计的电路能否自启动 |
常用组合逻辑电路 | 编码器 译码器 数据选择器 加法器 数值比较器 | 锁存器 触发器 寄存器 移位寄存器 存储器 |
[color=rgba(0, 0, 0, 0.75)]
根据逻辑电路的不同特点,数字电路可以分为:组合逻辑和时序逻辑。
1 组合逻辑:
组合逻辑的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原本的状态无关,逻辑中不牵涉跳变沿信号的处理,组合逻辑的verilog描述方式有两种:
(1):always @(电平敏感信号列表)
always模块的敏感列表为所有判断条件信号和输入信号,但一定要注意敏感列表的完整性。在always 模块中可以使用if、case 和for 等各种RTL 关键字结构。由于赋值语句有阻塞赋值和非阻塞赋值两类,建议读者使用阻塞赋值语句“=”。always 模块中的信号必须定义为reg 型,不过最终的实现结果中并没有寄存器。这是由于在组合逻辑电路描述中,将信号定义为reg型,只是为了满足语法要求。
(2):assign描述的赋值语句。
信号只能被定义为wire型。
2 时序逻辑:
时序逻辑是Verilog HDL 设计中另一类重要应用,其特点为任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。电路里面有存储元件(各类触发器,在FPGA 芯片结构中只有D 触发器)用于记忆信息,从电路行为上讲,不管输入如何变化,仅当时钟的沿(上升沿或下降沿)到达时,才有可能使输出发生变化。
与组合逻辑不同的是:
(1)在描述时序电路的always块中的reg型信号都会被综合成寄存器,这是和组合逻辑电路所不同的。
(2)时序逻辑中推荐使用非阻塞赋值“<=”。
(3)时序逻辑的敏感信号列表只需要加入所用的时钟触发沿即可,其余所有的输入和条件判断信号都不用加入,这是因为时序逻辑是通过时钟信号的跳变沿来控制的。