Práctica 4
PRÁCTICA
4
MEMORIA
En está
práctica veremos el funcionamiento, paso a paso, de la Memoria que
se
encuentra en la CPU que hemos visto en clase.
1.-
Introducir una memoria RAM de 64Kx8 y realizar un circuito que permita leer y
escribir
en ella. Probar a introducir en las direcciones 0023h el dato 3A y en la
dirección
C120h el
dato 25.
2.- Unir
dos memorias del tipo utilizado en el apartado 1, para conformar una de
64Kx16.
Comprobar su funcionamiento de forma similar al apartado anterior:
introduciendo
algunos datos de 16 bits en varias direcciones.
3.- Unir
tres memorias para como las de los apartados anteriores (64Kx8) para
conformar
una de 128Kx16. Comprobar su funcionamiento de forma similar al apartado
anterior:
introduciendo algunos datos de 16 bits en varias direcciones.
4.-
Ampliar la memoria hasta 256Kx16 ¿Qué elemento será necesario para seleccionar
cada banco
de dos memorias de 64Kx8? Un decodificador. Comprobar su
funcionamiento
de forma similar al apartado anterior: introduciendo algunos datos de 16
bits en
varias direcciones.
5.-
Transformar la estructura del anterior punto para que los primeros 64K sean de
memoria
ROM Observar que señales de control son las que intervienen en cada tipo de
memoria.
Indica en cada bando la el banco de direcciones de memoria que direcciona y
obtén el
mapa de memoria del conjunto.
Direcciones Componente
0 – 65535 MODULO ROM
65536 – 131071 MODULO RAM 1
131072 – 196607 MODULO RAM 2
196608 – 262143 MODULO RAM 3
Tag :
Resúmenes,
FAQ's Práctica 3
¿Qué es la señal de
reloj del sistema?
Es una señal digital, binaria y de frecuencia y ciclo de trabajo
constante.
Suele generarse en un circuito externo,
pero hay CPUs que lo tienen implementado internamente.
El flanco activo marca los momentos en
que se realizan las transferencias entre registros internos. Sincroniza todo
el sistema (interno y externo)
¿Qué se ha de
cumplir para hacer una lectura de la instrucción?
Se ha de generar una secuencia de señales de control (S1 a S4) que posibiliten buscar
el código de instrucción en memoria, su carga en RI y la preparación de PC para
el ciclo de instrucción.
¿Cual es la función
del proceso de decodificación?
Se ajusta a un ciclo de reloj que no tiene actividad en las líneas de control ni en
traspasos de registros internos de la CPU
En este ciclo de permite que la unidad de
control realice localice la secuencia de señales de control que den lugar a la
ejecución de la instrucción.
Posteriormente se estudiará qué se realiza
concretamente en este ciclo
¿La
gestión de interrupciones sería una nueva fase de la secuencia de
ejecución de instrucciones?
Si, sería
una nueva fase que iría a continuación de la fase de ejecución.
La secuencia
quedaría así:
-Lectura de la Instrucción desde memoria
-Decodificación
-Ejecución
-Ciclo de reconocimiento de interrupción: Comprueba se hay
activada alguna señal de interrupción.
¿Las
rutinas de gestión de interrupciones forman parte del código del sistema
operativo?
Si, y se
encarga de dar respuesta a la petición de interrupción de la
secuencia normal del programa.
¿Se realiza alguna transferencia de registros
en la decodificación?
La
decodificación se ajusta a un ciclo de reloj,
y en la decodificación no se
realiza ninguna transferencia de
registros.
¿Es necesario
saber el Ciclo de Fetch?
Si, es
fundamental saber el lenguaje de transferencia de registro y todas las señales que
se activan en este ciclo. Este es el mismo siempre y siempre hay que ponerlo al
principio de cada instrucción.
¿Qué es una Unidad
de Control?
Una unidad de control se encarga de controlar la ejecución y
los procesos internos de la CPU
¿Hay que añadir el
ciclo de captación (FETCH) en toda y cada una de las instrucciones?
Si, Este ciclo es muy metódico e idéntico para todas las
instrucciones, se deben de generar unas señales que permitan buscar el código
de instrucción en memoria.
¿Qué hay que hacer
cuando hay una instrucción con un valor inmediato?
Este
valor se cargará desde el registro de instrucciones RI a uno de los registros
RT, ya sea RT1 o RT2. Luego, una vez cargado el valor en este registro, podemos
continuar con la ejecución de la instrucción.
Tag :
Faq's,
FAQ's Práctica 4
-¿Qué diferencia hay entre una memoria RAM y una
ROM?
Principalmente,
Un
circuito puede acceder a los valores de la ROM, pero no los puede modificar. AL
contrario que la memoria RAM, la cual aparte de poder acceder a los valores de
la memoria, también los puede modificar.
Por esto la memoria ROM tiene
menos pines inferiores:
Ilustración 1 RAM
Ilustración 2 ROM
La memoria ROM solo
tiene el pin sel para seleccionar la
dirección de memoria a la que acceder, mientras que la RAM tiene:
-El triángulo sobre el borde inferior, para cargar los
datos.
-Out, para leer los datos.
- clr, para resetear la memoria.
-¿Es posible modificar el contenido de la memoria
ROM de alguna forma?
Si, es posible modificar los
contenidos de memoria utilizando la Herramienta de Cambio, pero la interfaz que
se ocupa de esto está limitada de diversa forma a causa de restricciones de
espacio: Para cualquier otra cosa que no sea una edición muy simple,
seguramente encontrarás el editor hexadecimal integrado mucho más conveniente.
Para utilizar la Herramienta de
Cambio:
2º Haz clic en las direcciones de
memoria que aparecen en la memoria ROM, y aparecerá un cuadrado rojo, a
continuación introduce la dirección que deseas modificar.
3º Por último, haz clic sobre el
valor que quieras modificar.
-¿Cómo puedo aumentar el ancho de palabra?
Uniendo varios módulos de menor
capacidad. Por ejemplo si quiero conseguir un ancho de palabra de 16 bits, y
tengo dos módulos de 8 bits, tendríamos que unirlos de la siguiente forma:
-En la memoria que vamos a utilizar, ¿Qué significa
64Kx8?
Los 64K, hacen referencia al
número de direcciones de memoria que tenemos, en este caso
bytes, y el 8 hace referencia al ancho de
palabra, en este caso 8 bits.

