使用软件: Vivado (需要使用.coe文件)
1 :(1) 生成.coe文件
新建一个txt文档,后缀名改成.coe. (注意文件名一定要英文开头,不能出现中文和中文的字母和特殊符号)
(2) 文档格式如下:
.COE文件格式如下.
memory_initialization_radix=10;
memory_initialization_vector=
127,
130,
133,
136,
139,
142,
145,
148,
151,
154,
157,
160,
163,
166,
169,
172,
175,
178,
181,
184,
186,
189,
192,
194,
197,
200,
202,
205,
207,
209,
212,
214,
216,
218,
221,
223,
225,
227,
229,
230,
232,
234,
235,
237,
239,
240,
241,
243,
244,
245,
246,
247,
248,
249,
250,
250,
251,
252,
252,
253,
253,
253,
253,
253,
254,
253,
253,
253,
253,
253,
252,
252,
251,
250,
250,
249,
248,
247,
246,
245,
244,
243,
241,
240,
239,
237,
235,
234,
232,
230,
229,
227,
225,
223,
221,
218,
216,
214,
212,
209,
207,
205,
202,
200,
197,
194,
192,
189,
186,
184,
181,
178,
175,
172,
169,
166,
163,
160,
157,
154,
151,
148,
145,
142,
139,
136,
133,
130,
127,
123,
120,
117,
114,
111,
108,
105,
102,
99,
96,
93,
90,
87,
84,
81,
78,
75,
72,
69,
67,
64,
61,
59,
56,
53,
51,
48,
46,
44,
41,
39,
37,
35,
32,
30,
28,
26,
24,
23,
21,
19,
18,
16,
14,
13,
12,
10,
9,
8,
7,
6,
5,
4,
3,
3,
2,
1,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
2,
3,
3,
4,
5,
6,
7,
8,
9,
10,
12,
13,
14,
16,
18,
19,
21,
23,
24,
26,
28,
30,
32,
35,
37,
39,
41,
44,
46,
48,
51,
53,
56,
59,
61,
64,
67,
69,
72,
75,
78,
81,
84,
87,
90,
93,
96,
99,
102,
105,
108,
111,
114,
117,
120,
123;
建完直接保存即可使用。
2 : (1) 添加rom核
(2) 调试rom IP核 (我们写的正弦波是 8位宽 256个深度的)
(3) 选择寄存数据 (这样可以让输入或输出的数据更加稳定,但是需要延迟一个时钟周期)
(4) 现在就来添加我们生成的 .coe文件 。
3 : (1) 编写代码程序部分
module rom(
input clk, //50M时钟
input rst, //复位
output [7:0] data //rom 输出的数据
);
reg [7:0] addr; //rom 数据地址
always@ (posedge clk or negedge rst) begin
if (!rst)
addr <= 0; //复位地址清零
else
addr <= addr + 1; //地址自增
end
dist_mem_gen_0 your_instance_name ( //例化的ROM
.a(addr), // input wire [7 : 0] a
.clk(clk), // input wire clk
.qspo(data) // output wire [7 : 0] qspo
);
endmodule
(2) 编写tb仿真文件
`timescale 1ns / 1ps // 时间单位1ns,时间精度1ps
module tb();
reg clk; //50M时钟
reg rst; //复位
wire [7:0] data; //rom数据
initial begin //初始化
clk = 0;
rst = 0;
#10 rst = 1;
end
always #10 clk = ~clk; //每10ps 反转一次. 因为我们上面定义的仿真精度就是1ps
rom inst_rom( //例化底层文件
.clk (clk) ,
.rst (rst) ,
.data (data)
);
endmodule
(3) : 看仿真图,验证程序.
(简单程序:编程完成)
生产波形数据软件网站 : https://download.csdn.net/download/weixin_46062412/16295009?spm=1001.2014.3001.5501
这款软件生成的波形数据是.MIF文件大家可以根据我上面给出的波形数据.COE文件的格式自行修改即可.(如果不会使用可以在下方留言不超2小时就会回复,半夜三更除外)