|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我写了一个多端口ram的模块,但是综合不出频率,去除这个模块,整体的频率就能综合出来,请高手指正
module regfile(
clk,
// for decoder1
we3,
ra1,
ra2,
wa3,
wd3,
rd1,
rd2,
// decoder2
we6,
ra4,
ra5,
wa6,
wd6,
rd4,
rd5
);
//macro defines
parameter WIDTH_REG_ADDR = 3'd5;
parameter WIDTH_REG_DATA = 6'd32;
//input signals
input clk;
input we3;
input we6;
input[WIDTH_REG_ADDR-1:0] ra1;
input[WIDTH_REG_ADDR-1:0] ra2;
input[WIDTH_REG_ADDR-1:0] wa3;
input[WIDTH_REG_ADDR-1:0] ra4;
input[WIDTH_REG_ADDR-1:0] ra5;
input[WIDTH_REG_ADDR-1:0] wa6;
input[WIDTH_REG_DATA-1:0] wd6;
input[WIDTH_REG_DATA-1:0] wd3;
//output signals
output[WIDTH_REG_DATA-1:0] rd1;
output[WIDTH_REG_DATA-1:0] rd2;
output[WIDTH_REG_DATA-1:0] rd4;
output[WIDTH_REG_DATA-1:0] rd5;
//logic
reg [31:0] rf[31:0];
always @ (posedge clk)
begin
if (we3) rf[wa3]<=wd3;
else
if (we6) rf[wa6]<=wd6;
end
assign rd1 = (ra1 != 0)?rf[ra1]:0;
assign rd2 = (ra2 != 0)?rf[ra2]:0;
assign rd4 = (ra4 != 0)?rf[ra4]:0;
assign rd5 = (ra5 != 0)?rf[ra5]:0;
endmodule |
|