Я пытаюсь сделать буфер для хранения 16, 16-разрядных инструкций для небольшого дизайна процессора.Объявление массива внутри объекта в VHDL
Мне нужен способ загрузить инструкции в буфер из моего тестового стенда. Поэтому я хотел использовать массив std_logic_vectors для этого. Тем не менее, я получаю синтаксическую ошибку, и я не уверен, почему (или если мне разрешено делать это в VHDL, если на то пошло).
Ошибка синтаксиса в строке, где я объявляю instructions
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity instruction_buffer is
port
(
reset : in std_logic;
instructions : in array(0 to 15) of std_logic_vector(15 downto 0);
instruction_address : in std_logic_vector(3 downto 0);
clk : in std_logic;
instruction_out : out std_logic_vector(15 downto 0)
);
end instruction_buffer;
Я пытался делать так, как хорошо, но затем я получаю синтаксические ошибки в моем отображении порта сущности говоря мне, что std_logic_vector
неизвестный тип. Я клянусь, синтаксические ошибки VHDL являются менее значимыми, чем C хаха
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
package instructionBuffer is
type instructionBuffer is array(0 to 15) of std_logic_vector (15 downto 0);
end package instructionBuffer;
entity instruction_buffer is
port
(
instruction_address : in std_logic_vector(3 downto 0);
clk : in std_logic;
instruction_out : out std_logic_vector(15 downto 0)
);
end instruction_buffer;
Это не избыточно, это потому, что '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' См. Здесь: http://stackoverflow.com/a/19858069/106092. Вы все равно можете сохранить все в одном файле, просто убедитесь, что у вас есть необходимые пункты библиотеки в * для каждого устройства *. –