录
一、何为状态机
- 状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。有限状态机简写为FSM(Finite State Machine),主要分为2大类:
第一类,若输出只和状态有关而与输入无关,则称为摩尔(Moore)型状态机。
第二类,输出不仅和状态有关而且和输入有关系,则称为米莉(Mealy)型状态机。
二、状态机状态检测
2.1 问题描述
- 根据以下描述功能用verilog编写一段代码,并用状态机来实现该功能。
(1)状态机:实现一个测试过程,该过程包括启动准备状态、启动测试、停止测试、查询测试结果、显示测试结果、测试结束返回初始化6个状态;用时间来控制该过程,90秒内完成该过程;
(2)描述状态跳转时间;
(3)编码实现。
2.2 工程创建
① 首先在相应的文件夹下建立一个名为state_show(可自行命名)的文件,里面分别创建prj(存放工程的文件)、src(存放Verilog代码源文件)、sim(存放仿真文件)、tcl(引脚配置文件),除此之外还可以建立ip(存放知识产权的文件)等…
②打开Quartus ||(我的版本是18.1),新建工程
file——New——New Quartus Prime Preject——OK
然后next,到如下图页面:
③两个next后,根据自己的开发版型号进行选择,笔主这里是:
④下一页面如下
- 然后finish,创建工程完成。
2.3 代码
- 新建 verilog 文件,
File->New->Verilog HDL File
- 注意保存时,要保存在src中,命名要与Verilog 语句中一致
2.3.1 计时器模块
module time_count(
input clk, //50M时钟
input rst_n, //复位信号
output reg sec_15//15s
);
parameter MAX_NUM = 30'd749_999_999;//最大数15s,750_000_000-1次
reg [29:0] cnt_15;//计数寄存器
//15s计时器
always@(posedge clk or negedge rst_n)begin
if(!r