在做算法设计和验证时,常在matlab进行浮点验证,然后量化后在用在FPGA上,对于类似与FIR这些滤波器系数,matlab直接可以export出来,但是在验证麦克风或者ADC出来的24bit补码这类时常常需要使用matlab生成定点数进行仿真验证。这里给出我常用的生成代码:
% -------------------
% input number is below 1, and Prec_F is the (N-1)bit for N bit transform
Prec_F = 23;
% -------------------
input = [1.0000 0.9921 -1.0000 -0.9298 0.2632 0 -0.0113]';
for ii =1:length(input)
if input(ii) == 1
data_out(ii) = input(ii)*pow2(Prec_F)-1;
else
data_out(ii) = input(ii)*pow2(Prec_F);
end
end
data_out = round(data_out);
for ii = 1:length(input)
if data_out(ii) < 0
data_out(ii) = data_out(ii) + pow2(Prec_F+1);
end
data_out_Hex(ii,:) = dec2hex(data_out(ii),(Prec_F+1)/4);
% dec2hex(data_out(ii),6)
end
data_out_Hex
输出如下:
data_out_Hex =
7FFFFF
7EFD22
800000
88FC50
21B08A
000000
FE8DB9