2025年正弦波发生器的verilog实现(一)

正弦波发生器的verilog实现(一)正弦波发生器的 verilog 实现 一 使用工具 Matlab Modelsim ISE 也可以使用 vivado 这里以 ISE 为例 离散正弦波的产生 将连续的正弦波离散化 通过 matlab 实现 在这里 产生 256 个采样点 clc clear all

大家好,我是讯享网,很高兴认识大家。

正弦波发生器的verilog实现(一)

使用工具:

Matlab、Modelsim、ISE(也可以使用vivado,这里以ISE为例)

离散正弦波的产生

  1. 将连续的正弦波离散化,通过matlab实现。在这里,产生256个采样点。
clc; clear all; s_p = 0:255; %正弦波一个周期的采样点 N = 2^8; sin_data = sin(2*pi*s_p/N); %定点化 fix_p_sin_data = fix(sin_data*127); for i=1:N if fix_p_sin_data(i) < 0 fix_p_sin_data(i) = N + fix_p_sin_data(i); else fix_p_sin_data(i) = fix_p_sin_data(i); end end fid = fopen('/home/sp_ram_256X8.coe','wt'); fprintf(fid, "%8.0f\n", fix_p_sin_data); fclose(fid); 

讯享网
  1. 在matlab中plot结果如下图:

matlab中plot的结果
讯享网

  1. 将.coe文件中,在生成的每一行采样后面(不包括最后一行采样)添加逗号",",然后在最后一行采样后面添加分号";"
  2. 打开生成的.coe文件,在文件的前两行添加下面两行代码:
讯享网memory_initialization_radix=10; memory_initialization_vector= 
  1. .coe文件最后格式,部分截图:

    在这里插入图片描述

在这里插入图片描述

verilog实现正弦波发生器

  1. 在ISE中建立正弦波发生器项目;
  2. 创建RAM IP核,用来存储生成的.coe文件(在这里完全可以使用ROM来实现):

    这里选择使用单口RAM

在这里插入图片描述

RAM规格选择256*8bit的ram

在这里插入图片描述

在Memory Initialization中选择前面生成的.coe文件

在这里插入图片描述

  1. 创建正弦波发生器的.v文件“
    module ex_dds( input wire clk, input wire rst_n, output wire [7:0] o_wave ); reg [7:0] addr; always @(posedge clk)begin if(!rst_n) addr <= 8'd0; else addr <= addr + 1'b1; end sp_ram_256x8 sp_ram_256x8_inst ( .clka(clk), // input clka .wea(1'b0), // input [0 : 0] wea .addra(addr), // input [7 : 0] addra .dina(8'd0), // input [7 : 0] dina .douta(o_wave) // output [7 : 0] douta ); endmodule 
  2. 对ex_dds()模块进行例化
    讯享网`timescale 1ns/1ns module tb_ex_dds(); reg clk; reg rst_n; wire [7:0] o_wave; initial begin clk = 0; rst_n = 0; #100 rst_n = 1; end always #10 clk = ~clk; ex_dds ex_dds_inst ( .clk(clk), .rst_n(rst_n), .o_wave(o_wave) ); endmodule 
  3. 在modelsim中对生成的正弦波发生器进行仿真,仿真图如下:

    在这里插入图片描述


    下一篇将介绍DDS发生器

小讯
上一篇 2025-01-16 18:16
下一篇 2025-03-02 07:02

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/75020.html