原创 Matlab 波形表的产生程序

2009-3-10 20:55 6990 5 5 分类: FPGA/CPLD
来源网址:

    http://blog.chinaunix.net/u1/37798/article_57525.html

DDS函数信号发生器中有波形存储器,而其中数据的产生要根据具体的应用,先就常用的正弦波、三角波、方波以及锯齿波的波形表用Matlab来实现产生

% function wave_rom

%% 产生函数信号发生器的数据

clear all

clc

close all

N=512;

a(1:1:N)=0; %%存储8位的波形数据(0~~255)


%% 正弦波

for b=1:128

a(b)=round(127*sin(2*pi*(b-1)/127))+127;

end

figure(1)

stem(1:128,a(1:128));

%% 锯齿波

for b=1:128

a(b+128)=b;

nd

figure(2)

stem(129:256,a(129:256));

%% 方波

for b=1:64


a(b+256)=255;

a(b+64+258)=0;

nd

figure(3)

stem(257:384,a(257:384));

%% 三角波

for b=1:64

a(b+384)=2*(b-1);

a(b+64+384)=2*(64-b);

end

figure(4)

stem(385:512,a(385:512));

%% 画图

figure(5)

stem(1:512,a);

axis([0 512 0 256]);





实际中 还要做存储波形数据为rxt文件,可以使用以下代码:


fid=fopen('sin_data.txt','W');//把数据写入sin_data.txt文件中,如果没有就创建该文件

fprintf(fid,'%d,',a);                //那数组A的数据按指定格式写入其中


fclose(fid);                         //关闭


下面是我用过的代码,用来产生正弦波表,得到的txt文件,对里面的格式按照需要的格式修改以后就可以加载到fpga的ram里面


n=1024;
m=16;
a(1:1:n)=0;
for b=1:n;
    a(b)=round(2048*sin(0.5*pi*(b-1)/(n-1)));
end
figure(1);
stem(1:n,a(1:1024));
fid=fopen('sin_data.txt','W');
fprintf(fid,'%d,',a);
fclose(fid);

我以ISE软件对RAM 的数据初始化来说,iseRAM数据初始化的文件后缀是.COE,格式的要求如下:

memory_initialization_radix=10;
memory_initialization_vector=
2047,2049,2050,2052,2053,2055,2056,2058,

2060,2061,2063,2064,2066,2067,2069,2071,2072,

2074,2075,2077,2078,2080,2082,2083,2085,2086,2088,

2089,2091,2093,2094,2096,2097,2099,2100,2102,2104,2105,

2107,2108,2110,2111,2113,2115,2116,2118,2119,2121,2122 ;

很简单!
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条