一、总线合并器的核心作用总线合并器就像一个多合一点转换插座。它的输入侧有多个独立的、较窄的通道比如条位宽的数据通道输出侧睡一个合并后的、较宽的通道比如条位宽的数据通道。二、关键代码var input_widths: Array[int] [4,4] var output_width: int 0 func execute(inputs): var result 0 var shift 0 for i in min(inputs.size(), input_widths.size()): var value inputs[i] if i inputs.size() else 0 var width input_widths[i] var mask (1 width) - 1 # 创建位掩码如4位对应0xF result | (value mask) shift # 截取有效位后移位合并 shift width # 移位计数器递增 return result位掩码移位拼接技术实现多路不同位宽信号的无缝合并具体分步解析如下、初始化变量var result 0 # 存储合并后的二进制值初始为0所有位清零 var shift 0 # 位移计数器记录下一个输入值应该左移的位数初始从0位开始、循环处理每个输入端口for i in min(inputs.size(), input_widths.size()): 输入安全处理当实际输入数量少于声明的端口数时多余端口自动补0else 0 var value inputs[i] if i inputs.size() else 0 位宽映射从input_widths数组获取当前端口的声明位宽如4位 var width input_widths[i] 掩码生成通过(1 width) - 1生成位掩码如4位→0b1111/15 var mask (1 width) - 1 # 创建位掩码、核心拼接操作result | (value mask) shift # 截位→移位→合并 shift width # 更新位移计数器截位操作value mask确保输入值不超出声明位宽例输入值50b101通过4位掩码后仍为50b0101移位拼接 shift将截位后的值移到目标位置例第一个4位值移0位第二个4位值移4位0b0001_0000合并结果|操作将当前值合并到最终结果更新位移shift width确保下一输入值移到更高位如448位4、 动态可视化示例假设配置input_widths [2,3,4],output_width 9输入值[0b11 (3), 0b11 (5), 0b1111 (15)]步骤valuewidthmask截位值shift移位后值result1320b110b1100b000000110b000000112530b1110b10120b000101000b0001011131540b11110b111150b1111000000b11110111最终结果0b11110111(二进制) 247(十进制)