西南交大EDA实验——Sequence Detector
一、实验内容及要求
1. 目的

设计一种能够根据配置模式检测四个一致性数据并输出标志的序列检测器。
·支持增量模式:可以检测到四个一致性递增的数据
·支持减少模式:可以检测到四个一致性递减的数据
·支持稳定模式:可以检测到四个一致性相同的数据
2. 说明


·文件名:SEQUENCE.v
·模块名:SEQ_DETECTOR
·I/O端口:
RST_B:位宽为1bit的输入。系统异步复位,低电平有效。
SYSCLK:位宽为1bit的输入。系统时钟
IN_VALID:位宽为1bit的输入。高电平有效。输入信号MODE和DATA_IN只有在IN_VALID = 1的时候有效。当IN_VALID = 0时,MODE和DATA_IN应被忽略,并且状态应与IN_VALID = 1时相同。
MODE:位宽为2bit的输入。检测模式,这个信号决定了检测模式。00:增量检测模式,其中四个一致性增长数据(如1,2,3,4或15,0,1,2)可以置OUT_VALID为逻辑1。01:递减检测模式,其中4个一致性递减数据(如5,4,3,2或0,15,14,13)可以置OUT_VALID为逻辑1。10:稳定检测模式,其中4个相同的数据(如0,0,0,0)可以置OUT_VALID为逻辑1。11:与IN_VALID=1作用相同。
DATA_IN:位宽为4bit的输入。输入数据,该信号只有在IN_VALID = 1并且MODE != 2’b11时有效。
OUT_VALID:位宽为1bit的输出。输出有效位,高电平有效。当根据检测模式接收到四个一致性数据是,该信号才生效。
DATA_OUT:位宽为4bit的输出。当OUT_VALID生效时,DATA_OUT应等于DATA_IN,其他情况都等于0。
3. 要求

4. 波形


二、内容讲解及代码编写
首先,先把顶层模块的输入和输出写上。
module SEQ_DETECTOR
(
input wire SYSCLK ,
input wire RST_B ,
input wire IN_VALID ,
input wire [1:0] MODE ,
input wire [3:0] DATA_IN ,
output reg OUT_VALID ,
output reg [3:0] DATA_OUT
);
endmodule
我们需要用到Mealy型状态机,先将需要的状态想好。初始状态S0,以增量模式(MODE=2’b00)为例,假设检测到第一个数0进入状态INCREMEN_STATE1,下一个检测到1进入状态INCREMENT_STATE2,再检测到2进入状态INCREMENT_STATE3,此时已经检测到3个增量,这时如果再检测到3,就要输出OUT_VALID = 1和DATA_OUT,同时保持状态在INCREMENT_STATE3,因为1,2,3又是三个连续递增的序列,下一个数据如果是4,也可以构成一个递增的序列1,2,3,4。类似,我们还需要减少模式的状态DECREMENT_STATE1 、DECREMENT_STATE2 、DECREMENT_STATE3和稳定模式的状态EQUAL_STATE1、EQUAL_STATE2、 EQUAL_STATE3。因此我们共需要10个状态,对这10个状态进行编码:
parameter S0 = 4'd0 ,
INCREMEN_STATE1 = 4'd1 ,
INCREMEN_STATE2 = 4'd2 ,
INCREMEN_STATE3 = 4'd3 ,
DECREMENT_STATE1 = 4'd4 ,
DECREMENT_STATE2 = 4'd5 ,
DECREMENT_STATE3 = 4'd6 ,
EQUAL_STATE1 = 4'd7 ,
EQUAL_STATE2 = 4'd8 ,
EQUAL_STATE3 = 4'd9 ;
对状态进行编码后,我们就要考虑状态的转换了,状态转换就需要判断输入的序列是递增、递减还是相等的。如何判断呢?因为使用时序逻辑赋值,会使数据慢一个周期,这样可以比较输入的数据了。
reg [3:0] data_in_delay;
always@(posedge SYSCLK, negedge RST_B)
begin
if(!RST_B)
data_in_delay <= 4'd0;
else if(IN_V

本文介绍了西南交大EDA实验中的SequenceDetector设计,该设计能检测四种一致性数据序列:增量、递减和稳定。通过Mealy型状态机实现,根据MODE输入切换不同检测模式,并在满足条件时输出标志信号OUT_VALID和DATA_OUT。文章详细阐述了状态编码、状态转换逻辑以及输出信号的处理方法,并提供了testbench的编写思路。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



