DDS IP核参考:https://mbb.eet-china.com/blog/3857693-204577.html
产生频率可变的正弦波+逻辑分析仪的运用
一、64采样点正弦波
MATLAB代码:
clc;clear;
N = 6; % 6 位地址线
depth=2^N; % 采样点 2^6 = 64
widths=8; % 8 位数据位宽
index = linspace(0,pi*2,depth);
sin_value = sin(index);
sin_value = sin_value * (depth/2 -1);
sin_value = fix((sin_value)+0.5);
sin_value = sin_value + 30;
plot(sin_value);
number = [0:depth];
fid=fopen('sin_table.coe','w+');
fprintf(fid,'memory_initialization_radix=10;\n'); %采用 10 进制
fprintf(fid,'memory_initialization_vector=\n');
for i = 1 : depth - 1
fprintf(fid, '%d,\n', sin_value(i));
end
fprintf(fid, '%d;', sin_value(depth));
fclose(fid);
MATLAB图像:
读取RAM的值:
`timescale 1ns /1ns
module dds_top(
input Rst_n,
input Clk,
output [7:0] Sine_Data
);
reg [5:0] addr;
always @ (posedge Clk or negedge Rst_n)
if(!Rst_n)
addr <= 6'd0;
else