multisim常用d触发器_常用数字电路模块:边沿检测电路

本文介绍了如何利用multisim中的多级延迟触发器构建边沿检测电路,详细阐述了延迟触发器的工作原理,并提供了上升沿和下降沿检测的代码实现及仿真结果。

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

006137766cea15f5a4e9d50a900a8f23.png

文章来自微信公众号:数字芯片设计

特别备注:作者参加HW实习生要求在5-10分钟写出边沿检测代码

从多级延迟触发器到边沿检测

  本文记录一下关于延迟触发器链与它的常用用法(即边沿检测。多级延迟的触发器应该是比较常用的,当我们需要对信号信号进行延时,这个时候我们就用到了延迟触发器链。下面就来记录一下吧。
一、多级延迟触发器(或延迟触发器链)
(1)多级延迟触发器电路
  多级延迟触发器,顾明思议就是多个触发器串在一起,对信号进行打拍,一个触发器就延时了一拍,也就是延迟了一个时钟周期。
多级触发器的代码如下所示:

module DFF_N #(parameter N=3)(
  input clk,
  input reset,
  input [N-1:0] D,
  output reg [N-1:0] Q
);
reg [N-1:0]d0;
reg [N-1:0]d1;
always@(posedge clk or negedge reset)
  if(!reset)begin
    d0 <= 0; //异步清 0,低电平有效
    d1 <= 0; //异步清 0,低电平有效
    Q  <= 0; //异步清 0,低电平有效
  end
  else begin
    d0 <= D;
    d1 <= d0;
    Q  <= d1;
  end

endmodule


d0 是 D 的延迟一级采样或者称为 D 的延迟一拍信号,同样 d1 是 D 的延迟两拍信号,而 Q 则是 延迟三拍信号。一方面可以通过修改N来改变对多少位的信号的进行延时;另一方面,可以用通过修改部分代码,添加或者减少延迟计数。
代码综合得到的电路(综合之后)如下所示:

0b76aeadc5a73ccd2965dd757cd6d4f1.png


电路中显示出三级延时,可以延时三个时钟节拍(也就是三个时钟周期),需要说明的是,上述每一级触发器都包含了3个触发器(对三位数据总线进行延时)。(2)多级延迟触发器的主要用法①简单的延时
  多级延迟触发器最原始的作用单纯的对 D 信号做延迟操作,这里就不进行详述。②降低亚稳态往后级传输的概率
  如果 D 信号相对 clk 属于不稳定信号,则 Q 和 d1 输出相对 clk 属 于稳定信号,这样就有效地降低了亚稳态往后级传输的概率,多级延时触发器链有时也称为同步器。
  可以通过 d1 和 Q 信号获取 D 信号的上升沿或者下降沿,具体介绍如下第二大点所示。二、边沿检测电路
  边沿检测,顾名思义,就是检查信号的边沿,当信号的上升沿或者下降沿到来时,获取一个脉冲信号,时序图如下所示:

de66a9fcaffb69a33f1f1a27f5e4f5b3.png


上图的检测信号同时输出上升沿检测和下降沿检测。那么这个波形怎么来的呢,我们来看看下面几组波形:

41fae6f8c8bfb3286f356d12b46941df.png


可以发现:原始信号与延迟一拍的信号 d0 的反向信号相与,就是上升沿脉冲
  而原始信号取反,然后与延迟一拍信号d0就是下降沿脉冲
如果担心采样不稳定,可以利用延迟两拍的 d1 信号进行相 与。如果担心不定态,还可以将脉冲信号进行锁存。
代码如下所示:

module Shift_Pluse(
	input Clk,
	input Rstn,
	input Shift_In,
	
	output P_Pluse,
        output N_Pluse
	
	);

reg Shift_In_1;
reg Shift_In_2;

always@(posedge Clk or negedge Rstn)
begin
	if(!Rstn)begin
		 Shift_In_1 <= 1'b0;
		 Shift_In_2 <= 1'b0;
	end
	else begin
		Shift_In_1 <= Shift_In;
		Shift_In_2 <= Shift_In_1;
	end
	
end

assign P_Pluse = (!Shift_In_2)&Shift_In_1;
assign N_Pluse = (!Shift_In_1)&Shift_In_2;


endmodule

测试代码:

module Shift_Pluse_tb;
	reg Clk;
	reg Rstn;
	reg Shift_In;
	
	wire P_Pluse;
    wire N_Pluse;
	
	Shift_Pluse u_Shift_Pluse(
			.Clk(Clk),
			.Rstn(Rstn),
			.Shift_In(Shift_In),
			
			.P_Pluse(P_Pluse),
			.N_Pluse(N_Pluse)
	);
	
	initial Clk = 1;
	
	always #5 Clk = ~Clk;
	
	initial
		begin
			Shift_In = 1'b0;
			Rstn = 1'b1;
			#200;
			Rstn = 1'b0;
			#100;
			Rstn = 1'b1;
			
			#300;
			Shift_In = 1'b1;
			#300;
			Shift_In = 1'b0;
			#300;
			
			$finish();
		end
	
endmodule

(反入与延上升沿:取反输入信号之后,再与延迟一拍的输出相与就得到了上升沿) 综合得到的电路如下所示:

f3a926e4a0936e5f451abe31c27ed874.png


