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描述

复制代码
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
复制代码

4.波形仿真:

  

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

5.波形实测

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

  

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

  同时,通过这个正弦波发生器的制作,您是否对于查找表LUT有更深的体会呢?

  • 8
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值