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
相关推荐
cici1587423 分钟前
基于FPGA的任意四位除法器设计与实现
fpga开发
guygg885 小时前
基于STM8S的FreeModbus协议移植指南
fpga开发
kanhao1005 小时前
从 Vectorless 到 SAIF 再到板级实测:HLS Kernel 功耗估计全流程实战
嵌入式硬件·fpga开发
yongui478347 小时前
基于FPGA的频率计与串口通信系统设计与实现
fpga开发
FPGA_ADDA7 小时前
国产复旦微FPGA+DSP 6U VPX处理板
fpga开发·全国产·复旦微690t·ft6678dsp·6u vpx板卡·jfm7vx690t36
fengfuyao9859 小时前
基于FPGA的简易电子密码锁设计(Verilog实现)
fpga开发
hoiii18711 小时前
104键PS2接口标准键盘C语言驱动程序
c语言·fpga开发·计算机外设
jllllyuz20 小时前
基于FPGA的通信信号源设计
fpga开发
Saniffer_SH1 天前
【每日一题】一台可编程的PCIe 6.0主机 + 一套自动化CTS验证平台 + 一个轻量级链路分析系统
运维·服务器·测试工具·fpga开发·自动化·计算机外设·硬件架构
952361 天前
计算机组成原理 - 主存储器
单片机·嵌入式硬件·学习·fpga开发