Diseño de una interfaz de memoria para atender a un bus de 4 vías.

Anuncio
Buses y Periféricos. Curso 2008/2009
Práctica 1. Diseño.
Diseño de una interfaz de memoria para atender a un
bus de 4 vías.
V0
V1
V2
V3
DM7:DM0
O7:O0
AM3:AM0
W
A15:A2
W/R
Tr
T
¿?
Sel
BH3:BH0
Registros 8 bits
Módulo Memoria
Multiplexor
Buffers Tri-Estado
Unidad de control
Demultiplexor
Este esquema pretende ser una aproximación a una interfaz de memoria para atender a
un bus demultiplexado de cuatro vías.
Consideramos una vía a un sub bus de tamaño 1 byte. Nuestro bus puede acarrear datos
de tamaño 1 bytes, 2 bytes y 4 bytes. Cuando lleva datos de 1 byte pueden fluir por
cualquiera de las vías, siendo esto indicado por la señal BH correspondiente. (Si el byte
va por la vía 3 la señal BH3 estará activa y las demás permanecerán inactivas). Cuando lleva
datos de 2 bytes, estos pueden ir en dos vías consecutivas cualesquiera (V0 y V1, V1 y
V2, V2 y V3 o V3 y V4) lo que estará pertinentemente indicado por las señales BH
correspondientes.
Observemos que las líneas de dirección son A15:A2. En efecto faltan A1 y A0. Esto
significa que toda dirección que aparece en el bus es múltiplo de 4, como queriendo
apuntar al primero de un bloque de 4 bytes. A continuación las señales BH indicarán por
cuales de esos cuatro bytes se está interesado.
Por ejemplo, supongamos que quiero acceder a la dirección 45h de memoria. Por el bus
de direcciones saldría la dirección 44h como indicando que queremos acceder al bloque
1
Buses y Periféricos. Curso 2008/2009
Práctica 1. Diseño.
de cuatro bytes que comienza en la dirección 44h y también vendría activada la
dirección BH1, indicando que de esos cuatro bytes solo se desea el segundo.
Bien, este es el lenguaje del bus. Pero el lenguaje de la memoria es distinto.
El módulo de memoria responde ante direcciones de 4 bits, por lo tanto tenemos que
hacer una traducción desde [A15:A2, BH3:BH0 ] a [ AM3:AM0]. Para ello lo primero es
convertir la configuración BH3:BH0 en AM1,AM0:
BH3:BH2:BH1:BH0
0:0:0:1
0:0:1:0
0:1:0:0
1:0:0:0
AM1:AM0
00
01
10
11
Las líneas AM3:AM2 son directamente A3:A2.
Ahora bien, tenemos que tener en cuenta que puede haber más de una línea BH activa
por lo cual debemos construir una unidad de control que nos permita realizar lecturas
/escrituras consecutivas en la memoria a partir de los datos dispuestos.
Ejemplo, en el bus de direcciones aparece la dirección 44h y en las líneas BH aparecen
activas BH0 y BH1, estando la línea de W/R a 1. Esto significa que tendremos que
hacer dos escrituras en la memoria, primero el byte que aparece en la Via 0 (V0) en la
dirección 0000 (Los dos más significativos son A3:A2, y los dos menos significativos por estar
BH0 activa) y depués el byte que aparece en V1 en la dirección 0001.
El resto de las líneas de dirección del bus no pueden sernos indiferentes. El valor que
tengan esas líneas indicará la dirección en memoria donde hemos ubicado nuestro
módulo. (Ver la práctica del curso 2006/2007). No daremos por válida una dirección
que venga por el bus si esas 12 líneas de dirección no tienen un valor predeterminado
fijado por nosotros. Cuando aceptemos la dirección lo indicaremos con la señal Sel. Esta
misma señal nos servirá para permitir o no cualquier acción en nuestro módulo. Será la
señal de que nuestro módulo de memoria ha sido seleccionado.
La transacción comienza cuando se activa la señal T, en este momento debe estar
dispuesta la dirección a acceder en las líneas A15:A2, activadas las señales BH
correspondientes e indicada la acción a realizar: lectura W/R=0, o escritura W/R=1.
A partir de este momento, la unidad de control debe hacer lo siguiente:
Lectura:
1. Se comparan las líneas A15:A4 con la dirección de ubicación de nuestro módulo.
El resultado será la señal Sel. Si Sel queda inactiva no se realizará ninguna
acción.
2. La unidad de control leerá tantos datos de la memoria como líneas activas haya
en BH y los irá cargando en los registros de salida.
3. La unidad de control abrirá los buffers tri-estado y al mismo tiempo activará la
señal Tr para indicar que los datos están dispuestos.
Escritura
1. Se comparan las líneas A15:A4 con la dirección de ubicación de nuestro módulo.
El resultado será la señal Sel. Si Sel queda inactiva no se realizará ninguna
acción.
2. La unidad de control cargará los datos del bus en los registros de entrada.
2
Buses y Periféricos. Curso 2008/2009
Práctica 1. Diseño.
3. La unidad de control escribirá el contenido de los registros en la memoria según
esté indicado por la línea BH correspondiente
4. La unidad de control activará la señal Tr para indicar que los datos han sido
escritos.
Este es un dispositivo síncrono. Es decir, necesita una señal de reloj que lo gobierne.
Los datos se activarán al principio de una secuencia de periodos de reloj. El principio de
esta secuencia lo marcará la señal T coincidiendo con un flanco de subida de la señal de
reloj. El final lo marcará la señal Tr activa durante el último periodo de reloj necesario
para completar la tarea. La señal Sel se activará en el periodo siguiente al que se active
T si la dirección que hay en el bus se corresponde con la ubicación del módulo, si no
permanecerá inactiva y no se realizará ninguna acción.
El módulo de memoria que vamos a utilizar será un módulo primitivo proporcionado
por el xilinx (ver descripción también en el guión de la práctica 2006/2007)
Procedimiento
El alumno debe diseñar este dispositivo siguiendo las directivas indicadas en este guión,
pero aplicando sus propias habilidades, en particular en el diseño de la Unidad de
Control. Se recomienda que invierta una parte de su tiempo en la planificación del
mismo, comprendiendo qué es lo que se le solicita y meditando sobre diferentes
soluciones antes de emprender el trabajo sobre la propia herramienta de diseño y
3
Buses y Periféricos. Curso 2008/2009
Práctica 1. Diseño.
simulación. Este trabajo de planificación previa se considera muy importante en la
memoria que el alumno ha de presentar como documentación del trabajo realizado.
El diseño se hará, naturalmente sobre la herramienta xilinx, describiendo por medio de
esquemáticos el diseño y demostrando su funcionalidad por medio de la simulación.
Terminado el diseño y la simulacion exitosa, el alumno debe proporcionar un manual de
descripción y uso del mismo (inserto en la propia memoria), en la que describirá
detalladamente el funcionamiento de su dispositivo, el número de periodos de reloj que
tarda en culminar su acción (tanto para lectura como para escritura) y la duración
mínima del periodo de reloj en una unidad de tiemo genérica que llamaremos ut,
teniendo en cuenta que todos los elementos procedente de las librerías de primitivas que
ofrece el xilinx se considerarán con retardo de 1ut.
Presentación.
El alumno realizará el diseño y simulación del circuito planteado.
Al finalizar la realización, se defenderá la práctica ante el profesor y se presentará una
memoria del trabajo, en la cual se expondrá paso por paso el proceso de desarrollo,
razonando y justificando cada decisión.
Valoración
Se valorará un estudio previo de la propuesta de diseño planteando y valorando las
posibles soluciones.
Se valorará en el diseño, supuesto su correcto funcionamiento según la descripción
anterior, la originalidad de sus soluciones, la eficiencia de las mismas con respecto al
uso de recursos y ahorro de retardos. Cualquier añadido que complete la propuesta sin
perjudicar sus objetivos.
Se valorará la modularidad y el orden en el diseño (que no de miedo mirarlo). En
particular se espera encontrar una estructura canónica:
Camino de datos – Unidad de Control
Estando la unidad de control compuesta de tres elementos:
Lógica de siguiente estado-Estado(Contador)-Lógica de salida
Cada alumno deberá ser capaz de defender el trabajo realizado conociendo
perfectamente cada detalle y justificación del mismo.
4
Descargar