Matlab-FPGA 小数转换为定点二进制小数脚本和转coe文件格式脚本

Matlab-FPGA 小数转换为定点二进制小数脚本:

% 更新于2023年6月17日,修改旋转因子文件,不修改fpga
%首先明确我们的二维FFT的数组维数,此为1024*8的二维矩阵,1024行,8列
column = 1024;
row = 8;
nk=[];
N=column*row;
for i=0:row-1
    for j=0:column-1
        nk=[nk,j*i];
    end
end
for k=1:column*row %必须保存所有可能的数值
    w_re(k)=cos(2*pi*(nk(k))/N);
    w_im(k)=-sin(2*pi*(nk(k))/N);
end
W2=w_re+1i*w_im;
numint=1;%numint位整数,numdec位小数
numdec=14;%选取的总位数为1+numint+numdec,其中1为符号位所占用。
fp1=fopen("w_re_data.txt",'w');
fp2=fopen("w_im_data.txt",'w');
% temp=diag(ones(length(a)))';
a=w_re;%a 为被定点化的矩阵或标量,为实数
for i=1:length(a)
    fixed_a=floor(a(i)*2^numdec);  %模拟计算机中直接截位的结果
    %限幅
    if ((fixed_a>=2^(numint+numdec))||(fixed_a<-2^(numint+numdec)))
       fixed_a=sign(a(i))*(2^(numint+numdec)-1)+0.5*(sign(a(i))-1);
       %正数最大是2^(numint+numdec)-1,负数最大是-2^(numint+numdec)
    end
    %转化为补码
    if (a(i)<0)
       %需要写成补码的形式!
       fixed_a=fixed_a+2^(numint+numdec);
       fixed_bin=dec2bin(fixed_a,numint+numdec);
       fixed_bin=strcat('1',fixed_bin);   
    else
       fixed_bin=dec2bin(fixed_a,numint+numdec);
       fixed_bin=strcat('0',fixed_bin);
    end
    
    % 保存数据到txt文件
%     for j=1:numint+numdec+1
        fprintf(fp1,"%s",fixed_bin);
        fprintf(fp1,'\r\n');
    
end
fclose(fp1);
clear a;
a=w_im;
for i=1:length(a)
    fixed_a=floor(a(i)*2^numdec);  %模拟计算机中直接截位的结果
    %限幅
    if ((fixed_a>=2^(numint+numdec))||(fixed_a<-2^(numint+numdec)))
       fixed_a=sign(a(i))*(2^(numint+numdec)-1)+0.5*(sign(a(i))-1);
       %正数最大是2^(numint+numdec)-1,负数最大是-2^(numint+numdec)
    end
    %转化为补码
    if (a(i)<0)
       %需要写成补码的形式!
       fixed_a=fixed_a+2^(numint+numdec);
       fixed_bin=dec2bin(fixed_a,numint+numdec);
       fixed_bin=strcat('1',fixed_bin);   
    else
       fixed_bin=dec2bin(fixed_a,numint+numdec);
       fixed_bin=strcat('0',fixed_bin);
    end
    
    % 保存数据到txt文件
%     for j=1:numint+numdec+1
        fprintf(fp2,"%s",fixed_bin);
        fprintf(fp2,'\r\n');
    
end
fclose(fp2);

数据转.coe文件脚本:

clear
clc
depth    =8192; % rom深度    
% width    =32;   % 数据宽度
cstr0=textread("w_re_data.txt",'%s'); % 将TXT中的数据以文本的方式取回
cstr1=textread("w_im_data.txt",'%s');
%实部
fid   =fopen('rotate_re.coe','wt');             % 创建文件
fprintf(fid,'memory_initialization_radix=2;\n'); % memory_initialization_radix:定义存储器初始化值的基,可取值为2进制,10进制,16进制等
fprintf(fid,'memory_initialization_vector=\n');  % memory_initialization_vector 储存器内数据向量
for  idnex =1:depth
      if(idnex<depth)    
        fprintf(fid,'%s,\n',char(cstr0{idnex}));
      else 
         fprintf(fid,'%s;\n',char(cstr0{idnex}));  % 最后的数据应以[;]结尾
      end 
end 
% 虚部
fid   =fopen('rotate_im.coe','wt');             % 创建文件
fprintf(fid,'memory_initialization_radix=2;\n'); % memory_initialization_radix:定义存储器初始化值的基,可取值为2,10,16等
fprintf(fid,'memory_initialization_vector=\n');  % memory_initialization_vector 储存器内数据向量

for  idnex =1:depth
      if(idnex<depth)    
        fprintf(fid,'%s,\n',char(cstr1{idnex}));
      else 
         fprintf(fid,'%s;\n',char(cstr1{idnex}));  % 最后的数据应以[;]结尾
      end 
end 

相关推荐

  1. Vue将File二进制文件转换base64格式

    2024-07-19 11:42:02       56 阅读
  2. vue中数字汉字,带小数转化

    2024-07-19 11:42:02       35 阅读
  3. Python中如何将小数转化百分数进行输出

    2024-07-19 11:42:02       23 阅读
  4. 根据具体时间转换一周前、几小时格式

    2024-07-19 11:42:02       54 阅读
  5. 常用目标检测的格式转换脚本文件txt,json等

    2024-07-19 11:42:02       29 阅读
  6. bat脚本:将ini文件两行值json格式

    2024-07-19 11:42:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 11:42:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 11:42:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 11:42:02       58 阅读
  4. Python语言-面向对象

    2024-07-19 11:42:02       69 阅读

热门阅读

  1. 最长上升子序列模板(LIS)

    2024-07-19 11:42:02       22 阅读
  2. Apache-BeanUtils VS SpringBean-Utils

    2024-07-19 11:42:02       16 阅读
  3. MySQL中为什么不推荐使用 text 类型?

    2024-07-19 11:42:02       18 阅读
  4. 华为云认证

    2024-07-19 11:42:02       19 阅读
  5. TF和TF-IDF区别和联系

    2024-07-19 11:42:02       19 阅读
  6. K8S内存资源配置

    2024-07-19 11:42:02       22 阅读