小舍YZ 发表于 2017-9-20 15:51:28

用Verilog HDL设计可综合的状态机

用Verilog HDL设计可综合的状态机

设计环境
IIC总线接口的设计是利用Altera公司的设计软件Quartus II,用Verilog HDL语言编程实现的。仿真部分采用Quartus II+Modelsim。

Quartus II软件是Altera提供的完整的多平台设计环境,可以轻易地满足特定地设计需求,是SOPC设计的综合性环境。
硬件描述语言(HDL)是一种形式化方法来描述数字电路和设计数字逻辑系统的语言,它是硬件设计人员与EDA工具之间沟通的桥梁,其主要目的是用来编写设计文件,建立电子系统行为级的模拟类型。

基于状态机的设计要点:
(1)一个完备的状态机应该具有初始状态和默认状态。当芯片加电或者复位后,状态机能够自动将所有的判断条件复位,并进入初始状态,起始状态是指电路复位后所处的状态,选择一个合理的起始状态将使整个系统更简捷高效。当转移条件不满足,或者状态发生突变时,状态机进入一个默认(default)状态,能保证逻辑不会陷入“死循环”,这是对状态机健壮性的一个重要要求,即自动恢复功能。在case语句的最后,不要忘了加上default分支语句,以避免锁存器的产生。
(2)建模
用两条always语句对其建模比较好:一个always语句用于组合逻辑建模(既包括次态逻辑,也包括输出逻辑),一个always语句用于时序逻辑建模。组合逻辑建模采用阻塞式赋值,时序逻辑建模采用非阻塞式赋值。
(3)时序方式选择
根据触发条件的不同,时序逻辑电路可以分为异步时序和同步时序逻辑。在异步时序逻辑中触发条件很随意,任何时刻都有可能发生,所以记忆状态的触发器输出在任何时刻都有可能发生,而同步时序逻辑中表示状态的触发器输出只能在惟一确定的触发条件发生时刻改变,例如只能由时钟的上升沿或下降沿触发。同步时序逻辑的触发输入至少可以维持一个时钟周期后才会发生第二次触发,利用这一段时间,即在下一次触发信号来到前,为电路的状态改变创造了一个稳定可靠的条件。因此,同步时序逻辑比异步时序逻辑具有更可靠、更简单的逻辑关系。
目前,综合工具只支持同步时序逻辑的设计,用Verilog设计可综合的状态机也都使用同步时序逻辑。实用的状态机都应设计为由唯一时钟边沿触发的同步运行方式。

zhangyukun 发表于 2017-9-21 09:18:13

用Verilog HDL设计可综合的状态机

zxopenljx 发表于 2020-5-12 14:09:29

用Verilog HDL设计可综合的状态机

zxopenljx 发表于 2020-7-14 20:52:08

用Verilog HDL设计可综合的状态机
页: [1]
查看完整版本: 用Verilog HDL设计可综合的状态机