5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om INSTITUTO POLITÉCNICO NACIONAL Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Zacatenco LABORATORIO DE MICROPROCESADORES PRÁCTICA No. 3 REGISTROS DE CORRIMIENTO Y BANCOS DE MEMORIA. PROF.: ALUMNOS: M. en C. Armando Martínez Ríos Martínez Zamudio Miguel Ángel Nieto Alcantara Jessika MATERIA: Microprocesadores GRUPO: 6CM2 http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 1/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om OBJETIVO: Comprobar la operación y el funcionamiento de bancos de memoria y registros de corrimiento. EQUIPO: a) Fuente de alimentación 5V. b) Tablilla de experimentación. c) Computadora d) Programador Universal “SuperPro Z” MATERIAL: Resistores y LEDS Oscilador 1Hz. Dip switch. Cables de conexión. GAL 22V10. MARCO TEÓRICO. BANCOS DE MEMORIA. Los módulos de memoria RAM son tarjetas de circuito impreso que tienen soldados integrados de memoria DRAM por una o ambas caras. La implementación DRAMaltas se basa en una topología de Circuito eléctrico quelogrando permite alcanzar densidades de memoria por cantidad de transistores, integrados de decenas o cientos de Megabits. Además de DRAM, los módulos poseen un integrado que permiten la identificación de los mismos ante el computador por medio del protocolo de comunicación SPD. La conexión con los demás componentes se realiza por medio de un área de pines en uno de los filos del circuito impreso, que permiten que el modulo al ser instalado en un zócalo apropiado de la placa base, tenga buen contacto eléctrico con los controladores de memoria y las fuentes de alimentación. La figurapuede siguiente esquematiza un que agrupamiento de ese tipo. Una tarjeta de memoria presentar el aspecto ilustra la figura: http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 2/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om Observe la división de la tarjeta en grupos de memoria llamados "bancos". Cada banco generalmente se encuentra totalmente ocupado por circuitos idénticos o totalmente vacíos. Cada banco puede estar ocupado por circuitos individuales de capacidad variable, a condición de que la lógica de administración haya sido prevista en la máquina. De este modo se pueden obtener varias combinaciones. CARACTERÍSTICAS El espacio de direcciones lógico de un proceso puede ser no contiguo. Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames). Se divide la memoria en bloques de tamaño llamados páginas. Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de paginas libres dispersos en la memoria. Es fácil controlar todas las páginas, ya que tienen el mismo tamaño. REGISTRO DE DESPLAZAMIENTO. Los registros de desplazamiento son circuitos secuenciales formados por biestables o flip-flops generalmente de tipo D conectados en serie y una circuitería adicional que controlará la manera de cargar y acceder a los datos que se almacenan. En los de desplazamiento se transfiere información de un flip-flop hacia el adyacente, dentro del mismo registro o a la entrada o salida del mismo. La capacidad de almacenamiento de un registro es el número total de bits que puede contener. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 3/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om E funcionamiento se realiza de manera síncrona con la señal de reloj. Gran parte de los registros de desplazamiento reales incluyen una señal RESET o CLEAR asíncrona, que permite poner simultáneamente todas las salidas en “0” o estado bajo, sin necesidad de introducir ceros seguidos. Esto permite limpiar rápidamente el registro de desplazamiento lo cual es muy importante a nivel práctico. Sus funciones dentro del sistema digital son: Servir de almacenamiento temporal de un conjunto de bits sobre los que se está realizando una labor de procesamiento. Desplazamiento de datos a lo largo de los flip-flops. TIPOS DE REGISTROS. Entrada serie/ Salida serie: Los datos deben introducirse en serie, es decir, bit a bit por una única línea. La salida se obtendrá de la misma manera. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 4/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om Entrada serie/ Salida paralelo: En este tipo de registros con salida en paralelo se dispone de la salida de cada flip-flop por lo que una vez almacenados los datos cada bit se representa en su respectiva salida. De esta manera todos los bits de salida estarán disponibles al mismo tiempo. Entrada paralelo/ Salida serie: En este tipo de registros los bits de daros se introducen simultáneamente a través de líneas paralelo en lugar de bit a bit. La salida serie se hace de igual modo que en el primero caso explicado una vez que los datos hayan sido almacenados. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 5/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om Entrada paralelo/ Salida paralelo: Registros de desplazamiento bidireccionales: Son aquellos en queutilizando los datos puertas se pueden desplazar a la izquierda o la derecha. puede implementar lógicas que permitan la transferencia de Se un bit de datos de una etapa a la siguiente de la izquierda o de la derecha dependiendo del nivel de una línea de control. Posee una entrada que estando en nivel alto hace que los bits almacenados en el registro se desplacen hacia la derecha y a nivel bajo se desplazarán hacia la izquierda. Cuando este a alto las puertas impares estarán activas y el estado de la salida de cada flip-flop pasara a la entrada D del siguiente. Cuando haya un flanco de reloj los bits se desplazaran a una posición a la derecha. Cuando este a bajo las puertas pares estarán activas y el estado de las salida de cada flip-flop pasara a la entrada D del anterior. Cuando haya un flanco de reloj los bits se desplazaran a una posición a la izquierda. DESARROLLO: Escriba un programa en VHDL que en un dispositivo grabe un registro de corrimiento de 8 bits. La velocidad del corrimiento será a un segundo. Con un selección deberá seleccionar si el corrimiento es a la derecha o abit la de izquierda. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 6/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om El programa grabado en la GAL para el registro de corrimiento fue: library ieee; use ieee.std_logic_1164.all; entity Corrimiento is port(E: in std_logic_vector (7 downto 0); clk, carga , sel: in std_logic; salida: out std_logic ); attribute pin_numbers of Corrimiento : entity is "E(7):3 E(6):4 E(5):5 E(4):6 E(3):7 E(2):8 E(1):9 E(0):10 sel:11 clk:1 carga:2 " & "salida:15 "; end Corrimiento; architecture Reg of Corrimiento is signal y: std_logic_vector(7 downto 0); signal x: std_logic; begin process (clk,carga,y,x) begin if(carga='0') then salida <= '0'; elsif (clk'event and clk='1')then if(carga='1')then y <= E; elsif(sel='1') then x <=y(7); for i in 0 to 6 loop y (7-i)<= y(6-i); end loop; y(0)<='0'; elsif(sel='0') then x <= y(0); for i in 1 to 7 loop y(i-1) <= y(i); end loop; y(7)<='0'; end if; end if; salida <= x; end process; end Reg; Fig. 1 Código en VHDL para la el registro de corrimiento. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 7/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om La distribución de los pines para el registro de corrimiento fue: Fig. 2 Distribución de pines para el registro de corrimiento Explicación del programa: Como nos podemos dar cuenta, en el código estamos declarando tres variables de entrada que son: la entrada del ciclo de reloj, la carga y la variable sel. Como salida tenemos a la variable salida. Ahora, en la entrada del ciclo de reloj, que siempre se asigna a la primera patita de la gal, va conectada precisamente la salida de nuestro circuito integrado 555, y es el que da la pauta para que la posición de los bits en el corrimiento se vaya dando de izquierda a derecha y de derecha a izquierda. La carga está funcionando de la siguiente manera: cuando nosotros E (que recordemos una variablepara de tipo vector deintroducimos 8 bits) de 8 un bits,dato esteendato se carga primeroque en es esta variable que después se arroje hacia la variable salida uno por uno, ya que este es un registro de corrimiento con entrada paralelo y salida en serie. La carga del dato en la variable se da con un solo cambio de estado en dicha variable, por tanto, basta con conectar un push a la entrada de la variable carga. La variable sel es la que nos va a servir para dar la orden de que el corrimiento vaya de derecha a izquierda y de izquierda a derecha. Si dicha entrada está habilitada en „0‟ el corrimiento se da de derecha a izquierda, caso contrario si está habilitada en „1‟, ya que de esta manera el corrimiento se da de izquierda a derecha. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 8/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om CIRCUITO REALIZADO. CIRCUITO DESARROLLADO PARA EL REGISTRO DE CORRIMIENTO. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 9/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om Arme cuatro bancos de memoria con dos datos de 4 bits cada una, saliendo todos los datos hacia los mismos leds de salida. El programa grabado en la GAL para el banco 1 de memoria fue: library ieee; use ieee.std_logic_1164.all; entity prac is port ( G: in std_logic; -- entrada de habilitacion I: in std_logic; Z: out std_logic_vector(3 downto 0) ); end prac; architecture BANCO1 of prac is begin Z <= "0001" when (G='1' and I='1')else "0010" when (G='1' and I='0')else "ZZZZ" when (G='0'); end BANCO1; Fig. 3 Código en VHDL para la el Banco de memoria 1 El programa grabado en la GAL para el banco 2 de memoria fue: library ieee; use ieee.std_logic_1164.all; entity prac is port ( G: in std_logic; -- entrada de habilitacion I: in std_logic; Z: out std_logic_vector(3 downto 0) ); end prac; architecture BANCO2 of prac is begin Z <= "0011" when (G='1' and I='1')else "0100" when (G='1' and I='0')else "ZZZZ" when (G='0'); end BANCO2; http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 10/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om Fig. 4 Código en VHDL para la el Banco de memoria 2 El programa grabado en la GAL para el banco 3 de memoria fue: library ieee; use ieee.std_logic_1164.all; entity prac is port ( G: in std_logic; -- entrada de habilitacion I: in std_logic; Z: out std_logic_vector(3 downto 0) ); end prac; architecture BANCO3 of prac is begin Z <= "0101" when (G='1' and I='1')else "0110" when (G='1' and I='0')else "ZZZZ" when (G='0'); end BANCO3; Fig. 5 Código en VHDL para la el Banco de memoria 3 El programa grabado en la GAL para el banco 4 de memoria fue: library ieee; use ieee.std_logic_1164.all; entity prac is port ( G: in std_logic; -- entrada de habilitacion I: in std_logic; Z: out std_logic_vector(3 downto 0) ); end prac; architecture BANCO4 of prac is begin Z <= "0111" when (G='1' and I='1')else "1000" when (G='1' and I='0')else "ZZZZ" when (G='0'); end BANCO4; Fig. 6 Código en VHDL para la el Banco de memoria 4 http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 11/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om La distribución de los pines para los bancos de memoria fue: Fig. 7 Distribución de pines para los bancos de memoria EL código para los cuatro bancos de memoria es muy similar, de echo es igual, la única diferencia entre uno y otro so los datos de salida. Para el banco uno los datos de salida son 1 y 2; para el banco 2 son 3 y 4; para el banco 3 son 5 y 6; y para el banco 4 son 7 y 8. En las primeras líneas colocamos las librerías necesarias para todas las sentencias que declaremos más adelante no tengan ningún problema a la hora de compilar. Después declaramos la entidad, y ésta es finalizada en la línea 9. De la línea 5 a la 8 declaramos entrada y salida.I será Como nos podemos dar cuenta hay dos denuestros entrada puertos y dos dede salida. La entrada ingresada al BANCO UNO directamente desde el dip. La entrada G será el nivel lógico que viene desde una salida del decodificador. La salida z es nuestro dato de salida. En la línea 11 declaramos la arquitectura, la inicializamos en la línea 13 con el begin, y la finalizamos en la línea 18. La elección del banco de memoria estará dada por las salidas del decodificado. para una entrada en el decodificador de „00‟, se habilitara el banco 1; para una entrada de „01‟ se habilitara el banco 2; para una entrada de „10‟ se habilitará el banco 3; y para una entrada de „11‟, se habilitara el banco 4 los datos correspondientes a cada dato serán elegidos por la entrada I, cuando esté endado „1‟ nos mostrara el primer y cuando esté. en „0‟, nos mostraraésta el segundo correspondiente a cadadato, uno de los bancos. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 12/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om OBSERVACIONES Y CONCLUSIONES. OBSERVACIONES MIGUEL ANGEL MARTÍNEZ ZAMUDIO La segunda parte de la práctica fue muy sencilla ya que debido a que en la práctica anterior habíamos trabajado con dos bancos de memoria, en esta práctica ya solo se necesitó grabar otras dos gals con el mismo programa pero cambiando los datos de salida. Gracias a que habíamos utilizado un decodificador de 2 a 4 ya no fue necesario programar otro deco, con este nos alcanzo perfectamente para nuestros 4 bancos. Respecto a la primera parte de la práctica, nos costó mucho trabajo hacer el código y que funcionara físicamente, ya que había veces en las que al compilarlo no nos marcaba ningún error, sin embargo, a la hora de probarlo el proto, no pasaba nada, no había nada de corrimiento ni a izquierdas ni aenderechas. Tras muchos intentos por fin quedo. No contábamos con un push así que había que estar introduciendo y sacando un cablecito para que se cumpliera con la función de la carga del dato y de poner todos a todo en cero para la llegada de un nuevo dato. CONCLUSIONES MIGUEL ANGEL MARTÍNEZ ZAMUDIO Realizamos un registro de corrimiento de 8 bits con la opción de que este corrimiento se diera de izquierda a derecha y de derecha a izquierda. Es decir que simulamos 8 Flip-Flops cada uno con su entrada individual pero todos con una salida en común, es por eso que se dice que el registro de corrimiento se llama con entrada paralelo y salida en serie. Como podemos darnos cuenta se trata de una transferencia de información en donde nosotros introducimos dicha información en paralelo y al final la recibimos en forma de serie. Con los bancos de memoria, simulamos como es q trabaja el microprocesador a la hora de su manejo de memoria. Cómo es el proceso de elección del banco de memoria y a que información accede. Con esta práctica queda más clara la teoría acerca de cómo se da el proceso del corrimiento de bits en un registro de flip-flops de 8 bits. Recordemos que un flip-flop es la unidad básica de memoria y por lo tanto tiene la capacidad de transferir un bit que esta siendo introducido en su entrada, hacia la salida. Esto fue lo que simulamos con nuestro registro de corrimiento. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 13/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om OBSERVACIONES NIETO ALCANTARA JESSIKA En esta práctica fue más sencillo obtener la lógica de cómo hacer o como conectar los 4 bancos de memoria, ya que en la práctica pasada se había desarrollado el programa para el las decodificador 2 alas 4, combinaciones es decir de 2 entradas y 4 salidas, en este caso dos entradasdeeran para accesar a cada memoria o cada banco de memoria. En la práctica pasada se habían programado 2 GAL con el mismo programa de banco de memoria y en este caso 4 diferentes datos salieron de ellas. En esta práctica se programaron 4 bancos de memoria solo que tuvimos que juntarnos con otro equipo para que usáramos sus GAL. Se grabaron los datos del 1 al 8, 2 en cada memoria y al hacer la selección desde el decodificador obteníamos la salida de los datos. En cuanto al registro de corrimiento, nos costó algo de trabajo hacer el programa ya quey preguntando no sabemos amucho de VHDL, tuvimos libros e internet profesores, hasta que seque pudoinvestigar diseñar yen lo más importante que compiló. Para cargar el dato necesitamos tener un push button pero no contábamos con él así que tuvimos que conectar un cable de la terminal de “clr” a tierra para poder insertar el dato en la memoria, cambiando el dato desde un dip de 8 para simular los 8 bits del dato, después de hacer esto el dato se tenía que recorrer y esto se observó en el led de salida. NIETOCONCLUSIONES ALCANTARA JESSIKA Concluimos que en un registro de desplazamiento los valores de las salidas dependen de los valores de entrada, consiste en una serie de flip-flop conectados en cascada, pueden ser muchos tipos, como paralelo-serie, serie-paralelo, etc., esta serie en cascada está conectada en común con una señal de reloj en este caso nuestro 555 a un segundo. Cada pulso de reloj es un cambio en el registro de corrimiento ya sea que el sentido sea a la izquierda o a la derecha. Es importante que sepamos corrimiento a la2. izquierda multiplica por 2 mientras que unoque a la un derecha divide entre En los bancos de memoria hicimos la simulación del cómo trabaja un microprocesador al hacer la selección de memoria y de la dirección que se desea leer o grabar, dependiendo que memoria sea si es RAM o ROM. http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 14/15 5/17/2018 PRÁCTICA 3. REGISTRO DE CORRIMIENTO Y BANCOS DE MEMORIA - slide pdf.c om Para esta práctica es importante no olvidar que un flip- flop es la celda básica de memoria y un bit es la unidad básica de memoria, son cosas muy diferentes ya que un flip-flop puede almacenar un bit de memoria. BIBLIOGRAFÍA. http://es.wikipedia.org/wiki/Registro_de_desplazamiento http://personales.unican.es/manzanom/EdigitalI/REGG4.pdf http://laimbio08.escet.urjc.es/assets/files/docencia/EDII/ed2_prac6_reg_fin.pdf http://slide pdf.c om/re a de r/full/pra c tic a -3-re gistro-de -c or r imie nto-y-ba nc os-de -me mor ia 15/15