锁相环技术原理及FPGA实现4.3

本文档详细介绍了Verilog HDL实现一阶锁相环的设计过程,包括滤波器量化位数的影响、环路增益计算、FPGA工程创建步骤以及Verilog代码风格规范。通过分析,确定了NCO相位累加字位宽为35位,以降低控制灵敏度。此外,文件接口声明、变量命名方式、模块对齐和赋值方式的规范也得到了讨论。
摘要由CSDN通过智能技术生成
%FilterCoeQuant.m 程序清单
%调用 FilterCompare 函数生成滤波器系数
h_pm=FilterCompare;
%将生成的滤波器系数数据写入 FPGA 所需的 txt 文件中
fid=fopen('D:\PllPrograms\Chapter_4\E4_1\lpf.txt','w');
fprintf(fid,'%12.12f\r\n',h_pm);
fclose(fid);
%量化滤波系数
qm=8; %量化位宽为 8 比特
q8=round(h_pm/max(abs(h_pm))*(2^(qm-1)-1))
%求系数绝对值之和
s_q8=sum(abs(q8))
%将十进制转换成二进制
q8_bin=dec2bin(q8+2^qm*(q8<0))
qm=10; %量化位宽为 10 比特
q10=round(h_pm/max(abs(h_pm))*(2^(qm-1)-1));
qm=4; %量化位宽为 4 比特
q4=round(h_pm/max(abs(h_pm))*(2^(qm-1)-1));
%获取量化前后滤波器的幅频响应数据
q_pm=20*log10(abs(fft(h_pm,1024))); q_pm=q_pm-max(q_pm);
q_pm8=20*log10(abs(fft(q8,1024))); q_pm8=q_pm8-max(q_pm8);
q_pm10=20*log10(abs(fft(q10,1024))); q_pm10=q_pm10-max(q_pm10);
q_pm4=20*log10(abs(fft(q4,1024))); q_pm4=q_pm4-max(q_pm4);
%设置幅频响应的横坐标单位为 MHz
x_f=[0:(8000/length(q_pm)):8000/2];
%只显示正频率部分的幅频响应
m_pm=q_pm(1:length(x_f));
m_pm8=q_pm8(1:length(x_f)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BinaryStarXin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值