关于存储单元的操作请教
- always@(posedge clk)
- if(rable==1'b1 && wable==1'b0)
- begin
- men[0] <= din;
- men <= {men[254:0],men[0]};
- Addr <= Addr + 1'b1;
- end
- else if(rable==1'b0 && wable==1'b1)
- begin
- isOut <= men[Addr];
- Addr <= Addr - 1'b1;
- end
- else if(rable==1'b1&&wable==1'b1)
- begin
- isOut <= men[Addr];
- men[0] <= din;
- men[255:0] <= {men[254:0],men[0]};
- end
自己顶一个,求大神帮我。
你这个用的是二维数组,语法有问题。大概就下面这样写,没有测试。
module test (
clk,
rable,
wable,
din,
isOut
);
input clk;
input rable;
input wable;
input din;
output isOut;
reg isOut;
reg[7:0]men[255:0];
reg[255:0]Addr = 0;
always@(posedge clk) begin
if(rable==1'b1 && wable==1'b0)begin
men[0][0] <= din;
men[0][255:0] <= {men[0][254:0],men[0][0]};
Addr <= Addr + 1'b1;
end
else if(rable==1'b0 && wable==1'b1)begin
isOut <= men[0][Addr];
Addr <= Addr - 1'b1;
end
else if(rable==1'b1&&wable==1'b1)begin
isOut <= men[0][Addr];
men[0][0] <= din;
men[0][255:0] <= {men[0][254:0],men[0][0]};
end
end
endmodule
3楼正解,比我的代码好啊
