为TLV320AIC3111创建5频段均衡器是一项任务。 系数必须由微控制器根据给定频率的带宽和必要增益(衰减)计算。 系数是使用第12页(附录C)的slaa447脚本计算的。 然后使用TIBQ.exe中计算的系数检查获得的系数。 值不同。 即使是附录C中给出的示例的计算也与TIBQ.exe程序所做的计算不一致。 附件A和附件B中给出的例子的计算结果是一致的,但负系数除外,负系数的数值相差一个,我理解这是完全可以接受的。 可能是什么问题? 下面我举一个脚本的例子。
% C.1 MATLAB脚本计算[N0,N1,N2,D1,D2]
%用户定义的参数:
FS = 4.8万;%采样频率
F0 = 600;
dBgain = 10;%10 dB
Q = 1;
%intermediate参数
WO=2*PI*f0/FS;
cosW = cos (WO);
Sin W = sin (wo);
A = 10^(dBgain /40);
alpha = sinW/(2*Q*A);
%峰值均衡系数
B0 = 10^(dBgain /20)*(1 + alpha*A);
B1 = 10^(dBgain /20)*(-2*cos (WO));
B2 = 10^(dBgain /20)*(1 - alpha*A);
A0 = 1 +(字母/字母);
a1 =-2*cos(WO);
A2 = 1 -(α/α);
%normalize使A0 = 1
b0 = b0/a0;
B1 = B1/(2*a0);
B2 = B2/a0;
A1 = A1/(-2*a0);
A2 = A2/(-a0);
MX =最大值(abs ([B0,B1,B2]);
如果MX > 1
B0new = B0/MX;
B1new = B1/MX;
B2new = B2/MX;
否则
B0new = B0;
B1new = B1;
B2new = B2;
结束
NB = 16;%位数
范围= 2^(NB-1)-1;
N0 =地板(B0new*Range);
N1 =地板(B1new*系列);
N2 =楼层(B2new*Range);
d1 =楼层(A1*范围);
d2 =地板(A2*Range);
f = 6.5535万;
如果N0 < 0
HEX_N0 = DEC2HEX (BITXOR (ABS (N0),F)+ 1);
否则
HEX_N0 = DEC2HEX (N0,5);
结束
显示('十进制十六进制')
x =[' N0 ',num2str (N0,5),',num2str (hex_N0)];
显示(X)
如果N1 < 0
HEX_N1 = DEC2HEX (BITXOR (ABS (N1),F)+ 1);
否则
HEX_N1 = DEC2HEX (N1,5);
结束
x =[' N1 ',num2str (N1,5),',num2str (hex_N1)];
显示(X)
如果N2 < 0
HEX_N2 = DEC2HEX (BITXOR (ABS (N2),F)+ 1);
否则
HEX_N2 = DEC2HEX (N2,5);
结束
x =[' N2 ',num2str (N2,5),',num2str (hex_N2)];
显示(X)
如果d1 < 0
HEX_D1 = DEC2HEX (BITXOR (ABS (D1),F)+ 1);
否则
HEX_D1 = DEC2HEX (D1,5);
结束
x =[' d1 ',num2str (D1.5),',num2str (hex_d1)];
显示(X)
如果D2 < 0
HEX_D2 = DEC2HEX (BITXOR (ABS (D2),F)+ 1);
否则
HEX_D2 = DEC2HEX (D2,5);
结束
x =[' d2 ',num2str (D2,5),',num2str (hex_d2)];
显示(X)