参考:https://blog.csdn.net/Reborn_Lee/article/details/85763185
序列检测器经常出现在笔试题目当中,其实其中的主要思想还是状态机的设计,因此本文也借着序列检测器这一点,讲讲状态机的设计。
一、序列检测器要是实现什么功能?
序列检测器主要是实现输入的一串序列是否是特定的序列。比如设计一个序列检测器,检测序列“11001”,检测到就输出1,否则输出0。
二、设计状态机来检测序列
首先要设计状态机,最好是先把状态转换图先画出来,有了状态转换图一切设计就很好办了。
根据状态转换图很容易就写出状态机了。状态机代码如下。
源文件:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2019/04/01 16:29:18
// Design Name:
// Module Name: seq_det_moore
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module seq_det_moore(
input Clk,
input Rst_n,
input Din,
output reg Dout
);
//
localparam [2:0] S0 = 3'b000;
localparam [2:0] S1 = 3'b001;
localparam [2:0] S2 = 3'b010;
localparam [2:0] S3 = 3'b011;
localparam [2:0] S4 = 3'b100;
localparam [2:0] S5 = 3'b101;
reg [2:0] Current_State;
reg [2:0] Next_State;
always@(posedge Clk or negedge Rst_n)begin
if(!Rst_n)begin
Current_State <= S0;
end
e