matlab生成任意长度余弦波coe文件以及vivado仿真

一、matlab生成任意长度余弦波coe文件

Matlab 复制代码
clear
clc
close all
width=32;   %rom的位宽
depth=3600; %rom的深度
x=linspace(0,2*pi,depth);  %在一个周期内产生3600个采样点
y_cos=cos(x);   %生成余弦数据
y_cos=round(y_cos*(2^(width-1)-1))+2^(width-1)-1;  %将余弦数据全部转换为整数
%y_cos=dec2hex(y_cos);
fid=fopen('C:\rom_coe\rom_cos_3600x32b.coe','w');  %创建.coe文件
% 写入 COE 文件头
fprintf(fid, 'memory_initialization_radix=16;\n');
fprintf(fid, 'memory_initialization_vector=\n');
for i = 1:length(y_cos)
  fprintf(fid,'%x',y_cos(i));  %向.coe文件中写入数据
  if i < length(x)
        fprintf(fid, ',');
    else
        fprintf(fid, ';');
  end
  fprintf(fid, '\n');
end
%关闭.coe文件
fclose(fid);  

二、Block RAM IP配置

三、verilog tb测试文件

matlab生成的是带偏置的波形,在verilog中减去偏置即可。

cpp 复制代码
module sim_1_read_cos( );

reg clk_100m=1'b1;
reg  [11:0] rd_addra=12'd0;

wire [31:0] dout_32b;
reg  [31:0] dout_32b_rectify;
integer i;
initial begin
    rd_addra = 12'd0;
    #100
    
    for(i=0;i<=4095;i=i+1)
        begin
            #10 rd_addra = rd_addra + 1'b1;
        end
end

always #5 clk_100m = ~clk_100m;
//减去偏置
always@(posedge clk_100m) begin
    dout_32b_rectify <= dout_32b - 32'h8000_0000;
end

brom_4096x32b u_brom_4096x32b (
  .clka ( clk_100m  ),  // input wire clka
  .addra( rd_addra  ),  // input wire [11 : 0] addra
  .douta( dout_32b  )   // output wire [31 : 0] douta
);
endmodule

四、仿真结果

相关推荐
吃好睡好便好5 小时前
创建魔方矩阵和单位矩阵
开发语言·人工智能·学习·线性代数·matlab·矩阵
吃好睡好便好8 小时前
矩阵的加减运算
开发语言·人工智能·学习·线性代数·算法·matlab·矩阵
吃好睡好便好8 小时前
提取矩阵特定多行元素
开发语言·线性代数·算法·matlab·矩阵
liuluyang5309 小时前
SV中|-> 和 |=>的区别与关系
fpga开发·sva
A000—ic测试座(陈佳鑫)9 小时前
大电流FPGA芯片测试:特性、应用、测试条件与FPGA芯片测试座案例
fpga开发·测试用例
Saniffer_SH10 小时前
【每日一题】不只是点亮画面:UniGraf 如何把 HDMI/DP 接口问题拆成可定位、可复现、可自动化验证的测试流程?
运维·人工智能·测试工具·fpga开发·性能优化·自动化·压力测试
吃好睡好便好14 小时前
提取矩阵所有元素
开发语言·学习·线性代数·matlab·矩阵
吃好睡好便好14 小时前
提取矩阵特定多列元素
开发语言·学习·线性代数·matlab·矩阵
CSDN_MAXF14 小时前
车载摄像头抗静电器件选型仿真分析
matlab·集成测试·硬件工程
彬鸿科技15 小时前
bhSDR Studio/Matlab入门指南(十):OFDM 数字通信实验界面全解析
人工智能·matlab·信息与通信·软件定义无线电