- UID
- 863306
|
参数化的重要性
参数化是代码重写的另一个关键实例。我们广泛利用C++模板函数来表示架构中的参数化模块。在球形解码器的实现过程中,该类代码重写有几个不同实例。一个具体实例是应用于信道重排序模块的不同类型矩阵操作。图2所示的矩阵计算模块(4×4, 3×3与2×2)就包含不同类型的矩阵操作,例如矩阵求逆或矩阵相乘。将这些模块进行编码并作为 C++ 模板函数,模板参数即矩阵的行数与列数。
图7为矩阵相乘的C++模板函数。除了矩阵行数和列数这两个参数之外,该模板函数还有第三个参数,即MM_II(矩阵相乘初始化间隔),该参数用于指定二次连续循环迭代之间的时钟周期数量。第 9 行的指令 (pragma)用于对具体实例所需吞吐量进行参数化。这是一项很重要的功能,原因是它可对生成的微体系架构产生重要影响—也就是高级综合工具具备充分利用资源共享的能力,从而可以减少用于具体实现中的 FPGA 资源数量。例如,高级综合工具仅仅通过修改初始化间隔 (Initiation Interval) 参数并使用相同的 C++ 代码,即可在执行不同矩阵求逆(4×4, 3×3, 2×2) 模块的过程中自动实现不同层面的资源共享 |
|