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.:

M. en C. Armando Martínez Ríos

ALUMNOS: Martínez Zamudio Miguel Ángel Nieto Alcantara Jessika

MATERIA:

Microprocesadores

GRUPO:

6CM2

OBJETIVO: Comprobar la operación y el funcionamiento de bancos de memoria y registros de corrimiento. 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. tenga buen contacto eléctrico con los controladores de memoria y las fuentes de alimentación. La implementación DRAM se basa en una topología de Circuito eléctrico que permite alcanzar densidades altas de memoria por cantidad de transistores. MARCO TEÓRICO. EQUIPO: a) b) c) d) Fuente de alimentación 5V. Cables de conexión. Dip switch. 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. Computadora Programador Universal “SuperPro Z” MATERIAL:      Resistores y LEDS Oscilador 1Hz. GAL 22V10. que permiten que el modulo al ser instalado en un zócalo apropiado de la placa base. logrando integrados de decenas o cientos de Megabits. Una tarjeta de memoria puede presentar el aspecto que ilustra la figura: . Además de DRAM. La figura siguiente esquematiza un agrupamiento de ese tipo. Tablilla de experimentación. 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.

REGISTRO DE DESPLAZAMIENTO. Es fácil controlar todas las páginas. dentro del mismo registro o a la entrada o salida del mismo. Es posible comenzar a ejecutar un programa. 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. Cada banco puede estar ocupado por circuitos individuales de capacidad variable. y el resto se cargara bajo la solicitud. Se divide la memoria en bloques de tamaño llamados páginas. ya que tienen el mismo tamaño. No es necesario que las paginas estén contiguas en memoria. De este modo se pueden obtener varias combinaciones.Observe la división de la tarjeta en grupos de memoria llamados "bancos". Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames). En los de desplazamiento se transfiere información de un flip-flop hacia el adyacente. . cargando solo una parte del mismo en memoria. CARACTERÍSTICAS       El espacio de direcciones lógico de un proceso puede ser no contiguo. por lo que no se necesitan procesos de compactación cuando existen marcos de paginas libres dispersos en la memoria. La capacidad de almacenamiento de un registro es el número total de bits que puede contener. Cada banco generalmente se encuentra totalmente ocupado por circuitos idénticos o totalmente vacíos. a condición de que la lógica de administración haya sido prevista en la máquina.

Entrada serie/ Salida serie: Los datos deben introducirse en serie. . Gran parte de los registros de desplazamiento reales incluyen una señal RESET o CLEAR asíncrona. Esto permite limpiar rápidamente el registro de desplazamiento lo cual es muy importante a nivel práctico. La salida se obtendrá de la misma manera. es decir. TIPOS DE REGISTROS. que permite poner simultáneamente todas las salidas en “0” o estado bajo. sin necesidad de introducir ceros seguidos. bit a bit por una única línea. Desplazamiento de datos a lo largo de los flip-flops. 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.E funcionamiento se realiza de manera síncrona con la señal de reloj.

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. . 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. De esta manera todos los bits de salida estarán disponibles al mismo tiempo. La salida serie se hace de igual modo que en el primero caso explicado una vez que los datos hayan sido almacenados.

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. 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. La velocidad del corrimiento será a un segundo. DESARROLLO:  Escriba un programa en VHDL que en un dispositivo grabe un registro de corrimiento de 8 bits. Se puede implementar utilizando puertas lógicas que permitan la transferencia de 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. Con un bit de selección deberá seleccionar si el corrimiento es a la derecha o a la izquierda. Cuando haya un flanco de reloj los bits se desplazaran a una posición a la izquierda.Entrada paralelo/ Salida paralelo: Registros de desplazamiento bidireccionales: Son aquellos en que los datos se pueden desplazar a la izquierda o la derecha. .

