我正在尝试使用一个输入输出端口作为内存的dataBus。我已经为dataBUs_in和输出dataBus_out设计了一个截然不同的输入端口。后来将它们链接到顶部模块中的双向端口。模拟inout端口后,只给出输出datBus_out,对于dataBus_in,它显示8'hxx。此外,我还尝试在RAM设计中使用两个always块,每个块用于写入和读取。
topmodule代码:
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 发布于 2021-01-20 08:16:52
dataBus是常见的双向网络。top_dataBus_in应该由dataBus驱动。top_dataBus_out应该有条件地驱动dataBus
assign top_dataBus_in = dataBus;
assign dataBus = (internal_control == 1'b0) ? top_dataBus_out : 8'hzz;注意:当internal_control为1时,应该有其他逻辑驱动dataBus,否则它将是浮动的。只有noting需要感知值时,才可以使用浮点型。在大多数双向设计中,下拉或上拉连接到总线。
https://stackoverflow.com/questions/65798683
复制相似问题