次の型宣言があります。
type cachesubset is record
tag : std_logic_vector(3 downto 0);
word0 : w32;
word1 : w32;
dirty : std_logic;
valid : std_logic;
end record;
type cacheset is record
lru : std_logic;
subsets: array(0 to 1) of cachesubset
end record;
空のキャッシュセット定数を定義したい:
constant
empty_cachesubset : cachesubset := (
tag => "0000",
word0 => "00000000000000000000000000000000",
word1 => "00000000000000000000000000000000",
dirty => '0',
valid => '0'
);
constant
empty_cacheset : cacheset := (
lru => '0',
subsets => ???
);
ポイントは、配列リテラルの作成方法がわからないことです。
いくつかのメモ...
サブセット内の単語をアドレス指定するために 2 つの別個のフィールドを使用しているという事実を気にしないでください。ただし、キャッシュセットとサブセットに対しても同じことを行う可能性があります。ポイントは、サブセット内の単語にも配列を適用することです。 ...