このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
ブロック実装パラメーターにより,特定のブロック実装用に生成されたコードの詳細を制御できます。GUIまたはコマンドラインからブロック実装およびパラメーターを選択する方法については,HDLモデルモデルおよびブロックパラメーターパラメーターのとを参照してください。
プロパティ名は文字ベクトルとして指定します。プロパティ値のデータ型はプロパティに固有です。この節では,各ブロック実装パラメーターの構文およびパラメーターが生成コードに与える影響について説明します。
ライブラリブロックのHDLブロックプロパティは,マスクパラメーターと同様に扱われます。モデルでライブラリブロックをインスタンス化する場合,そのライブラリブロックの現在のHDLブロックプロパティは,モデルのそのブロックのインスタンスにコピーされます。それらのインスタンスのHDLブロックプロパティは,ライブラリブロックのHDLブロックプロパティと同期していません。つまり,ライブラリブロックのHDLブロックプロパティを変更すると,この変更は仿真软件金宝app®モデルに既に追加されているライブラリブロックのインスタンスには伝播されません。ライブラリブロックのHDLブロックプロパティをモデル内のそのインスタンスと同期させる場合、子系统を作物成しから,このブロックをその子系统ライブラリ内ブロック内にあるブロックののブロックプロパティあるブロックのブロックブロックプロパティはのと内の対応するとししの対応するとししプロパティ
高密度脂蛋白アーキテクチャが模块
に设定されている子系统ブロックがライブラリに含まれているとします。このブロックをモデルでインスタンス化する場合,ブロックのインスタンスはHDLアーキテクチャとして模块
を使用します。ライブラリ内の子系统ブロックのHDLアーキテクチャを黑盒子
に変更しても,モデル内のその子系统ブロックの既存のインスタンスは,高密度脂蛋白アーキテクチャとして模块
を引き続き使用します。モデルでライブラリから子系统ブロックのインスタンスを追加すると,新しいブロックのインスタンスは,現在のHDLブロックプロパティのコピーを取得します。したがって,高密度脂蛋白アーキテクチャとして黑盒子
を使用します。ライブラリ内の子系统ブロックブロックHDLアーキテクチャをモデルののインスタンスインスタンスと同させるせるは,必要なhdlアーキテクチャこのこの子系统内内含まれる,ラッパーサブシステムを作用成し。
AdaptivePipelining
サブシステムパラメーターにより,モデル内のサブシステムに適応パイプラインを設定できます。
适応パイプライン设定 | 说明 |
---|---|
“继承” (既定の設定) |
親サブシステムの適応パイプライン設定を使用します。このサブシステムが最上位のサブシステムの場合,モデルの適応パイプライン設定を使用します。 |
'在' |
このサブシステムに適応パイプラインを挿入します。 |
“关闭” |
親サブシステムで適応パイプラインが有効になっている場合でも,このサブシステムに適応パイプラインを挿入しません。 |
モデル内のサブシステムに対して適応パイプラインを無効にするには,そのサブシステムの適用パイプラインパラメーターAdaptivePipelining
を“关闭”
に設定します。
モデルレベルの適応パイプラインの設定方法については,適応パイプラインを参照してください。
(高密度脂蛋白ブロックプロパティ]ダイアログボックスからサブシステムの適応パイプラインを設定するには,次の手順に従います。
サブシステムを右クリックして(高密度脂蛋白コード](高密度脂蛋白ブロックプロパティ]を选択します。
(AdaptivePipelining)で,(继承)那(上)または(关闭)を选択します。
コマンドラインからサブシステムの適応パイプラインを設定するには,hdlset_param
を使用します。たとえば,サブシステムmy_dut
の適応パイプラインをオフにするには,次の手順に従います。
hdlset_param (“my_dut”那“AdaptivePipelining”那“关闭”)
hdlset_param
も参照してください。
BalanceDelays
サブシステムパラメーターにより,モデル内のサブシステムの遅延の均衡化を設定できます。
BalanceDelaysの設定 | 说明 |
---|---|
“继承” (既定の設定) |
親サブシステムの遅延の均衡化の設定を使用します。このサブシステムが最上位のサブシステムの場合,モデルの遅延の均衡化の設定を使用します。 |
'在' |
サブシステムの遅延を均衡化します。 |
“关闭” |
亲ても,ても,このませんはませもんませませんませませませんしませませませませませしませ |
モデル内の任意のサブシステムの遅延の均衡化を無効にするには,モデルレベルの遅延の均衡化パラメーターBalanceDelays
を“关闭”
に設定しなければなりません。遅延の均衡化がモデルで有効になっている場合、個々のサブシステムでの遅延の均衡化の設定は無視されます。
モデルレベルの遅延の均衡化の設定方法については,遅延の均衡化を参照してください。
(高密度脂蛋白ブロックプロパティ]ダイアログボックスを使用してサブシステムの遅延の均衡化を設定するには,以下のようにします。
サブシステムを右クリックますます。
(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
(BalanceDelays)の(继承)那(上)または(关闭)を选択します。
コマンドラインからサブシステムの遅延の均衡化を設定するには,hdlset_param
を使用します。たとえば,サブシステムmy_dut
の遅延の均衡化を無効にするには,次のようにします。
hdlset_param (“my_dut”那“BalanceDelays”那“关闭”)
hdlset_param
も参照してください。
ClockRatepipelining.
サブシステムパラメーターにより,モデル内のサブシステムのクロックレートパイプラインを設定できます。
クロックレートパイプラインの設定 | 说明 |
---|---|
“继承” (既定の設定) |
親サブシステムのクロックレートパイプライン設定を使用します。このサブシステムが最上位のサブシステムの場合,モデルのクロックレートパイプライン設定を使用します。 |
'在' |
このサブシステムにクロックレートパイプラインを挿入します。 |
“关闭” |
親サブシステムでクロックレートパイプラインが有効になっている場合でも,このサブシステムにクロックレートパイプラインを挿入しません。 |
モデル内のサブシステムのクロックレートパイプラインを無効にするには,そのサブシステムのクロックレートパイプラインパラメーター,ClockRatepipelining.
を“关闭”
に設定します。
モデルモデルレベルのクロッククロックレートパイプラインを设定方法についてについて,クロックレートパイプラインを参照してください。
(高密度脂蛋白ブロックプロパティ]ダイアログボックスを使用してサブシステムのクロックレートパイプラインを設定するには,以下のようにします。
サブシステムを右クリックますます。
(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
[ClizeRatepipelining]で,(继承)那(上)那(关闭)のいずれかを選択します。
コマンドラインからサブシステムのクロックレートパイプラインを設定するには,hdlset_param
を使用します。たとえば,サブシステムmy_dut
のクロックレートパイプラインをオフにするには,以下のようにします。
hdlset_param (“my_dut”那“ClockRatePipelining”那“关闭”)
hdlset_param
も参照してください。
多端口交换机ブロックを使用する場合,CodingStyle
パラメーターを使用して,if - elseまたは案例ステートメントを含むHDLコードを生成するかどうかを指定します。既定では,高密度脂蛋白编码器™はif - elseステートメントを生成します。モデルに複数の多端口交换机ブロックが存在する場合,各ブロックで異なるCodingStyle
を指定できます。
CodingStyleの設定 | 说明 |
---|---|
“ifelse_stmt” (既定値) |
Verilogコードでif - elseステートメントを生成するか,多端口交换机ブロックの硬件描述语言(VHDL)コードで什么时候ステートメントを生成します。 |
'case_stmt' |
Verilogコードで案例ステートメントを生成するか,多端口交换机ブロックの硬件描述语言(VHDL)コードで情况ステートメントを生成します。 |
(高密度脂蛋白ブロックプロパティ]ダイアログボックスを使用して多端口交换机にCodingStyleを設定するには,次のようにします。
多端口交换机ブロックを右クリックします。
(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
(CodingStyle)で,(ifelse_stmt)
または(case_stmt)
を选択します。
コマンドラインからサブシステムに指定したCodingStyle
を確認するには,hdlget_param
たとえば,サブシステム内たとえば多端口交换机ブロックブロックに指定しした设定を确认するに,my_dut
は次のようになります。
hdlget_param (“my_dut /多端口切换”那“CodingStyle”)
ans = ' case_stmt '
hdlset_param
も参照してください。
ConstmulliplierOptimization.
実装パラメーターを使用すると,生成されるコードの係数乗算器演算の最適化に,正準型符号付き桁数(CSD)または因数分解されたCSDを使用することを指定できます。
次の表は,ConstmulliplierOptimization.
パラメーターの値を説明しています。
ConstmulliplierOptimizationのの. | 说明 |
---|---|
'没有任何' (既定値) |
既定では,高密度脂蛋白编码器はCSDとFCSDのいずれの最適化も実行しません。获得ブロック用に生成されたコードは乗算器の演算を維持します。 |
“CSD” |
このオプションを指定すると,生成されたコードは正準型符号付き桁数(CSD)手法を使用して,クロック速度を維持または増加しながらモデルで使用される面積を減少します。CSDは乗算器の演算を加算および減算演算で置換します。CSDでは2進数を最小限のカウントでゼロ以外の桁によって表現することで,定数乗算に必要な加算演算の数を最小に抑えます。 |
“FCSD” |
このオプションは,乗算器の演算を特定のオペランドの素因数のシフトおよび加算/減算演算で置換する,因数分解されたCSD (FCSD)手法を使用します。これらの因数は一般的には素因数ですが,面積の削減にとって有利となる2のべき乗に近い数値の場合もあります。このオプションを使用するとCSDよりも大幅に面積を削減できますが,クロック速度は低下します。 |
'汽车' |
このオプションを選択すると,高密度脂蛋白编码器によって,CSDまたはFCSDの最適化が自動的に選択されます。必要な加算器の数に基づいて,最も面積効率の高い実装を得られる最適化が選択されます。 |
ConstmulliplierOptimization.
パラメーターは,次のブロックで使使用できでき。
获得
Stateflow®图表
真理表
MATLAB函数
MATLAB系统
ConstrainedOutputPipeline
パラメーターパラメーターを使,ブロックブロック力に配置レジスタ非负非负ののを指定しししし
高密度脂蛋白编码器は,制約を満たすために設計内の既存の遅延を移動します。新しいレジスタは追加されません。制約を満たすにはレジスタが不足している場合は,出力レジスタの必要な数と実際の数の差がレポートされます。設計に遅延を追加するには,入力パイプラインまたは出力パイプラインを使用します。
制約付き出力パイプラインで指定したレジスタは,分散型パイプライン方式では再分布されません。
GUIを使用してブロックの制約付き出力パイプラインを指定するには,以下のようにします。
ブロックを右クリックし,(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
(ConstrainedOutputPipeline)に出力端子に配置するレジスタの数を入力します。
制約付き出力パイプラインを指定するには,コマンドラインに以下を入力します。
hdlset_param (path_to_block“ConstrainedOutputPipeline”number_of_output_registers)
mymodel
のサブシステム中高
の出力端子でレジスタを6つに制約するには,次のように入力します。hdlset_param ('mymodel / subsys'那“ConstrainedOutputPipeline”6)
DistributedPipelining
パラメーターにより,パイプラインレジスタの分布,つまりクリティカルパスを減らしてクロック速度を高めることができる速度の最適化が可能です。
次の表はDistributedPipelining
およびOutputPipeline
パラメーターが与える影響の説明です。
DistributedPipelining | OutputPipeline, nStages | 結果 |
---|---|---|
“关闭” (既定の設定) |
指定なし(第一个 の既定値は0) |
パイプラインレジスタを挿入しません。 |
第一个 > 0 |
本製品はサブシステム,MATLAB函数ブロックまたはStateflowチャートの出力で第一个 個の出力レジスタを挿入します。 |
|
'在' |
指定なし(第一个 の既定値は0) |
パイプラインレジスタを挿入しません。DistributedPipelining は無効になります。 |
第一个 > 0 |
本製品はクリティカルパスの解析に基づいて,サブシステム,MATLAB函数ブロックまたはStateflowチャート内に第一个 个のレジスタを分布します。 |
分散型パイプライン方式で生成されたコードをさらに最適化するには,可能な場合はRTLの合成中にリタイミングを実行します。
ヒント
パイプラインレジスタを挿入した場合,最初は出力データが無効の状態になることがあります。初期の無効なサンプルによってテストベンチでエラーが発生しないように,これらのサンプルに対して出力チェックを無効にします。詳細については,出力データのチェックを無視(サンプル数)を参照してください。
設計での行列乗算に产品ブロックを使用する場合,Dot下载188bet金宝搏ProductStrategy
をを使て,行程乘算をを装配。
次の表は,Dot下载188bet金宝搏ProductStrategy
オプションのリストです。
Dot下载188bet金宝搏ProductStrategyの値 | 说明 |
---|---|
完全平行的 (既定の設定) |
行列乗算演算を乗算器と加算器に拡張します。たとえば,2つの2 行 2 列の行列を乗算する場合、結果を計算するために 8 つの乗算器と 4 つの加算器が実装に使用されます。 メモ
|
'串行乘法积累' |
Multiply-Accumulateブロックの[シリアル]アーキテクチャを使用して,行列乗算を実装します。 このアーキテクチャでは,クロックレートは,[並列]。 |
'并行乘法积累' |
Multiply-Accumulateブロックの[並列]アーキテクチャを使用して,行列乗算を実装します。 |
DSPStyle
を使用すると,設計内で使用されている乗算器のマッピングの合成属性を含むコードを生成できます。特定のブロックの乗算器を,ハードウェア上でDSPとロジックのどちらにマッピングするかを選択できます。
赛灵思公司®のターゲットの場合,生成されたコードではuse_dsp.
属性が使用されます。阿尔特拉®のターゲットの場合,生成されたコードではmultstyle
属性が使用されます。
次の表は,DSPStyle
オプションのリストです。
DSPStyleの値 | 说明 |
---|---|
'没有任何' (既定の設定) |
DSPマッピングの合成属性は插入さません。 |
'在' |
ハードウェア内のDSPにマッピングすることを合成ツールに指示する合成属性が挿入されます。 |
“关闭” |
ハードウェア内のロジックにマッピングことこと合成ツールに指示合成属性が插入されれれれれ |
DSPStyle
パラメーターは,次のブロックで使使用できでき。
获得
产品
(架构)が[树]に設定されている产品的元素
子系统
原子子系统
不同的子系统
启用子系统
触发子系统
模型([架构]がModelReference
に設定されている場合)
既定户外DSPStyle
が設定されているサブシステムに階層のフラット化を指定した場合,高密度脂蛋白编码器はそのDSPStyle
の設定を親サブシステムまで伝播します。
フラットにしたサブシステムに获得那产品または产品的元素ブロックが含まれる場合,それらがもつ既定以外のDSPStyle
設定は維持され,既定のDSPStyle
設定は,フラットにしたサブシステムのDSPStyle
設定に置換されます。
合成属性の生成コードは次に依存します。
ターゲット言語
DSPStyle
値
合成霉素
値
次の表は,生成されたコードにおける合成属性の例を示しています。
DSPStyleの値 | 开发の値 | SynthesisToolの値 | |
---|---|---|---|
“阿尔特拉第四的二世” |
“Xilinx ISE” “Xilinx Vivado” |
||
'没有任何' |
“Verilog” |
|
|
硬件描述语言(VHDL)的 |
|
|
|
'在' |
“Verilog” |
|
|
硬件描述语言(VHDL)的 |
|
|
|
“关闭” |
“Verilog” |
|
|
硬件描述语言(VHDL)的 |
|
|
合成霉素
プロパティを使用して,合成ツールを指定しなければなりません。
(高密度脂蛋白ブロックプロパティ]ダイアログボックスを使用して合成属性を指定するには,次の手順に従います。
ブロックを右クリックします。
(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
(DSPStyle)で[オン]那[オフ]または[なし]を选択します。
コマンドラインから合成属性を指定するには,hdlset_param
を使用します。たとえば,モデルmy_model
があり,DUTサブシステムmy_dut
そこ使はれししししししはしははははは,获得ブロックmy_multiplier
が含まれているとします。my_multiplier
をDSPにマッピングするための合成属性を挿入するには,次のように入力します。
hdlset_param (“my_model / my_dut / my_multiplier”那“DSPStyle”那'在')
hdlset_param
も参照してください。
既定户外DSPStyle
ブロックプロパティを指定する場合,ConstmulliplierOptimization.
プロパティは,'没有任何'
に設定しなければなりません。
乗算器コンポーネントへの入力に双
のデータ型は使使ん。
获得定数は2のべき乗にはできません。
FlattenHierarchy
により,設計から生成されたHDLコードのサブシステム階層を削除できます。
FlattenHierarchyの設定 | 说明 |
---|---|
“继承” (既定の設定) |
親サブシステムの階層のフラット化の設定を使用します。このサブシステムが最上位のサブシステムである場合は,フラットにしません。 |
'在' |
このサブシステムをフラットにします。 |
“关闭” |
親サブシステムをフラットにする場合でも,このサブシステムはフラットにしません。 |
また,階層をフラットにするには,MaskParameterAsGeneric
グローバルプロパティが“关闭”
に設定されていなければなりません。詳細については,マスクされたサブシステムからのパラメーター化されたHDLコードの生成を参照してください。
[HDLブロックプロパティ]ダイアログダイアログを使使使しフラットのフラットフラットフラット设定するははははは,次の手顺に。
[アプリ]タブで,(高密度脂蛋白编码器)を选択します。(高密度脂蛋白コード]タブが表示されます。子系统を選択し,(高密度脂蛋白ブロックプロパティ]をクリックします。[扁平主机]で(上)那(关闭)または(继承)を选択します。
子系统を右クリックし,(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。[扁平主机]で(上)那(关闭)または(继承)を选択します。
コマンドラインから階層のフラット化を設定するには,hdlset_param
を使用します。たとえば,サブシステムmy_dut
のの阶层のフラットを有效にするは,次のコマンドコマンド使使。
hdlset_param (“my_dut”那'flattenhierarchy'那'在')
hdlset_param
も参照してください。
サブシステムが次に該当する場合は,フラットにできません。
同步子系统または国家控制ブロックを同步
モードで使用する場合
モデル参照の実装。
トリガー信号をクロックとして使用が有効な場合の触发子系统
次次のいずれかかを含むサブサブ
バス。
列挙データ型。
查找表ブロック:一维查找表那二维查找表那余弦HDL优化那直接LookupTable(一天)那prelookup.那正弦HDL优化那一天的查找表。
MATLAB系统ブロック。
Stateflowブロック:图表那状态转换表那顺序查看器。
パススルーおよびnop実装を使用するブロック。パススルー,没有HDL,カスケード実装を参照してください。
メモ
このオプションはコード生成の前にサブシステムの境界を除去します。完全にフラットな階層をもつHDLコードが生成されるとは限りません。
InputPipeline
。
次のコードは,モデル内の各总和ブロックに2ステージの深さの入力パイプラインを指定します。
sblocks = find_system(gcb, 'BlockType', 'Sum'); / /指定块类型for ii=1:length(sblocks),hdlset_param(sblocks{ii},'InputPipeline', 2),结束;
メモ
InputPipeline
の設定は,入力端子を持たないブロックには影響を与えません。
パイプラインレジスタのコードを生成するときに,入力または出力パイプラインレジスタの名前に接尾辞文字列が付加されます。既定の接尾辞文字列は_pipe
です。接尾辞文字列をカスタマイズするには,[コンフィギュレーションパラメーター]ダイアログボックスの[HDLコード生成]ペインにある[グローバル設定]/[一般)ペインの[パイプラインの接尾辞]あるいは,makehdl
プロパティのPipelinePostfix.
に目的の接尾辞を文字ベクトルとして渡すこともできます。例については,パイプラインの接尾辞を参照してください。
MATLAB函数ブロックでは,InstantiateFunctionsパラメーターを使用して各関数用の硬件描述语言(VHDL)®实体
またはVerilog®模块
を生成できます。高密度脂蛋白编码器は实体
または模块
ごとごとにコードをを别ファイル生成します。
MATLAB函数ブロックの[实例化文件]オプションを次の表に示します。
InstantiateFunctionsの設定 | 说明 |
---|---|
“关闭” (既定の設定) |
関数インラインのコードを生成します。 |
'在' |
関数ごとに硬件描述语言(VHDL) |
(高密度脂蛋白ブロックプロパティ]ダイアログボックスを使用して[实例化文件]パラメーターを設定するには,以下のようにします。
MATLAB函数ブロックを右クリックします。
(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
InstantiateFunctionsには(上)を选択します。
コマンドラインから[实例化文件]パラメーターを設定するには,hdlset_param
を使用します。たとえば,DUT サブシステムmyDUT
内のMATLAB函数ブロックmyMatlabFcn
で関数のインスタンス化可能なコードを生成するには,次のように入力します。
hdlset_param(“my_DUT / my_MATLABFcnBlk”、“InstantiateFunctions”,“上”)
特定の関数についてのみインスタンス化可能なコードを生成し,その他の関数については生成しない場合は,このオプションを有効にして関数に対してインスタンス化可能なコードを生成し,coder.inline
を使用します。詳細は,coder.inline
を参照してください。
このこのでは,次の场合成にコード生成され。
関数呼び出しが条件付きコードまたは为
ループの内部にある。
いずれかの関数が,非定数の塑造
入力で呼び出されている。
関数に永続変数などのステートがあり,複数回呼び出されている。
設計関数のどこかに列挙がある。
[级联]
アーキテクチャの場合,(InstantiateStages)パラメーターを使用して,硬件描述语言(VHDL)实体
またはVerilog模块
を各計算段階で生成できます。高密度脂蛋白编码器は那個別のファイルで各实体
または模块
を生成します。
InstantiateStagesの設定 | 说明 |
---|---|
“关闭” (既定の設定) |
1つの硬件描述语言(VHDL) |
'在' |
カスケードの段ごとに硬件描述语言(VHDL) |
LoopOptimization
を使用すると,MATLAB函数ブロックから生成されたコード内でループのストリームまたは展開が可能になります。ループストリーミングは面積を最適化し,ループ展開は速度を最適化します。
メモ
MATLAB函数ブロックのMATLAB Datapath公司
アーキテクチャを指定する場合,実行できるのはループの展開のみです。ループのストリームを実行するために,(StreamingFactor)を指定することでストリーミングの最適化を使用できます。MATLAB DataPathアーキテクチャアーキテクチャ使を使た,Matlab功能ブロックブロックを越えたHDL最致を参照してください。
LoopOptimizationの设定 | 说明 |
---|---|
'没有任何' (既定の設定) |
ループループを最适最适しませ |
“展开” |
ループを展開します。 |
“流” |
ループをストリームします。 |
(高密度脂蛋白ブロックプロパティ]ダイアログボックスを使用してループの最適化を選択するには,次の手順に従います。
MATLAB函数ブロックを右クリックします。
(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
(LoopOptimization)で[没有任何]
那(展开)
または(流)
を选択します。
コマンドラインからループの最適化を選択するには,hdlset_param
を使用します。たとえば,MATLAB函数ブロックmy_mlfn
のループストリーミングを有效にするには,次をを力し。
hdlset_param (“my_mlfn”那'loopoptimization'那“流”)
hdlset_param
も参照してください。
以下の综合,HDL编码器ははループををストリームませませませませませませ
ループのインデックスがカウントダウンされる場合。ループのインデックスは,各反復で1ずつ増加しなければなりません。
別のループの階層の同じレベルで複数のループが入れ子になっている場合。
特定の永続変数がループの内部と外部の両方で更新される場合。
HDL编码器は,永続销量が以ののににをストリームますますます。
ループの内部で更新され,ループの外部で読み取られる場合。
ループの内部で読み取られ,ループの外部で更新される場合。
LUTRegisterResetType
ブロックパラメーターを使使て,fpgaのrom构造构造lutををようにますにを制御ますます。
LUTRegisterResetTypeの値 | 说明 |
---|---|
默认的 |
附近地区出力レジスタに既定のリセットロジックがあります。高密度脂蛋白を生成するときに附近地区がレジスタとして合成されます。 |
没有一个 |
附近地区出力レジスタにリセットロジックがありません。高密度脂蛋白を生成するときに附近地区が罗として合成されます。 |
LUTRegisterResetType
は次のブロックに対して指定できます。
伽马校正
查找表
NCO HDL优化ブロックブロックはこのパラメーターパラメーターを无视しし
MapPersistentVarsToRAM
実装パラメーターにより,MATLAB函数ブロックの永続配列用に,レジスタへマッピングする代わりにRAMベースのマッピングを使用できます。
mappersistentvarstoramの设定 | マッピングの動作 |
---|---|
|
永続配列は生成されたHDLコード内でレジスタにマッピングされます。 |
|
永続配列変数はRAMにマッピングされます。制限事項は,RAMマッピングの制限を参照してください。 |
RAMマッピングを有象にした合书,次の条件がすべて満たさたに,永続配列配列ユーザー定义system™™ののプロパティブロックramににさブロックブロック。
それぞれの読み取りまたは書き込みアクセス権限が,単一の要素のみを対象としている。たとえば,部分行列のアクセスおよび配列のコピーはできません。
アドレスの计算ロジックない依存依存しない。たとえば,配列から読み取らたデータデータしたまたは书籍
永続変数またはユーザー定義系统对象のプライベートプロパティに循環依存がある場合,0に初期化される。たとえば2つの永続変数とBがある場合,Aがに依存し,Bがに依存していれば循環依存があります。
アクセスが条件付きステートメント内の場合,条件付きステートメントは簡単な論理式(&&
那||
那〜
)または関係演算子のみを使用している。たとえば,次のコードのr1
はRAMにマッピングされません。
if(mod(i,2)> 0)a = r1(u);Else r1(i) = u;结尾
関数を呼び出す条件などの複雑な条件は,それらを一時変数へ代入し,その一時変数を条件付きステートメント内で使用するように書き換えます。たとえば,r1
をramにマッピングするに,前述前述のコードを次のようにき换えき换えき换え
temp = mod(我,2);If (temp > 0) a = r1(u);Else r1(i) = u;结尾
永続配列またはユーザー定義系统对象のプライベートプロパティの値が外部入力に依存している。
たとえば,次のコードではbigarray
が你
に依存していないため,RAMにマッピングされません。
函数z = foo(u) persistent CNT bigarray if isempty(CNT) CNT = fi(0,1,16,10,hdlfimath);bigarray = uint8 (0 (1024 1));End z = u + cnt;idx = uint8(问);temp = bigarray (idx + 1);Cnt (:) = Cnt + fi(1,1,16,0,hdlfimath) + temp;bigarray (idx + 1) = idx;
RAMSize
はRAMMappingThreshold
の値以上である。RAMSize
は,NumElements * WordLength * Complexity
の積です。
NumElements
は配列内の要素数です。
WordLength.
は,配列のデータ型を表すビット数です。
复杂性
は,基本データ型が複素数である配列の場合2,それ以外では1です。
上記の条件のいずれかが満たされていない場合,永続配列またはユーザー定義系统对象のプライベートプロパティは,高密度脂蛋白コード内のレジスタにマップされます。
RAMMappingThreshold
256年の既定値はです。このしきい値を変更するにはhdlset_param
を使用します。たとえば,次のコマンドはsfir_fixed
モデルのマッピングのしきい値を128ビットに変更します。
hdlset_param (“sfir_fixed”那'rammapkthreshold', 128);
Ramマッピングのしきい値は[コンフィギュレーションパラメーター]ダイアログボックスで変更することできます。RAMマッピングのパラメーターの”RAMマッピングのしきい値(ビット)“を参照してください。
MATLAB函数ブロック内で永続配列のををramににマッピング方法をを明した例については,MATLAB函数ブロックを使用したRAMマッピングを参照してください。
OutputPipeline
により,選択されたブロックに対して出力パイプラインをもつ実装を指定できます。パラメーター値は,生成されたコードの出力パイプラインステージ数(パイプラインの深さ)を指定します。
次のコードは,モデル内の各各各に2ステージの深さのパイプラインを指定します。
sblocks = find_system(gcb, 'BlockType', 'Sum'); / /指定块类型for ii=1:length(sblocks),hdlset_param(sblocks{ii},'OutputPipeline', 2),结束;
メモ
OutputPipeline
の設定は,出力端子を持たないブロックには影響を与えません。
パイプラインレジスタのコードを生成するときに,入力または出力パイプラインレジスタの名前に接尾辞文字列が付加されます。既定の接尾辞文字列は_pipe
です。接尾辞文字列をカスタマイズするには,[コンフィギュレーションパラメーター]ダイアログボックスの[HDLコード生成],[グローバル设定],[一道]タブの[パイプラインの接尾辞]オプションオプション使使。代わり代わり,makehdl
でPipelinePostfix.
プロパティを使用することもできます。例については,パイプラインの接尾辞を参照してください。
MATLAB函数ブロックの分散型パイプライン挿入も参照してください。
RAMDirective
により,金宝appSimulinkモデルのramブロックを分类ram,ブロックramまたはutraramメモリにするかどうかをできます。この设定の値选択するととますます。HDL编码器はHDLコードのramstyle
属性を生成します。このこの属性,设计のramブロック推定するするに合成ツールするramメモリメモリ単位のタイプ指定しししししし
RAMDirective値 | 说明 |
---|---|
没有一个 (既定の設定) |
高密度脂蛋白コードで |
分散式 |
モデルのRAMブロックを分散RAMにマッピングするためにHDL属性を生成します。分散RAMは附近地区で構築されます。これらのRAMは高速ですが,FPGAの多数の附近地区スライスを占有します。 次の硬件描述语言(VHDL)コードは, 属性ram_style:字符串;属性ram_style的ram:信号是“分布式的”; 次のVerilogコードは, (* ram_style =“分布式”*) |
堵塞 |
モデルのRAMブロックをブロックRAMにマッピングするためにHDL属性を生成します。ブロックRAMは,FPGAデバイス上の専用メモリ単位です。使用可能なブロックRAMの数は,高密度脂蛋白コードの展開先であるFPGAデバイスによって異なります。ブロックRAMのサイズは, RAMブロックをブロックRAMにマッピングするには,次のようにします。
次の硬件描述语言(VHDL)コードは, 属性ram_style:字符串;属性ram_style的ram:信号是“块”; 次のVerilogコードは, (* ram_style = "block" *) |
极端主义者 |
モデルのRAMブロックをUltraRAMメモリにマッピングするためにHDL属性を生成します。UltraRAMは,ターゲットFPGA上の専用メモリブロックです。使用可能なUltraRAMメモリ単位の数は,高密度脂蛋白コードの展開先であるFPGAデバイスによって異なります。UltraRAM単位はブロックRAMより大きくなければならず, RAMブロックブロックUltraRAMににマッピングするに,次次のようにし
次の硬件描述语言(VHDL)コードは, 属性ram_style:字符串;属性ram_style的ram:信号是"ultra"; 次のVerilogコードは, (* ram_style = "ultra" *) |
(高密度脂蛋白公羊)ライブラリでは,双速率双端口RAMを除く,その他すべてのRAMブロックにRAMDirective
プロパティを指定できます。
[HDLブロックプロパティ]ダイアログダイアログでramブロックに対してRAMDirective
を設定するには,次を行います。
RAMブロックを右クリックします。
(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
[ramdirecective]で,[没有任何]那(分布式)那(块)または(超)を选択します。
メモ
ブロックに固定読み取り動作がないため,双端口RAMブロックには,极端主义者
をRAMDirective
として指定できません。
コマンドラインでブロックに対するRAMDirective
を設定するには,hdlset_param
たとえば,サブシステム内たとえば单独的端口内存ブロックのRAMDirective
を极端主义者
に設定するには,my_dut
は次のようになります。
hdlset_param (“my_dut /单端口内存”那“RAMDirective”那'极端主义者');
hdlset_param
も参照してください。
ResetType.
ブロックパラメーターを使用して,リセットロジックの生成を抑制します。
ResetTypeの値 | 说明 |
---|---|
默认的 |
リセットロジックを生成します。 |
没有一个 |
リセットロジックを生成しません。 生成されたレジスタにリセットは適用されません。したがって,レジスタが完全に読み込まれていない場合、初期段階のいくつかのサンプルで Simulink と生成されたコードとの間に不一致が発生します。 初期段階におけるテストベンチのエラーを回避するには,レジスタを完全に読み込むために必要なサンプル数を確認してください。次に,(出力データのチェックを無視(サンプル数))オプションを適宜設定します。テストベンチのスティミュラスおよび出力のパラメーターで(出力データのチェックを無視(サンプル数))も参照してください。 |
ResetType.
は次のブロックに対して指定できます。
图表
卷积Deinterleaver
卷积的分界
延迟
延迟(DSP系统工具箱™)
一般多路复用Deinterleaver
一般多路复用交织器
MATLAB函数
MATLAB系统
记忆
利用延迟
真理表
单位延迟启用
单位延迟
MATLAB函数ブロックの(ResetType)を[没有任何]
に設定すると,高密度脂蛋白编码器はMATLAB®コードにある永続変数のリセットロジックを生成しません。
しかし,このブロックに対して他の最適化を指定すると,リセットロジックを使用するレジスタが挿入される場合があります。これらのレジスタに対するリセットロジックの生成は抑制されません。したがって,(ResetType)を[没有任何]
に設定したうえで他のブロック最適化も加えて設定すると,生成されたコードでは最上位にリセット端子が存在する場合もあります。
UIを使用してブロックのリセットロジックの生成を抑制するには,次の手順に従います。
ブロックを右クリックし,(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
(ResetType)で[没有任何]
を选択します。
リセットロジックの生成を抑制するには,コマンドラインで次のように入力します。
hdlset_param(path_to_block,'resettype','none')
たとえば,サブシステムmySubsys
内の单位延迟ブロックUnitDelay1
のリセットロジックの生成を抑制するには,コマンドラインで次を入力します。
hdlset_param('mysubsys / unitdelay1','resettype','none');
同期または非同期リセットを指定するには,ResetType.
のモデルレベルのパラメーターを使用します。詳細については,リセット設定とパラメーターの”リセットタイプ“を参照してください。
このパラメーターを最小/最大ブロックで使用して,シリアルカスケードアーキテクチャに対してパーティションを指定します。既定の設定では最小限の数のパーティションを使用します。
生成する アーキテクチャ |
SerialPartitionのの. |
---|---|
明示的に指定された分割化を伴うカスケードシリアル | (p1 p2 p3…pN) :N 個の整数のベクトル。ここでN はシリアルパーティションの数です。ベクトルの各要素は対応するパーティションの長さを指定します。ベクトルの要素の合計数は入力データベクトルの長さに等しくなければなりません。ベクトル要素の値は降順でなければなりません。ただし,最後の2つの要素が等しくなることは可能です。たとえば8つの要素の入力では,3 [5] または(4 2 2) のパーティションは有条ですが,[2 2 2 2] または(3 2 3) のパーティションはコード生成时にエラーを生长させます。 |
自动ににされた化 | 0. |
このプロパティも,シリアルフィルターアーキテクチャで使用します。过滤器ブロックの構成方法の詳細は,SerialPartitionを参照してください。
SharingFactor.
を使用して,単一の共有リソースにマップする,機能的に同等なリソースの数を指定します。既定値は0です。リソース共有を参照してください。
SOFTRESET.
ブロックパラメーターを使用して,ハードウェア親和型の同期リセットロジックを生成するか,仿真金宝app软件のシミュレーション動作に一致するローカルリセットロジックを生成するかを指定します。このプロパティは,单位延迟可重调ブロックまたは单位延迟启用可复位ブロックで使用できます。
SoftResetの値 | 说明 |
---|---|
从 (既定の設定) |
金宝app仿真软件のシミュレーション動作に一致するローカルリセットロジックを生成します。 |
在 |
ブロックの同期リセットロジックを生成します。このオプションを選択すると,効率よく合成できるコードが生成されますが,金宝app仿真软件のシミュレーション動作とは一致しません。 |
SOFTRESET.
を“关闭”
に設定すると,单位延迟可重调ブロックに次のコードが生成されます。
always @(posedge clk或posedge reset) begin: Unit_Delay_Resettable_process if (reset == 1'b1) begin Unit_Delay_Resettable_zero_delay <= 1'b1;Unit_Delay_Resettable_switch_delay < = 2 'b00;end else begin if (enb) begin Unit_Delay_Resettable_zero_delay <= 1'b0;if (UDR_reset == 1'b1) begin Unit_Delay_Resettable_switch_delay <= 2'b00;end else begin Unit_Delay_Resettable_switch_delay <= In1;Unit_Delay_Resettable_1 = (UDR_reset || Unit_Delay_Resettable_zero_delay ?1 'b1: 1 'b0);assign out0 = (Unit_Delay_Resettable_1 == 1'b1 ?2 'b00: Unit_Delay_Resettable_switch_delay);
SOFTRESET.
を'在'
に設定すると,单位延迟可重调ブロックに次のコードが生成されます。
always @(posedge clk或posedge reset) begin: Unit_Delay_Resettable_process if (reset == 1'b1) begin Unit_Delay_Resettable_reg <= 2'b00;end else begin if (enb) begin if (UDR_reset != 1'b0) begin Unit_Delay_Resettable_reg <= 2'b00;end else begin Unit_Delay_Resettable_reg <= In1;分配out0 = Unit_Delay_Resettable_reg;
シリアルデータパスの時間多重化およびハードウェアリソースの共有により,シリアルのスカラーデータパスに変換するパラレルデータパス,つまりベクトルの数を指定します。既定値は0であり,パラレルデータパスがそのまま実装されます。ストリーミングも参照してください。
このモードは,分モードと互惠モードの产品ブロックで使用できます。ブロックのHDL アーキテクチャをShiftAdd
に設定すると,このプロパティが使用できるようになります。このアーキテクチャは,商を計算するために複数のシフト演算および加算演算を実行する,非回復除算アルゴリズムを使用します。ShiftAdd
アーキテクチャでは,ニュートン・ラフソンの近似法と比較して精度が向上しています。
ShiftAdd
アーキテクチャアーキテクチャ使用する合成,UsePipelines
実装パラメーターを使用して,非回復除算のパイプライン化実装または非パイプライン化実装を使用するかどうかを指定できます。
UsePipelines設定 | マッピングの動作 |
---|---|
|
分ブロックと互惠�の数は,アルゴリズムが商またはまたはに必要とする反复反复ににししししし。 |
|
分ブロックと互惠ブロックの非回復シフト演算および加算演算の非パイプライン化実装を使用します。この設定により,遅延が設計に追加されることはありません。除算および逆数はリソース集約的な演算であるため,ターゲットFPGAでクロック周波数をさらに高くするには(UsePipelines)を |
(高密度脂蛋白ブロックプロパティ]ダイアログボックスからサブシステムのUsePipelines
を设定するには,次の手顺に従い。
サブシステムを右クリックますます。
(高密度脂蛋白コード]那(高密度脂蛋白ブロックプロパティ]を选択します。
(UsePipelines)で,(上)または(关闭)を选択します。
コマンドラインでブロックに対するUsePipelines
を設定するには,hdlset_param
たとえば,サブシステム内たとえば分ブロックのUsePipelines
をオフにするには,my_dut
は次のようになります。
hdlset_param (“my_dut /鸿沟”那“UsePipelines”那“关闭”);
hdlset_param
も参照してください。
UseRAM
包装パラメーターにより,ブロックブロックをシフトレジスタにマッピングする代わりにににににににをををでき
UseRAMの設定 | マッピングの動作 |
---|---|
|
遅延は,一例を除いて,生成されたHDLコード内のシフトレジスタにマッピングされます。詳細は,ストリーミングおよび分散型パイプライン方式の影響を参照してください。 |
|
以以の条件真真の合书,遅延はデュアルポートramブロックにマッピングさます。
いずれかの条件が偽の場合,遅延は他の遅延とマージして単一RAMにマッピングされない限り,高密度脂蛋白コード内のシフトレジスタにマッピングされます。詳細は,复数の遅延のramへのマッピングを参照してください。 |
この実装パラメーターは模金宝app型离散ライブラリの延迟ブロックおよびDSP系统工具箱信号操作ライブラリの延迟(DSP系统工具箱)ブロックで利用できます。
高密度脂蛋白编码器では,同じ長さの複数の遅延を1つの遅延にマージしてから,単一のRAMにマップすることもできます。この最適化により以下の利点が得られます。
単一RAM上の占有領域の増加
同一HDLコードのの重复を小にする,アドレス生成ロジックの共有
”“個別の遅延がしきい値を満たさない場合の遅延のRAMへのマッピング
以下の規則により複数の遅延を1つの遅延にマージできるかどうかが制御されます。
遅延は以下を満たさなければなりません。
サブシステムの阶层で同じレベルにある。
同一のコンパイルされたサンプル時間を使用する。
UseRAM
が在
に設定されているか,ストリームまたはリソース共有によって生成される。
ResetType.
の设定が同じで,没有一个
以外に設定されている。
マージされた遅延の合計語長が128ビットを超えない。
マージされた遅延のRAMSize
がRAMMappingThreshold
の値以上である。RAMSize
は,DelayLength * WordLength * VectorLength * ComplexLength
の積です。
DelayLength
は,遅延の合計数です。
WordLength.
は,マージされた遅延のデータ型を表すビット数です。
VectorLength
は1つのベクトル遅延がもつ要素数です。VectorLength
は,スカラー遅延の場合は1です。
ComplexLength
は,複素遅延では2,それ以外では1です。
次のモデルのRAMMappingThreshold
は100ビットです。
延迟およびDelay1ブロックは以下の条件を満たすことで,マージされ,生成されたHDLコード内のデュアルポートRAMにマッピングされます。
両方の遅延ブロックが以下のとおりである。
階層内で同じレベルにある。
同一のコンパイルされたサンプル時間を使用する。
(高密度脂蛋白ブロックプロパティ]ダイアログボックスの(UseRAM)が(上)
に設定されている。
(ResetType)の设定が同じで,(默认)
になっている。
00
マージされた遅延のRAMSize
が,マッピングのしきい値100ビットを超える112ビット(遅延4つ*语长28ビット)である。
このモデルのHDLコードを生成するときに,高密度脂蛋白编码器はRAMマッピングを指定する別のファイルを生成します。本製品はこれらのファイルを他の生成されたHDLファイルと同じソースの場所,たとえばhdlsrc
フォルダーに保存します。
延迟ブロックのUseRAM
が从
の場合,既定で遅延がシフトレジスタにマップされます。ただし,以下の条件下において,本製品はUseRAM
の設定を在
に変更し,遅延をRAMにマッピングすることを試みます。
延迟ブロックをもつサブシステムのストリームが”“有効になっている。
延迟ブロックをもつサブシステムの分散型パイプライン方式が”“無効になっている。
延迟ブロックをもつサブシステムに対して分散型パイプライン方式が”“有効になっているとします。
UseRAM
が从
の場合,延迟ブロックはリタイミングに使使ます。
UseRAM
が在
の場合,延迟ブロックはリタイミングに使用されません。高密度脂蛋白编码器では那RAM マッピング対象としてマークされた遅延は分割されません。
2つの延迟ブロック3つの常数ブロック3つの产品ブロックをもつ次のサブシステムについて考えてみます。
右側の延迟ブロックのUseRAM
が在
の場合,その遅延はリタイミングに使用されません。
次の表は,どのような场合并にがレジスタではなくramにマップされるををいいますいます。
延迟ブロックのUseRAM の設定 |
延迟ブロックをもつサブシステムの最適化が有効 | ||
---|---|---|---|
分散型パイプライン方式のみ | ストリーミングのみ | 分散型パイプライン方式とストリーミングの両方 | |
オン | はい | あり | はい |
オフ | いいえ | はい。シフトレジスタの代わりにRAMにマッピングすることで面積効率の高い設計が提供されるため。 | いいえ |
警告
VariablesToPipeline
は推奨されません。代わりにcoder.hdl.pipeline
を使用してください。
VariablesToPipelineパラメーターを使用すると,1つ以上のMATLAB変数の出力にパイプラインレジスタを挿入できます。変数のリストをスペースで区切った文字ベクトルとして指定します。
matlab式のパイプラインも参照してください。