连接单个模块 - 凿子

Connecting Individual Modules - Chisel

你好,我有一个关于如何连接和映射两个模块之间的端口的问题,我将只描述输入和输出,而不包括每个模块的控制逻辑。第一个模块是一个简单的寄存器,其输出是第二个模块的输入,第二个模块是一个解复用器

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 包具有相似的字段,而不是将每个输入/输出连接到相应的 input/output,而是将包作为一个整体连接。这只是优化代码的一种方式。