标题:
FPGA实现基于ROM的正弦波发生器
[打印本页]
作者:
苹果也疯狂
时间:
2015-7-29 10:10
标题:
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描述
[url=]
[/url]
module
SinGen(
input
clk,
/*
clock input
*/
input
rst_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
@(
posedge
clk
or
negedge
rst_n)
begin
if
(!
rst_n) cnt
<=
7
'
d0;
else
if
(en) cnt
<= cnt+
7
'
d1;
else
cnt
<=
cnt;
end
assign
addr =
cnt;
endmodule
[url=]
[/url]
4.波形仿真:
分析:当使能端有效(en==1)时,在每个时钟的上升沿,输出ROM中的正弦波数据;
5.波形实测
将数据输出端接入到DAC后,可以接入示波器来观察波形;也可以使用QuartusII自带的SignalTap对数据输出端对Q进行采样,来查看波形;这里使用SignalTap捕获的波形如下:
可以看到,数据的确是正弦波吧?使用同样的道理,只要有相应波形的数据,也就是存储器的初始化文件.mif,就可以发生三角波、方波、甚至任意波形!如果您感兴趣,可以添加按键扫描模块,来控制发生想要的波形,制作一台简易波形发生器。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0