【发布时间】:2020-07-07 11:50:51
【问题描述】:
假设我们有一个单端口 2^n*m 位 RAM。其描述如下。它有一个地址端口、启用端口、一个 rw(读写)端口和一个双向数据端口,您可以通过它读取和写入数据。我的问题是到目前为止我无法使用我的代码通过此端口进行写入:
module dual_port_ram # ( parameter n=4,m=4) (rw,addr,data,enable,clk);
input rw,enable,clk;
inout reg [m-1:0]data;
input [n-1:0] addr;
reg [m-1:0] ram [(2^n)-1:0];
always @ (posedge clk) begin
if(enable) begin
if(rw)
ram[addr]=data;// wrtite
else
data=ram[addr];// read
end
end
endmodule
这是错误:
# SLP: Fatal Error: design.sv (3): Inout port 'data' of 'dual_port_ram' must be a net.
【问题讨论】:
-
注意:
2^n的意思是“2 xor n”,而不是“2 的 n 次方”。所以,2^4是 6。你可能打算使用2**n。
标签: verilog