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
相关推荐
怪小庄吖8 小时前
翻译:How do I reset my FPGA?
经验分享·嵌入式硬件·fpga开发·硬件架构·硬件工程·信息与通信·信号处理
海涛高软1 天前
FPGA同步复位和异步复位
fpga开发
FakeOccupational1 天前
fpga系列 HDL:verilog 常见错误与注意事项 quartus13 bug 初始失效 reg *** = 1;
fpga开发·bug
zxfeng~2 天前
AG32 FPGA 的 Block RAM 资源:M9K 使用
fpga开发·ag32
whik11942 天前
FPGA 开发工作需求明确:关键要点与实践方法
fpga开发
whik11942 天前
FPGA开发中的团队协作:构建高效协同的关键路径
fpga开发
南棱笑笑生2 天前
20250117在Ubuntu20.04.6下使用灵思FPGA的刷机工具efinity刷机
fpga开发
我爱C编程2 天前
基于FPGA的BPSK+costas环实现,包含testbench,分析不同信噪比对costas环性能影响
fpga开发·verilog·锁相环·bpsk·costas环
移知2 天前
备战春招—数字IC、FPGA笔试题(2)
fpga开发·数字ic
楠了个难3 天前
以太网实战AD采集上传上位机——FPGA学习笔记27
笔记·学习·fpga开发