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

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

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

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

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

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

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

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

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

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

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

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

a la hora de probarlo en el proto. no pasaba nada. Esto fue lo que simulamos con nuestro registro de corrimiento. 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. Tras muchos intentos por fin quedo. hacia la salida. con este nos alcanzo perfectamente para nuestros 4 bancos. Gracias a que habíamos utilizado un decodificador de 2 a 4 ya no fue necesario programar otro deco. Cómo es el proceso de elección del banco de memoria y a que información accede. es por eso que se dice que el registro de corrimiento se llama con entrada paralelo y salida en serie. en esta práctica ya solo se necesitó grabar otras dos gals con el mismo programa pero cambiando los datos de salida. sin embargo.OBSERVACIONES Y CONCLUSIONES. Respecto a la primera parte de la práctica. no había nada de corrimiento ni a izquierdas ni a derechas. Es decir que simulamos 8 Flip-Flops cada uno con su entrada individual pero todos con una salida en común. Con los bancos de memoria. 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. ya que había veces en las que al compilarlo no nos marcaba ningún error. 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. . 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. 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. nos costó mucho trabajo hacer el código y que funcionara físicamente.

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

pdf http://laimbio08.urjc.pdf . BIBLIOGRAFÍA.flop es la celda básica de memoria y un bit es la unidad básica de memoria.org/wiki/Registro_de_desplazamiento http://personales.Para esta práctica es importante no olvidar que un flip.wikipedia.escet.es/assets/files/docencia/EDII/ed2_prac6_reg_fin.    http://es.unican. son cosas muy diferentes ya que un flip-flop puede almacenar un bit de memoria.es/manzanom/EdigitalI/REGG4.

Sign up to vote on this title
UsefulNot useful