用Verilog HDL写了个sine wave generator

弄的蛋都碎了阿。。。

先上代码:

sine.v 

复制代码
module sine (clk, nrst, dout);
    input       clk,            // clock input
                nrst;           // active-low reset
    output[10:0]        dout;           // 10-bit output

    reg[3:0]    addr;           // ROM address
    reg[1:0]    quad;           // Quadrant count

    wire[9:0]   d;              // read data from ROM

    rom16x10    rom(.addr(addr), .data(d));

    always @(posedge clk or negedge nrst) begin
        if(!nrst) begin
            quad = 0;
            addr = 0;
        end
        else begin
            case (quad)
                0,2begin
                    if(addr==15) quad = quad+1;
                    else addr = addr+1;
                end
                1,3begin
                    if(addr==0) quad = quad+1;
                    else addr = addr-1;
                end
            endcase
        end
    end

    assign dout = (quad[1])? (1024-d):(1024+d);

endmodule  

复制代码


 

rom.v

复制代码
module rom8x10 (addr, data);
    input[3:0]  addr;           // address input
    output[9:0] data;           // data output

    reg[9:0]            rom[0:15];               // memory variable

    initial     $readmemh("rom.dat",rom);

    assign      data = rom[addr];

endmodule  

复制代码


 

过程其实比较简单,一个周期分成4部分来画,第一个四分之一周期0-1024,第二个四分之一周期1024-0,继续循环;每个周期64个采样点。

蛋疼的是要算这个采样点的值阿,我手闲阿,用计算器都比这快有木有。。。

我用lua算的:

for i=0,16 do print(1024*math.sin(math.rad(i*5.2))) end

lua好久没用不怎么会用了。。。这一句憋了好久。。。

算出来之后再把数值转成16进制。。。转的想哭。

=======bug1====== 

写完上面这些,发现90/16,应该是5.6的样子- -|||,算错了,重来。

=======bug2======

要做的是10位的输出,1024+1024溢出鸟。。。改成512的再算一遍。 

=======纯粹是蛋疼===

验证硬件,又不是干嘛用,完全不用管效率的嘛,直接这样不是更省事?

for i=0,64 do print(512*(1+math.sin(math.rad(i*5.62)))) end 

 

 

posted @   Biiigfish  阅读(2050)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示