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