【模拟集成电路】环路滤波器(LPF)设计

前言

  本文主要内容是对环路滤波器 模块设计设计进行阐述,LPF在电荷泵频率综合器中,主要作用是进行滤波,消除毛刺,因此一个简单的RC就可以起到很好的效果。本文主要目的是为了补充【模拟集成电路】频率综合器(Frequency Synthesizer,FS)设计 中的设计内容。更高性能的LPF,如果有必要,后续更新(私信我)

环路滤波器设计

(一个错误的例子)

  如果不考虑环路稳定性,只考虑所谓的纹波或者取平均。一个LPF结构如下,但实际上这个结构是很难稳定的(详细的有时间再补充),如果会PLL的一眼就能看出来普通的RC实际上并不可取(至少这个不太行)
  在电荷泵锁相环频率综合器中,环路滤波器的作用是将电荷泵输出的脉冲电流信号转换为较为平稳的压控振荡器的控制电压信号。整个过程中环路滤波器既起到信号转换作用又起到滤波作用。由于锁相环是一个典型的闭环负反馈系统,系统稳定性以及动态特性尤为重要,而环路滤波器的参数设计恰恰决定了整个锁相环的稳定性和动态特性。为了保证锁相环能够迅速锁定,就要求当电荷泵输出电流为零时,压控振荡器的输出频率仍有可能发生改变,那么环路滤波器在直流分量时就要有无穷大的增益。一个电阻串联一个电容可以在直流频率分量是提供一个无穷大的阻抗,电流到电压的增益即为无穷大,同时其提供了一个零点有助于改善整个环路的相位裕度,从而改善稳定性。压控振荡器的电压控制线越稳定,则压控振荡器的相位噪声越好,输出信号的频谱就越纯净。本文中环路滤波器的实现电路以及仿真结果分别如图4-5-1、4-5-2所示。
在这里插入图片描述

仿真结果

在这里插入图片描述

分割线


