流媒体
什么是流媒体?
流媒体是一个区域优化,其中HDL Coder™将矢量数据路径转换为标量数据路径(或几个较小尺寸的矢量数据路径)。默认情况下,生成HDL Coder完全平行矢量计算的实现。例如,代码生成器将一个向量和实现为几个加法器,在单个时钟周期内并行执行。这种技术会消耗大量的硬件资源。使用流,生成的代码通过在更少的共享硬件资源上复用数据来节省芯片面积。
通过指定流的因素对于一个子系统,您可以控制在该子系统中共享这些资源的程度。当流量因子比值(N圣
)到子系统数据路径宽度(V昏暗的
)为1:1,HDL Coder实现了一个完全标量数据路径。流因子为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昏暗的
.标量。
如果对原始数据路径进行采样时间操作,年代
,即等于基采样时间,则流子系统的采样时间为:
S / n圣
,如果V昏暗的
>N圣
.S / v昏暗的
,如果N圣
>V昏暗的
.
如果对原始数据路径进行采样时间操作,年代
,大于基采样时间,年代基地
,则流子系统以采样时间为运行年代基地
/过采样
.注意,流样本时间与原始样本时间无关,年代
.
确定支持流的块金宝app
HDL Coder支金宝app持许多流的块。如果您为包含不兼容块的子系统初始化流代码生成,编码器将围绕这些块工作,并为它们生成非流代码。
HDL Coder不能将流优化应用于模型引用。
流媒体子系统要求
在应用流之前,HDL Coder对要流的子系统执行一系列检查。如果满足以下条件,您可以对子系统进行流处理:
流媒体因素
N圣
是向量宽度的完全除数吗V昏暗的
,或者向量宽度必须是流因子的完全除数。子系统的所有输入都具有相同的向量大小。如果输入具有不同的向量大小,则可以通过平展子系统层次结构来对子系统进行流处理。当您平摊层次结构时,流优化将识别具有不同向量大小的区域,并为这些区域创建流组。这些组具有不同的流因子,这些流因子是从向量大小推断出来的。
流媒体的报告
要查看报告中的流信息,在为每个子系统或模型引用生成代码之前,请启用优化报告。要启用此报告,请在HDL代码选项卡上,选择报告选项,然后选择生成优化报告.
生成优化报告时,在流媒体和共享节中,您可以看到流优化的效果。如果流处理不成功,该报告将显示导致流处理失败的诊断消息和违规块。当所请求的流因子不能实现时,HDL Coder生成非流代码。
如果流处理成功,该报告将显示StreamingFactor这是推断出来的,以及一个表,指定:
集团:一个Simulink组的唯一组ID金宝app®属于流组的块。
推断流因子:由HDL编码器推断的流因子流的因素你在HDL块属性中指定的。
要查看在Simulink模型和生成的模型中属于流媒体组的块组,请单击金宝app突出显示流组和诊断报告中的链接。