流媒体是一种区域优化,其中HDL Coder™将一个矢量数据路径转换为一个标量数据路径(或几个更小的矢量数据路径)。默认情况下,生成HDL编码器完全平行实现向量计算。例如,代码生成器将向量和实现为几个加法器,在单个时钟周期内并行执行。这种技术可能会消耗很多硬件资源。与流,产生的代码节省芯片区域通过多路复用数据在共享硬件资源的更小数目。
通过指定一个流的因素对于子系统,您可以控制这些资源在该子系统中共享的程度。当流媒体因子比率(N圣
)至子系统数据路径宽度(V昏暗的
)为1:1,HDL编码器实现了一个完全标量的数据路径。流因子0(默认值)为向量计算生成一个完全并行的实现(即,不共享)。
如果您知道一个子系统的最大向量维数和采样率,您就可以计算该子系统的可能流因子和结果采样率。然而,即使请求的流元素在数学上是可能的,子系统也必须满足流的其他标准。
默认情况下,当应用流优化时,HDL编码器对共享硬件资源进行过采样,以生成具有原始延迟的区域优化实现。如果流数据路径的运行速度低于基准速率,则代码生成器将以基准速率实现数据路径。您还可以限制过采样比率以满足目标硬件时钟约束。想了解更多,请看时钟频率流水线。
您可以生成并使用验证模型来验证优化的DUT的输出是否与原始DUT产生的结果完全一致。要了解有关验证模型的更多信息,请参见生成的模型和验证模型。
要从用户界面指定流媒体:
在应用程序选项卡上,选择高密度脂蛋白编码器。的HDL代码选项卡出现了。选择子系统、模型引用或MATLAB函数方块,然后点击高密度脂蛋白块属性。在StreamingFactor字段中,输入要流化的资源数量。
为MATLAB函数块,以指定StreamingFactor,在“HDL块属性”对话框中,必须将该块的HDL体系结构设置为MATLAB Datapath公司
。
右键单击子系统、模型引用或MATLAB函数块,并选择HDL代码>高密度脂蛋白块属性。在StreamingFactor字段中,输入要流化的资源数量。
在命令行,您可以设置StreamingFactor
使用hdlset_param
函数,如下例所示。
modelname =“sfir_fixed”dut =“sfir_fixed / symmetric_fir”;open_system modelname hdlset_param (dut,“StreamingFactor”4);
在一个给定的子系统中,如果N圣
是流媒体因素,和V昏暗的
为向量的最大维数,则生成的流子系统的数据路径为:
的宽度V流
= (V昏暗的
/
N圣
),如果V昏暗的
>N圣
。
的宽度V流
= (N圣
/ V昏暗的
),如果N圣
>V昏暗的
。
标量。
如果原始数据路径在一个采样时间内运行,年代
,等于基采样时间,则流子系统的采样时间为:
S / N圣
,如果V昏暗的
>N圣
。
S / V昏暗的
,如果N圣
>V昏暗的
。
如果原始数据路径在一个采样时间内运行,年代
,它大于基线采样时间,年代基地
,则流的子系统以采样时间为年代基地
/过采样
。注意,流采样时间独立于原始采样时间,年代
。
HDL编码器支持许多万博1manbetx块流。作为最佳实践,运行checkhdl
在为子系统生成流代码之前调用。checkhdl
报告子系统中与流不兼容的块。如果您为包含不兼容块的子系统初始化流代码生成,编码器将围绕这些块工作,并为它们生成非流代码。
HDL编码器不能将流优化应用于模型引用。
在应用流化之前,HDL编码器对要流化的子系统执行一系列检查。你可以流一个子系统,如果:
流的因素N圣
是向量宽度的完美除数吗V昏暗的
,或者向量宽度必须是流因子的完美除数。
子系统的所有输入都具有相同的矢量大小。如果输入具有不同的向量大小,您可以通过扁平化子系统层次结构来流化子系统。当您将层次结构扁平化时,流优化将识别具有不同向量大小的区域,并为这些区域创建流组。这些组具有从向量大小推断出的不同流因子。
要查看报表中的流信息,在为每个子系统或模型引用生成代码之前,请启用优化报表。要启用此报表,请在HDL代码选项卡上,选择报告选项,然后选择生成优化报告。
生成优化报告时,在流和共享节中,您将看到流优化的效果。如果流媒体不成功,报告将显示导致流媒体失败的诊断消息和违规块。当请求的流因子无法实现时,HDL编码器生成非流的代码。
如果流化成功,则报告显示StreamingFactor和一个表,它指定:
集团:一组Simulink的唯一组ID万博1manbetx®属于流组的块。
推断出流系数:串流因素推断由HDL编码器与流的因素您在HDL块属性中指定的。
要查看属于Simulink模型和生成的模型中的流组的块组,单击万博1manbetx突出显示流组和诊断链接到报告中。