上升沿检测电路学习笔记

本文介绍了一个使用Verilog实现上升沿检测的模块,并提供了详细的代码实现。在testbench中,通过人为延迟0.1ns来模拟建立保持时间,确保了触发器的正确工作。内容包括rtl代码、testbench代码以及上升沿检测的原理和波形理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上升沿检测电路的原理:输入信号d,经过一拍的延迟后,产生delay信号,将dout=d&(~delay)的结果当作是有上升沿的标志,结果为1则检测到上升沿。从波形图上理解就是下图这样。

三条红线处检测到的上升沿,故输出dout是1.

我的代码如下

//rtl代码
module r_edge (
  d,
  clk,
  rstn,
  dout
  );
  
	input	d,clk, rstn;
    output dout;
  
    reg   d_delay;
    //reg     dout;
	
    assign dout=d&(~d_delay);  //描述组合逻辑

	always@(posedge clk or negedge rstn)  //描述时序逻辑
	begin
		if(~rstn)
			d_delay<=0;
		else
			d_delay <= d;
	end
	
	endmodule

在写testbench测试时,发现d触发器部分的代码,由于需要建立保持时间,我就人为的延迟了0.1ns,仿真代码如下。

//testbench代码
`timescale 1ns/100ps
module tb ();
 
    reg	clk, rstn,d;
    wire   dout;
    parameter clk_period=10;
r_edge  U_edge(
  .clk(clk),
  .rstn(rstn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值