He implementado una computadora con un archivo de memoria.
El archivo de memoria es de 64 vectores con 16 bits cada uno.
He escrito un módulo que lee de un archivo y mi memoria está en otro módulo. ¿Cómo puedo colocar los valores en la memoria cuando leo el archivo?
A continuación se muestra el código VHDL para memoria y lectura del archivo:
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_textio.all;
use std.textio.all;
entity text_read is
port(address : in std_logic_vector(15 downto 0);
dataout : out std_logic_vector(15 downto 0));
end entity;
architecture read of text_read is
type memin is array (63 downto 0) of std_logic_vector(15 downto 0);
signal MEM : memin;
begin
process(address)
FILE f : TEXT;
constant filename : string :="output.txt";
VARIABLE L : LINE;
variable i : integer:=0;
variable b : std_logic_vector(15 downto 0);
begin
File_Open (f,FILENAME, read_mode);
while ((i<=15) and (not EndFile (f))) loop
readline (f, l);
read(l, b);
MEM(i) <= b;
i := i + 1;
end loop;
File_Close (f);
dataout<=MEM(conv_integer(address));
end process;
end read;
ARCHITECTURE dataflow OF memory IS
SIGNAL MEM : regfile;
BEGIN
PROCESS (clk)
VARIABLE add : integer;
BEGIN
IF (clk = '1') THEN
MEM(0) <= "1111000011111111";
MEM(1) <= "1111000111111111";
.
.
.
//the process part is working fine
END PROCESS;
END dataflow;