verilog中输入序列不连续的序列检测

编写一个序列检测模块,输入信号端口为data,表示数据有效的指示信号端口为data_valid。当data_valid信号为高时,表示此刻的输入信号data有效,参与序列检测;当data_valid为低时,data无效,抛弃该时刻的输入。当输入序列的有效信号满足0110时,拉高序列匹配信号match。

模块的接口信号图如下:

代码如下:

(CSDN代码块不支持Verilog,代码复制到notepad++编辑器中,语言选择Verilog,看得更清楚)

cpp 复制代码
`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	input data_valid,
	output reg match
	);
    reg [3:0] data_r;
    
    always@(posedge clk or negedge rst_n) begin
        if(~rst_n)
            data_r <= 4'b0;
        else
            data_r <= data_valid? {data_r[2:0], data}: data_r;
    end
    
    always@(posedge clk or negedge rst_n) begin
        if(~rst_n)
            match <= 0;
        else
            match <= data_r[2:0]==3'b011 && data==1'b0 && data_valid;
    end
  
//  always@(posedge clk or negedge rst_n) begin
//     if(~rst_n)
//         match <= 0;
//     else
//         match <= data_r==4'b0110;
//  end
    
endmodule
相关推荐
第二层皮-合肥1 天前
50天学习FPGA第32天-添加HDL属性调试
学习·fpga开发
minglie11 天前
MAC,PHY,变压器,RJ45
fpga开发
tiantianuser1 天前
RDMA设计62:RoCE v2 原语及单/双边语义功能测试2
功能测试·fpga开发·rdma·高速传输·cmac·roce v2
unicrom_深圳市由你创科技1 天前
LabVIEW和C#在工业控制中的应用差异是什么?
fpga开发·c#·labview
senijusene1 天前
IMX6ULL 时钟系统配置与定时器 (EPIT/GPT)
stm32·单片机·fpga开发
乌恩大侠1 天前
【WNC】R1220 参数
fpga开发
mcupro1 天前
TQTT_KU5P开发板教程---在Windows下XCKU5P+AD9361测试
嵌入式硬件·fpga开发·模块测试
GateWorld2 天前
FPGA内部模块详解之九 FPGA内部模块的协同作战与设计流程精要
fpga开发·fpga设计流程
嵌入式-老费2 天前
vivado hls的应用(hls需要verilog基础)
fpga开发
FPGA小迷弟2 天前
FPGA工程师面试题汇总(九)
网络协议·tcp/ip·fpga开发·面试·verilog·fpga