数値型および列挙型の Multiport Switch ブロックの推奨されるブロック パラメーター設定
ガイドライン ID
2.3.2
重大度
Recommended
説明
HDL コード生成用のモデルで複数の入力信号を切り替えるには、Switch、Multiport Switch、および Index Vector の各ブロックを使用できます。Index Vector ブロックは、[データ端子数] が 1
に設定された Multiport Switch ブロックと等価です。
Multiport Switch ブロックには数値データ型と列挙データ型を使用できます。数値データ型を使用する場合は、Multiport Switch ブロックの [ブロック パラメーター] ダイアログ ボックスで、[データ端子の順序] を Zero-based contiguous
、[default ケースのデータ端子] を Last data port
に設定します。入力信号の数が 2 のべき乗の場合、Zero-based contiguous
モードにすると制御端子のビット数が最小になります。
数値型を使用した Multiport Switch ブロックの使用例については、モデル hdlcoder_multiport_switch_numeric
を開きます。
open_system('hdlcoder_multiport_switch_numeric') set_param('hdlcoder_multiport_switch_numeric', 'SimulationCommand', 'Update')
DUT
サブシステムには、Multiport Switch ブロックと Index Vector ブロックが含まれています。
open_system('hdlcoder_multiport_switch_numeric/DUT')
DUT の HDL コードを生成するには、関数 makehdl
を実行します。
makehdl('hdlcoder_multiport_switch_numeric/DUT')
### Working on the model <a href="matlab:open_system('hdlcoder_multiport_switch_numeric')">hdlcoder_multiport_switch_numeric</a> ### Generating HDL for <a href="matlab:open_system('hdlcoder_multiport_switch_numeric/DUT')">hdlcoder_multiport_switch_numeric/DUT</a> ### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_multiport_switch_numeric', { 'HDL Code Generation' } )">hdlcoder_multiport_switch_numeric</a> for HDL code generation parameters. ### Running HDL checks on the model 'hdlcoder_multiport_switch_numeric'. ### Begin compilation of the model 'hdlcoder_multiport_switch_numeric'... ### Working on the model 'hdlcoder_multiport_switch_numeric'... ### Working on... <a href="matlab:configset.internal.open('hdlcoder_multiport_switch_numeric', 'GenerateModel')">GenerateModel</a> ### Begin model generation 'gm_hdlcoder_multiport_switch_numeric'... ### Copying DUT to the generated model.... ### Model generation complete. ### Generated model saved at <a href="matlab:open_system('hdlsrc/hdlcoder_multiport_switch_numeric/gm_hdlcoder_multiport_switch_numeric.slx')">hdlsrc/hdlcoder_multiport_switch_numeric/gm_hdlcoder_multiport_switch_numeric.slx</a> ### Begin Verilog Code Generation for 'hdlcoder_multiport_switch_numeric'. ### Working on hdlcoder_multiport_switch_numeric/DUT as hdlsrc/hdlcoder_multiport_switch_numeric/DUT.v. ### Code Generation for 'hdlcoder_multiport_switch_numeric' completed. ### Generating HTML files for code generation report at <a href="matlab:hdlcoder.report.openDdg('/tmp/Bdoc24a_2528353_2763773/tp70c033e0/hdlcoder-ex69164871/hdlsrc/hdlcoder_multiport_switch_numeric/html/hdlcoder_multiport_switch_numeric_codegen_rpt.html')">hdlcoder_multiport_switch_numeric_codegen_rpt.html</a> ### Creating HDL Code Generation Check Report file:///tmp/Bdoc24a_2528353_2763773/tp70c033e0/hdlcoder-ex69164871/hdlsrc/hdlcoder_multiport_switch_numeric/DUT_report.html ### HDL check for 'hdlcoder_multiport_switch_numeric' complete with 0 errors, 0 warnings, and 0 messages. ### HDL code generation complete.
Multiport Switch への入力として列挙型を使用する場合は、[データ端子の順序] を Specify Indices
に設定します。列挙クラスは MATLAB® ファイルで定義します。default ケースを使用する場合は、[default ケースの診断] を Warning
または None
に設定します。
列挙型を使用した Multiport Switch ブロックの使用例については、モデル hdlcoder_multiport_switch_enum
を開きます。次のコードは、MATLAB で定義されている列挙クラスを示しています。
classdef BasicColors < Simulink.IntEnumType enumeration Red(0) Yellow(1) Blue(2) end methods (Static) function retVal = getDefaultValue() retVal = BasicColors.Blue; end end end
モデル hdlcoder_multiport_switch_enum
を開きます。
open_system('hdlcoder_multiport_switch_enum') set_param('hdlcoder_multiport_switch_enum', 'SimulationCommand', 'Update')
DUT
サブシステムには、2 つの Multiport Switch ブロックが含まれています。2 つ目の Multiport Switch ブロックの [データ端子の順序] が Specify Indices
に設定されています。
open_system('hdlcoder_multiport_switch_enum/DUT')
DUT の HDL コードを生成するには、関数 makehdl
を実行します。
makehdl('hdlcoder_multiport_switch_enum/DUT')
### Working on the model <a href="matlab:open_system('hdlcoder_multiport_switch_enum')">hdlcoder_multiport_switch_enum</a> ### Generating HDL for <a href="matlab:open_system('hdlcoder_multiport_switch_enum/DUT')">hdlcoder_multiport_switch_enum/DUT</a> ### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_multiport_switch_enum', { 'HDL Code Generation' } )">hdlcoder_multiport_switch_enum</a> for HDL code generation parameters. ### Running HDL checks on the model 'hdlcoder_multiport_switch_enum'. ### Begin compilation of the model 'hdlcoder_multiport_switch_enum'... ### Begin compilation of the model 'hdlcoder_multiport_switch_enum'... ### Working on the model 'hdlcoder_multiport_switch_enum'... ### Working on... <a href="matlab:configset.internal.open('hdlcoder_multiport_switch_enum', 'GenerateModel')">GenerateModel</a> ### Begin model generation 'gm_hdlcoder_multiport_switch_enum'... ### Copying DUT to the generated model.... ### Model generation complete. ### Generated model saved at <a href="matlab:open_system('hdlsrc/hdlcoder_multiport_switch_enum/gm_hdlcoder_multiport_switch_enum.slx')">hdlsrc/hdlcoder_multiport_switch_enum/gm_hdlcoder_multiport_switch_enum.slx</a> ### Begin VHDL Code Generation for 'hdlcoder_multiport_switch_enum'. ### Working on hdlcoder_multiport_switch_enum/DUT as hdlsrc/hdlcoder_multiport_switch_enum/DUT.vhd. ### Generating package file hdlsrc/hdlcoder_multiport_switch_enum/DUT_pkg.vhd. ### Code Generation for 'hdlcoder_multiport_switch_enum' completed. ### Generating HTML files for code generation report at <a href="matlab:hdlcoder.report.openDdg('/tmp/Bdoc24a_2528353_2763773/tp70c033e0/hdlcoder-ex69164871/hdlsrc/hdlcoder_multiport_switch_enum/html/hdlcoder_multiport_switch_enum_codegen_rpt.html')">hdlcoder_multiport_switch_enum_codegen_rpt.html</a> ### Creating HDL Code Generation Check Report file:///tmp/Bdoc24a_2528353_2763773/tp70c033e0/hdlcoder-ex69164871/hdlsrc/hdlcoder_multiport_switch_enum/DUT_report.html ### HDL check for 'hdlcoder_multiport_switch_enum' complete with 0 errors, 0 warnings, and 0 messages. ### HDL code generation complete.