原创 DDS ROM数据生成程序整理贴

2008-12-1 22:33 7738 6 6 分类: FPGA/CPLD

                                          DDS ROM数据生成程序整理贴<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


    FPGADDS,如果采用ROM查表的话,波形数据必不可少,当然ROM可以存正弦、方波、三角波的数据,对应也就成为了波形发生器。


 


MATLAB生成正弦波波形数据



width=8;  %
宽度是
depth=1024;  %
深度是1024
index = linspace(0,pi*0.5,depth);
sin_a=sin(index);  %
归一化
sin_d=fix(sin_a*(2^width-1));  %
量化
plot(sin_d);
axis([0,depth-1,0,2^width-1]);
%===============================
开始写mif文件===============================
addr=0:depth-1;
str_width=strcat('WIDTH=',num2str(width));
str_depth=strcat('DEPTH=',num2str(depth));

fid=fopen('f:\sin.mif','w');  %
打开或者新建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;sin_d])  %
开始写数据了
fprintf(fid,'END;\n');
fclose(fid);


 


 


程序解释:


axis([xmin xmax ymin ymax]) [ ]中分别给出x轴和y轴的最大值、最小值


sin(x):正弦函数


fix(x):截尾取整.


>> fix( [3.12 -3.12])


ans = 3    -3


linspace(x0,x1,n) :其中n代表的是点的数目,即分成n-1等分,步长应当是(x1-x0)/(n-1)


 


C语言编写的生成正弦的数据:


 


一个网上高手编写的程序


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 

f600060c-612c-4bc3-9430-9208d6dc14c4.JPG


 


还有几个Matlab程序


 


https://static.assets-stash.eet-china.com/album/old-resources/2008/12/1/ff5e0f88-c01b-43e3-8813-ab232ca82e4e.rar


 


ISEROM怎么转载数据可以参考如下教程:


 


pdf


 


下面是我用LabVeiw弄的正弦波波形数据正周期采集程序,准备继续完善,能生成方波,三角波,能采集1/4周期,1个周期。


 


点击看大图


 



  下载可以到我的另一篇文章:


http://blog.ednchina.com/tengjingshu/184884/message.aspx

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条