数字二倍频电路

常用数字二倍频电路介绍

在这里插入图片描述
由一个同或门与一个时钟上升沿有效的D触发器(连接成翻转器)组成,其中clk_in为外部输入时钟周期信号,clk_out为二倍频输出信号。下图为其输入输出波形。
在这里插入图片描述
在t0时刻:(稳定状态)
clk_in为低电平,D触发器为复位状态(即Q=0、Q#=1),这样Q#与clk_in经"同或门"后为低电平(异出为0),此时为初始稳定状态,如下图所示:

当t1时刻到来时:(并非稳定状态)
clk_in时钟变为高电平,此时D触发器尚未翻转,“同或门"另一输入引脚亦仍为高电平,则"同或门"输出转变为高电平(同出为"1”),同时此输出作为有效时钟上升沿触发D触发器翻转,则有Q=1、Q#=0,如下图所示:

当t2时刻到来:(稳定状态)

之后每次输入信号变化一次,则重复一次稳定状态、不稳定状态、稳定状态的变化。从D触发器翻转输出至"同或门"输出变化那一段时间,称为延时(Tdelay),在这个电路里也就是高电平宽度。在74系列逻辑器件中,这个延时值大约为几十个纳秒(ns),在可编程逻辑(FPGA/CPLD中)则只有几个纳秒,可以通过在这个延时链路上插入多个缓冲器来增加高电平的宽度(也就是占空比)。

