序列检测器(实例代码)

使用Moore型状态机设计不重叠检测器,检测序列'1101'从右到左的出现。文章提到验证完备性的方法是通过生成随机测试向量,并分析波形以确保正确检测序列。例如,10111011检测到两次,1011011只检测到一次,101101011检测到两次,101110111010110检测到三次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

用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&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值