在使用FPGA实现sin波形的时候采用查找表法比较简单,也就是读取ROM表的值,具体的步骤如下:
1、第一步是需要在ROM中添加初始化数据,创建.mif文件,采用matlab来实现。matlab代码如下:
width=12; %宽度是
depth=4096; %深度是1024
n=0:depth-1;
yn=sin(2*pi/4096*n);
yn=round((yn+1)*2047);
plot(n,yn);
%===============================开始写mif文件===============================
addr=0:depth-1;
str_width=strcat('WIDTH=',num2str(width));
str_depth=strcat('DEPTH=',num2str(depth));
fid=fopen('E:\code\matlab_code\sin_code.mif','wt'); %打开或者新建mif,存放位置和文件名任意
%如果只写文件名,则在当前目录下建立此文件
fprintf(fid,str_width);
fprintf(fid,';\n');
fprintf(fid,str_depth);
fprintf(fid,';\n\n');
fprintf(fid,'ADDRESS_RADIX=HEX;\n'); %因为下面的数据输入我选的是16进制,
%这里可根据情况改写
fprintf(fid,'DATA_RADIX=HEX;\n\n');
fprintf(fid,'CONTENT BEGIN\n');
fprintf(fid,'\t%X : %X;\n',[addr;yn]) %开始写数据了
fprintf(fid,'END;\n');
fclose(fid);
可以得到如下所示的.mif文件
WIDTH=12;
DEPTH=4096;
ADDRESS_RADIX=HEX;
DATA_RADIX=HEX;
CONTENT BEGIN