2

我有以下类型声明:

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 => ???
                                   );

关键是我不知道如何创建数组文字。

一些笔记...

请不要介意我使用两个单独的字段来处理子集中的单词,而我可能对缓存集和子集做同样的事情......关键是我还将为子集中的单词应用数组...

4

2 回答 2

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;
于 2012-11-08T08:35:06.423 回答
0
subsets => ???

最简单的方法是将数组中的每个条目设置为相同的值...

subsets => (others => empty_cachesubset);

正如另一个答案所示,您可以将各个元素设置为不同的值 - 然后使用“其他”来默认其余部分。

于 2012-11-15T13:12:57.740 回答