Main Content

数値型および列挙型の 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.

参考

|

関連するトピック