9.2 AccelDSP综合工具 – 获得恒定时钟周期数的MATLAB编码风格限制是什么?-Altera-Intel社区-FPGA CPLD-ChipDebug

9.2 AccelDSP综合工具 – 获得恒定时钟周期数的MATLAB编码风格限制是什么?

问题描述

在构建设计功能时,为了连接到系统生成器或硬件仿真(HW-CoSim),我需要一个每次调用设计函数时具有恒定时钟周期数的电路(有时称为恒定吞吐量)。如何编写MATLAB行为以实现恒定的时钟周期数?

解决/修复方法

System Generator中的“块”需要在连续输入之间有固定数量的时钟周期。因此,对于每次调用设计函数,来自AccelDSP的块必须具有固定数量的时钟周期。此外,AccelDSP中的HW-CoSim流程使用System Generator来构建硬件接口。因此,它也需要恒定的循环次数。

恒定数量的时钟周期(有时称为“恒定吞吐量”)很大程度上取决于MATLAB代码的编写方式。条件分支内的循环和循环的条件“退出”通常导致非恒定的吞吐量。因此,最好使用不使用这些结构的MATLAB编码样式。

为了获得恒定的吞吐量,Xilinx建议使用以下限制编写设计函数的MATLAB行为:

– 不要使用While循环。

– 使用具有常量“开始”,“步骤”和“结束”值的FOR循环。

– 不要在IF-THEN-ELSE语句中放置FOR循环(在FOR循环中可以有一个条件)。

警告 :矩阵算术运算和AccelWare函数通常包含FOR循环。

提示:展开FOR循环(完全展开)有效地移除了FOR循环,但增加了电路的大小。

– 不要使用条件存在来提前循环。

– 在FOR循环内部,不要覆盖循环变量/索引。

– 保持条件行为简单。如果有条件地执行复杂行为,则重写它以便始终执行。例如,重写以下内容:

if(<condition>)

y = sin(x);

结束

如下:

tmp = sin(x);

if(<condition>)

y = tmp;

结束

请登录后发表评论

    没有回复内容