Я пытаюсь реализовать память в VHDL и при тестировании ее на плате DE2 я хочу предварительно загрузить память сгенерированными значениями.Сначала я попытался сделать это, читая из текстового файла, но это не сработало, потому что нельзя загрузить текстовый файл на плату ПЛИС.Поэтому я обратился к файлам MIF.Однако я не знаю, как получить vhdl / quartus ii, чтобы связать сгенерированный мной файл MIF с созданной ОЗУ.
Я также пытался использовать 1-портовый ОЗУ ОЗУ с оперативной памятью, но потому что он синхронизирует чтение и запись, и это приводит к тому, что они не предоставляют данные достаточно быстро, чтобы быть полезными.
Ниже приведен код созданной мной оперативной памяти:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use std.textio.all;
entity instruction_memory is
port (
input_address : in std_logic_vector(31 downto 0);
opcode : out std_logic_vector(31 downto 0)
);
end instruction_memory;
architecture archInstruction_Memory of instruction_memory is
subtype word_t is std_logic_vector(31 downto 0);
type ram_t is array(0 to 4095) of Reichman_word_t;
impure function ReadMemFile(FileName : STRING) return ram_t is
file FileHandle : TEXT open READ_MODE is FileName;
variable CurrentLine : LINE;
variable TempWord : bit_vector(31 downto 0);
variable Result : ram_t := (others => (others => '0'));
begin
for i in 0 to 4095 loop
exit when endfile(FileHandle);
readline(FileHandle, CurrentLine);
read(CurrentLine, TempWord);
Result(i) := to_stdlogicvector(TempWord);
end loop;
return Result;
end function;
signal ram : ram_t := ReadMemFile("instructions_memory.txt");
attribute ram_init_file : string;
attribute ram_init_file of ram : signal is "instructions_memory.mif";
begin
opcode <= ram(to_integer(unsigned(input_address(31 downto 0))));
end archInstruction_Memory;
Как получить предварительную загрузку данных в файл .mif, чтобы при тестировании на плате DE2 это показывало, чтоон использует эти значения?