bram設(shè)置為簡單雙口
建議取消勾選這個,這樣讀出來的數(shù)據(jù)是差一個時鐘周期的
vivado中的bram,寫的時候,寫使能,寫地址,寫數(shù)據(jù)一起賦值
讀的時候,讀使能,讀地址可以一起賦值,數(shù)據(jù)為下一時鐘周期才會來
邏輯為在地址1寫入了數(shù)據(jù)2。
讀的邏輯,地址1的數(shù)據(jù)2在一個時鐘周期之后
代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-548336.html
`timescale 1ns / 1ps
module test_bram(
input wire clk,
input wire restn
);
wire ena, enb, wea;
wire [9 : 0] addra, addrb;
wire [15 : 0] dina, doutb;
reg ena_r, enb_r, wea_r;
reg [9 : 0] addra_r, addrb_r;
reg [15 : 0] dina_r;
assign ena = ena_r;
assign enb = enb_r;
assign wea = wea_r;
assign addra = addra_r;
assign addrb = addrb_r;
assign dina = dina_r;
reg [9:0] cnt;
reg enb_r_1;
blk_mem_gen_0 bram (
.clka(clk), // input wire clka
.ena(ena), // input wire ena
.wea(wea), // input wire [0 : 0] wea
.addra(addra), // input wire [9 : 0] addra
.dina(dina), // input wire [15 : 0] dina
.clkb(clk), // input wire clkb
.enb(enb), // input wire enb
.addrb(addrb), // input wire [9 : 0] addrb
.doutb(doutb) // output wire [15 : 0] doutb
);
// bram先寫后讀驗證
reg [9:0] cnt_a;
always @(posedge clk or negedge restn) begin
if(!restn) begin
ena_r <= 0;
wea_r <= 0;
dina_r <= 1;//數(shù)據(jù)為地址加一
addra_r <= 0;
cnt_a <= 0;
end
else if (cnt_a < 10'd639)begin
ena_r <= 1;
wea_r <= 1;
dina_r <= dina_r + 1;
addra_r <= addra_r + 1;
cnt_a <= cnt_a + 1;
end
else begin
ena_r <= 0;
wea_r <= 0;
dina_r <= 0;
addra_r <= 0;
end
end
always @(posedge clk or negedge restn) begin
if(!restn) begin
enb_r <= 0;
addrb_r <= 0;
end
else if (cnt_a == 10'd639)begin
enb_r <= 1;
addrb_r <= (addrb_r>=10'd639) ? 10'd639 : (addrb_r + 1);
end
end
endmodule
testbench:文章來源地址http://www.zghlxwxcb.cn/news/detail-548336.html
//~ `New testbench
`timescale 1ns / 1ps
module tb_test_bram;
// test_bram Parameters
parameter PERIOD = 10;
// test_bram Inputs
reg clk = 0 ;
reg restn = 0 ;
// test_bram Outputs
initial
begin
forever #(PERIOD/2) clk=~clk;
end
initial
begin
#(PERIOD*2) restn = 1;
end
test_bram u_test_bram (
.clk ( clk ),
.restn ( restn )
);
initial
begin
$finish;
end
endmodule
到了這里,關(guān)于vivado中bram簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!