• No se han encontrado resultados

Secuencia que rige el acceso al bus local PCI durante etapas de configuración, de

CAPÍTULO 3. ASIMILACIÓN DE LA FUCIONALIDAD DEL CÓDIGO FUENTE DE LA

3.2. Procesos en la PCI que definen el direccionamiento, el control y la transferencia de datos

3.2.2. Secuencia que rige el acceso al bus local PCI durante etapas de configuración, de

El proceso LOCAL_Bus_Seq es fundamental en el desarrollo del programa, pues presenta las condiciones y el orden para el acceso al bus local PCI durante una etapa de configuración de direcciones, transferencias de datos en la memoria o de control de las líneas de E/S. Puntualiza además el trabajo con las señales que manejan secuencialmente este proceso, referidas por cada uno de los estados que participan en este nuevo mecanismo explicado en la ASM(B), figura 3.12, el cual cumple con las mismas características de flujo y condicionales descritas para una Máquina de Estado Algorítmico. El programa entra en este proceso por alguna variación del nivel de las señales Reset (RST_n = 0) o PCICLK (Borde de Subida), anexo A.6(i).

Cuando el cambio sea producido en la señal RST_n se inicializan una serie de registros que son empleados en este proceso, como es el caso de: CFG_Cmd_Mem (Comandos de Configuración de Memoria) y CFG_Cmd_IO (Comandos de Configuración de E/S) con nivel bajo, los 32 bits de CFG_Base_Addr0 y CFG_Base Addr1 con '0', los 192 bits definidos para la señal interna PCI de almacenamiento MEMs (Memoria, transmisión-escritura-guardar y recepción-lectura-extraer información) se ponen a '1', además reciben nivel bajo '0' los 32 bits de la señal PCIAD_Port y el registro LOCAL_DTACK que cuando adopta nivel alto indica fin de una trasferencia de datos.

En el otro caso si la señal que varió su término fue PCICLK y ha ocurrido un borde de subida: condiciona el cambio de un estado presente (Current) al siguiente (Next).

Partiendo desde el primero de los estados LOCAL_IDLE (T0b=T3a), en que el bus local se encuentra desocupado, y al cumplirse que el registro LOCAL_Bus_Start contenga un nivel alto (condición principal), el proceso puede cerrarse sobre un lazo funcional en solo una de tres situaciones que dan paso a nuevos estados:

 Si Hit_Config = '1' entonces el próximo estado será LOCAL_CFG_ACCESS (T1b=T4a), dedicado al direccionamiento de la fuente o el destino de los datos en una transacción PCI.

 Si Hit_Memory = '1' entonces el próximo estado será LOCAL_MEM_ACCESS (T1b=T4a), encargado de definir el camino para realizar la transferencia de los datos entre los módulos del sistema, el almacenamiento y extracción de información.

 Si Hit_IO = '1' entonces el próximo estado será LOCAL_IO_ACCESS (T1b=T4a), encargado de gestionar el acceso y el uso de las líneas de datos y de direcciones, garantizando certeros mecanismos de entrada y salida mediante el bus.

Figura 3.12 Máquina de Estado Algorítmico (B) que controla el proceso LOCAL_Bus_Seq

Análisis del estado LOCAL_MEM_ACCESS

Se abordará en mayor medida por ser de mayor impacto en la investigación el caso en que el estado presente es LOCAL_MEM_ACCESS, percibiendo que el programa llega aquí por un pulso de reloj correspondiente al momento T1b de la secuencia en el proceso en curso. Si se cumple que el bit en la posición cero del registro PCI_BusCommand es uno, sucede entonces una fase de transmisión (escritura), organizada en la figura 3.13.

Se observa en el bloque que valor de los doce bits de la señal PCI_Address se encuentran desde la posición trece a la dos y realizan función de selector. Estos bits portan información suficiente para indicar a PCIAD donde corresponde la escritura sobre las señales de salida de datos OUT_#D, las cuales dominan la trayectoria de salida y son multiplexadas para cumplir con el formato serie de la transmisión.

