题目:
用Moore型状态机实现序列“1101”从右到左的不重叠检测。
1、请画出状态转移图,其中状态用S1,S2,....来标识。
2、针对这个具体设计,如何衡量验证的完备性?
从右到左检测即检测的顺序为1、0、1、1,不重叠检测即1011011这种情况只检测到一次,10111011才是检测到两次。
在写代码前,一定要画出状态转换图,状态转换图画对了,代码才能写对。另外也给出了重叠检测的状态图,如下图(b)所示。
下面给出不重叠检测的实现代码:
`timescale 1ns/1ns
//检测1011序列,不重叠
module seq_detect(
input clk,
input rst_n,
input seq_in,
output reg detect_ok
);
localparam [2:0] S1=3'd0,
S2=3'd1,
S3=3'd2,
S4=3'd3,
S5=3'd4;
reg [4:0]CS,NS;
always@(posedge clk,negedge rst_n)begin
if(!rst_n)begin
CS <= 5'd0;
CS[S1] <= 1'b1;
end
else
CS&