我有以下类型声明:
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 => ???
);
重点是我不知道如何创建数组文字。
请不要介意我使用两个单独的字段来处理子集中的单词,而我可能对缓存集和子集执行相同的操作......重点是我还将为单词应用数组在一个子集......
答案 0 :(得分:2)
你可以这样做:
library ieee;
use ieee.std_logic_1164.all;
package test is
subtype w32 is std_logic_vector(31 downto 0);
type cachesubset is record
tag : std_logic_vector(3 downto 0);
word0 : w32;
word1 : w32;
dirty : std_logic;
valid : std_logic;
end record;
type subsetst is array (0 to 1) of cachesubset;
type cacheset is record
lru : std_logic;
subsets : subsetst;
end record;
constant empty_cachesubset : cachesubset := (
tag => (others => '0'),
word0 => (others => '0'),
word1 => (others => '0'),
dirty => '0',
valid => '0'
);
constant empty_cacheset : cacheset := (
lru => '0',
subsets => (
0 => empty_cachesubset,
1 => (
tag => (others => '0'),
word0 => (others => '0'),
word1 => (others => '0'),
dirty => '0',
valid => '0'
)
)
);
end package test;
答案 1 :(得分:0)
subsets => ???
最简单的方法是将数组中的每个条目设置为相同的值...
subsets => (others => empty_cachesubset);
正如另一个答案所示,您可以将单个元素设置为不同的值 - 然后使用“其他”来默认其余元素。