主要内容

优化MATLAB循环

与循环优化,您可以在生成的代码流或展开循环。循环流是一个区域优化和循环展开速度优化。为MATLAB优化循环®内的代码MATLAB函数块,用MATLAB函数体系结构。当你使用MATLAB Datapath公司架构,代码生成器铺循环无论循环的优化设置。

循环流

高密度脂蛋白编码器™流实例化一个循环的循环体,使用该实例为每个循环迭代。代码生成器oversamples循环体实例保持生成的循环的功能与原来的循环。

如果你流一个循环,优点是降低了硬件资源的使用,因为循环体是实例化次数更少。缺点是硬件实现运行在一个较低的速度。

你可以部分流循环。部分流循环不止一次实例化循环体,所以它使用面积超过一个完全流循环。然而,部分流循环也使用过采样比完全流循环。

循环展开

高密度脂蛋白编码器铺一个循环的循环体的实例化多个实例生成的代码。你也可以部分展开一个循环。生成的代码使用一个循环语句包含多个实例的原始比原来的循环体和更少的迭代循环。

分布式流水线和资源共享可以优化展开代码。分布式流水线可以提高速度。资源共享可以减少区域。

当循环展开创建多个实例,这些实例可能会增加。循环展开也使代码难以阅读。

如何优化MATLAB循环

您可以指定一个全球循环优化使用HDL工作流顾问,或在命令行。

你也可以指定一个本地环路优化为一个特定的循环利用coder.hdl.loopspec在MATLAB代码编译指示。如果您指定一个全球和本地环路优化本地环路优化覆盖全球。

全球循环优化

指定一个循环优化工作流顾问:

  1. 在高密度脂蛋白工作流顾问左窗格中,选择高密度脂蛋白工作流顾问>HDL代码生成

  2. 优化选项卡,循环优化中,选择没有一个,展开循环,或流循环

在命令行上指定一个循环优化在MATLAB HDL工作流,指定LoopOptimization财产的coder.HdlConfig对象。例如,对于一个coder.HdlConfig对象,hdlcfg,输入以下命令:

hdlcfg。LoopOptimization =“UnrollLoops”;%展开循环
hdlcfg。LoopOptimization =“StreamLoops”;%流循环
hdlcfg。LoopOptimization =“LoopNone”;%不循环优化

本地环路优化

学习如何优化特定MATLAB循环,明白了coder.hdl.loopspec

请注意

如果你指定coder.unroll编译指示,这杂注优先于coder.hdl.loopspeccoder.hdl.loopspec没有效果。

限制MATLAB循环优化

高密度脂蛋白编码器不能流一个循环:

  • 循环索引项。每次迭代循环指数必须增加1。

  • 有两个或两个以上在同一层级嵌套循环在另一个循环。

  • 任何特定的持久性变量是内外循环更新。

  • 持久变量被初始化为一个非零值更新内部循环。

高密度脂蛋白编码器可以流循环时持久的变量:

  • 更新后的内循环和阅读外循环。

  • 读内循环和更新外循环。

你不能使用coder.hdl.loopspec(流)编译指示:

  • 子功能。您必须指定在顶级MATLAB设计功能。

  • 的循环嵌套在另一个循环。

  • 对于包含嵌套循环的循环,除非流系数等于迭代的数量。

另请参阅