关键词不能为空

当前您在: 主页 > 英语 >

使用FPGA产生sin波

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 02:16
tags:

-

2021年2月28日发(作者:vehicle)


使用


FPGA


产生


正弦




看不懂可以加

QQ


137194782



1 < /p>


使用


matlab


产生

< br>正弦


波的


.mif


< p>
rom




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


mif


文件中,



LPM_ROM


初始化用,那么如何得到正弦 表数据呢?可以用


matlab


实现



这里介绍两种方式:



(一)这个方法 只在


matlab


中生成数据表,需要自己手动的





mif< /p>


文件中添加数据



1.

< br>假设用到的


DA


芯片为


14


为,则


2^14=16384


< p>
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


文件


< p>
直接生成


mif


文件



depth = 4096;


width =14;


x=ceil(16384/2*sin(0:pi*2/4096:2*pi)+8192)



fid = fopen('d:','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,'Content Begin n');


for(k=1:depth)


fprintf(fid,'%d: %d n',k-1,x(k));


end


fprintf(fid,'end;');



用上面这段程序最大值会出现


163 84




Quartus II


中会认为是超出数


据范围,所以需要手动的改写为

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)


就不存在上述问题




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


二种方法。< /p>





2


使用


modelsim


仿真

< br>FPGA


产生正玄波。



最简易 的


sin


波发生器



Verilog


代码:



module sin_top (









input clk_50m,





input rst_n,









output


[13:0]



q







);



reg [11:0] cnt;


wire [11:0] addr;



always @(posedge clk_50m or negedgerst_n) begin




if(!rst_n)


cnt<= 12'd0;




else if(cnt == 12'd4095)


cnt<= 12'd0;




else


cnt<= cnt + 12'd1;


end



assign addr = cnt;



sin_romsin_rom_inst(



.address(addr),//4096



.clock(clk_50m),



.q(q)









//14bit








);



Endmodule

-


-


-


-


-


-


-


-



本文更新与2021-02-28 02:16,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/677798.html

使用FPGA产生sin波的相关文章