Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - x7

#1
Hola, tengo un problema con este código de la memoria de instrucciones de mi procesador MIPS. Lo he estado desarrollando en VHDL con ModelSim y aunque he conseguido que funcione insertando manualmente las operaciones, no consigo que lo lea desde un fichero. ¿Alguien sabe cómo? Mi problema está en asignar a cada instrucción (0,4,8,12,..) su salida (palabra de 32 bits).

Para leer sin fichero de texto:

Código (vhdl) [Seleccionar]
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 Memoria_Ins IS
    port(address_i : IN std_logic_vector (31 DOWNTO 0);
         d_o : OUT std_logic_vector (31 DOWNTO 0));
END Memoria_Ins;

architecture funcional of  Memoria_Ins is
type memoria is array(integer range <>) of std_logic_vector(31 downto 0);
signal instrucciones : memoria(0 to 64):=
   (0=>  "11110000000000110000000000000100",
    4=>  "11110000000001010000000000001000",
    8=>  "11000000101000110011000000000001",
    12=> "00000100000010000000000000000000",
    16=> "00001100000001010000000000001100",
    20=> "10001000000000000000000000011100",
    24=> "00000000000000000000000000000000",
    28=> "11000001010001010001100000000101",
    others=> "11111100000000000000000000000000");

begin

  d_o<=instrucciones(conv_integer(address_i));

end funcional;


Para leer con fichero de texto (intento de process):

Código (vhdl) [Seleccionar]
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 Memoria_Ins IS
    port(address_i : IN std_logic_vector (31 DOWNTO 0);
         d_o : OUT std_logic_vector (31 DOWNTO 0));
END Memoria_Ins;

architecture funcional of  Memoria_Ins is
type memoria is array(integer range <>) of std_logic_vector(31 downto 0);
signal instrucciones : memoria(0 to 64);         
     
      --0 addi r0,r3,4
      --4 addi r0,r5,8
      --8 add r5,r3,r6 --12
      --12 lw r0,0(r8)
      --16 sw r0,12(r5)
     
begin

  d_o<=instrucciones(conv_integer(address_i));
 
process
   FILE vector_test : text OPEN read_mode IS "test.txt";
    VARIABLE vector : LINE;
    VARIABLE instrucciones_aux : memoria(0 to 64);
    VARIABLE palabra : std_logic_vector (31 DOWNTO 0);
    VARIABLE instruccion : INTEGER;
   
  BEGIN
     instruccion:=0;
     WHILE NOT endfile(vector_test) LOOP
       
       readline(vector_test,vector); --Guardo la linea en vector
       read(vector,palabra); --Obtengo los 32 bits de la palabra y los guardo en palabra
       Instrucciones_aux:=(instruccion => palabra, others=> "11111100000000000000000000000000"); --Intento recrear el array de instrucciones con sus salidas
       instruccion:= instruccion + 4; --Sumo 4 para el siguiente ciclo
       
       WAIT FOR 20 ns;
      END LOOP;
     
      instrucciones <= instrucciones_aux;
      file_close(vector_test);
END process;

end funcional;


El fichero de texto sólo tiene las palabras de 32 bits:

"11110000000000110000000000000100
11110000000001010000000000001000
11000000101000110011000000000001
00000100000010000000000000000000
00001100000001010000000000001100"

Un saludo foreros ;D
#2
Muchas gracias, todo vuelve a la normalidad.

Un saludo!
#3
Saludos foreros! Tengo un problema con mi página web y no sé como abordarlo.

Esta es mi web http://bushinotamashi.com/. El caso es que realicé una modificación y a todo el mundo parece que le sale pegada a la izquierda y con un margen enorme naranja (que no debería existir), sin embargo mi ordenador la reproduce a la perfección. Uso Dreamweaver CS3.

¿Alguien me puede aconsejar?
#4
Yo me apunto!! Tengo ganas de empezar con este tema ya que siempre he estado muy metido con los ordenadores pero nunca he indagado en lenguaje de programación y cosas del estilo.

Un curso como el que pones en el foro me vendría genial ya que son conocimientos que más tarde puedo aplicar cuando estudie Ingeniería Informática.

Salu2!  ;D
#5
En efecto, los ordenadores y dispositivos con puertos USB 3.0 ya estan en el mercado, pero creo que esto se refiere mas a un nuevo tipo de cable, no al puerto en si.
#6
Que curioso! Aunque la desventaja respecto a la pizarra y a la tiza es que antes no podía hacer ctrl+c, ctrl+v...  :xD