Verilog高级结构:有限状态机FSM与任务函数解析

需积分: 31 2 下载量 11 浏览量 更新于2024-07-12 收藏 642KB PPT 举报
"这篇资料是北京大学的一份Verilog课件,专注于讲解有限状态机(FSM)的设计和建模。课件中提到了如何利用枚举(enum)和状态向量(state_vector)来描述状态机,同时也涉及了任务(task)和函数(function)在Verilog中的应用。此外,还涵盖了任务和函数的调用、定义以及它们与有限状态机的关系。" 在Verilog中,有限状态机(FSM)是一种常用的设计方法,它能够清晰地表示系统的状态转换逻辑。状态机通常由一组状态和输入事件触发的状态转换规则构成。在本课件中,enum指导被用来为状态赋予枚举值,这样可以使代码更易于理解和维护。状态向量(state_vector)则用于定义状态寄存器及其编码方式,确保每个状态在硬件中都有独特的二进制表示。 状态机的描述在RTL(Register Transfer Level)代码中,可以通过FSM指导向综合器提供关于状态机特性的信息,以优化硬件实现。这些指导有助于综合器理解状态机的行为,从而生成更高效的电路。 课件中还提到了Verilog中的任务和函数,这两种构造都是为了实现代码的模块化和复用。任务(task)主要用于行为描述,尤其是在调试和模拟时序控制时非常有用。它们可以包含时序控制语句,如#延迟和@边沿触发,有输入、输出和双向参数,并且可以相互调用。然而,与函数不同,任务不能有返回值,一旦开始执行,只有在遇到disable语句或者完成所有操作后才会停止。 函数(function),则主要用于计算和组合逻辑的描述。函数不包含任何时序控制,其执行时间在仿真中为0,只能有输入参数,且返回一个结果。由于不涉及时序,函数适合用于组合逻辑的纯功能描述,但不能调用任务。 在Verilog中,任务和函数必须在模块内部定义,它们的输入/输出都是局部寄存器。需要注意的是,任务和函数的执行是同步的,这意味着它们在执行期间不会立即返回结果,特别是当它们包含循环或无限循环(如forever语句)时。 在实际编程中,为确保任务和函数的可读性和可维护性,建议为参数提供独特的名称,避免与任务内部的I/O变量混淆。同时,如果需要停止一个正在运行的任务,可以使用disable关键字来禁用它。 总结来说,这份Verilog课件深入介绍了FSM的设计技巧,以及如何利用任务和函数来增强代码的组织性和复用性,对于理解和掌握Verilog语言在数字系统设计中的应用具有很高的价值。
2018-01-10 上传
利用 VHDL 设计的许多实用逻辑系统中 有许多是可以利用有限状态机的设计方案来 描述和实现的 无论与基于 VHDL 的其它设计方案相比 还是与可完成相似功能的 CPU 相比 状态机都有其难以逾越的优越性 它主要表现在以下几方面 h 由于状态机的结构模式相对简单 设计方案相对固定 特别是可以定义符号化枚 举类型的状态 这一切都为 VHDL 综合器尽可能发挥其强大的优化功能提供了有利条件 而且 性能良好的综合器都具备许多可控或不可控的专门用于优化状态机的功能 h 状态机容易构成性能良好的同步时序逻辑模块 这对于对付大规模逻辑电路设计 中令人深感棘手的竞争冒险现象无疑是一个上佳的选择 加之综合器对状态机的特有的优 化功能 使的状态机解决方案的优越性更为突出 h 状态机的 VHDL 设计程序层次分明 结构清晰 易读易懂 在排错 修改和模块 移植方面 初学者特别容易掌握 h 在高速运算和控制方面 状态机更有其巨大的优势 由于在 VHDL 中 一个状态 机可以由多个进程构成 一个结构体中可以包含多个状态机 而一个单独的状态机 或多 个并行运行的状态机 以顺序方式的所能完成的运算和控制方面的工作与一个 CPU 类似 由此不难理解 一个设计实体的功能便类似于一个含有并行运行的多 CPU 的高性能微处 理器的功能 事实上这种多 CPU 的微处理器早已在通信 工控和军事等领域有了十分广 泛的应用 h 就运行速度而言 尽管 CPU 和状态机都是按照时钟节拍以顺序时序方式工作的 但 CPU 是按照指令周期 以逐条执行指令的方式运行的 每执行一条指令 通常只能完 成一项操作 而一个指令周期须由多个 CPU 机器周期构成 一个机器周期又由多个时钟 周期构成 一个含有运算和控制的完整设计程序往往需要成百上千条指令 相比之下 状 态机状态变换周期只有一个时钟周期 而且 由于在每一状态中 状态机可以完成许多并 行的运算和控制操作 所以 一个完整的控制程序 即使由多个并行的状态机构成 其状 态数也是十分有限的 因此有理由认为 由状态机构成的硬件系统比 CPU 所能完成同样 功能的软件系统的工作速度要高出两个数量级 h 就可靠性而言 状态机的优势也是十分明显的 CPU 本身的结构特点与执行软件 指令的工作方式决定了任何 CPU 都不可能获得圆满的容错保障 这已是不争的事实了 因此 用于要求高可靠性的特殊环境中的电子系统中 如果以 CPU 作为主控部件 应是 一项错误的决策 然而 状态机系统就不同了 首先是由于状态机的设计中能使用各种无 懈可击的容错技术 其次是当状态机进入非法状态并从中跳出所耗的时间十分短暂 通常 只有 2 个时钟周期 约数十个 ns 尚不足以对系统的运行构成损害 而 CPU 通过复位方第 10 章 有限状态机 FSM 199 式从非法运行方式中恢复过来 耗时达数十 ms 这对于高速高可靠系统显然是无法容忍 的 再其次是状态机本身是以并行运行为主的纯硬件结构