边沿检测 Verilog

这篇博客介绍了如何使用Verilog语言实现1bit信号的边沿检测,包括上升沿和下降沿的检测。通过寄存器变量data_r存储当前状态和上一拍状态,当状态变化时产生一个时钟周期宽度的脉冲信号。文中给出了两种不同的实现方式,一种是针对上升沿检测,另一种同时检测上升沿和下降沿,分别使用'&'和'^'操作符来实现。这些代码段可以用于数字逻辑设计和FPGA/CPLD等硬件描述语言的应用中。

1.用verilog实现1bit信号边沿检测功能,输出一个周期宽度的脉冲信号

定义了一个2位的寄存器变量data_r,data_r[0]用来存储当前的状态,data_r[1]用来存储上一拍的状态

每个时钟到来的时候,向左移位,相对于当前时钟的上上拍信号舍弃掉,只保留相对于当前时钟上一拍的状态,存储在data_r的高位上,即data_r[1]表示的是上一拍的状态

2.hdlbits中的题 detect an edge;下面代码是用来检测上升沿的,比上面的代码容易理解一些;

用的是 ‘&’

module top_module (
    input clk,
    input [7:0] in,
    output [7:0] pedge
);

    reg [7:0] temp;

    always @ (posedge clk)
        begin
            temp <= in; //temp始终比in晚一个周期
            pedge <= ~temp & in; //当输出为1时检测到上升沿
            
        end

endmodule

3.hdlbits中的题,detect both edges,上升

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值