salida: out std_logic ). sel: in std_logic. .carga. end loop. entity Corrimiento is port(E: in std_logic_vector (7 downto 0). y(7)<='0'. end Reg. elsif (clk'event and clk='1')then if(carga='1')then y <= E. 1 Código en VHDL para la el registro de corrimiento. signal x: std_logic.El programa grabado en la GAL para el registro de corrimiento fue: library ieee. end if. for i in 0 to 6 loop y (7-i)<= y(6-i). elsif(sel='0') then x <= y(0). end Corrimiento. end if. end loop. salida <= x. 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 ". begin process (clk. architecture Reg of Corrimiento is signal y: std_logic_vector(7 downto 0). clk. for i in 1 to 7 loop y(i-1) <= y(i). carga . end process.all. elsif(sel='1') then x <=y(7). Fig. y(0)<='0'.y.std_logic_1164.x) begin if(carga='0') then salida <= '0'. use ieee.

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. ya que de esta manera el corrimiento se da de izquierda a derecha. La carga del dato en la variable se da con un solo cambio de estado en dicha variable. La carga está funcionando de la siguiente manera: cuando nosotros introducimos un dato en E (que recordemos que es una variable de tipo vector de 8 bits) de 8 bits. va conectada precisamente la salida de nuestro circuito integrado 555. Si dicha entrada está habilitada en „0‟ el corrimiento se da de derecha a izquierda. este dato se carga primero en esta variable para que después se arroje hacia la variable salida uno por uno. en la entrada del ciclo de reloj. 2 Distribución de pines para el registro de corrimiento Explicación del programa: Como nos podemos dar cuenta. la carga y la variable sel.La distribución de los pines para el registro de corrimiento fue: Fig. basta con conectar un push a la entrada de la variable carga. en el código estamos declarando tres variables de entrada que son: la entrada del ciclo de reloj. 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. que siempre se asigna a la primera patita de la gal. ya que este es un registro de corrimiento con entrada paralelo y salida en serie. caso contrario si está habilitada en „1‟. Como salida tenemos a la variable salida. Ahora. . por tanto.

.CIRCUITO REALIZADO. CIRCUITO DESARROLLADO PARA EL REGISTRO DE CORRIMIENTO.

 Arme cuatro bancos de memoria con dos datos de 4 bits cada una. El programa grabado en la GAL para el banco 1 de memoria fue: library ieee. end BANCO2. end prac.std_logic_1164.std_logic_1164. 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').all. Z: out std_logic_vector(3 downto 0) ).all. -. entity prac is port ( G: in std_logic. end BANCO1. 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. saliendo todos los datos hacia los mismos leds de salida. Fig. end prac. entity prac is port ( G: in std_logic. use ieee. -. .entrada de habilitacion I: in std_logic. Z: out std_logic_vector(3 downto 0) ). 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').entrada de habilitacion I: in std_logic. use ieee.

-. end BANCO4. -. 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'). Fig. Z: out std_logic_vector(3 downto 0) ).all. entity prac is port ( G: in std_logic.entrada de habilitacion I: in std_logic. use ieee. 6 Código en VHDL para la el Banco de memoria 4 . 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'). Z: out std_logic_vector(3 downto 0) ).all.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. end BANCO3.std_logic_1164. entity prac is port ( G: in std_logic. use ieee.entrada de habilitacion I: in std_logic. end prac. Fig.std_logic_1164. end prac. 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.

la única diferencia entre uno y otro so los datos de salida. se habilitara el banco 4 los datos correspondientes a cada dato serán elegidos por la entrada I. cuando ésta esté en „1‟ nos mostrara el primer dato. La elección del banco de memoria estará dada por las salidas del decodificado. Como nos podemos dar cuenta hay dos de entrada y dos de salida. de echo es igual. para una entrada en el decodificador de „00‟. nos mostrara el segundo dado correspondiente a cada uno de los bancos. . Para el banco uno los datos de salida son 1 y 2. . para el banco 3 son 5 y 6. se habilitara el banco 1. y ésta es finalizada en la línea 9. La entrada G será el nivel lógico que viene desde una salida del decodificador.La distribución de los pines para los bancos de memoria fue: Fig. Después declaramos la entidad. y para una entrada de „11‟. 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. La entrada I será ingresada al BANCO UNO directamente desde el dip. 7 Distribución de pines para los bancos de memoria EL código para los cuatro bancos de memoria es muy similar. para una entrada de „10‟ se habilitará el banco 3. En la línea 11 declaramos la arquitectura. la inicializamos en la línea 13 con el begin. De la línea 5 a la 8 declaramos nuestros puertos de entrada y salida. y la finalizamos en la línea 18. para el banco 2 son 3 y 4. La salida z es nuestro dato de salida. y cuando esté en „0‟. para una entrada de „01‟ se habilitara el banco 2.

con este nos alcanzo perfectamente para nuestros 4 bancos. 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. 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. 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. simulamos como es q trabaja el microprocesador a la hora de su manejo de memoria. hacia la salida. Respecto a la primera parte de la práctica.OBSERVACIONES Y CONCLUSIONES. Es decir que simulamos 8 Flip-Flops cada uno con su entrada individual pero todos con una salida en común. 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. no había nada de corrimiento ni a izquierdas ni a derechas. 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. no pasaba nada. Cómo es el proceso de elección del banco de memoria y a que información accede. Con los bancos de memoria. Tras muchos intentos por fin quedo. 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. 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. sin embargo. es por eso que se dice que el registro de corrimiento se llama con entrada paralelo y salida en serie. Esto fue lo que simulamos con nuestro registro de corrimiento. 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. a la hora de probarlo en el proto.

tuvimos que investigar en libros e internet y preguntando a profesores. después de hacer esto el dato se tenía que recorrer y esto se observó en el led de salida. pueden ser muchos tipos. dependiendo que memoria sea si es RAM o ROM. en este caso las dos entradas eran las combinaciones 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. nos costó algo de trabajo hacer el programa ya que no sabemos mucho de VHDL. En cuanto al registro de corrimiento.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. esta serie en cascada está conectada en común con una señal de reloj en este caso nuestro 555 a un segundo. como paralelo-serie. es decir de 2 entradas y 4 salidas. 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.. etc. 2 en cada memoria y al hacer la selección desde el decodificador obteníamos la salida de los datos. consiste en una serie de flip-flop conectados en cascada. serie-paralelo. . 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. hasta que se pudo diseñar y lo más importante que compiló. ya que en la práctica pasada se había desarrollado el programa para el decodificador de 2 a 4. En esta práctica se programaron 4 bancos de memoria solo que tuvimos que juntarnos con otro equipo para que usáramos sus GAL. 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. Es importante que sepamos que un corrimiento a la izquierda multiplica por 2 mientras que uno a la derecha divide entre 2. Se grabaron los datos del 1 al 8. cambiando el dato desde un dip de 8 para simular los 8 bits del dato. CONCLUSIONES NIETO ALCANTARA JESSIKA Concluimos que en un registro de desplazamiento los valores de las salidas dependen de los valores de entrada.

BIBLIOGRAFÍA.    http://es.wikipedia.pdf .pdf http://laimbio08.urjc.es/assets/files/docencia/EDII/ed2_prac6_reg_fin.org/wiki/Registro_de_desplazamiento http://personales. son cosas muy diferentes ya que un flip-flop puede almacenar un bit de memoria.es/manzanom/EdigitalI/REGG4.unican.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.escet.

Sign up to vote on this title
UsefulNot useful