コンポーネントの interface( ) のレコードを定義するためにジェネリックを使用しようとしてport
います。以前の質問で、型ジェネリックの使用を指摘されました。ただし、レコードのフィールドにアクセスする方法がわかりません。タイプジェネリックを持つレコードの使用が促進された場合の答えは次のとおりです
次のコンポーネントを想定しています。
entity genericInput is
generic(
type recordType
);
port(
result: integer;
port: in recordType
);
end entity;
architecture behav of genericInput is
begin
result <= port.part1;
end architecture;
そして、このインスタンス化:
type myRecord is record
part1: integer;
part2: std_logic_vector(1 to 100)
end record;
inst: genericInput
generic map(recordType <= myRecord)
port map(...)
modelsim からコンパイル エラーが発生します。
** Error: ****.vhd(21): Unknown expanded name. --line on which i attempt port.part1
** Error: ****.vhd(22): VHDL Compiler exiting
Record が常にその名前のフィールドを持っていると仮定すると (vhdl2008 が利用可能)、generics によって提供されるレコードのフィールドにアクセスするにはどうすればよいですか? (レコード内のベクトルの幅を変えたくない)?
言い直された質問:一般的な幅ベクトルを持つレコードをエンティティのポートに統合する最良の方法は何ですか?