如何将一个Bundle的全部bits复制到另一个Bundle中?
在Chisel中复制Bundle全部Bits到另一个Bundle的方法
如果两个Bundle的类型完全一致,有两种常用方法实现完整复制:
直接Bundle赋值
这是最简单的方式,Chisel支持同类型Bundle直接整体赋值,底层会自动完成所有元素的逐位复制:io.out(1).bits.x := ... io.out(1).bits.y := ... // 直接赋值整个Bundle io.out(2).bits := io.out(1).bits通过UInt中转(适合需确保位完全匹配的场景)
先将Bundle转换为UInt,再转换回目标Bundle类型,能保证所有位被完整复制:io.out(1).bits.x := ... io.out(1).bits.y := ... // 先转成UInt,再转回目标Bundle类型 io.out(2).bits := io.out(1).bits.asUInt.asTypeOf(io.out(2).bits.cloneType)
注意:两种方法都要求源Bundle和目标Bundle的类型(包括内部元素的类型、位宽、顺序)完全一致,否则会编译报错。
内容的提问来源于stack exchange,提问作者Ali Sed
相关产品推荐
相关产品推荐

