gpt4 book ai didi

compiler-errors - 是否可以在一条线上允许多个驱动程序?

转载 作者:行者123 更新时间:2023-12-02 10:51:10 25 4
gpt4 key购买 nike

我正在尝试在 FPGA 上创建 CPU,但我不知道如何创建主数据总线。理想情况下,我将有一个具有多个输入和输出的线阵列,这些输入和输出在不同时间启用,但如果这样做,我会收到“多个驱动程序网络”错误。

我已经尝试使用电线、寄存器和不同的分配方法来实现这个结果,但我无法让它工作,因为它总是具有多个输入连接。


module Top(
input [7:0] sw,
output [7:0] led,
input we,
input oe,
input clk
);

wire [7:0] regData;
Register register (regData, we, oe, clk);

assign led = regData;
assign regData = sw;

endmodule

确切的错误消息是“[DRC MDRV-1] Multiple Driver Nets: Net led_OBUF[0] has multiple drivers: register/led_OBUF[0]_inst_i_1/O, and sw_IBUF[0]_inst/O.
"
寄存器中每个位的一个(8位)

最佳答案

据推测,这是来自您的合成器的错误,而不是您的模拟器。您没有提供足够的代码(MCVE)来显示您是否使用三态逻辑,但无论您是否使用,您都采取了错误的方法。

过去,人们使用三态逻辑来实现总线,因为路由资源稀缺。路由资源可以通过从多个地方驱动一个网络来节省(例如,每个从设备可能驱动一个公共(public)数据总线)。然而,三态逻辑是令人讨厌的。 (如果没有任何东西驱动总线,就会出现争用和问题。)你不想使用它,除非你需要。而且你不需要,因为在现代芯片中,路由资源很丰富。所以,不要在你的设计中使用三态逻辑;不要在设计中使用乘法驱动网络。

而是使用传统的(单一驱动的)逻辑结构。例如,要实现一条数据总线,有单独的写入数据总线(将有一个驱动程序 - 总线主控器)和许多读取数据总线(每条将有一个驱动程序 - 每个从属设备)。然后使用传统的多路复用器对读取数据总线进行多路复用。

关于compiler-errors - 是否可以在一条线上允许多个驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56971668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com