定点仿真方法的学习笔记

clc;clear all;
table_index = 1 : 36;
z_width = 65;
z_frac = 63;
table_format = numerictype('signed',1,'WordLength',z_width,'FractionLength',z_frac);
table_math = fimath('CastBeforeSum',0,'OverflowMode','saturate','RoundMode','round');


% clarify the table variables as global variables
global table_cirl table_hyper table_lin;
% caculate table values for cordic
table_cirl = fi(atan(2.^-(table_index-1)),table_format,table_math);
% hyperbolic iteration starts from "j=1" not "j=0" !!!
table_hyper = fi(atanh(2.^-table_index),table_format,table_math);
table_lin = fi(2.^-(table_index-1),table_format,table_math);


addr_width =ceil( log2(length(table_index)+1));


module_name = strcat('angle_rom_','x',num2str(64),'bit');
file_name = strcat(module_name,'.v');
fid = fopen(file_name,'w');


data_width=65;
register_sel=0;
for ii = 1 : length(table_index)
    get_angle = table_hyper(ii);
    if register_sel == 0
        fprintf(fid,'   %d''d%d: data_out = %d''b%s;//[%d][angle=atan(2^-%d)=%f]\n',addr_width,(ii-1),data_width,get_angle.bin,ii,(ii-1), get_angle.double);
    else
        fprintf(fid,'   %d''d%d: data_out <= %d''b%s;//[%d][angle=atan(2^-%d)=%f]\n',addr_width,(ii-1),data_width,get_angle.bin,ii,(ii-1), get_angle.double);
    end

end

以上是一段生成cordic angle_ROM的m代码,其中用到一些matlab自带定点处理函数fi。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值