%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)