在verilog中组合两根电线

时间:2014-04-09 10:00:26

标签: cpu verilog cpu-architecture

我正在设计一个单周期CPU。 我为这个CPU设计了数据路径和控制器。 现在我遇到了一个问题。 对于指令存储器和数据存储器,输出和输出应该有一条出路,因为需要将数据写入IM并从DM读取数据,反之亦然。

但是我设计数据路径的方式,这两个存储器是数据路径的一部分。 因为要写入存储器,你需要提供一个地址和一个数据,并且在数据路径中已经连接到这些存储器的线路,我不知道如何将两条线连接到一个输入/输出的地方。

例如,为了写入IM,我提供输入" IM_address"和" IM_data_in"。 但是在数据路径中,连接到该存储器的地址输入的导线是其他组件的输出,所以我不能将IM_address导线分配给这个地方,因为它应该同时是输入和输出。

现在我知道有一种叫做" inout" ,但我不熟悉它的用法,我也不确定这可能适用于我的情况。

如果有人能给我一个帮助,我会非常感激!

提前致谢

1 个答案:

答案 0 :(得分:2)

一次只能有一个组件可以读取或写入任何内存位置。如果两个组件需要访问相同的内存,则需要复制内存并为每个人提供自己的副本,或创建仲裁方案以防止两个组件同时读/写。

听起来我需要使用多路复用器并选择谁能够在任何给定时间写入指令存储器。我想虽然你应该只在初始化时写入指令存储器,然后对CPU进行编程。为什么其他组件需要访问指令存储器?

多路复用器(简称多路复用器)能够为单个输出选择多个输入之一。进行选择的信号需要由您设置。