最近有点忙,大家的留言没有及时回复,就大家最为关心的源码在此放出,在文末免费供大家下载。
本次设计基于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),获取更多好玩实用的资料哦!