DDS设计的源码分享

最近有点忙,大家的留言没有及时回复,就大家最为关心的源码在此放出,在文末免费供大家下载。

本次设计基于quartus13.1环境,由于设计中调用了 ROM IP核,推荐大家在此环境下打开工程。

工程中的各种波形中,由于 FPGA 无法产生正弦波,因此使用 matlab 生成正弦波的 mif 文件用来对 FPGA 存放正弦波的 ROM 进行初始化,matlab源码也在下文中给出,并给出相应代码的注释,供大家学习和使用。

clear all
close all
clc

%%
t = linspace(0,2*pi,1024);  
 %%     产生0到2pi的x值,共1024个点
x = t;
sin_val = sin(x);  %% 正弦函数

plot(sin_val);
plot(round(sin_val*128))   
%%   round为四舍五入函数,取整操作

%%
fid=fopen('sine.mif','wt');
%%     打开文件

fprintf(fid,'width=8;\n'); 
%% 遵循mif文件格式
fprintf(fid,'depth =1024;\n');
fprintf(fid,'address_radix=uns;\n');
fprintf(fid,'data_radix=hex;\n');
fprintf(fid,'content begin\n');

for j=1:1024
    i=j-1;
    k=round(sin_val(j)*127);
% 
%     if(k==128)
%         k=127;
%     end
%     
%     if(k==-128)
%         k=-127;
%     end
    
    if(k<0)
        k = k+256;
    end
    fprintf(fid,'%d:%x;\n',i,k);
end

fprintf(fid,'end;\n');

fclose(fid);

将上述代码复制到matlab中,运行后看到绘制了一个周期的正弦波形,说明正弦波形已经产生。

在该.m对应的文件夹下可以看到,多了一个文件名为 sine.mif 的文件,可以看到正弦波的 .mif 文件已经产生,可以用来初始化 ROM。FPGA可以读取 ROM 的数据从而产生正弦波形。

下面给出的链接中下载,也可以点击原文链接进入下载。

链接:

https://pan.baidu.com/s/18MEbxt32IbFydFmfHTDOfQ

提取码:4pej

大家可以关注我的微信公众号:深入浅出玩儿转FPGA(fpgafun),获取更多好玩实用的资料哦!

你可能感兴趣的:(FPGA)