各部分链接链接:

  频率综合器(Frequency Synthesizer,FS)设计    链接:【模拟集成电路】频率综合器(Frequency Synthesizer,FS)设计

  鉴频鉴相器(PFD)设计    链接:【模拟集成电路】鉴频鉴相器设计(Phase Frequency Detector,PFD)

   电荷泵(CP)设计       链接:【模拟集成电路】电荷泵(CP)设计

  压控振荡器(VCO)设计   链接:【模拟集成电路】宽摆幅压控振荡器(VCO)设计

  分频器(DIV_TSPC)设计   链接:【模拟集成电路】分频器(DIV_TSPC)设计

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
以下是一个基于小波多尺度分析预测带宽模型的Verilog代码示例,用于实现EPON网络中的动态带宽分配模块: ``` module epon_dba ( input clk, //时钟信号 input rst, //重置信号 input [7:0] request, //用户请求的带宽 output [7:0] grant //分配给用户的带宽 ); reg [7:0] bandwidth; //当前可用的带宽 reg [7:0] request_reg; //存储用户请求的寄存 //小波多尺度分析预测带宽模型参数 reg [7:0] alpha = 32; //衰减系数 reg [7:0] beta = 128; //增益系数 reg [7:0] gamma = 255; //最大带宽 reg [7:0] delta = 32; //最小带宽 reg [7:0] predict; //预测的带宽 reg [7:0] error; //预测误差 //小波多尺度分析模块 wire [7:0] request_d1; wire [7:0] request_d2; wavelet_multiscale_predictor wavelet_predictor( .signal(request_reg), .d1(request_d1), .d2(request_d2) ); always @(posedge clk or posedge rst) begin if (rst) begin bandwidth <= gamma; //重置带宽为最大值 request_reg <= 0; //重置请求寄存为0 predict <= 0; //重置预测值为0 error <= 0; //重置预测误差为0 end else begin //更新带宽 if (request_reg > grant) begin bandwidth <= bandwidth + (request_reg - grant); end else if (request_reg < grant) begin bandwidth <= bandwidth - (grant - request_reg); end //更新请求寄存 request_reg <= request; //小波多尺度分析预测带宽模型 error <= request_reg - predict; predict <= predict + alpha * error; bandwidth <= min(max(bandwidth + beta * error, delta), gamma); end end //计算分配给用户的带宽 assign grant = min(request_reg, bandwidth); endmodule //小波多尺度分析模块 module wavelet_multiscale_predictor ( input [7:0] signal, //输入信号 output [7:0] d1, //第一层小波分解系数 output [7:0] d2 //第二层小波分解系数 ); wire [7:0] cA1; wire [7:0] cD1; wire [7:0] cA2; wire [7:0] cD2; wavelet_transformer wavelet_transformer( .signal(signal), .cA1(cA1), .cD1(cD1), .cA2(cA2), .cD2(cD2) ); //计算第一层小波分解系数 assign d1 = cA1 - cD1; //计算第二层小波分解系数 assign d2 = cA2 - cD2; endmodule //小波变换模块 module wavelet_transformer ( input [7:0] signal, //输入信号 output [7:0] cA1, //第一层小波重构系数 output [7:0] cD1, //第一层小波分解系数 output [7:0] cA2, //第二层小波重构系数 output [7:0] cD2 //第二层小波分解系数 ); //第一层小波变换 wire [7:0] lpf1 [3:0]; wire [7:0] hpf1 [3:0]; wire [7:0] lpf2 [3:0]; wire [7:0] hpf2 [3:0]; wavelet_filter_bank wavelet_filter_bank1( .signal(signal), .lpf(lpf1), .hpf(hpf1) ); wavelet_filter_bank wavelet_filter_bank2( .signal(hpf1[2]), .lpf(lpf2), .hpf(hpf2) ); assign cA1 = (lpf1[3] + lpf1[2]) / 2; assign cD1 = (hpf1[3] + hpf1[2]) / 2; //第二层小波变换 wavelet_filter_bank wavelet_filter_bank3( .signal(hpf1[2]), .lpf(lpf2), .hpf(hpf2) ); assign cA2 = (lpf2[3] + lpf2[2]) / 2; assign cD2 = (hpf2[3] + hpf2[2]) / 2; endmodule //小波滤波器组模块 module wavelet_filter_bank ( input [7:0] signal, //输入信号 output [7:0] lpf [3:0], //低通滤波器输出 output [7:0] hpf [3:0] //高通滤波器输出 ); //第一级滤波器系数 parameter [7:0] h0 = 1; parameter [7:0] h1 = -1; parameter [7:0] l0 = 1; parameter [7:0] l1 = 1; //第一级滤波器 wire [7:0] conv0; wire [7:0] conv1; assign conv0 = signal * h0; assign conv1 = signal * h1; assign lpf[0] = conv0 + conv1; assign hpf[0] = conv0 - conv1; //第二级滤波器 wire [7:0] conv2; wire [7:0] conv3; assign conv2 = lpf[0] * l0; assign conv3 = lpf[0] * l1; assign lpf[1] = conv2 + conv3; assign hpf[1] = conv2 - conv3; //第三级滤波器 wire [7:0] conv4; wire [7:0] conv5; assign conv4 = lpf[1] * l0; assign conv5 = lpf[1] * l1; assign lpf[2] = conv4 + conv5; assign hpf[2] = conv4 - conv5; //第四级滤波器 wire [7:0] conv6; wire [7:0] conv7; assign conv6 = lpf[2] * l0; assign conv7 = lpf[2] * l1; assign lpf[3] = conv6 + conv7; assign hpf[3] = conv6 - conv7; endmodule ``` 该模块包含一个时钟信号和一个重置信号,以及一个8位的请求输入端口和一个8位的分配输出端口。在时钟上升沿或重置信号激活时,该模块将更新当前可用的带宽和用户请求的寄存。然后,该模块使用小波多尺度分析预测带宽模型计算带宽预测值和预测误差,并根据预测误差调整当前可用的带宽。最后,该模块使用assign语句计算并输出分配给用户的带宽,该值为用户请求的带宽和当前可用带宽的较小值。同时,该模块使用小波多尺度分析模块对输入信号进行多层小波分解,以提

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Successful 、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值