2015-05-18 2 views
3

у меня есть std_logic_vector (4096 Downto 0) сигнала, и я хочу, чтобы инициализировать его, как показано ниже:Как инициализировать std_logic_vector в VHDL?

architecture Behavioral of test is 

    type ram_type is array(4095 downto 0) of std_logic_vector(15 downto 0); 
    signal ram : ram_type; 
    ram(0) := "0010000000000100"; 
    ram(1) := "0001000000000101"; 
    ram(2) := "0011000000000110"; 
    ram(3) := "0111000000000001"; 
    ram(4) := "0000000000001100"; 
    ram(5) := "0000000000000011"; 
    ram(6) := "0000000000000000"; 
    ram(4095 downto 7) := (others => (others => '0')); 
    begin 
    "some code" 
end behavioral 

по какой-то причине мне нужно инициализировать его с этими значениями (я не могу присвоить эти значения для него, он должен быть инициализирован) есть ли какие-либо способы сделать это? я попробовал этот код, и он не работает

ответ

4

ram может быть инициализирован, как:

architecture Behavioral of test is 
    type ram_type is array(4095 downto 0) of std_logic_vector(15 downto 0); 
    signal ram : ram_type := (0 => "0010000000000100", 
           1 => "0001000000000101", 
           2 => "0011000000000110", 
           3 => "0111000000000001", 
           4 => "0000000000001100", 
           5 => "0000000000000011", 
           6 => "0000000000000000", 
           others => (others => '0')); 
begin 
    -- Concurrent code 
end Behavioral; 

Но вы можете захотеть взглянуть на конкретной FPGA и инструментальные возможности, чтобы узнать, есть ли какой-то конкретный способ что значения инициализации должны быть указаны в ОЗУ, поэтому инструмент синтеза может правильно отображать его.

+1

Большое спасибо Мортен, я очень ценю вашу помощь – user3927214

Смежные вопросы