多次元配列の信号および変数のコード例 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: 合成 (UG901)

Document ID
UG901
Release Date
2023-11-01
Version
2023.2 日本語
  1. 次のように宣言するとします。
    subtype WORD8 is STD_LOGIC_VECTOR (7 downto 0);
    type TAB05 is array (4 downto 0) of WORD8;
    type TAB03 is array (2 downto 0) of TAB05;
    signal WORD_A : WORD8;
    signal TAB_A, TAB_B : TAB05;
    signal TAB_C, TAB_D : TAB03;
    constant CNST_A : TAB03 := (
    ("00000000","01000001","01000010","10000011","00001100"),
    ("00100000","00100001","00101010","10100011","00101100"),
    ("01000010","01000010","01000100","01000111","01000100"));
    
  2. これで次を指定できるようになります。
    • 多次元配列の信号または変数:
      TAB_A <= TAB_B; TAB_C <= TAB_D; TAB_C <= CNST_A;
    • 1 配列のインデックス:
      TAB_A (5) <= WORD_A; TAB_C (1) <= TAB_A;
    • 最大次元数のインデックス:
      TAB_A (5) (0) <= '1'; TAB_C (2) (5) (0) <= '0'
    • 最初の配列のスライス:
      TAB_A (4 downto 1) <= TAB_B (3 downto 0);
    • 高次元配列のインデックスと低次元配列のスライス:
      TAB_C (2) (5) (3 downto 0) <= TAB_B (3) (4 downto 1); TAB_D (0) (4) (2 downto 0)
      \\ <= CNST_A (5 downto 3)
  3. 次の宣言を追加します。
    subtype MATRIX15 is array(4 downto 0, 2 downto 0) of STD_LOGIC_VECTOR (7 downto 0);
    signal MATRIX_A : MATRIX15;
  4. これで次を指定できるようになります。
    • 多次元配列の信号または変数:

      
      MATRIXA <= CNST_A
    • 配列の 1 行のインデックス:

      
      MATRIXA (5) <= TAB_A;
    • 最大次元数のインデックス:

      
      MATRIXA (5,0) (0) <= '1';
注記: インデックスは、変数にできます。