我正在尝试为 RAM 的 dataBus 使用 inout 端口。我设计了具有不同输入端口的 RAM,用于 dataBUs_in 和输出 dataBus_out。后来将它们链接到顶部模块中的双向端口。模拟 inout 端口后,仅给出输出 datBus_out,对于 dataBus_in,它显示 8'hxx。我还尝试在我的 RAM 设计中使用两个 always 块,每个块用于写入和读取。
顶部模块代码:
ram_cpu ram_cpu_top(
.clock(top_clock),
.write(top_write),
.writeBar(top_writeBar),
.ramEnable(top_ramEnable),
.dataBus_in(top_dataBus_in),
.addressBus(top_addressBus),
.dataBus_out(top_dataBus_out)
);
assign dataBus = (internal_control == 1'b0) ? top_dataBus_in : 8'hzz;
assign top_dataBus_out = dataBus;
内存设计:
always @ (posedge clock)
begin //write
if(ramEnable) begin
if(write == 1'b1) begin
ram[addressBus] <= dataBus_in;
end
else if(write == 1'b0) begin
dataBus_out <= ram[addressBus];
end
end
end