ThreeYear_s 2023-07-25 11:10 采纳率: 61.5%
浏览 12
已结题

FPGA DPLL 位同步

超前-滞后型DPLL提取位同步时钟

其中环路滤波器的描述是下面描述,请问Verilog怎么实现?

随机噪声可能会引起DPD的相位抖动,所以通过一个Mod为8的计数器来实现滤波功能,当超前信号为1时开始加计数,逐次加到15,进位变为8,此时环路滤波器输出一个进位信号,当滞后信号为1时开始减计数,逐次减到0,借位变为8,此时环路滤波器输出一个借位信号。因为噪声抖动是无序的,除非噪声在同一方向出现8次,滤波器才会输出误动作。Mod越小,锁相速度越快,精度越低。(为在仿真的时候效果明显,这里我没有加入环路滤波器,也就是Mod为0,锁相速度最快,损失了锁相精度)

  • 写回答

1条回答 默认 最新

  • 黄以礼 2023-07-28 19:05
    关注

    根据您提供的环路滤波器的描述,可以使用Verilog实现一个超前-滞后型DPLL位同步时钟提取模块。以下是一个基本的实现示例:

    module dpll_bit_sync (  
      input clk_in,      // 输入时钟  
      input reset,       // 复位信号  
      input [7:0] data_in,  // 输入数据  
      output reg [7:0] data_out, // 输出数据  
      output reg clk_out    // 输出时钟  
    );  
       reg [3:0] phase_detector;  // 位相位检测器  
    reg [3:0] filter_counter;  // 环路滤波器计数器  
       always @(posedge clk_in) begin  
      if (reset) begin  
        phase_detector <= 4'b0;  
        filter_counter <= 4'b0;  
        data_out <= 8'b0;  
        clk_out <= 1'b0;  
      end else begin  
        // 位相位检测器  
        if (data_in[0] && !phase_detector) begin  
          phase_detector <= 4'b1;  
        end else if (!data_in[0] && phase_detector) begin  
          phase_detector <= 4'b0;  
        end  
               // 环路滤波器  
        if (phase_detector && !filter_counter[3]) begin  
          filter_counter <= filter_counter + 4'b1;  
          if (filter_counter == 4'b1111) begin  
            clk_out <= ~clk_out;  
            filter_counter <= 4'b0;  
          end  
        end else if (!phase_detector && filter_counter[3]) begin  
          filter_counter <= filter_counter - 4'b1;  
          if (filter_counter == 4'b0111) begin  
            clk_out <= ~clk_out;  
            filter_counter <= 4'b0;  
          end  
        end  
               // 输出数据  
        if (phase_detector) begin  
          data_out <= {data_out[6:0], data_in};  
        end else begin  
          data_out <= {data_in, data_out[7:1]};  
        end  
      end  
    end  
       endmodule
    

    在这个示例中,超前-滞后型DPLL位同步时钟提取模块包括一个位相位检测器和一个环路滤波器。位相位检测器用于检测输入数据的相位,当检测到输入数据变化时,改变相位检测器的状态。环路滤波器使用一个计数器来滤波输入信号,当相位检测器检测到超前信号时,计数器加计数,当相位检测器检测到滞后信号时,计数器减计数。当计数器的值达到一定值时,改变输出时钟的状态。输出数据根据相位检测器的状态进行调整,当检测到超前信号时,输出数据的最后一位为输入数据的最高位,否则输出数据的最后一位为输入数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月13日
  • 已采纳回答 9月5日
  • 创建了问题 7月25日