Está en la página 1de 112
Simulacion de Arquitecturas de Computadores mediante lenguaje VHDL is a _ im Rafael Rico Lopez Salvador Marcos Gonzalez Departamento de Automatica Universidad de Alcala UNIVERSIDAD DE ALCALA Servic de Placones| Ison ness 2823 Depa Lag N+ 404-056 Inpting GRAFIGAS AL.GORAN, SA Pal Lo AIranins, 67 Ala de Heroes ee indice Prologo ... Como utilizar este libro Parte |: Practicas de Arquitectura de Computadores, 1, La unidad de ejecucién Practica 1.1! Diseno de un operador de suma de 8 bits con propagacion de acarreo. Practica 1.2: Disefio de un operador de suma de 16 bits con anticipacién de acarreo Practica 1.3: Disefo de un operador de suma de 16 bits con salto de acarreo...... Practica 1.4: Disefio de un operador de suma de 16 bits con seleccion de acarreo. Practica 1.5: Disefio una ALU de 16 bits con registro de estado. 2. La unidad de control a Practica 2.1: Simulaci6n de operaciones de transferencia Practica 2.2; Simulacion de operaciones de proceso, Practica 2.3: Implementacién de una sencilla maquina de estados mediante el método de la tabla de estados eas Practica 2.4: Implementacién de una maquina de estados Mediante el método de las células de retardo .. Practica 2.5: Disefio de un secuenciador de instrucciones (unidad de control) .. inns Practica 2.6: Disefio de una unidad de contro! microprogramada 3. Lamemoria Practica 3.1: Secuencia de operacién con una memoria ROM i Practica 3.2: Secuencia de operacién con una RAM ere Practica 3.3: de direcciones en memoria ROM Practica 3.4: Asociacién de memorias RAM Practica 3.5: Disefio de una memoria entrelazada. Practica 3.6: Disefio de una memoria asociativa Practica 3.7: Implementacion de una caché. 14 21 23 25 i 3 42 48 62 n 6 84 88 95 101 105 4. El sistema de entrada/salida. 109 Apéndices. 191 Practica 4.1: Control de operaciones de entrada/salida..... 111 ‘A. Manual de usuario del compilador-simulador V-SYSTEM 491 Practica 4.2: Sistema de entradalsalida A1. Ventanas de V-SysTEM. oe 191 gobernado por sondeo 114 A.2. Pasos para simular un modelo VHDL 201 Practica 4.3: Sistema de entradalsalida B. Bibliogratia ....... lee pee Ge gobernado por interrupciones. 116 C. Relacién de modelos. 209 Practica 4.4: Controlador de interrupciones 118 D. indice alfabético 211 Practica 4.5: Protocolo CENTRONICS, se 120 5, El bus de expansion 125 Practica 5.1: Extension de sefiales del bus ISA de 8 bits... 127 Practica 5 2° Placa de expansion de memoria... 133 4 "Parte Il: Resumen de sintaxis de lenguaje VHDL 135 6. Introduccion al lenguaje VHDL crete 137 6.1. Presentacion cme OT 6.2. Conceptos basicos en VHDL. 199 7. La sintaxis secuencial en VHOL ‘ oo 145 7.1. Elementos léxicos del lenguaje..... ene 145 7.2. Variables, constantes y sefiales 146 7.3. Tipos ine REST AAT 7.4, Subtipos : sees 150 75. Operadores predefinidos y expresiones 150 7.8. Sentencias secuienciales 150 7.7. Subprogramas: funciones y procedimientos 154 7.8. Sobrecarga (overloading). ss 155 8. El modelo temporal en VHDL. : evens 187 8.1, La sentencia PROCESS paso 68) 82. Sefiales...... 5 sires 159) 8.3. Simulacion sone 166 8.4, Atributos de sefial E . 167 9. La sintaxis concurrente en VHDL 171 9.1. Sentencia de asignacion de sefal concurrente. ‘71 9.2. Sentencia de instanciacin de componeMteS .....-u-- 172 9.3. Estilos de descripcion i 3 173 9.4. Modelado de test-hench mae 178 9.5. Sentencia de bloque a : 179 10. Unidades de diserio 183, 10.1. La entidad : 183, 10.2. Los paquetes. 5 z fone 184 10.3. La arquitectura 187 10.4, Generacion de procesos i iOS —— Prdélogo Este texto nace como consecuencia de la necesidad de contar con un resumen de sintaxis del lenguaje VHDL en castellano como herramienta habitual a la hora de realizar las précticas de Arquitectura de Computadores. Sin embargo, no hemos querido que se quedara tinicamente en so, un manual de usuario, sino que tuviera un valor afiadido para la ensefianza de la Arquitectura de Computadores. Por tanto, se proponen una serie de practicas, con introducciones tedricas apropiadas, con objeto de provocar, en los que las realicen, el gusto por el disefo, En ellas, se plantean objetivos pero también se sugieren Nuevos caminos en los que investigar, proyectar, crear y probar nuevas arquitecturas. ‘Aunque son muchos los que deben ser reconocidos a la hora de finalizar un nuevo libro, queremos citar expresamente a Femando Gomez, que disefio las primeras practicas de Arquitectura de Computadores de los Planes Nuevos para los estudios de la Fscuela Politécnica de Alcala, y a Teresa Garcia, por su esmerada correccion de los originales de este texto. A los que utilicéis este trabajo os deseamos que os resulte til y que nos ayudéis a mejorarlo poco a poco. Los Autores Como utilizar este libro Este texto es fundamentalmente un libro de Arquitectura de Computadores. La primera parte, ha sido dividida en capitulos de acuerdo a los bloques constituyentes de la Arquitectura de Von Neumann y trata en ellos aspectos basicos de disefio y organizacion. Las practicas propuestas van de menos a mas dificultad € incluyen una breve introduccién tedrica que centra el tema. En todas ellas se busca fomentar la iniciativa y el disefto propio de manera que se cumpla el objetivo de la practica a la vez que la solucion sea eficiente Como disefiar con elementos fisicos no esta al alcance de manera sencilla y barata, lo que hacemos es simular lo “inventado” mediante lenguaje VHDL. Se ha seleccionado este lenguaje de descripcion hardware porque, en la actualidad, es un estandar en la industria y en la investigacion La sequnda parte del texto —Resumen de sintaxis de lenguaje VHDL— trata de manera basica los fundamentos sintacticos y de simulacion del lenguaje. Se ha afiadido para que sea mas sencillo contar con una referencia rapida que resuelva las pequefias dudas que surgen a la hora de realizar un modelo. También se ha colocado en un anexo un breve Manual de usuario de! compilador-simulador V-SYSTEM, uno de los paquetes comerciales que manejan este esténdar. EI método de trabajo que se propone seria el siguiente: ‘seleccionar, en primer lugar, la practica a realizar y leer detenidamente la teoria que la sustenta buscando, si es preciso. ampliacién en la bibliografia dada. Determinar los pasos a seguir en el modelado quiza apoyandose en lo indicado en el epigrafe Desarrollo de la practica que se da al final de cada una. A continuacién, se escribiran los modelos en lenguaje VHDL asi como un test-bench si es necesario. Finalmente, comprobaremos el correcto funcionamiento del circuito y calcularemos aquellos parametros que sean relevantes de cara a evaluar el rendimiento. Durante el modelado podemos acudir al manual del lenguaje, a las practicas resueltas 0 a otros modelos incluidos a lo largo del texto y que se encuentran referenciados en el anexo C, para solucionar los problemas concretos que nos encontremos. PARTE! Practicas de Arquitectura de Computadores Capitulo 1 Lau jad de ejecucion Dentro de la Arquitectura de Von Neumann, que se ilustra en la figura siguiente, a unidad de ejecucién es la parte de la. maquina encargada de procesar la informacion. En ella encontramos los operadores capaces de transformar la informaci6n de entrada en resultados conforme a la operacion seleccionada “ vunipan pe |= MEMORIA EJECUCION SISTEMA DEES em SSjeary > Figura 1.1, La unidad de ejecucién dentro de la Arquitectura de Von Neumann. Los operadores tienen un retardo asociado desde el momento en que los operandos estén disponibles hasta el momento en el que btenemos un resultado valido a la salida. Este retardo marca la maxima velocidad de reloj a la que puede trabajar el sistema. Cuando una operacién combinacional o secuencial no se puede ejecutar en un solo ciclo de reloj entonces la unidad de control tiene ‘que resolver los posibles conflictos de dependencias que se puedan dar si el resultado es operando de otra operacién posterior. El problema se acrecienta si el procesador es superescalar y lanza mas de una instruccién por ciclo. En este capitulo se pretende estudiar la influencia que tiene el método utilizado para realizar una operacion y su implementacion jisica en el operador. Asi, un método o algoritmo simple puede resultar lento pero muy barato de implementar en silicio mientras que un operador rapido puede llegar a ocupar un area de silicio no disponible © representar problemas fisicos imposibles de solventar con la tecnologia actual PRACTICA 1.1:DISENO DE UN OPERADOR DE SUMA DE 8 BITS CON PROPAGACION DE ACARREO 4.4.1. OBJETIVOS Se pretende disefiar un operador de suma de 8 bits basado en e| Circuito sumader completo elemental (1 bit). El dicefho mas inmediato es aquel en el que se produce la propagacién del acarreo desde el bit de menor peso al de mayor peso, aun cuando esta implementacion no sea la mas rapida. Esta practica ilustra un aspecto fundamental a tener en cuenta en el disefio de computadores: como los retardos propios de los circuitos digitales afectan de forma decisiva a la maxima velocidad de reloj a la que trabaja el sistema; es decir, de qué manera la tecnologia influye en la arquitectura de una maquina, Se modelaré mediante lenguaje VHDL un sumador de dos operandos de tamafo byte a bace de cumadores elomentales de un bit. A su vez, este sumador elemental se habré modelado mediante el conexionado de las puertas légicas correspondientes a su funcion Finalmente, se calculara el retardo asociado al operador y la maxima velocidad de reloj a la que puede trabajar la unidad de ejecucién que contenga este operador. 1.1.2. INTRODUCCION TEORICA, El circuito sumador completo elemental es aquel que cumple la tabla de verdad correspondiente a la suma de 1 bit mas el acarreo de {a etapa anterior, generando el bit de suma y el acaeu a la elapa Siguiente, La implementacion que nosotros vamos a utilizar es la siguiente: SS _———————— fess rt Figura 1.2, Implementacion de un sumador completo. - consta de dos puertas XOR de dos entradas y tes NANO ée dos enrages. Cade una de esta puerta tere su propio retardo asociado, de manera que el retardo total del sumador. fanto para el bit de suma como para el de acarreo, es consecuencia directa de la conjuncion de las mismas. Este bloque lo val representar tal y como se ilustra a continuacién. Figura 1.3. Celda sumador elemental ion de EI operador de suma de tamafio byte con propagaci acartea sera la cascada de & celdas de suma elementales tal y como ilustra la figura siguiente. = eel 8 Figura 1.4, Implementacion de un sumador de 8 bits con propagacion de acarreo, Obsérvese cémo el bit de suma s7 s6lo se genera correctamente cuando alcanza su celda el acarreo og. Este hecho marca el retardo total del circuito y, como consecuencia, la maxima velocidad de reloj del sistema. 1.1.3. DESARROLLO DE LA PRACTICA Desde el punto de vista de! modelado con lenguaje VHDL hemos de comenzar por describir las puertas que forman Ia celda sumador elemental. Lo primero que hay que hacer es modelar la puerta XOR y la NAND. Puesto que estamos en el nivel mas basico de descripcién, e| modelo a usar sera el comportamental. Se asignara a cada puerta un retardo de 2 ns. Una vez modeladas las dos puertas basicas del circuito y comprobado su correcto funcionamiento, pasamos a realizar la descripcion del circuito sumador completo de 1 bit. Para ello, realizamos el conexionado instanciando componentes dentro de un modelo estructural. Se comprobara el correcto funcionamiento del Circuito forzando sefiales mediante la orden de V-SYSTEM force o bien realizando un test-bench adecuado, aunque esta ultima opcién no merece la pena ya que es mas engorrosa que el forzar sefiales con el simulador. Es importante observar que los retardos asociados al Circuito son los esperados teoricamente. A continuacién, modelaremos el operador de suma de 8 bits de acuerdo a la arquitectura que se ilustra en la figura. El circuito sumador de 8 bits se modelara instanciando el componente sumador completo (celda sumador elemental) descrito anteriormente dentro de una arquitectura estructural. El operendo A, el B, la suma S y el conjunto de acarreos de una celda a la siguiente se pueden deciarar como tipo bit_veotor (7 downto 0) (vector de 8 bite) predefinido en VHDL. Finalmente, se modelara un test-bench para el sumador de 8 bits que compruebe su funcionamiento y los retardos asociados al circuito completo. F En resumen, los pasos a seguir se dan a continuacién’ — 4, Modelar mediante una descripcion comportamental las puertas: XOR y NAND con retardo de 2 ns en ambas y comprobar su funcionamiento. La arquitectura contendra un proceso donde se habra definido el comportamiento mediante una funcion logica. 2. Modelar mediante una descripcién estructural un sumador completo y comprobar su funcionamiento. La arquitectura contendra la instanciacién de los componentes y su conexionado. 3, Modelar mediante una descripcién estructural un sumador de @ bits basado en el componente anterior. Se instanciara el componente sumador completo y se realizaré el conexionado. 4, Comprobar el correcto funcionamiento del operador de suma mediante el modelado de un test-bench que inyecte sefiales al mismo. 4.1.4, SOLUCION El modelo de la puerta XOR sera el siguiente: [ENTITY x0r2 iS | GENERIC (retardo: TIME = 2 ns) PORT (e1, 62: IN BIT; sal: OUT BIT); ie xore; ARCHITECTURE comportamiento OF xor2 IS BEGIN PROCESS (e1, 2) BEGIN ‘sal <= @1 XOR @2 AFTER retardo; END PROCESS: END comportamiento; I Modelo 1.1. Descripcion de una puerta XOR de dos entradas. La descripcion del comportamiento de esta puerta se podria haber hecho mediante un proceso que contuviera una funcién condicional en vez de una funcidn logica 0 mediante cualquier otra funcion que hubiéramos considerado conveniente. El modelo de la puerta NAND seré el siguiente: [ENTITY nand2 |S Tease rh GENERIC (retardo: TIME := 2 ns); PORT (e1, 62: IN BIT; sal: OUT BIT); END nand2; ARCHITECTURE comportamiento OF nand2 IS BEGIN PROCESS (et, 2) BEGIN Sal <= 1 AND e2 AFTER retarco; END PROCESS; END comportamiento; Modelo 1.2. Descripcién de una puerta NAND de dos entradas. ‘Al igual que en el caso anterior, la descripcion del comportamiento de esta puerta se podria hacer mediante un proceso que definiera cualquier otra funcién que hubiéramos considerado conveniente. A continuacion se da el modelo correspondiente al sumiador completo. Se han instanciado los dos componentes anteriores en una arquitectura estructural. ENTITY sum_elemental iS PORT (a, b, carry_in: IN BIT; sume, carry_out: OUT BIT) END sum_elementel, Ce ARCHITECTURE estructural OF sum_elemental IS —declaracién de componentes COMPONENT xor2 PORT (et, @?' INIT; sal OUT AIT); * END COMPONENT; | COMPONENT nand2 | PORT (e1, e2: IN BIT; sal: OUT BIT), | END COMPONENT; | -declaracién de seftales SIGNAL s1, s2, s3: BIT; ‘Simulacion de Arquitectiras [Ginaicamos dénde se encuentra la arquitectura de los componentes FOR puerta’, puerta2: xor2 USE ENTITY WORK.xor2{comportamiento); | FOR OTHERS: nand2 USE ENTITY WORK nand2{comportamiento); | -reaizamos las conexiones BEGIN ‘puerta: x0r2 PORT MAP (a,.S1); | puertea: xor2 PORT MAP (s,carry.n.suma); | puertas: nand2 PORT MAP (a, 6, $2) puertad nand2 PORT MAP (s1, carry_in, $3) puertaS: nand2 PORT MAP (S2, $9, carry_ out), ND estruciurel, Modelo 1.3. Descripcién VHDL del sumador completo. La ilustracién siguiente muestra las sefales en la ventana de onda de V-SYSTEM correspondientes a este circuito. Figura 1.5. Ventana de onda para el sumador completo. El operador de suma de 8 bits quedara tal como sigue: ENTITY sumador_@bits IS PORT (vector_a, vector_b: IN BIT_VECTOR (7 DOWNTO 0); ccarry_in: IN BIT, vector suma: OUT BIT_VECTOR (7 DOWNTO 0); camy_out: OUT BIT) ae ‘sumadr_Abits; \RCHITECTURE estructural OF sumador_@bits |S declaracién de componentes ‘COMPONENT sum_elemental PORT (a, b, carry_in: IN BIT; suma, carry_out: OUT BIT); END COMPONENT; —deciaracién de sefiales SIGNAL vector_carry: BIT_VECTOR (7 DOWNTO 0):="00000000". meeps ‘se encuentra la arquitectura de los componentes i ‘sum_elemental USE ENTITY WORK sum, elemental estructural |—-realizamos las conexiones ae = Bi BEGIN celdat: sum_elemental PORT MAP (vector_a(0), vector_b(0) in, vector suma(0) ves cary) = eee 32: sum elemental PORT MAP (vector_a(1), vector_b(1), vector_cany(C vector sume) vet carn) ee 3° sum_elomental PORT MAP (vector 0(2), vectorb(2), vector. cany vector_suma(z), oan eae ia ee a i celda4: sum_elemental PORT MAP (vector_a(3), vector_b(3), vector vector_suma(3), vector_carry(3); ees a caldaS: sum_elemental PORT MAP (vector_a(4), vector_b(4), vector_cany(3), vector_summa(4), vector_camy(4)); oe eida6: sum_elemental PORT MAP (vector_a(5), vector_b(5), vector_camy(4), vector suma(5), vector carry5)) 7 ceta7”sum_elemental PORT MAP (vector 0(6), vector b(6), vector any), vector_suma(6), vector_carry(6)); a cet sum_elemental PORT MAP (vector 07), vector b(7), vector can), vector_suma(7), vector_carry(7)); ere | carry out <= vector carty(7) | eno estructura. Modelo 1.4. Sumador de 8 bits en paralelo. \Véase, como la declaracion de vectores de 8 bits simplifica la escritura del conexionado de las diferentes celdas del circuito. El modelo anterior podria haberse escrito utilizando la sentencia GENERATE con lo que se hubiera simplificado notablemente la —— de componentes (Ver el resumen de sintaxis de lenguaje ‘Tambien es importante observar, como afectan los retardos al funcionamiento del circuito en funcién de los operandos. En el caso més desfavorable el retardo del circuito es 34 ns ajustandose al teorico previsto de 2(n-1)+3 donde n es el numero de bits a sumar. El test-bench para este circuito sera: [ENTITY run_sum8 IS END run_sum8; ARCHITECTURE estructural OF run_sum6 |S |-declaracién del circuito a probar ‘COMPONENT sumador_ébits PORT (vector_a, vector_b: IN BIT_ VECTOR (7 DOWNTO 0);cany_in: IN BIT, vector_suma: OUT BIT_VECTOR (7 DOWNTO 0); carry_out. OUT BIT); END COMPONENT, | -especificacion de la connguracion det component: FOR cituito: sumador_8bis USE ENTITY WORK sumadoc_Sbs(estructura) --declaracién de seftales de interconexién ‘SIGNAL vector_a, vector_b: BIT_VECTOR (7 DOWNTO 0):= X"00"; SIGNAL cany_in: BIT=0; SIGNAL vector_suma: BIT. SIGNAL carry_out: BIT: ~-comienza la descripcién de los procesos BEGIN primer proceso: instanciacién del circuito a estudiar circuit: sumador_Bbits PORT MAP (vector_a, vector_b, carry_in, vector_suma, carry_out); —-seaundo praceso: estimulo de las sefiales de entrada | PROCESS | BEGIN vector_a<= X"00"; vector_b<=X'00", carty_in<= ‘0’ WAIT FOR 2 ns*((2*7)+3), vector_a<= X"10", vector_b<= X"01"; ccarty_ins= "1 VECTOR (7 DOWNTO 0):= X"00" carry_ins= ‘0° WAIT FOR 4 ns, vector_a<= X"7F" carry_in<= "1" WAIT FOR 2 ns%{(2°7)+3), END PROCESS; END estructural, Modelo 1.5. Test-bench del operador de suma de 8 bits. A continuacion i are se da la ventana de onda correspondiente a este ai_Zoom_Gusor options Figura 1.6. Ventana de onda de V-SYSTEM para el modelo 5. Puede observarse, como en el caso mas desfé , favorable, a el que el acarreo de entrada ha de propagerse hasta el tinal, Sat generar un resultado correcto, el retardo total del cirruite €s decir, el tedrico previsto’ ae ae [2 (n-1) +3] * retardo de las puertas PRACTICA 1.2:DISENO DE UN OPERADOR DE SUMA DE 16 BITS CON ANTICIPACION DE ACARREO 1.2.1. OBJETIVOS En esta practica se pretende disefiar un operador de suma de 16 bits con anticipacion de acarreo. En la introduecion teérica se estudia el anticipador puro, ‘consecuencia directa del analisis Iogico de las ecuaciones de suma, y las adaptaciones practicas buscando la implementacion mas sencilla en silicio: anticipacion por pasos o bloques y los circuitos hibridos. ‘Aqui pretendemos modelar todos los casos para estudiar los pros y los contras mediante la simulacién 4.2.2. INTRODUCCION TEORICA. EL SUMADOR CON ANTICIPACION DE ACARREO EI sumador con propagacién de acarreo es lento pero barato y sencillo. Esta constituido por n sumadores completos y se ajusta a las ecuaciones légicas: 5 = Arby C+ AV DIG, * a-D/CI* ALDI (1.4) Oy = abit are Bic s El namero aproximado de niveles de este circuito es 2n. ‘Su implementacion mediante un circuito combinacional puede ser reducida a una formula légica en forma de sumas y productos implementable en dos niveles de puertas. Si tomamos las funciones siguientes: (1.2) Donde g significa generar acarreo. Es decir, si g es "tsi si ges tsi generar el acarreo cje1. De la misma manera, p sigiica propaver el acarreo a la siguiente etapa. Es decir sip es 1’ y gj es 't tambien, propaga hasta la etapa ci+4 as Sustituyendo las funciones anteriores en la ec: da el bit de suma, obtengo meal s)=pec, , (13) Si ahora calculo el bit de acarreo de manera recursiva obtengo: ied =H *P) G4 +P) Ph Gh Py Phage Py Gy +P, Ph gy -Pg Cy (1.4) Un sumador que calcule los acarreos utilizando la ecuacién 1.4 se denominara sumador con anticipacion de acarre (Carry Lookhead Adder) , Sonat) La caracteristica més sobresaliente de este of perador es que tan requiere 5 rveles Spicos para generar un resutaco vaio. Esta cartiad de niveles es independiente del nimero de bits de los operandos y mejora sustancialmente los 2n riveles del sumador RCA 0 propagador de acarreo, Estos 5 niveles se distribuyen de la siquiente manera: uno, ara generar gy p, dos para los acarreos y dos mas para la suma. En la figura siguiente se ilustran los circuitos combinacionales corespondientes al operador. a,b, oY 8 8 Pa. Figura 1.7. Sumador con anticipacién de acarreo de n bits. Simulacion de Arquiectrss Se Obsérvese como, desde el punto de vista de la temporizacion, estos 5 niveles se reducen a 4 ya que para generar la suma solo hay Que esperar a que legue el acarreo, puesto que la funci6n propagacion ya esta disponible desde el primer nivel Desgraciadamente, el circuito de la figura anterior tiene grandes inconvenientes desde el punto de vista de la implementacion en silicio, sobre todo sin es grande. En primer lugar, el fan-in (abanico de entrada) de la puerta OR y de la AND de la derecha ha de sern + 1. En Segundo lugar, la sefial pp. debe atacar a n puertas AND. La estructura es irregular y hay muchas conexiones muy largas que implica la aparicion de resistencias capacitivas, En definitiva, podemios decir que el disefio no es practico, Otro aspecto a tener en cuenta es la superficie de silicio que se consume a la hora de integrar este operador. Asi, mientras el sumiador ‘con propagacion de acarreo (RCA) ocupa el area correspondiente 2 7 celdas, el sumador con anticipacion de acarreo (CLA) ocupa mucho mas (aproximadamente 2n celdas). Podemos intentar construir otro operador de suma basandonos fen las ideas de la anticipacién de acarreo. E| metodo consiste en (generar las funciones g y p por pasos. De esta manera conseguimos un estructura regular, mas implementable en silicio. Como contrapartida, aumentaremos el numero de niveles l6gicos y perderemos algo de velocidad. 4.2.2.1. SUMADOR CON ANTICIPACION DE ACARREO POR PASOS Si construmos las funciones g y p por bloques (G y P) llegamos alas siguientes ecuaciones recursivas: para todo jcon i) OF vector_bus; FUNCTION resolucion (entrada: array_vector_bus) RETURN vector_bus; ~/a sefial del bus serd la resuelta SUBTYPE bus_resuelto IS resolucion vector_bus; (oO PROGFOURE logion_entern(VARIABI F vector IN BIT_VECTOR: VARIABLE entero:OUT INTEGER), kyo” PROCEDURE entero_logico( VARIABLE entero:IN INTEGER; VARIABLE vector. OUT BIT_VECTOR); END arq_pack; —————— — —_V E ick IS PA egy moon (onade aay. vecor bus) RETURN vedo bu VARIABLE dato: vector_bus:=(Z; 2’, 2, 2); BEGIN, op iN entrada RANGE LOOP FOR k INO TO 3LOOP IF entrada()(k)='1" THEN dato(k). . ELSIF (entrada(i)(k)="0" AND dato(k)/=""’) THEN dato(k):=0' END IF; END LOOP; END LOOP, RETURN dato; END resolucion; VARIABLE vector'N 81T_ VECTOR, PROC ORE Oe ASL orte OUT INTEGER IS VARIABLE valor INTEGER; BEGIN oer op IN vector RANGE LOOP IF vector()="1" THEN valor:=valor+2" ge te END LOOP; J entero:=valor, >> END logico_entero; Jogico( VARIABLE entero:IN INTEGER; PROCEDURE enter PIABLE vector OUT 8IT_ VECTOR) IS. VARIABLE valor: INTEGER; BEGIN lor =entero: veer FOR IN vectorREVERSE_RANGE LOOP vector():=BIT VAL valor REM 2): valor'=valor/2, END LOOP; END entero_logico; [END arg pack, Modelo 2.2. Paquete con declaracién de tipos, funcién de resolucion y procedimientos. del modelo. En la A continuacion se ilustra el comportamiento figura siguiente se da la ventana de onda correspondiente nals simulacién del mismo en V-SYSTEM. Obsérvese como la carg — TO valor de entrada solo se efectiia en las transi ssefial de control y con un retardo de 10 ns. nes de alto a bajo de la [Zighse ns “OnewittOne Figura 2.3. Ventana de onda correspondiente a la simulacién del registro propuesto en el simulador V-System 2.1.3. MODELO VHDL DEL BUFFER EI modelo del buffer tri-estado cuenta con una sefial de control ‘activa por nivel que en nivel bajo mantiene la salida del circuito un ‘stado de alta impedancia de forma que no carga al bus de datos. Si el nivel de control es alto, el circuito transfiere el dato presente en la entrada a la salida. El retardo de propagacion de la entrada a la Salida se ha considerado de 15 ns mientras que el retardo en Gonmutar de transferencia a alta impedancia y viceversa se ha tomado como de 10 ns. te Al igual que en el caso del registro, si la entrada tiene alguna 6n estado de alta impedancia el circuito la toma como un ‘1’ A-continuacién, se da el modelo a utilizar en esta practica. imulacién de Arquitecturas ie WORK.arq_pack ALL, el nombre de la ENTIDAD no es buffer ya que esta es una palabra} pe —bufferd' indica que es un buffer de 4 bits oF) levee bufferd IS HE ‘GENERIC etardo_transterencia,TIME:=15 nsiretardo_2:TIME:=10 ns); PORTlentrada'IN vector_bus; control:IN BIT: salide: OUT vector_buS); | END buters; ARCHITECTURE comportamiento OF bufferd IS r PROCESS(control, entrada) | BEGIN IF control="1" THEN FOR i INO TO 3LOOP IF entrada(i)="1' OR entrada()="Z' THEN | salida())<=TRANSPORT'1/AFTER retardo_transferencie; ELSE salida()<=TRANSPORTOAFTER retarao_transterenca, | END IF; | END LOOP; ELSE | salida<=TRANSPORT(Z,,7:Z',Z)AFTER reterdo_Z; END IF: END PROCESS; END comportamiento: Modelo 2.3. Buffer tri-estado. En la figura siguiente se puede ver la ventana de onda del compilador-simulador V-SYSTEM correspondiente a la simulacion de este modelo, me ema cee =] [pene bey. Dee Don sas dyeens widow tp j (rm Jiconi) [omeae] (Giejoven) Figure 2.4. Ventana de onda correspondiente a la simulacion del buffer tr-estado en V-SYSTEW 2.4.4, MODELO VHDL DEL RELOJ DEL SISTEMA EI reloj del sistema genera una sefial cuadrada de un frecuencia determinada. La frecuencia se va a pasar al modelo como un genérico de forma que se puedan variar las velocidades facilmente. El modelo correspondiente al reloj sera: [ENTITY reioj IS GENERIC(periodo:TIME:=20 ns) ~coresponde @ una frecuencia de SOMH2 PORTrel0j OUT BIT=0); END reloj, e ARCHITECTURE comportamiento OF reloj |S at BEGIN . PROCESS : BEGIN WAIT FOR periodo/2; reloje="1' WAIT FOR period’? reloj<=9' . END PROCESS; END comportamiento, Modelo 2.4. Modelado de un reloj para el sistema propuesto, Simulacion eee SSeS ee 2.1.8. DESARROLLO DE LA PRACTICA Estas seis seales son as de control que maneja la uidad de Se pretende simular la transferencia de informacion entre control para'el goblemo'de la maquina. distintos registros conectados a un bus comun. Para ello hay que deserbirel circuto de la figura 2.2 mediante un modelo estructural que integre los modelos del registro y del buffer dados anteriormente. Ya que integrar todos los elementos en una sola arauitectura puede feeultar muy laborioso, debido al gran numero de conexiones, se recomienda seguir los pasos indicados a continuacion: El bus de datos puede declararse en la ENTIDAD © no. Si se hace, sera una sefial con conexién al exterior y por tanto debe deciararse del tipo inout puesto que admite ambos sentidos. Si se deja como una sefial interna de union de bioques no hay que preocuparse de los sentidos de los datos. 4, Comprobar el correcto funcionamiento d fel circuito y realizar . cargas de los registros desde el bus de datos y transferencias 4. Realizar la descripcion de un bloque formado por un registro y entre ellos un butfer con las sefiales de control preparadas para funcionar fen sincronia con un reloj tal como se puede ver en la figura siguiente. Notese como las sefiales de entrada y salida aun no estan unidas con lo que no se necesita declarar esas sefiales como resueltas, La carga de datos en los registros se hard desde el simulador de V-SysTeM forzando sefiales sobre el bus de datos y Posteriormente realizando ia correcta emision de sefiales de control. Tener cuidado de no forzar sefiales en modo freeze ya que esto no permitira al modelo simulado cambiar su valor. 2.Comprobar el correcto funcionamiento del bloque anterior Utilizar drive 0 deposit forzando sefiales en el simulador V-SYSTEM. 5.Moditicar la frecuencia de reloj y averiguar la_maxima frecuencia a la que es capaz de trabajar el circuito. Encontrar la justificacion tedrica que avale el resultado obtenido. winds % =sijomer | butfer Figura 2.5. Bloque de almacenamiento de informacién. 3. Modelar el circuito completo de la figura 2.2 mediante una descripcién estructural basada en los bloques anteriores. Se instanciaran tres bloques y el generador de relo). Las sefiales de entrada y salida a/desde los bloques iran unidas simulando el bus de datos. Dado que la sefial del bus es generada por miltiples drivers se declarara como resuelta. Las sefiales Ly T de cada bloque pasarén a ser La, Lb, Le, Ta, Tb y Tc en la declaracion de la ENTIDAD del modelo. ————E——————————————— SIMULACION DE OPERACIONES DE PROCESO PRACTICA 2. 2.2.1. OBJETIVOS En esta practica se pretende simular el secuenciamiento de sefiales que genera la unidad de control para realizar una operacin elemental de proceso, es decir, aquella operacion que se encarga de “filtrar’ la informacion @ través de la ALU obteniendo un resultado en funcion de unos operandos y de una determinada operacién 2.2.2. INTRODUCCION TEORICA Existen muchas posibilidades a la hora de disefiar la unidad de ejecucion de un computador y todas influyen notablemente en la temporizacion de las sefiales de control. En este caso trabajaremos con la arquitectura cuyo esquema se muestra en la figura siguiente. Figura 2.6. Arquitectura propuesta En esta arquitectura contamos con un registro ACUMULADOR que almacena los resultados de las operaciones de la ALU y a la vez proporciona un operando. El otro operando es un dato entregado por el bus de datos a través del buffer correspondiente, EI registro ACUMULADOR puede volcar su contenido en el bus de datos gracias a otfo buffer conectado adecuadamente. El registro ACUMULADOR se gobieman mediante una sefal activa por flanco de bajada mientras que el buffer tri-estado conmuta del estado de alta impedancia al de transferencia gracias a una sefial de control activa por nivel alto. Como se puede ver, las sefiales de control estan sincronizadas por un reloj comin a todos los elementos. 2.2.3. MODELO VHDL DE LA ALU Se ha modelado una ALU de 4 bits que pretende ser una simplificacion del integrado 74181. Su diagrama de conexiones sigue este esquema: 20,a1,02,03 BO, bt, b2, 63 modo baa \ uf ch .n,12,08 Figura 2.7. Diagrama de conexiones de la ALU. Las operaciones se realizan sobre dos palabras de 4 bits (a0-a3 y b0-b3) y generan un resultado de 4 bits (r0-r3) en funcion de la operacién seleccionada y del acarreo inicial de entrada (cn). La seleccion de la operacion se realiza mediante las lineas op0-op1 y ‘modo de forma que se pueden ejecutar 4 operaciones légicas y otras 4 aritméticas de acuerdo a la tabla siguiente: seleccion a opt-op_ | M2do=0 | modo=4 00 a aORb of. b @ AND b 10 a+b | aXxORb 1 a-b NOT a Tabla 2.1. Seleccién de operaciones en el modelo de la ALU. USE WORK arq_pack ALL; En modo 0 se realizan las operaciones aritméticas de suma y resta y las transferencias de los operandos a la salida. Para la resta se hace el complemento a 1 del operando b y se suma con el operando a Para que el resultado de la resta sea correcto se debe afiadir 1 a través del acarreo de entrada (on). En modo 1 se realizan las operaciones légicas expuestas en la tabla. La logica del integrado trata todos los datos como numeros binarios puros, es decir, sin signo, por Io que es tarea del arquitecto de computadores 0 del programador el interpretar los resultados en funcion de la codificacion supuesta para lus dalus. Esta ALU genera 2 lineas mas, que pueden servir para activar los correspondientes flags: la linea cns que representa el acarreo de salida y la linea igual que sefiala que los operandos de entrada son ea cns solo esta activa con las operaciones aritméticas de suma y resta mientras que igual solo se activa con la operacion de resta. Ya que igual evaliia el que los operandos sean iguales sobre el resultado (busca un resultado 0) se debe tener cuidado de corregir el iguales. La | mismo poniendo el acarreo de entrada a 1 El modelo VHDL para la ALU descrita es el siguiente: ENTITY alu_abits 1S GENERIC (retardo:TIME'=25 ns); PORT (a, biIN BIT_VECTOR(3 DOWNTO 0), ‘OpIN BIT_VECTOR(1 DOWNTO 0); _Aifedo, cniin BIT; resultado: QUT BIT_VECTOR(3 DOWNTO 0); cns, igual: OUT BIT); END alu_4bits; Q ARCHITECTURE compontamiento OF aly Ais IS JS BEGIN oO PROCESS\a, b, op, modo, @7)—? 9 VARIABLE op_a, op_b:B/T VECTOR (3 DOWNTO 0); VARIABLE seleccion'8IT_VECTOR (1 DOWNTO 0); VARIABLE operacion: INTEGER; VARIABLE saida:BIT_VECTOR (3 DOWNTO 0); VARIABLE aux, eux2, aux3 INTEGER; BEGIN ‘ x logico_entero(op_b, aux2) ~asociamos las entradas @ variables ya que los procedimientos solo trabajan con variables op_a'=a, op_b:=b; seleccion:=op; logico_entero{seleccion, operacion); operaciones logicas IF (modo WHEN 1=>salida =a AND b Cs WHEN WHEN : a WHEN OTHERS=>NULL; oe END CASE, wh Po yo 1 yo ~operaciones anitméticas “ £. ye v CASE oneracion iS a* WHEN 0=>saida:=3, ns <=0' AFTER retard, fel <0" AFTER retard 2 okt iiot Wien t=>sakdaxp, CAG >=) THEN ens'<='0' AFTER retardo; ‘igual <='0' AFTER retardo, CASE operacion |S WHEN 0=>salida'=a OR b; cons <=0' AFTER retardo, (oa) “0' AFTER retardo; logico_entero(op_a, auxt); logico_entero(op_b, aux2); aux3'= auxt + aux2: IF cn = 't' THEN aux3:= aux3 + 1, ENDIF, IF auxd > 15 THEN ‘aux3:= aux3 - 16; ons <="1' AFTER retard, ELSE ons <=0' AFTER retardo; ENDIF; entero_logico (aux3, salida); logico_entero(op_a, auxt), “compiemenio a 1 del operendo B aux2= 15 - aux2; aux3.=aurt + aux2; IF cn = '1' THEN aux3:= aux3 + 1; END IF; IF aux > 15 THEN ‘aux3'= aux3 - 16, ons <='1" AFTER retardo; ELSE ons <=! AFTER setardo, END IF; IF aux3 = 0 THEN igual <="1" AFTER retardo; ELSE iqual <=0' AFTER retardo; END IF, entero_logico(aux3, salida); WHEN OTHERS=>NULL, END CASE: -salida AFTER retardo, END PROCESS; END comportamiento: Modelo 2.5. Modelo VHDL para una ALU de 4 bits, 2.2.4. DESARROLLO DE LA PRACTICA Se pretende simular el procesamiento de informacion a través de la ALU. Para ello, hay que describir el circuito de la figura 2.6 mediante un modelo estructural. Se recomienda seguir los pasos indicados a continuacién’ 1. Realizar la descripcion estructural del circuito de la figura 2.6 utiizando los modelos del registro y del buffer dados en la practica 2.1 junto con la ALU modelada aqui. Todas las sefiales de control estaran sincronizadas con una senal de reloj (por ejemplo la generada en la practica 2.1) 2. Comprobar su correcto funcionamiento forzando sefiales en el simulador V-SySTEM para realizar operaciones logicas y aritméticas. Hay que tener en cuenta, cuando se fuercen sefiales, que el modo debe ser deposit 0 drive para no fijar el valor dado sobre la lineas de bus de datos. Se 3. Realizar sumas y restas con nimeros con signo y sin signo, interpretando los resultados correctamente y estudiando el comportamiento de los flags. 4, Disefiar los circultos adecuados para generar los flags de overflow dependiendo de las codificaciones supuestas. para los operandos 5. Modificar la frecuencia de reloj y averiguar la maxima frecuencia a la que es capaz de trabajar el circuito. r yo", 0 PRACTICA 2.3:IMPLEMENTACION DE UNA SENCILLA MAQUINA DE ESTADOS MEDIANTE EL METODO DE LA TABLA DE ESTADOS 2.3.1. OBJETIVOS Dado que la unidad de control de un computador no es mas que una compleja maquina de estados finitos, vamos a introducirnos en los diferentes métodos de disefio de dichas maquinas tomando un ejemplo sencillo como base. En la figura siguiente se ilustra la maquina de estados a disefiar. saliaas estado | Seta a 0 [0 1 19 2 oo 3 ots Figura 2.8, Maquina de estados a diseftar. En la introduccion teérica, se discuten los diferentes métodos de disefio. En esta practica implementaremos la maquina de estados de la figura anterior utilizando el primero de los métodos. 2.3.2. INTRODUCCION TEORICA La realizacion de todas las funciones de un sistema necesita de una serie de operaciones elementales: de transferencia y de proceso, como hemos visto en las practicas anteriores. Estas operaciones elementales se realizan gracias a la secuencia de sefiales que genera la unidad de control. A esta emision de sefiales se le suele denominar microoperaciones, cada una de las cuales necesita de un ciclo de relo}. Las microoperaciones son ejecutadas sobre la unidad de ejecucién bajo el gobierno del controlador o unidad de control en funcién del estado anterior. Segtin esto, la unidad de control es una méquina de estados finitos, en donde cada estado representa una microoperacion determinada, es decir, un conjunto de sefales activadas Existen basicamente dos métodos de disefio: las unidades de control cableadas y las microprogramadas. Las unidades de control cableadas representan el método tradicional de disefo légico basado en circuitos secuenciales mientras que las microprogramadas ejecutan las microoperaciones leyendo las palabras de estado de una memoria ROM de control 2.3.2.1. UNIDADES DE CONTROL CABLEADAS El controlador 0 unidad de control es una maquina secuencial del tipo Moore, donde las salidas son completamente dependientes del estado del controlador y no de las entradas. La tnica entrada X no tiene influencia directa sobre las salidas. El nimero de estados dependera del numero de operaciones elementales que se realicen y a su vez nos indicaré el numero de biestables necesarios para la realizacion de| mismo. Asi, dos biestables pueden generar cuatro estados, tres biestables ocho estados, etc. Iniciaimente el controlador estara en un estado de espera, Para poner el controlador fuera de este estado es necesario alguna entrada extema X (pulsador, salida de un decodificador, etc). En el caso que nos ocupa en esta practica, la entrada externa es un pulsador: si esta pulsado tengo X=1 y sino lo esta La implementacion de estos circuitos puede hacerse de diferentes formas: » método de la tabla de estados; ‘* método de las células de retardo; y ‘* método del contador secuenciador. 2. 41.1. Método de la tabla de estados ‘Vamos a explicar el método aplicandolo a la maquina de estados finitos propuesta en la figura 2.8. En primer lugar, hemos de construir la tabla de verdad correspondiente. La tabla de verdad que describe este diagrama de flujo sera estado | estado ] actual siguiente | salidas X=0_[_ X= ‘a1a0_[ata0|a1a0 oo | 00 | 04 01 10 [01 10 uf 14 00 | 00 lolo|lo)ns +ololola Tabla 2.2. Correspondiente a la maquina de estados propuesta. Donde Q1 vy Q0 corresponden a las salidas de sendos biestables tipo D. Los cuatro estados generan microoperaciones que se manifiestan en las lineas de control (salidas) Z y R. De acuerdo a la tabla de verdad del biestable D y a la correspondiente al diagrama de flujo obtenemos los siguientes diagramas de Kamaugh: oy] Oe SROYoo or 14 10 10 Ae es = Sige 0 [ofofol] o 1 i 1 (opel + fi Retej Fip-lop Oy sutable de verdad Karmaugh para DD ‘armaugh para D1 Figura 2.9. Diagramas de Karnaugh para la tabla de verdad ‘que dan lugar a la légica siguiente: DO=Q0Q1+O% _ D1=Q0Q1+Q0Q1K Seguin esto, el controlador quedaria tal como muestra la figura siguiente. Tae an aL a, a a ee ee Reto, Figura 2.10, Controlador correspondiente @ la maquina de estados. El circuito representa la parte del controlador que determina el secuenciamiento de estado a estado. Las estructuras que generan las excitaciones de los biestables DO y D1 no se dan de forma explicita sino que se indican por los bloques de légica. Esta se puede realizar mediante puertas discretas 0 con una memoria ROM o EPROM donde las entradas QO, Q1 y X serian las direcciones de memoria y las salidas DO y D1 corresponderian a la palabra leida de la memoria Ademés de esto, seria necesaria la logica correspondiente a las salidas Z y R con lo que el circuito quedaria como indica la figura 2.11 Z=Qia0 R=Q100 _ = So: f : mt | 2 voy ELOY Figura 2.11. Circuito completo. El controlador se disefié con un numero minimo de biestables. Esta es una de las caracteristicas fundamentales de este método. Otra es que, al ser tan sistematico, es facilmente aplicable al disefio automatico (técnicas de disefio asistide por computador). 2.3.3. DESARROLLO DE LA PRACTICA En resumidas cuentas, el objetivo de la practica es modelar el Circuito de la figura anterior. Como ya se ha indicado, en esta practica se usaran biestables tipo D. Un modelo valido para el biestable tipo D sera el siguiente: [ENTITY biestable_D 1S |" PORT(O, CLK'INBIT;Q, Q_MENOS:OUT BIT); END bicstable_0; ARCHITECTURE comportamiento OF biestable_D IS |BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK='t' THEN CASE DIS WHEN "1° Qc='t! Q_MENOS<= Q_MENOS<=1; END CASE; END IF, END PROCESS; END comportamiento; Modelo 2.6. Descripcién de un biestable tipo D. Los pasos @ seguir serén: 1.Modelar, mediante una descripcién comportamental, los circuitos combinacionales asociados a cada biestable. 2.Modelar mediante una descripcién estructural la red de biestables y la ldgica combinacional que dan lugar al controlador. 3.Completar el modelo afiadiendo la légica que genera las salidas (sefales de control) Zy R 4. Comprobar el correcto funcionamiento del circuito descrito mediante un test-bench adecuado, ———— a PRACTICA 2.4: IMPLEMENTACION DE UNA MAQUINA DE ESTADOS MEDIANTE EL METODO DE LAS CELULAS DE RETARDO 2.4.1. OBJETIVOS Como ya se ha indicado en la practica 3, a la hora de disefiar una unidad de control cableada podemos utilizar también el método de las células de retardo. En este caso, el numero de biestables no es minimo (es mayor que si usamos el método de la tabla de estados) pero la l6gica es menor, es decir, el numero de puertas para generar funciones disminuye siendo el disefio mas sistematico y ordenado, \Veamos el caso de la practica anterior utilizando este método. 2.4.2. INTRODUCCION TEORICA: METODO DE LAS CELULAS DE RETARDO Basicamente el método consiste en construir estructuras similares a los registros de desplazamiento pero con la particularidad de que por estos registros solo viaja un unico 't'. t Figura 2.12. Cadena de células de retardo, Siguiendo con el ejemplo propuesto en la practica anterior, Construiremos un registro de desplazamiento de cuatro etapas, una por Cada estado necesario, de forma que la condicién Q=1 progresara a lo largo de todo el registro con cada ciclo de reloj. Cuando la condicion de set (Q=1) se desplace fuera del ultimo biestable, automaticamente se detiene la secuencia. eee ——eeeeseeooasSwaamoeacem” Sibien en el sistema minimo (método de la tabla de estados) no es necesario preocuparse por el estado al conectar el circuito, hay un detalle que se debe tener en cuenta a la hora de implementar el método de las células de retardo: Es necesario asegurar que al principio uno y sélo uno de los biestables esta en la condicion de set (Q=1) y, ademas, ese biestable es el primero de la cadena. Esto ignifica que es necesario un circuito iniciador. Se podria disefiar un Circuito como el de la figura siguiente. a sah hi no Figura 2.13, Circuito resultante para la maquina de estados propuesta utilizando el método de las células de retardo Las salidas del registro en cada célula de retardo se utlizaran para conectar la ldgica necesaria para conseguir las sefiales de salida (Sefiales de control), teniendo en cuenta los estados en los que se han de product. Este circuito es un secuenciador. En este caso, la secuencia es inica pero el desarrollo tedrico es valido igualmente si deseamos disefiar un secuenciador que ejecute procesos diferentes en funcién de una palabra de control. Este ultimo caso es el de la unidad de control de un microprocesador. 2.4.3. DESARROLLO DE LA PRACTICA Los pasos a seguir seran: 1, Modelar, mediante una descripcion estructural, el circuito iniciador y comprobar su correcto funcionamiento forzando sefiales en el simulador V-SysTem. Este circuito debe ser tal que genere un solo ‘1’ a la salida por cada pulsacion del interruptor, independientemente de los rebotes, 2.Modelar mediante una descripcién estructural la cadena de células de retardo que dan lugar a la maquina de estados propuesta. 3. Completar el circuito uniendo ambas partes mediante una descripcién estructural, 4.Comprobar el correcto funcionamiento del circuito descrito mediante un test-bench adecuado. PRACTICA 2.5:DISENO DE UN SECUENCIADOR DE INSTRUCCIONES (UNIDAD DE CONTROL) 2.5.1, OBJETIVOS En esta practica se pretende disefiar una unidad de control para una arquitectura sencilla (sistema microcomputador). El método a seguir sera el de las células de retardo (practica 2.4) pero aplicado a ln Secuenciador capaz de cjecutar diferentes secuencias en funcién de una palabra de control (instruccién), La utilizacion de este método de disefio se debe a que es el mas sistemético y el que permite una mejor depuracién de los fallos. 2.5.2. INTRODUCCION TEORICA: SECUENCIADOR CON VARIAS. SECUENCIAS El secuenciador (unidad de control) que hemos visto en la practica 2.4 mantiene una secuencia fija. En el caso mas general sera ecesario que el controlador siga diterentes secuencias bajo diferentes circunstancias. Seran necesarias una serie de entradas f0, f1,12,... 8. que vendran de fuentes externas, del resultado del tratamiento de los datos o simplemente del estado del sistema (indicado por los flags) que determinen e| proceso a ejecutar. Este tipo de entradas se denomina entradas de realimentaci6n Consideremos un caso en el que haya una entrada de realimentacion f0 al controlador y supongamos que se necesita que el valor de {0 durante el k-esimo ciclo de reloj ha de seleccionar la operacion a realizar. Una forma de realizarlo, aunque no la Unica, seria la que se indica en la figura siguiente. . Unt’ que entre por D en el biestable A seguira uno de los dos caminos altemativos dependiendo del valor que tome fg. De esta forma, ese ‘1’ llegaré al biestable B habiendo disparado microoperaciones diferentes segtin el camino recorrido, y rmicrooperaciones altemativas : =e L=D- . cielo ket ciclo k ciclo ket Figura 2.14, Secuenciador con dos secuencias distintas. En el caso mas general puede haber mas de dos caminos alternativos y pueden tener diferentes longitudes (como se puede ver en a figura siguiente) ie Figura 2.15. Controlador que permite cuatro secuencias diferentes. Cada uno de los caminos corresponde al cronograma de ejecucién de una determinada instruccion. Estas instrucciones realizan una serie de operaciones elementales que se componen de microoperaciones. Por cada célula de retardo tenemos una conjunto de microoperaciones correspondientes al mismo ciclo de reloj ———————E—————————— Las entradas f1, fg representan el cédigo de operacién de la instruccion a ejecutar y determinan, al decodificarse, el camino a seguir. El circuito anterior puede complicarse un poco mas aftadiendo la posibilidad de realizar microoperaciones diferentes en un ciclo de relo] para una misma instruccién. Este seria el caso de las bifurcaciones condicionales. En la figura siguiente se ha representado un circuito que posee esta funcionalidad. | al sul ab Figura 2.16. Controlador que introduce una secuencia con bifurcacion condicional. La sefial de control fo indicard cual de los dos caminos dentro de la secuencia de la instruccion se ha de seguir. Si consideramos que se trata de una bifurcacién condicional, dicha sefial podria ser el resultado de la evaluacion de la condicion. 2.5.4. DESARROLLO DE LA PRACTICA En esta practica desarrollaremos un secuenciador (unidad de control) adaptado al sistema microcomputador que ilustra la figura 2.17. Este sistema esta compuesto de una memoria RAM, una ALU, un registro contador de programa (PC), un registro de direcciones de memoria (MAR), un registro de instrucciones (IR), un acumulador (AC) y un controlador (secuenciador) que hay que disefiar. La memoria RAM es de 64 palabras de 8 bits lo que significa que necesita 6 bits para direccionaria. Tiene dos entradas de control: una de habilitacién (CS) y otra para seleccién de lectura/escnitura (R/ W). Cuando la entrada de habilitacion (CS) es "t' la memoria se conecta al bus de datos de 8 bits. La transferencia de datos sobre el bus es bidireccional y depende de la linea de lectura/escritura (R/W). La ALU puede aceptar una palabra del bus de datos gracias a la linea de control TM (transferencia de memoria) y suministrarla al bus por orden de la linea de control TAC (transferencia de acumulador). El registro acumuulador (AC) se carga con el resultado de una operacion por orden de la linea de control TA (transferencia de ALU) El registro de instruccion (IR) lee palabras del bus de datos mediante la linea de control TB (transferencia de bus). Los 6 bits de menor peso de la palabra contenida en el registro de instruccién (IR) corresponden a una direccion que puede ser cargada en el registro de direcciones de memoria (MAR) mientras que los 2 bits de mayor peso indican la operacién a realizar y se usan como entradas de seleccién del controlador. El registro de direcciones de memoria (MAR) tiene dos entradas de control que se usan para cargar dicho registro con el contenido del registro de instruccién (IR) 0 con el contenido del contador de programa (PC). La Unica operacion que es capaz de realizar el contador de programa (PC) es la de incrementar su contenido y ello se lleva a cabo bajo el control de la linea IPC (incremento de contador de programa). EI controlador tiene una linea de salida para cada una de las lineas de control que se han descrito hasta aqui ‘Cualquier microoperacién se realiza cuando la linea de control adopte el nivel de habilitacion salvo las sefiales de control que producen la carga de algun registro que lo hacen en el flanco de bajada. Con excepcién de la memoria, todos los registros y el Controlador funcionan con el reioj del sistema Las instrucciones que utilizaremos son instruecion alto ‘suma al acumulador el contenido de a direcsién Testa al acumuiador el contenido de la direcoién {ransfiere el contenido del acumulador a la direccién RAM 4 pastas x8 CONTROLADOR: srtciaaage —+( Biswas my Tessa ampen me ee om Figura 2.17. Sistema microcomputédor. ee ‘Supondremos que el programa se encuentra almacenado en la memoria en posiciones sucesivas comenzando por las mas bajas, si bien, los datos pueden estar en cualquier direccion. EI funcionamiento del sistema sera de la siguiente manera: Primero se realiza un ciclo de busqueda de instruccion (fase de fetch) que llevard la primera instruccién al registro de instruccién (IR). A continuacion, se realizar la operacién indicada en el citado registro siguiendo una determinada secuencia de microoperaciones. Siempre que sea factible, se realizara mas de una operacion elemental por ciclo de reloj con el fin de ahorrar tiempo. La operacién de busqueda es siempre igual mientras que la ejecucién de las instrucciones lleva asociadas diferentes microoperaciones. Tras realizar una instruccion siempre se ejecutara la que esté en la siguiente posicién de memoria. Tanto en la instruccion de suma como en la resta, el resultado de la operacion se deja en el acumulador. Los pasos a seauir seran 1. Elaborar los cronogramas que ejecutan las cuatro instrucciones y la fase de busqueda (fefch) en esta arquitectura. 2. Modelar mediante una descripcién estructural el secuenciador que implementa la ejecucién de las 4 instrucciones descritas, 3. Comprobar el correcto funcionamiento de! modelo anterior mediante un test-bench. PRACTICA 2.6: DISENO DE UNA UNIDAD DE CONTROL MICROPROGRAMADA 2.6.1. OBJETIVOS En esta practica se pretende disefiar una unidad de control microprogramada para el gobierno de una ruta de datos sencilla. La ruta de datos estaré compuesta de una unidad de ejecucion (ALU), unos regietros de propésito general, registros punteros y un interface ‘con memoria muy simple. Para hacer mas facil el disefio se daran las sefiales de control de los dispositivos de la ruta de datos asi como el formato de las microinstrucciones. Solo vamos a escribir los microprogramas de unas pocas instrucciones de ensamblador con lo que no sera necesario completar el disefio de la unidad de control en prevision de todos los casos posibles. 2.6.2. INTRODUCCION TEORICA La microprogramacién consiste en sustituir la logica secuencial que constituye la unidad de control por una memoria ROM que almacena en palabras las diferentes sefiales de control en cada uno de los estados posibles. De esta manera, ejecutar una instruccion es leer el microprograma asociado de dicha memoria ROM o memoria de control. La ventaja estriba en la simplicidad del disefio y de la depuracin de errores asi como la gran facilidad que proporciona de cara a la adaptacién a diferentes juegos de instrucciones 0 compatibilidad entre familias. Su gran desventaja esta en la lentitud que suponen los accesos a memoria Desde el punto de vista de! arquitecto de computadores, el disefio consiste solamente en calcular los cronogramas de ejecucion de las instrucciones del juego sobre la ruta de datos de la maquina. Cada period de ejecucion de la instruccién se convierte a una microinstruccion (palabra en memoria de control) donde cada sefial de la ruta de datos tiene asignado un bit cuyo valor viene dado por estar activa 0 no. El orden en el que se encuentran reflejadas las sefiales de control en la palabra de microinstruccion es consecuencia del formato asignado, 2.6.3. DESCRIPCION DE LA ARQUITECTURA PROPUESTA A continuacién, se ilustra la ruta de datos de un computador cuya unidad de control es microprogramada. Tanto el ancho del bus de datos como el de direcciones es de 16 bits. tI registro de estado cuenta con 6 flags. La memoria de contro! cuenta con 4K palabras. Las sefiales de control de los diferentes componentes son las indicadas en el esquema, oo luninao De CONTROL Figura 2.18. Arquitectura propuesta para la practica 2.6. Vamos a establecer una serie de campos que agrupen a las sefiales de control por funciones similares de manera que podamos definir un formato de microinstruccién facil de comprender. Campo 1: carga de registros Usaremos un bit para cada sefial de control. ; [bito | pitt | bit2 [bits | bit4 | bits | bité | bit7 | bite (tac tri [tec [isp [Lo [uns] 1B | Lc] LD Tabla 2.3. Campo de registros. ; ‘Campo 2: acceso al bus de datos Ya que son operaciones excluyentes, que no se pueden dar a la vez, podemos codificar el campo de acuerdo a la siguiente tabla bit 10-bit 9 [funcién 00 {transferencia desde la ALU (se activa TALU) 1 {transferencia desde la UNIDAD DE CONTROL (TUC) 10 ‘transferencia con memoria (TMEM, TSEN) 4 No operacion Tabla 2.4. Codificacion del campo de acceso al bus de datos. Campo 3: acceso al bus de direcciones Al igual que en el caso anterior, ya que son operaciones excluyentes podemos codiicar el campo de acuerdo a la siguiente tabla bit 12-bit 14 [funcion 00 [transferencia del contador de programa (TPC) _| 01 {transferencia del puntero de stack (TSP) 10 transferencia desde la ALU (TDIR) 11 [no operacién Tabla 2.5. Codificacion del campo de acceso al bus de direcciones, Campo 4: ut fad aritmético-légica Este campo contiene 6 bits no codificados con el siguiente significado: pes bit 14-bit 15 | bit 16-bit 18 x YOY SEL_OP ‘Campo 5: memoria Bastard con una codificacion del campo en 2 bits para indicar lectura, escritura y no operacién: bit 20-bit 19 [funcion 00 lectura 1 escritura 10 no operacion W No operacion Tabla 2.6. Codificacién de! campo de acceso a la memoria. Ahora, hay que afiadir aquellos campos que completen la microinstrucci6n con el control de secuenciamiento. Vamos a suponer que el secuenciamiento es implicito. Tendremos, por tanto, todas las microinstrucciones correspondientes a un microprograma ordenadas secuencialmente. Necesitamos un bit que indique si la microinstruccién es la ultima o no, de forma que se salte al siguiente microprograma o a una fase de fetch, si es necesario, Por otro lado, hemos de ser capaces de ejecutar instrucciones de salto condicional. Estas instrucciones evaluan una condicién sobre los flags del registro de estado, Necesitamos un campo que seleccione cual de estos flags es el que se va a comprobar y podemos afiadir un bit que sirva para evaluar la condicién o su contraria. Hace falta también un bit que dé el resultado de la evaluaci6n. Finalmente, hemos de ser capaces de saltar a otra parte del microprograma, si asi lo requiere la condicién de salto. Dado que la memoria de control tiene 4K necesitaremos 12 bits para dar una microdireccién. Este campo de direccién se puede solapar con otros campos siempre que se dé un bit indicativo del significado real del campo. Este bit sera el mismo que indica cual es el resultado de la evaluacion de la condicion Nosotros podemos solapar el campo de microdireccién con los ‘campos 2, 3, 4y 5. Juntando todo esto tenefnos’ funcién bit21__|-sies Ono hay microsaito ~sie8 1 hay microsalto a la microdireccién indicada por los 12 bits siguientes (de! 9 al 20) bit 22-24 | codifican las posibles condiciones de salto bit 25 |- sies 0 la condicion es la anterior - sies 1 la condicion es la negada de la anterior bit26_|-sies O indica que se sigue la secuencia del microprograma 81 e8 1 termina el microprograma y comienza otro 0 una nueva fase de fetch ‘Tabla 2.7. Campo de secuenciamiento. La codificacion de! campo de condiciones de salto es la que sigue: bit 25-bit 22 | funcion x 000 x 000 | no salto 0-001 flag + 0 010 flag? oon flag 3 0 400 fag 4 0 101 flag 0 110 flag 6 1001 | no flag t 1010 | noflag2 1011 | nofags | 1100 | noffag4 1101 | no flags 110 | no nag Tabla 2.8. Campo de condiciones de salto. La microinstruccion completa quedaré como se ilustra en la figura siguiente meemeest Teme] ay [PSS] on te rote Figura 2.19, Formato de la microinstruccién. Dado que el secuenciamiento es implicito, el hardware de la unidad de control podria ser mas 0 menos como el de la figura siguiente. cots 8 WSRUCCION sae oO of a Prmen] Bear ACARENTO : ——— srmchy 8 ROM Tick cRoWsTRUGCIONES wen Poole Figura 2.20. Esquema del hardware de la unidad de control. 2. }. DESARROLLO DE LA PRACTICA Con todo esto, microprogramar a nivel de operaciones elementales las siguientes instrucciones: + JMP desplazamiento cuyo formato se da a continuacién y que realiza la operacion de salto incondicional a la posicién de Memoria dada por el valor actual del PC mas el desplazamiento indicado en el campo correspondiente del formato. cexpacanionis —] is Figura 2.21. Formato de la instrucci6n JMP desplazamiento. * ADD C, D que suma los registros C y D y guardar el resultado en D. Su formato también se da a continuacién, digo de operacion | registro ¢ | registro D ‘sits ‘bits 4 bits Figura 2.22. Formato de la instruccion ADD ©, D + JZ desplazamiento que salta si cero a la posicion desplazamiento. Los pasos a seguir seran: 1. Completar el disefo interno de la unidad de contro! de la figura 2.20 y modelaric en VHDL. 2. Determinar los cronogramas de las 3 instrucciones propuestas y escribir sus microprogramas en un fichero de texto que simule la ROM de control. 3. Simular en V-SYSTEM el comportamiento completo de la unidad de control, Capitulo 3 La memoria Tanto la memoria como el sistema de entrada/salida son bloques que hacen referencia a la ubicacion de los datos. La memoria es uno de los elementos bésicos de la arquitectura de un computador. No solo porque forme parte de la estructura esencial de la maquina, sino porque influye notablemente en el rendimiento, unwap ve | beecene | EJECUCION UNIDAD DE seman CONTROL : eich , Figura 3.1. La memoria dentro de la Arquitectura de Von -Neumann. ——— ————————— Los tiempos de acceso a las memorias siempre son mucho més grandes que los tiempos de ejecucion de instrucciones por lo que se pueden generar latencias muy grandes en los microprocesadores y cuellos de botella en la transferencia de datos. Por esto, es importante pensar en arquitecturas de memoria que mejoren el rendimiento aumentando el ancho de banda y permitiendo latencias menores. El estudio de estas arquitecturas lleva a disefar interfaces con memoria especiales y a realizar asociaciones de integrados de memoria. Por otra parte, aprovechando las posibilidades de la tecnologi se implementan jerarquias de memoria que permiten colocar cerca del procesador bancos de memoria répida (aunque de tamafio pequefio) para procurar acelerar el funcionamiento del sistema. Este es el caso de la memoria caché, por ejemplo. En este capitulo se van a proponer practicas que pretenden barrer todo el campo de! disefio arquitecténico en lo que al subsistema de memoria se refiere: acceso a memoria, asociacion de memorias, memoria cache, ete. PRACTICA 3.1: SECUENCIA DE OPERACION CON UNA MEmoRIA ROM |. OBJETIVOS 3. El objetivo de esta practica es familiarizarse con el manejo de memorias tanto en lo que a la secuencia de operaciones se refiere como a su modelado con lenguaje VHDL. Para conseguir este objetivo vamos a trabajar con una memoria ROM de tamario 64x8. 3.1.2. INTRODUCCION TEORICA La memoria ROM se ajusta al esquema de la figura siguiente. elas de memoria BUS DE DATOS | Me —— Figura 3.2. Esquema de una memoria ROM 64x8. La secuencia de operaciones para manejar la memoria sera la ilustrada en el cronograma siguiente. BUS DE DIRECCIONES. sireccion valida BUS DE DATOS ME reiardo—rtardo Figura 3.3. Cronograma de operacisn de la memoria ROM 64x8, Como puede observarse, sélo tenemos un dato valido a la salida del bus de datos si la pastilla de memoria esté habilitada mediante la correspondiente sefial (ME). Existe un retardo entre la habilitacion de la pastilla y la obtencion del dato. También existe un retardo entre a deshabilitacion de la pastilia y el paso de la salida de datos a estado de alta impedancia (Z). Este retardo no tiene porque ser igual al citado anteriormente. El cronograma anterior se ha hecho manteniendo fija la direccién del bus de direcciones, Si la direccién hubiera cambiado, esto se deberia reflejar en un cambio en el dato presente en el bus de datos, de acuerdo al contenido almacenado en las celdas de memoria Correspondientes a la direccién codificada. La aparicion del nuevo dato No se produce inmediatamente sino que se percibiria un retardo, Dicho retardo, quizé mayor que el reflejado en el cronograma de la figura, se debe principalmente a los circuitos decodificadores de filas y columnas que dan acceso de lectura a las celdas adecuadas. La figura siguiente ilustra lo explicado en este parrafo, veargo BUS DE DIRECCIONES _direccién 1 Y sirecclon2 RUS NF NATOS ato 4 KX aato2 ME Figura 3.4. Cronograma de operacién de la memoria ROM 64x8, A la hora de manejar la memoria se han de tener muy en cuenta estos retardos, sobre todo si queremos sincronizarla con otros dispositivos. = OO 3.1.3. DESARROLLO DE LA PRACTICA Antes de pasar a manejar la memoria hemos de modelarta en lenguaje VHDL. En una primera aproximacion podriamos describir las celdas de memoria mediante un array. Ahora bien, una revision mas profunda del problema nos hace ver que no es el mejor método ya que una memoria ROM esta previamente cargada (programada) con una serie de datos. Si utilizamos un array debemos_inicializario primeramente lo cual, si las dimensiones de la memoria son mas o menos considerables, puede ser una tarea casi imposible. Seria mejor modelar la memoria de forma genérica y tomar su contenido de un fichero de datos. Esto sera lo que hagamos. El fichero de datos sera construido como una fichero ASCII que contiene un conjunto de caracteres "0" y "1". Asi, cambiar la programacion de la memoria ROM no es mas que cambiar el fichero del que lee los datos. EI fichero de texto puede ser generado autométicamente con un sencillo programa o bien escrito a mano con un editor cualquiera, Una vez descrita convenientemente la memoria ROM pasaremos @ manejarla con el simulador realizando lecturas de sus datos Los pasos a seguir seran: 1. Modelar la memoria ROM de tamajio 64x8, sin olvidarse de describir los retardos. 2. Escribir un fichero de texto que contenga los datos de la memoria. La primera linea contendré la cadena "0000 0000" correspondiente a la primera direcci6n, la segunda "0000 0001", la tercera "0000 0010", y asi sucesivamente hasta la Ultima linea que sera "1111 1111" y que corresponderé a la direccion 63. Esta secuencia puede ser generada automaticamente con un sencillo programa escrito lenguaje en C. Tienen la gran ventaja de que, a la hora de comprobar el correcto funcionamiento del modelo, el dato a leer es igual a la direccién de la posicién de memoria solicitada, 3.Comprobar el correcto funcionamiento de! modelo forzando sefiales en el simulador V-SySTEM. 4. Escribir un test-bench que gobierne la memoria respetando las temporizaciones y retardos asociados, y calcular la maxima frecuencia de operacion a la que puede trabajer la pastilla modelada.

También podría gustarte