Verilog HDL语言描述电路

  1. 常用方法

    module frequency_multiplier
    (
    	input clk,
    	 output out_clk
    );
    reg         temp_mul;
    assign      out_clk = ~(clk ^ ~temp_mul);
    
    always @(posedge out_clk)
    begin
    	temp_mul <= ~temp_mul ;
    end
    endmodule
    

    modelsim 后仿真结果(必须用后仿真
    在这里插入图片描述

  2. 在脉冲频率不足100k(步进电机控制频率<<500k)的情况下还可以采用高频检测输入脉冲信号的上升沿和下降沿加延时5us实现倍频功能

    module frequency_multiplier
    (
    	input          clk,
    	 input          rst_n,
    	 input          clk_in,
    	output         clk_out,
    	output wire pos_edge,
    	output wire neg_edge,
    	 output wire both_edge,
    	output         ref_clk
    );
    assign  ref_clk = clk_in;
    
    reg     clkin_r0, clkin_r1;                  // 状态寄存器
    always @ (posedge clk or negedge rst_n)begin
    	 if (!rst_n) begin
    			clkin_r0 <= 1'b0;
       		 	clkin_r1 <= 1'b0;
    	end
    	 else begin
        		clkin_r0 <= clk_in;
        		clkin_r1 <= clkin_r0;
    	end
    end
    wire    clkin_sign;
    //wire    pos_edge,neg_edge,both_edge;
    
    assign pos_edge  = (~clkin_r1)& ( clkin_r0);
    assign neg_edge  =   clkin_r1 & (~clkin_r0);   
    assign both_edge =   clkin_r1 ^   clkin_r0;  // 双边沿检测,或pos_edge|neg_edge
    assign clkin_sign = ~both_edge;
    
    reg [31:0] counter;
    always @(posedge clk or negedge clkin_sign)
    begin
    	if (!clkin_sign)
       		 counter  <= 0;
    	else if (counter >= 32'd1000)            //检测到沿后延时5us
     	   counter     <= 32'd1000;
    	 else
      	  counter  <= counter + 1;
    end
    
    assign clk_out =(counter == 32'd1000)? 0 : 1;
    
    endmodule
    
<think>好的,我现在需要帮助用户了解数字电路中实现二倍的方法和原理。根据用户提供的三个引用内容,我需要先理解这些资料中的信息,然后整理出合适的回答。 首先,用户提到的引用[1]中提到了利用D触发器的输入输出延迟来实现二倍电路。这里的关键点是触发器的延迟特性,即输入信号变化到输出响应之间有时间差。可能的方法是将触发器的输出反馈到输入端,利用延迟产生相位差,再通过异或门来生成两倍率的信号。 引用[2]提供了一个Verilog代码示例,使用组合逻辑的延时来生成延迟后的时钟信号clk_gate_delay,然后与原时钟clk异或得到二倍信号dpll_clk。这说明通过人为引入延迟,与原时钟信号进行异或操作,可以在每个原时钟的上升沿和下降沿都产生脉冲,从而将率加倍。 引用[3]则提到FPGA实现倍时,由于内部延迟较短,可能需要额外的处理来观察脉冲,比如通过分来显示结果。这说明实际硬件中延迟可能非常小,需要设计技巧来确保生成的脉冲足够宽,或者通过其他方式间接验证倍效果。 接下来,我需要将这些信息整合成用户能够理解的步骤和原理。可能需要分点说明不同的方法,如触发器延迟法和组合逻辑延时法,并解释它们的工作原理,同时结合引用中的例子进行说明。 还需要注意用户要求使用中文回答,行内公式用$...$,独立公式用$$...$$,并且生成相关问题。需要确保LaTeX语法正确,比如积分符号的正确使用,但用户的问题是关于数字电路的,可能涉及的数学公式较少,但如果有的话需要正确应用格式。 此外,用户的问题是关于二倍的实现方法和原理,因此需要详细解释每种方法的步骤,并结合引用中的例子。比如,在触发器方法中,D触发器的输出延迟如何被利用,异或门如何组合信号;在组合逻辑方法中,如何通过延时路径和异或操作生成倍信号。 最后,生成的相关问题需要围绕用户的问题展开,可能涉及不同方法的优缺点、应用场景、性能分析或具体实现中的挑战等。需要确保问题有针对性,能够引导用户进一步深入学习。 现在需要检查是否有遗漏的信息,比如引用[3]中提到的FPGA实现中脉冲宽度过短的问题,可能需要说明如何通过分或其他方法处理。同时,用户提供的引用中有提到代码示例和仿真结果,这些可以作为实际案例来增强回答的可信度。 总结起来,回答的结构应该是先介绍二倍的基本概念,然后分点讲解不同的实现方法,每个方法的原理和步骤,并引用相应的资料作为支持。最后生成相关问题,帮助用户进一步探索该主题。</think>数字电路中实现二倍的核心原理是通过信号延迟和逻辑运算(如异或)产生与原时钟边沿对齐的脉冲。以下是两种典型方法及其原理: --- ### 一、D触发器延迟法 1. **电路结构** 使用D触发器将输入时钟信号$clk$分两路传输: - 直接路径:原时钟信号$clk$ - 延迟路径:$clk$经过D触发器后的输出$clk\_delay$,因触发器内部电路延迟,$clk\_delay$比$clk$滞后一个微小时间$\Delta t$[^1]。 2. **异或操作** 将两路信号通过异或门(XOR)处理: $$dpll\_clk = clk \oplus clk\_delay$$ 原时钟的上升沿和下降沿均会触发异或门输出高电平脉冲,从而将率翻倍。 3. **波形示例** - 原时钟$clk$周期为$T$,延迟$\Delta t$后,异或输出在每个$T/2$处产生脉冲,总周期为$T/2$。 --- ### 二、组合逻辑延时法 1. **人为引入延迟** 通过组合逻辑门(如非门链)对$clk$进行延时,生成滞后信号$clk\_gate\_delay$。例如,Verilog代码中通过调整门级延迟模拟延时效果[^2]。 2. **异或生成倍** 类似触发器法,将原时钟与延迟时钟异或: ```verilog assign dpll_clk = clk ^ clk_gate_delay; // 生成二倍信号 ``` 每次$clk$跳变时,异或门输出短暂脉冲,总率为原时钟两倍[^2]。 3. **FPGA实现注意** - FPGA内部延迟极短(纳秒级),可能导致脉冲宽度过窄。可通过分电路间接观察效果(如引用[3]中通过Q信号分显示)[^3]。 --- ### 三、性能与限制 1. **精度依赖延迟** 脉冲宽度由延迟时间$\Delta t$决定,需精确控制以避免信号重叠或过窄。 2. **适用场景** 常用于低时钟倍或对占空比要求不高的场景,如传感器信号处理[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值