使用FPGA产生sin波.docx

上传人:b****8 文档编号:8993096 上传时间:2023-02-02 格式:DOCX 页数:9 大小:499.48KB
下载 相关 举报
使用FPGA产生sin波.docx_第1页
第1页 / 共9页
使用FPGA产生sin波.docx_第2页
第2页 / 共9页
使用FPGA产生sin波.docx_第3页
第3页 / 共9页
使用FPGA产生sin波.docx_第4页
第4页 / 共9页
使用FPGA产生sin波.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

使用FPGA产生sin波.docx

《使用FPGA产生sin波.docx》由会员分享,可在线阅读,更多相关《使用FPGA产生sin波.docx(9页珍藏版)》请在冰豆网上搜索。

使用FPGA产生sin波.docx

使用FPGA产生sin波

使用FPGA产生正弦波

看不懂可以加QQ137194782

1使用matlab产生正弦波的.mif的rom表

工程中,经常要用到正弦表数据。

把正弦表数据存入mif文件中,供LPM_ROM初始化用,那么如何得到正弦表数据呢?

可以用matlab实现

这里介绍两种方式:

(一)这个方法只在matlab中生成数据表,需要自己手动的

     往mif文件中添加数据

1.假设用到的DA芯片为14为,则2^14=16384

2.一个完整的正弦波为0-2pi

3.正弦波ROM的深度为4096(地址总数)

4.由于FPGA中不识别负数,加入一个直流分量,加8192

则用matlab产生正弦表的函数为:

Y=ceil((16384/2-1)*sin(0:

pi*2/4096:

2*pi)+8192)

其中ceil函数描述如下:

ceil(x):

大于x的最小整数

>>ceil([3.12-3.12])

ans=4   -3

(二)可以直接生成mif文件

直接生成mif文件

depth=4096;

width=14;

x=ceil(16384/2*sin(0:

pi*2/4096:

2*pi)+8192)

fid=fopen('d:

\romdata1.mif','w');%路径

fprintf(fid,'depth=%d;\n',depth);

fprintf(fid,'width=%d;\n',width);

fprintf(fid,'address_radix=uns;\n');

fprintf(fid,'data_radix=uns;\n');

fprintf(fid,'ContentBegin\n');

for(k=1:

depth)

fprintf(fid,'%d:

%d;\n',k-1,x(k));

end

fprintf(fid,'end;');

用上面这段程序最大值会出现16384,在QuartusII中会认为是超出数据范围,所以需要手动的改写为16383把x=ceil(16384/2*sin(0:

pi*2/4096:

2*pi)+8192)改写为下面语句

 x=ceil((16384/2-1)*sin(0:

pi*2/4096:

2*pi)+8192)就不存在上述问题了

数据量小的话,可以用第一种方法,要是数据量大的话,介意用第二种方法。

2使用modelsim仿真FPGA产生正玄波。

最简易的sin波发生器

Verilog代码:

modulesin_top(

inputclk_50m,

inputrst_n,

output[13:

0]q

);

reg[11:

0]cnt;

wire[11:

0]addr;

always@(posedgeclk_50mornegedgerst_n)begin

if(!

rst_n)

cnt<=12'd0;

elseif(cnt==12'd4095)

cnt<=12'd0;

else

cnt<=cnt+12'd1;

end

assignaddr=cnt;

sin_romsin_rom_inst(

.address(addr),//4096

.clock(clk_50m),

.q(q)//14bit

);

Endmodule

测试模块:

modulesin_tb();

regclk_50m;

regrst_n;

wire[13:

0]q;

sin_topsin_inst(

.clk_50m(clk_50m),

.rst_n(rst_n),

.q(q)

);

initialbegin

clk_50m=0;

rst_n=0;

#100;

rst_n=1;

#80000;

$stop;

end

always#10clk_50m=~clk_50m;

endmodule

综合:

Modelsim仿真:

我们修改如下

使用FPGA产生正玄波发生器仿真完成。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1