Es necesario aclarar que la señal PCI_Address de 32 bits fue cargada con la información que llegó al puerto PCIAD a partir de los primeros pulsos de reloj relacionados con el inicio de una transacción (fase de direccionamiento), quedando en ella un encabezado empleado por el bus de direcciones y de control para que pueda posteriormente distribuirse correctamente la información durante la fase de datos.

Cuando los bits en valor hexadecimal de PCI_Address van desde X''002'' hasta X''007'' se comienza a almacenar, en las posiciones establecidas por el programa, el contenido de PCIAD (32 bits) consecutivamente en el registro MEMs de 192 bits (6 tramas). Luego para cada una de las nuevas combinaciones de la entrada de selección se acomodan los 32 bits de información posicionados en PCIAD, a través del intercambio con el bus del microprocesador de la PC, de la siguiente forma: en las señales OUT_#imparD los dieciséis bits más significativos de PCIAD y en las OUT_#parD los restantes menos significativos. En el caso que el bit cero del registro PCI_BusCommand sea cero, sucederá una fase de recepción (lectura), organizada en la figura 3.14. Este bloque selector procede de forma similar al anterior, las conexiones son gobernadas por doce bits del registro PCI_Address(13..2) que ahora contienen información suficiente para guiar los datos desde las señales SBx_#D hacia PCIAD_Port (conexión en fase de recepción directa con PCIAD).

La fase de recepción es llevada a cabo desde la entidad PCI hasta la CPU y exige al bus local un mayor número de transacciones para hacer eficaz la comunicación. Los doce bits de PCI_Address ahora en nivel X''000'' permite que se conecten a los bits de PCIAD_Port(15..8) las solicitudes SBx_RC para una etapa de lectura correspondiente a cada una de las ocho señales de entrada SBx. Luego para las posiciones del selector que van desde X''002'' hasta X''007'' se extraen los últimos valores almacenados en los registros MEMs, que llegan al bus de la CPU (desde MEMs a PCIAD_Port a PCIAD a CPU) como reconocimientos para activar la disponibilidad de las posiciones donde se guardan los datos de la aplicación. Los próximos valores de selección X''008'' y X''009'' conectan sucesivamente con PCIAD_Port señales de ocho bits con información de dirección SBx_ABMax, referida a cada una de las ocho entradas SBx con la misma finalidad mencionada en los caso anteriores. Finalmente con cada una de las nuevas combinaciones de PCI_Address, a partir de X''100'' refiriendo a SB1, X''200'' a SB2, X''300'' a SB3 y hasta SB8, se acomodan en los dieciséis bits más significativos de PCIAD_Port los datos recibidos que portan las señales internas las entradas SBx_#imparD y en los restantes menos significativos las SBx_#parD.

Análisis de los estados LOCAL_CFG_ACCESS y LOCAL_IO_ACCESS

El bus local PCI labora guiado por la acción de LOCAL_CFG_ACCESS o LOCAL_IO_ACCESS cuando se activan por nivel alto las señales Hit_Config o Hit_IO respectivamente. Como se ha tratado anteriormente una transacción del bus comienza con una fase direcciones en la cual las líneas PCIAD a través de PCIAD_Address envían la dirección de destino, esto solo es posible cuando las líneas C_BE_n, han autorizado la fase en curso con el comando correspondiente del bus (por ejemplo, durante una escritura los 4 bits C_BE deberán estar a cero).

Las conexiones para el intercambio de la información relacionada con estos estados igualmente están manejadas por la señal con carácter selector PCIAD_Address, la cual almacena en doce sus bits las trayectorias de direccionamiento que deberán cumplirse, los bloques escritura y lectura generados por ambos estados se muestran en los anexos A.4 y A.5 respectivamente.