- ¿Cuál es el tiempo de ciclo en una DRAM?
Es el tiempo entre dos accesos
consecutivos a memoria.
-¿Por
qué en el Logisim al montar el circuito sale ancho incompatible (en color naranja)?
El nº de bits no concuerda con los demás., la
solución es cambiando el número de bits en las propiedades.
-¿Cómo se deben conectar los módulos de memoria?
En
serie, ya que de este modo se amplía el ancho de datos.
-¿Cómo se conectan los chips en cada uno de los módulos de RAM?
En paralelo, ya que de este modo se
amplía el número de direcciones.
Tag :
Faq's,
FAQ's Práctica 2
FAQ ALU
¿Qué
es y para que sirve cada elemento?
Casi todos los elementos de LOGISIM tienen un atributo llamado "Etiqueta". Si los marcas, Veras una barra lateral con las opciones de dicho elemento. Puedes modificar también su posición con la opción "Posición de la Etiqueta". Sino tiene esta etiqueta, recurre a la herramienta "Texto" de la barra superior.
Casi todos los elementos de LOGISIM tienen un atributo llamado "Etiqueta". Si los marcas, Veras una barra lateral con las opciones de dicho elemento. Puedes modificar también su posición con la opción "Posición de la Etiqueta". Sino tiene esta etiqueta, recurre a la herramienta "Texto" de la barra superior.
¿Por
qué diferentes colores al conectar elementos?
Recuerda que si tus componentes tienen de ancho, por ejemplo, 4 bits, tu bus también debe tener el mismo ancho. Se modificar este atributo en la barra lateral que aparece al seleccionar dicho componente.
Recuerda que si tus componentes tienen de ancho, por ejemplo, 4 bits, tu bus también debe tener el mismo ancho. Se modificar este atributo en la barra lateral que aparece al seleccionar dicho componente.
¿Líneas
rojas cuando activo ciertos componentes?
Si te surge ese problema, estarás usando un bus que estará ocupado por otro elemento, deberas comprobar que no tienes otro elemento conectado a este. Recuerda que debes trabajar con buffers triestado en este tipo de bus.
Si te surge ese problema, estarás usando un bus que estará ocupado por otro elemento, deberas comprobar que no tienes otro elemento conectado a este. Recuerda que debes trabajar con buffers triestado en este tipo de bus.
¿Cómo
diseñar sub-circuitos?
Herramienta sencilla, una vez que hayas finalizado con el circuito circuito, haz clic en "Edit viewed circuit's subcircuit appearance". Te aparecerá un diseño preliminar. Si pulsas en cada pin, te aparecerá a cual se le corresponde. Con las herramientas de dibujo de la barra superior puedes crear tu componente. Lo único que tendrás que hacer es colocar todos los pines encima de tu diseño e identificarlo.
Herramienta sencilla, una vez que hayas finalizado con el circuito circuito, haz clic en "Edit viewed circuit's subcircuit appearance". Te aparecerá un diseño preliminar. Si pulsas en cada pin, te aparecerá a cual se le corresponde. Con las herramientas de dibujo de la barra superior puedes crear tu componente. Lo único que tendrás que hacer es colocar todos los pines encima de tu diseño e identificarlo.
¿Cómo
los conecto mi diseño en un solo circuito?
Utiliza el botón "Añadir circuito". Una vez hecho, selecciona el circuito anterior y arrástralo hasta el lugar de trabajo como si fuese otro componente. Puedes girarlo en la barra de tributos.
Utiliza el botón "Añadir circuito". Una vez hecho, selecciona el circuito anterior y arrástralo hasta el lugar de trabajo como si fuese otro componente. Puedes girarlo en la barra de tributos.
Cómo
crear un pin de entrada/salida en mi diseño.
LOGISIM solo te deja crear dos pines, y luego asignarles un punto de entrada y otro de salida.
LOGISIM solo te deja crear dos pines, y luego asignarles un punto de entrada y otro de salida.
Tengo
un problema al crear el banco de registros. El decodificador del banco de
registros no actúa correctamente y da un error.
Selecciona
los buffers triestado. "Disabled Output" debe valer "Zero"
("Floating"). Este marca lo que vale cada pin del decodificador
cuando éste está desactivado. "Floating" es la desconexión de las
salidas, como si el cable no
estuviera conectado
Tag :
Faq's,
Práctica 2
ALU y Camino de datos
Esquema simplificado de una ALU y camino de datos.
Requerimientos:
Para realizar esta práctica se necesita el
Simulador de circuitos
electrónicos digitales LOGISIM , que es de uso libre y se puede descargar desde este enlace:
El alumnado tiene un conocimiento previo del uso de este
programa, pero como referencia y establecer unas bases se puede ver un tutorial
desde este enlace:
Objetivos:
1.-Realizar el diseño de un banco de registros básico de 4 registros.
2.-Realizar el diseño de una ALU sencilla de 4 operaciones.
3.-Construir un camino de datos (compuesto por el banco
de registros y la ALU antes realizadas) y
también
tres registros independientes adicionales.
4.-Comprobar el funcionamiento de este banco de datos
para una serie de operaciones elementales simples.
5.-Realizar el cronograma de algunas operaciones elementales.
Repaso a
entorno LOGISIM
Como se
indicó en el apartado requerimientos se hace necesario un repaso previo de
dicho entorno, para el cual se puede utilizar o la web del desarrollador o el
enlace al tutorial que se encuentra en este apartado.
En el repaso del entorno se manda;
- a) Implementar un circuito decodificador de 2 bits binarios a base 4 (4 salidas de activación independiente).
- b)Implementar un bus bidireccional y compartido de 8 bits, capaz de comunicar tres registros entre sí (Raux0, Raux1 y Raux2).Se debe utilizar un dispositivo de entrada de 8 bits para introducir los datos y un display de 2 cifras hexadecimales para visualizar los datos que circulan por el bus.
Desglosemos
los apartados con ilustraciones y el correspondiente archivo de Logisim, todo en el archivo comprimido
ZIP CircuitosALULogisim, para una
mayar compresión. El programa necesario para descomprimir el archivo es 7zip de
distribución libre que podemos descargar desde su página oficial: http://www.7-zip.org/download.html
a)
Implementar
un circuito decodificador de 2 bits binarios a base
4 (4 salidas de activación independiente).
El
circuito correspondiente a este decodificador se llama Decodificador.circ. Se recomienda comprobar su funcionamiento en LOGISIM.
El
funcionamiento de este decodificador es el siguiente, por medio de las entradas
de datos D1 y D0 se ingresan dos números binarios (en cada selector) este las
decodifica de binario a el número de salida correspondiente en decimal, para
que se active es necesario tener a 1 el Habilitador (por eso se ve azul los
cables en la imagen anterior). El bit de más peso tal y como se ve en la imagen
es el D1 ya que el selector de bits que divide los bits de entradas está
configurado de esa forma.
Veamos su
funcionamiento:
b)
Implementar un bus bidireccional y compartido de 8
bits, capaz de comunicar tres registros entre sí (Raux0, Raux1 y Raux2).Se debe
utilizar un dispositivo de entrada de 8 bits para introducir los datos y un
display de 2 cifras hexadecimales para visualizar los datos que circulan por el
bus.
El
circuito correspondiente a este decodificador se llama Registro con bus bidireccional.circ. Se recomienda comprobar su
funcionamiento en LOGISIM.
El
funcionamiento de este bus bidireccional y compartido de 8 bits es el
siguiente,en la entrada de 8 bits se introduce un número binario de 8 bits
,estos van por el cable hasta un búffer controlado por las señales de triestado
(deja pasar la información).Hay tres registros en los que se puede intercambiar
la información entre ellos y el display
hexadecimal que muestra en todo momento los datos que recorren el bus. Para que
funcione el bus y no de error, al ser un bus bidireccional no se puede abrir
dos búffer controlados a la vez ,pues se produciría un error.
La carga
en los registros se produce poniendo a 1 la pestaña en (Enable)
Ejemplo
de cómo cargar un dato a un registro:
Ejemplo
de carga entre registros:
Inicio de la práctica
1.-Realizar el diseño de un banco de registros básico de 4 registros.
El
circuito correspondiente a este decodificador se llama Registro con bus bidireccional2.circ. Se recomienda comprobar su
funcionamiento en LOGISIM.
Consta del
circuito del apartado b) y en la parte de arriba se le ha añadido 4 registros
en los que la carga es común para todos (Carga Banco), decodificadores que
actúan seleccionando los registros para habilitar o deshabilitar o transferir
la información (triestado).Ambos decodificadores funciona como se expuso con
anterioridad, salvo que tiene la misma entrada de selección de bits, asegurando
así que los dos decodificadores trabajan a la par.
2.-Realizar el diseño de una ALU sencilla de 4 operaciones.
-SUMA -AND
-NOT A
Después de
realizar la ALU implementaremos todos los elementos en un camino de datos tal
como dice el ejercicio 3.
3.-Construir un camino de datos (compuesto
por el banco de registros y la ALU antes realizadas)
y también tres registros independientes
adicionales.
El
circuito correspondiente a este decodificador se ALU.circ. Se recomienda comprobar su funcionamiento en LOGISIM.
La ALU está
situada en la esquina inferior derecha y contiene un multiplexor para indicar
que operación ha de realizarse y un habilitador .La salida de la operación va a
un registro temporal (Registro Resul.) que se cargará con el dato del resultado
de la operación lógica. Este circuito contiene otro display hexadecimal para
comprobar que dato hay en el bus al producirse el resultado. El registro
adicional que se ha añadido es el registro del primer operando, puesto que no
puede haber dos datos en el mismo bus, este se almacena en el registro del 1º
operando, y el 2º operando se coge de cualquiera de los registros restantes.
4.-Comprobar el funcionamiento de este banco de datos para una serie de
operaciones elementales simples.
Se puede hacer cualquier operación que queramos entre registros que la
ALU pueda soportar(negación del dato A,AND de A y B ,Desplazamiento a la
izquierda o suma de A y B. Como ya hemos explicado el funcionamiento de cada
parte del circuito de los Banco de registros
y de la ALU, entendemos que el lector puede probar con cualquier
operación en el LOGISIM.
Cargar en el registro
R0 el dato 1Fh
Cargar en el registro
R1 el dato 21h
Cargar en el registro
R2 el dato 4Ah
Cargar en el registro
R3 el dato 35h
Sumar R1 y R2 y
almacenarlo en Raux0
Hacer la operación AND
entre R0 y R3 y almacenarlos en Raux1
Desplazar dos veces en
registro R1 y almacenarlo en el registro Raux2
Llevar
R2 al acumulador y complementar su valor. El resultado almacenarlo en R0
5.-Realizar el cronograma de algunas operaciones elementales.
Señales utilizadas:
+Flanco de subida; +De nivel (triestado)
Apartados según siglas:
Reloj (CLK) el bus de datos (donde pones los datos que se
están transfiriendo: operandos y resultados de operaciones) y Op(operaciones,
que se indicará simbólicamente la que se realiza).
Banco de Registros:
SB(selección Banco) indica el registro con el que estamos
trabajando
CB(Carga Banco) es
una señal de Triestado que activa los registros para su carga
TB(Triestado Banco) es de salida de datos, según los
datos que quiere que salgan del banco de registro la anchura de la señal de
triestado debe ser mayor, cogiendo dos pulsos de reloj para dos datos.
Registros Temporales Ri:
C antes del registro y T son las señales de Carga y
Triestado(salida) respectivamente tiene señales por flancos y T señales por
niveles(triestado).Ahora dependiendo de con que registro se esta trabajando se
tendrá que rellenar de una forma o de otra.
Parte de la ALU:
CA (Carga del registro Acumulador) por flancos como ya se ha
dicho y carga en este registro valores inmediatos o 1º operando .La ALU no
puede tener en el bus más de dos datos a la vez porque se produciría un
error,con lo cual se opera desde este registro , 2º operando desde otro
registro temporal(Ri).Tmp es otro registro temporal para almacenar el resultado
antes de cargarlo a un registro ,ya sea del Banco de registro o aun registro
más frecuentemente usado (Ri).Y para cargar en Tmp hace falta activar por
flanco a Ctmp (carga de Tmp).
Ci (Carga de errores) es para controlar que no se produzca ningún
error, este se realiza después de toda operación aritmética o lógica. Y
por último R estado es el registro que almacena si hay un error de:
C-accarreo,Z-Cero(Cuando da cero el resultado de una operación) y
V-Overflow(Cuando se produce un desbordamiento).
Aclarado esto se entiende que el lector puede verificar cualquier cronograma incluso
hacerlo.Aquí hay algunos ejemplos:
- La primera operación que nos piden es una AND entre R0 y R3 y almacenarlos en Raux1. Aquí tenemos su cronograma.
- La siguiente operación es un Desplazamiento de 2 bits a la izquierda de R1 y almacenarlo en Raux2. El cronograma quedaría de la siguiente manera:
Tag :
Resúmenes,