这个电路把代码中的Q触发器优化掉了。两个输出信号D_rising_edge 、D_falling_edge分别输出上升沿检测信号脉冲和下降沿检测信号脉冲。

仿真结果

7b15b063e6da12a81da5aa743cdc81cd.png

作者:雨人 和 IC_learner

作者博客链接:从多级延迟触发器到边沿检测

2dd4e023689d4d3ad51aae8bfeada249.png
<think>嗯,用户想了解Multisim中数字延迟模块的使用教程或功能介绍。首先,我需要回忆一下Multisim的基本功能和常见的数字电路模块。根据用户提供的引用内容,特别是引用[2]提到的边沿检测电路和D触发器的应用,这可能与延迟模块相关。另外,引用[3]中提到的74LS48芯片和数码管驱动,可能涉及到信号处理中的延迟需求。 用户提到的数字延迟模块可能指的是在数字电路中用于信号延时的组件,比如D触发器、移位寄存器或者专用的延迟芯片。在Multisim中,常用的延迟元件包括D触发器(如74LS74)和移位寄存器(如74LS164)。这些元件可以通过级联实现多级延迟,如引用[2]中描述的d0、d1、Q信号延迟不同拍数的情况。 接下来,我需要确定如何构建一个基本的数字延迟模块。通常,使用D触发器,每个触发器可以提供一位的延迟,通过级联多个触发器可以实现多级延迟。例如,使用三个D触发器级联,每个时钟周期信号传递到下一级,从而实现三拍延迟。这可能与边沿检测电路有关,用于检测信号的变化沿。 此外,引用[1]中提到的时钟模块中的分频器和计数器,可能也与延迟有关,因为分频器可以调整时钟频率,从而影响信号延迟的时间长度。比如,分频后的时钟信号驱动计数器,计数器的输出可以作为延迟后的信号。 用户可能需要具体的步骤来在Multisim中添加和配置这些元件。例如,如何从元件库中找到D触发器,如何连接时钟信号和数据输入,如何设置参数等。同时,仿真时的步骤也很重要,比如使用信号发生器输入测试信号,用逻辑分析仪观察输入输出波形,验证延迟效果。 还需要考虑应用场景,比如在数字钟或秒表中,延迟模块可能用于去抖、同步信号或时序控制。例如,按键模块可能需要去抖电路,使用延迟来消除机械开关的抖动。引用[3]中的数码管驱动可能需要延迟来确保信号稳定。 可能的问题包括如何确定延迟的级数,如何调整延迟时间,以及如何与其他模块集成。此外,元件的选型(如选择不同的触发器型号)和参数设置(如时钟频率)也是关键点。 总结来说,回答需要涵盖数字延迟模块的基本原理(如使用D触发器级联)、Multisim中的具体操作步骤(元件选择、连接、参数设置)、仿真方法以及应用实例。同时,结合用户提供的引用内容,引用相关部分来支持回答,比如D触发器的应用和边沿检测电路的设计。</think>在Multisim中实现数字延迟模块通常涉及使用D触发器、移位寄存器或自定义逻辑电路。以下是详细说明: --- ### 一、数字延迟模块的核心原理 1. **基本组件**: - **D触发器**(如$74LS74$)是最常用的延迟单元,每个D触发器可提供**1个时钟周期延迟**。级联多个D触发器可实现多级延迟,例如: $$Q_n = D \cdot \text{CLK}^{n} \quad (n为延迟级数)$$ 引用[2]中提到的边沿检测电路正是基于这一原理[^2]。 - **移位寄存器**(如$74LS164$)可实现多比特并行延迟,适合批量信号同步。 2. **时钟与延迟时间**: 延迟总时间由时钟频率和级数共同决定,计算公式为: $$T_{\text{delay}} = N \cdot T_{\text{clk}} \quad (N为触发器级数)$$ 例如,若时钟频率为$1\text{kHz}$(周期$T_{\text{clk}}=1\text{ms}$),则3级触发器将产生$3\text{ms}$延迟。 --- ### 二、Multisim操作步骤 #### 1. **搭建基础延迟电路** - **步骤1**:从元件库中选择**D触发器**(搜索“74LS74”或“D Flip-Flop”)。 - **步骤2**:连接时钟信号(CLK)和数据输入端(D),输出端(Q)级联至下一级D触发器输入。 - **步骤3**:设置时钟频率(右键单击信号源→属性→Frequency)。 ```plaintext [示例电路连接] 信号源 → D触发器1(D) → D触发器2(D) → D触发器3(D) CLK → 所有触发器的时钟端 ``` #### 2. **仿真与验证** - **信号发生器**:输入方波或脉冲信号测试延迟效果。 - **逻辑分析仪**:观察输入信号与各级输出的时序关系,确认延迟级数是否符合预期(如图1所示)。 ![延迟波形示例](https://via.placeholder.com/300x100?text=Input+vs+Delayed+Output) --- ### 三、应用场景 1. **按键消抖**:通过2~3级延迟滤除机械开关抖动信号,引用[3]中数码管驱动需稳定信号输入[^3]。 2. **时序同步**:在数字钟模块中,确保计数器与显示模块的同步,如引用[1]中分频器与计数器的配合[^1]。 3. **边沿检测**:结合逻辑门(如XOR)检测信号上升沿/下降沿,如引用[2]中延迟拍数对比实现边沿触发。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值