今天看了寄存器文件,之前都是用的是行为级描述,所以很快就搞定了。可是用数据流来描述,那就不是那么简单,虽然也很简单,但是有可以挖掘的地方。
Cannot access memory r directly
出现了这个问题!看完我的代码你知道改哪里那说明你已经了解register file!
module Register_file(
input wire [4:0] rna,rnb,
input wire [31:0] d,
input wire [4:0] wn,
input wire we,
input wire clk,
input wire clrn,
output wire [31:0]qa,qb
);
wire [31:0]r[31:0];
wire [31:0]e;
assign r[0] = 0;//for zero register
decod5 U1(wn,we,e);
dffe32 R01(.d(d),.clk(clk),.clr(clrn),.en(e[1]),.q(r[1]));
dffe32 R02(.d(d),.clk(clk),.clr(clrn),.en(e[2]),.q(r[2]));
dffe32 R03(.d(d),.clk(clk),.clr(clrn),.en(e[3]),.q(r[3]));
dffe32 R04(.d(d),.clk(clk),.clr(clrn),.en(e[4]),.q(r[4]));
dffe32 R05(.d(d),.clk(clk),.clr(clrn),.en(e[5]),.q(r[5]));
dffe32 R06(.d(d),.clk(clk),.clr(clrn),.en(e[6]),.q(r[6]));
dffe32 R07(.d(d),.clk(clk),.clr(clrn),.en(e[7]),.q(r[7]));
dffe32 R08(.d(d),.clk(clk),.clr(clrn),.en(e[8]),.q(r[8]));
dffe32 R09(.d(d),.clk(clk),.clr(clrn),.en(e[9]),.q(r[9]));
dffe32 R10(.d(d),.clk(clk),.clr(clrn),.en(e[10]),.q(r[10]));
dffe32 R11(.d(d),.clk(clk),.clr(clrn),.en(e[11]),.q(r[11]));
dffe32 R12(.d(d),.clk(clk),.clr(clrn),.en(e[12]),.q(r[