问题描述
您好,我有一个关于如何连接和映射两个模块之间的端口的问题,我将仅描述输入和输出,而排除每个模块的控制逻辑。第一个模块是一个简单的寄存器,其输出是第二个模块的输入,该模块是一个解复用器
class simpleRegister extends Module {
val io = IO( new Bundle {
val enable = Input(UInt(1.W))
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
})
}
class demultiplexer extends Module {
val io = IO(new Bundle {
val datain = Input(UInt(8.W))
val dataout1 = Output(UInt(8.W))
val dataout2 = Output(UInt(8.W))
})
当我在 github 上阅读“接口和批量连接”时,我不确定是否应该使用什么方法
解决方法
您需要构建一个调用两个模块并执行构建的顶层模块。这很简单。
您的顶部模块将如下所示
class Top extends Module{
//You can expose a top level IO bundle if you will
val smplReg = Module(new simpleRegister)
val dmux = Module(new demultiplexer)
//connection of interest here is
dmux.io.datain := smplReg.io.out
//Make other connections as necessary
}
接口和批量连接是指两个 IO 包具有相似的字段,而不是将每个输入/输出连接到相应的输入/输出,而是将包作为一个整体连接。这只是优化代码的一种方式。