FPGA实现基于ROM的正弦波发生器

FPGA实现基于ROM的正弦波发生器
FPGA实现基于ROM的正弦波发生器

FPGA实现基于ROM的正弦波发生器

软件环境:QuartusII 11.0

操作系统:win7

芯片型号:CycloneII EP2C5Q208C8

1.总体框图:

1.波形数据

第一步,是获得含有正弦波的数据的ROM初始化文件.mif,方法见《如何生成mif文件》;

此处生成的波形数据为8bit宽度,128字节深度的数据。

2.利用Quartus的LPM功能,定制一个8bit数据宽度,128字节深度的ROM:

详细步骤说明可以参考《FPGA实现RAM--LPM_RAM》,此处只给出具体配置,为避免冗余,不再详细说明各项含义。

3.顶层模块的verilog描述

复制代码

moduleSinGen(

inputclk, /*clock input*/

inputrst_n, /*async reset ,active low*/

input en, /*enable control,active high*/

output [7:0] q /*data output from ROM*/

);

/***********ROM instance**********************/

wire [6:0] addr;

ROM1P ROM1P_inst (

.address ( addr ),

.clock ( clk),

.q ( q)

);

/***************address generate***************/

reg [6:0] cnt;

always@(posedgeclk or negedgerst_n)

begin

if(!rst_n)

cnt<= 7'd0;

else if(en)

cnt<= cnt+7'd1;

else

cnt<=cnt;

end

assignaddr = cnt;

endmodule

复制代码

4.波形仿真:

分析:当使能端有效(en==1)时,在每个时钟的上升沿,输出ROM中的正弦波数据;

5.波形实测

将数据输出端接入到DAC后,可以接入示波器来观察波形;也可以使用QuartusII自带的SignalTap对数据输出端对Q进行采样,来查看波形;这里使用SignalTap捕获的波形如下:

可以看到,数据的确是正弦波吧?使用同样的道理,只要有相应波形的数据,也就是存储器的初始化文件.mif,就可以发生三角波、方波、甚至任意波形!如果您感兴趣,可以添加按键扫描模块,来控制发生想要的波形,制作一台简易波形发生器。

相关主题
相关文档
最新文档