pp.25-27

よく使われるのは、列挙型、整数型、排列型、レコード型。レコード型は構造体のことか? 排列型およびレコード型はコンポジットタイプと総称される。

ということなので、無意味な型を作って無意味なことをして確かめてみる。

entity sute_vhdl is
    port(
        num_in: in integer range 0 to 15;
        
        num_in_thru: out integer range 0 to 15;
        num_out    : out integer range 0 to 15
    );
end entity;

architecture rtl of sute_vhdl is

    function thru(num: integer range 0 to 15) return integer is
       -- インデックス0~15を持つ16個の整数から成る排列型を定義して、
        type sute_type is array(0 to 15) of integer range 0 to 15;
       -- その排列型を定数として宣言して、さらに初期化して、
        constant SUTE_ARRAY: sute_type := (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
    begin
       -- 入力された整数をインデックスとする要素を返す。
        return SUTE_ARRAY(num);
    end;


begin
    num_in_thru <= num_in; -- 確認のため入力をそのまま出力する。

    process(all)
    begin
        num_out <= thru(num_in); -- 函数をコールする。
    end process;

end architecture;

今12を入力して、インデックス12の要素である12を出力している。
f:id:ti-nspire:20210708150641j:plain:w600