Chisel 教程使用了似乎是 <>
的东西。运算符,这对我来说完全陌生。它有什么作用?
另外,它是从哪里来的?这个操作符在其他 Scala 库甚至其他语言中是否有约定俗成的含义?
这是一个示例用法,来自 Chisel Generator 训练营练习,第 3.2 节:
class MyQueue extends Module {
// Example circuit using a Queue
val io = IO(new Bundle {
val in = Flipped(Decoupled(UInt(8.W)))
val out = Decoupled(UInt(8.W))
})
val queue = Queue(io.in, 2) // 2-element queue
io.out <> queue
}
最佳答案
<>
用于批量连接两个模块之间的所有同名端口。所以在上面的例子中,
io.out <> queue
是一种更简洁的写法
io.out.valid := queue.valid
io.out.bits := queue.bits
queue.ready := io.out.ready
因为它们都被 Decoupled
包裹接口(interface),它定义了ready
, valid
和 bits
端口(请注意 ready
连接以相反的方向流动:批量连接正确处理此问题)。
我找到了 the answer在更彻底地阅读 Chisel wiki 之后。
关于scala - Chisel 中的 <> 运算符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123791/