当前位置:首页 > fpga 数字逻辑基于Quartus设计
图4.24 功能仿真的波形
示例3:基于状态机的工程设计
状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前”节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态, 状态机停止。编译器识别状态机的条件:
(1)表现状态机的信号或变量必须为枚举类型。
(2)状态转移必须由clk触发,并且是用IF语句检测的上升沿进行转移。 (3)状态转移到下一个状态由CASE语句判断。 (4) 所有信号,变量赋值都要放在状态机进程里进行。 (5) 状态机的状态必须多于两个状态。
Quartus II 状态机编辑器(State Machine Edit)是一个灵活的工具,用于以图形方式表示时序电路的状态图,而且不需要编写任何VHDL或Verilog HDL 源代码。在状态机编辑器中完成状态图的输入以后,直接通过Generate HDL File命令,就会生成VHDL或Verilog HDL 源代码。这个示例就是利用状态编辑器设计一个4位二进制计数器。
1. 建立工程文件
工程文件的建立过程和方法与示例1的类似。主要包括指定工程文件名称、选择添加的文件和库及选择目标器件几个过程。这里取新建工程的文件夹名为cnt4b_state、工程名称和顶层实体名称为cnt4b_state。工程创建结束,信息正确后,点击Finish,工程建立完成后的界面如图4.25所示。
图4.25 工程建立完成后的界面
2. 输入状态机 (1)建立文件
在图4.25中选择File→New命令,在弹出的对话框中选择State Machine File并点击OK按钮,进入如图4.26所示的对话框。
图4.26 状态机编辑窗口
(2)创建状态机
①选择Tools→State Machine Wizard命令,打开状态机创建向导选项对话框。 ②选择Reset信号描模式:Synchronous(同步)或Asynchronous(异步)。这里选项异步。选择Reset为高电平有效;选择市出为寄存器方式。单击Next。如图4.27所示。
输入状态名称 设置输入信号 状态转换表
图4.27 状态机创建向导步骤②
③,在对话框内的State栏输入状态名称state0-state15(双击state进行改写),在输入端口栏中取默认情况。在状态转换表输入状态转换,转换条件默认。如图4.28所示。
共分享92篇相关文档