首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

参数化的重要性

参数化的重要性

参数化的重要性
参数化是代码重写的另一个关键实例。我们广泛利用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) 模块的过程中自动实现不同层面的资源共享
返回列表