2009-10-02 9 views
5

Estoy tratando de probar un componente VHDL, pero parece que no puedo obtener este único puerto para darme ningún comportamiento. Intenté configurar el puerto para todo desde '1' hasta '-', pero aún aparece como 'U' en la simulación. Cualquier sugerencia, ¿qué podría estar mal?VHDL: cómo establecer un valor en un puerto inout?

+1

estableciéndolo explícitamente en Z hizo que el puerto me diera los datos, pero ahora parece que no puedo obtener las señales internas para leer desde el puerto :( – Tore

Respuesta

8

Para el puerto Inout (por ejemplo, en la memoria RAM):

.... 
port(
    data :inout std_logic_vector (DATA_WIDTH-1 downto 0); 
.... 
-- Memory Write Block 
-- Write Operation : When we = 1, cs = 1 
    MEM_WRITE: process (address, cs, we, data, address_1, cs_1, we_1, data_1) begin 
    if (cs = '1' and we = '1') then 
     mem(conv_integer(address)) <= data; 
    end if; 
    end process; 

-- Tri-State Buffer control 
    data <= data_out when (cs = '1' and oe = '1' and we = '0') else (others=>'Z'); 

-- Memory Read Block 
    MEM_READ: process (address, cs, we, oe, mem) begin 
    if (cs = '1' and we = '0' and oe = '1') then 
     data_out <= mem(conv_integer(address)); 
    else 
     data_out <= (others=>'0'); 
    end if; 
    end process; 

se asignan los datos de lectura y escritura para inout con una condición. Cuando se leen los datos, es impulsado por otro módulo. Cuando escribe, es dirigido por interno.

  • Cuando se maneja por otro módulo (como en la señal), los datos se resuelven entre todos 'Z' y un vector "0101010" por ejemplo. La información será manejada como "0101010".
  • En el otro caso: el otro módulo debe conducir los datos por todos "Z" y luego la señal interna puede poner su valor a los datos.
6

Necesita un controlador explícito para 'Z'.

+0

me doy cuenta de que este es el caso, pero no sé lo que significa en vhdl código – Tore

+0

¿Puede mostrarnos un fragmento del código que tiene? – Marty

1

He tratado de establecer el puerto para todo, desde '1' a '-', pero todavía hará como una 'U' en la simulación.

Además de la buena respuesta en la asignación/lectura de puertos, el texto citado puede estar relacionado con el puerto asignado en dos lugares separados, por lo que se resuelve como 'U'.

Cuestiones relacionadas