以上就是调IP的具体过程
这里给大家展示一下单端口和双端口的代码
单端口
`timescale 1ns / 1ps
//打两拍
module rom_1(
input sysclk ,
input rst_n ,
output [7:0] douta
);
reg ena;
reg [7:0] addra;
//ena
always@(posedge sysclk)
if(!rst_n)
ena<=0;
else
ena<=1;
//addra
always@(posedge sysclk)
if(!rst_n)
addra<=0;
else if(ena==1)
addra<=addra+1;
else
addra<=addra;
blk_mem_gen_0 your_instance_name (
.clka(sysclk), // input wire clka
.ena(ena), // input wire ena
.addra(addra), // input wire [7 : 0] addra
.douta(douta) // output wire [7 : 0] douta
);
endmodule
`timescale 1ns / 1ps
//双端口
module rom_3(
input sysclk ,
input rst_n ,
output [7:0] douta ,
output [15:0] doutb
);
reg ena;
reg [7:0] addra;
reg enb;
reg [7:0] addrb;
//ena
always@(posedge sysclk)
if(!rst_n)
ena<=0;
else
ena<=1;
//addra
always@(posedge sysclk)
if(!rst_n)
addra<=0;
else if(ena==1)
addra<=addra+1;
else
addra<=addra;
//enb
always@(posedge sysclk)
if(!rst_n)
enb<=0;
else
enb<=1;
//addrb
always@(posedge sysclk)
if(!rst_n)
addrb<=0;
else if(enb==1)
addrb<=addrb+1;
else
addrb<=addrb;
blk_mem_gen_2 your_instance_name (
.clka(sysclk), // input wire clka
.ena(ena), // input wire ena
.addra(addra), // input wire [7 : 0] addra
.douta(douta), // output wire [7 : 0] douta
.clkb(sysclk), // input wire clkb
.enb(enb), // input wire enb
.addrb(addrb), // input wire [6 : 0] addrb
.doutb(doutb) // output wire [15 : 0] doutb
);
endmodule