добавил регистры, ситуация улучшилась
Код:
module sram_wb_reg
(
input wb_clk_i,
input [15:0] wb_adr_i,
input [15:0] wb_dat_i,
output reg [15:0] wb_dat_o,
input wb_cyc_i,
input wb_we_i,
input [1:0] wb_sel_i,
input wb_stb_i,
output wb_ack_o,
//-----------------------------------
output reg [17:0] sram_adr,
output reg sram_nOE,
output reg sram_nWE,
output reg sram_nCS,
output reg sram_nUB,
output reg sram_nLB,
inout [15:0] sram_data
);
wire w_ena;
wire r_ena;
wire [1:0] ena;
reg [12:0] ack;
reg [15:0] write_reg;
always @ (posedge wb_clk_i)
begin
sram_nOE <= ~r_ena;
sram_nCS <= 1'b0;
sram_nUB <= ~(ena[1]&(w_ena|r_ena));//1'b0;
sram_nLB <= ~(ena[0]&(w_ena|r_ena));//1'b0;
sram_nWE <= ~w_ena;
sram_adr[17:0] <= {3'b000 ,wb_adr_i[15:1]};
wb_dat_o <= sram_data;
write_reg <= wb_dat_i;
sram_nOE <= ~r_ena;
end
assign w_ena = (wb_we_i & wb_cyc_i & wb_stb_i);
assign r_ena = (~wb_we_i & wb_cyc_i & wb_stb_i);
assign sram_data =(w_ena)? write_reg: 16'hzzzz;
assign ena = wb_we_i ? wb_sel_i : 2'b11;
assign wb_ack_o = wb_cyc_i & wb_stb_i & (ack[3] );//| wb_we_i);
always @ (posedge wb_clk_i)
begin
ack[0] <= wb_cyc_i & wb_stb_i;
ack[1] <= wb_cyc_i & ack[0];
ack[2] <= wb_cyc_i & ack[1];
ack[3] <= wb_cyc_i & ack[2];
ack[4] <= wb_cyc_i & ack[3];
// ack[5] <= wb_cyc_i & ack[4];
// ack[6] <= wb_cyc_i & ack[5];
// ack[7] <= wb_cyc_i & ack[6];
// ack[8] <= wb_cyc_i & ack[7];
// ack[9] <= wb_cyc_i & ack[8];
// ack[10] <= wb_cyc_i & ack[9];
// ack[11] <= wb_cyc_i & ack[10];
// ack[12] <= wb_cyc_i & ack[11];
end
endmodule
Тест памяти
Код:
@
@T2
ТЕСТ 2
ПАМЯТЬ 020000 -137776
ПАМЯТЬ 000600 -017776
024164
SPEED виснет после цифр 5192
Код:
.SPEED
ТЕСТ БЫСТРОДЕЙСТВИЯ
КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 10864
КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 5192