verilog实现一个5bit序列检测器

以下是用 Verilog 实现一个 5bit 序列检测器的代码:

复制代码
module five_bit_sequence_detector(
    input clk,
    input reset,
    input [4:0] in,
    output reg detected
);

    // 定义状态参数
    localparam IDLE = 4'b0000;
    localparam STATE1 = 4'b0001;
    localparam STATE2 = 4'b0010;
    localparam STATE3 = 4'b0011;
    localparam STATE4 = 4'b0100;
    localparam DETECTED_STATE = 4'b0101;

    reg [3:0] current_state;
    reg [3:0] next_state;

    always @(posedge clk or posedge reset) begin
        if (reset) begin
            current_state <= IDLE;
            detected <= 1'b0;
        end else begin
            current_state <= next_state;
            if (current_state == DETECTED_STATE)
                detected <= 1'b1;
            else
                detected <= 1'b0;
        end
    end

    always @(*) begin
        case (current_state)
            IDLE:
                if (in == 5'b00001)
                    next_state = STATE1;
                else
                    next_state = IDLE;
            STATE1:
                if (in == 5'b00010)
                    next_state = STATE2;
                else
                    next_state = IDLE;
            STATE2:
                if (in == 5'b00100)
                    next_state = STATE3;
                else
                    next_state = IDLE;
            STATE3:
                if (in == 5'b01000)
                    next_state = STATE4;
                else
                    next_state = IDLE;
            STATE4:
                if (in == 5'b10000)
                    next_state = DETECTED_STATE;
                else
                    next_state = IDLE;
            DETECTED_STATE:
                if (in == 5'b10000)
                    next_state = DETECTED_STATE;
                else
                    next_state = IDLE;
            default:
                next_state = IDLE;
        endcase
    end

endmodule

这个序列检测器检测特定的 5bit 序列 "00001"、"00010"、"00100"、"01000"、"10000"。当输入序列与这个特定序列匹配时,输出 detected 被置为高电平。状态机从初始状态 IDLE 开始,根据输入逐步进入不同的状态,直到检测到完整序列进入 DETECTED_STATE。如果在任何状态下输入不匹配预期序列,状态机将回到 IDLE 状态重新开始检测。

相关推荐
周洲083010 小时前
STM32 GPIO 外部中断深度解析:边沿触发 / 电平触发、NVIC 优先级配置、中断嵌套实战
stm32·单片机·嵌入式硬件
LCG元10 小时前
STM32F103 CAN 总线通信实战:标准库双机通信与过滤器配置精讲
stm32·单片机·嵌入式硬件
zlinear数据采集卡11 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
Kuakewei88812 小时前
平芯微42V热拔插OVP过压保护芯片:PW1600
嵌入式硬件
ACP广源盛1392462567312 小时前
WAIC2026 国产超节点算力浪潮下@ACP#IX9104 在算力矩阵中的定位与落地场景
大数据·数据库·人工智能·嵌入式硬件·线性代数·矩阵
z203483152012 小时前
STM32单片机控制无源蜂鸣器播放《晴天》
stm32·单片机·嵌入式硬件
国科安芯14 小时前
详解ADC 规则组外部触发:CH2、CH3 与 TRGO2
运维·网络·单片机·嵌入式硬件·mcu·系统架构
ACP广源盛1392462567314 小时前
WAIC2026 国产算力浪潮@ACP#YLB3118 在算力矩阵中的存储定位与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
ACP广源盛1392462567314 小时前
WAIC2026 国产算力浪潮下@ACP#IX8024 在算力矩阵中的定位与落地场景
大数据·数据库·人工智能·嵌入式硬件·线性代数·矩阵
振南的单片机世界15 小时前
硬核菊花链:3个GPIO+无限74HC595=端口扩展“无限套娃”
arm开发·stm32·单片机·嵌入式硬件