







































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Simulacion de un Microcontrolador de 8 bits
Tipo: Apuntes
1 / 47
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!








































Se diseñara un microcontrolador de 8 bits el cual debe tener las características básicas las cuales son:
Estas instrucciones así como otros datos para realizar operaciones, estarán contenidas en una memoria ROM la cual se irá leyendo de manera ascendente con ayuda del contador del programa, realizando un proceso cíclico.
Compuerta Tri-Estado: La compuerta tri-estado es un circuito el cual funciona cono interruptor, consta de una entrada, una salida y una entrada de control, dependiendo del valor del control, la salida tendrá 3 estados diferentes: Alta Impedancia, valor ALTO, valor BAJO. esto nos sirve si tenemos un bus al que llega información de distintos medios, podríamos realizar un corto circuito si no colocamos este tipo de compuertas para separar las distintas entradas de un bus.
Figura 1: Compuerta triestado
La tabla de verdad es la siguiente:
Multiplexor:
Un multiplexor es un circuito combinacional que selecciona la información binaria de una de varias lineas de entrada y posee una única linea de salida. La selección de una entrada en particular esta controlada por lineas de selección. Normalmente hay 2 n^ lineas de entrada y n lineas de selección las cuales al hacerse combinaciones de bits determinarán cual entrada es seleccionada.
La tabla de verdad de un multiplexor 4-1 es la siguiente:
el comportamiento se resume a compuertas AND de 3 entradas, donde 2 de ellas co- rresponden a las señales de selección y la ultima a la linea de entrada de información correspondiente. La salida de estas compuertas entran a una compuerta OR como se observa en el siguiente diagrama:
gestionar n bits y en una de las 2 n^ lineas de salida indica la presencia de una o mas combinaciones de n bits.
La tabla de verdad de un decodificador de 2 A 4 se representa así:
Si quisiéramos desarrollar un decodificador mas grande el comportamiento de la tabla de verdad seria idéntico, las combinaciones de bits entre las entradas desde 0 a 2 n −^1 habilitarían las salidas. A nivel compuertas cada salida del decodificador seria obtenida por compuertas AND de magnitud con el numero n de entradas como se muestra a continuación:
Figura 4: Decodificador 2 a 4
Memoria ROM:
La memoria de solo lectura es esencialmente un dispositivo en el cual se guarda infor- mación binaria de manera permanente. la información es especificada por el diseñador el cual realiza la interconexión de sus componentes al momento de ser embebida.
Una ROM consta de k entradas, las cuales podrán especificar 2 k^ direcciones de memo- ria, y constará de n salidas las cuales serán bit de datos de la palabra almacenada.
Una ROM simple se compone de un Decodificador k a 2 k , seguido de compuertas OR, la cantidad de compuertas OR dependerá de la longitud de bits de palabras de salida.
La asignación de entradas de estas compuertas OR dependerá de los minitérminos de las funciones que haya hecho a partir de su tabla de verdad. Cualquier 0 dentro de la tabla de salida de la ROM indicará que no hay conexión y cualquier 1 indica una Cone- xión a su respectiva compuerta OR, esto se puede comprender con el siguiente ejemplo:
Figura 5: Tabla de Verdad de una ROM 4 bits de Entrada y 8 bits de salida
Figura 7: Diagrama Combinacional de un FULL ADDER
Full Substractors:
El Full Substractor es similar al Full Adder, realiza la resta de 3 operandos y nos arroja el bit de resultado junto con un bit de préstamo, la tabla de verdad es la siguiente:
Finalmente la construcción del restador completo es el siguiente:
Figura 8: Diagrama Combinacional de un FULL SUBSTRACTOR
Flip-Flop D:
Los flip-flops son dispositivos síncronos de dos estados. En este caso, el término síncrono significa que la salida cambia de estado únicamente en un instante específico de una entrada de disparo denominada reloj (CLK), la cual recibe el nombre de entrada de control, C. Tabla de transición del FF-D:
Qt Qt +1 D 0 0 0 0 1 1 1 0 0 1 1 1 Podemos observar que el comportamiento del FF-D es muy sencillo, si en un tiempo determinado tenemos una salida de tal magnitud, y el siguiente tiempo de reloj quere- mos una salida distinta, para obtener esta salida deseada la entrada D debe cambiar al valor que queremos que tenga la salida.
los que el contador avanza cuando se aplica una señal de reloj. Como ejemplo, en la Figura, se muestra un diagrama de estados de un contador básico en código Gray de 3 bits. Este circuito particular no tiene ninguna entrada aparte de la de reloj, y ninguna otra salida más que las que se toman en cada flip-flop del contador.
Tabla de Estado Siguiente: Una vez que se define el circuito secuencial mediante un diagrama de estados, el segundo paso consiste en obtener una tabla del estado siguien- te, que enumera cada estado del contador (estado actual) junto con el correspondiente estado siguiente.
Tabla de Transición FF: Procedemos a elegir el tipo de flip-flop a usar, y obtenemos su comportamiento a través de la tabla obtenida la cual consta de estado presente y estado futuro, con esto obtenemos el comportamiento de cada uno de los flip-flops.
Mapas de Karnaught:
Una vez que obtenemos la tabla de transición de los FF podemos obtener las funcio- nes de cada uno de ellos utilizando la reducción por mapas de Karnaught en el caso de un FF J-K debemos realizar dos mapas para obtener el comportamiento de J y de K.
Registro Paralelo- Paralelo:
El registro paralelo no es mas que un conjunto de flip-flops en este caso de tipo D, donde las entradas se cargan a las entradas D de los dispositivos, mientras que las salidas se toman de la salida de cada uno de ellos, así cuando suceda un flanco de reloj, los flipflops tomarán el valor de las entradas y lo brindaran a la salida, mientras no haya flanco no habrá datos a la salida.
Figura 11: Ejemplo de un Registro Paralelo-Paralelo de 4 bits
Registro Paralelo Serie:
En un registro con entradas de datos paralelo, los bits se introducen simultáneamente en sus respectivas etapas a través de líneas paralelo, en lugar de bit a bit a través una única línea como ocurre con las entradas de datos serie. Los datos de salida se van desplazando en serie con varios ciclos de reloj, para controlar que datos entran a cada FF se utilizan combinaciones de compuertas AND y OR (basicamente multiplexores) como se ve en la siguiente imagen:
Figura 12: Ejemplo de un Registro Paralelo-Serie de 4 Bits
Arquitectura: Los pares de entidades y arquitecturas se utilizan para representar la descripción com- pleta de un diseño. Una arquitectura describe el funcionamiento de la entidad a la que hace referencia, es decir, dentro de architecture tendremos que describir el funcio- namiento de la entidad a la que está asociada utilizando las sentencias y expresiones propias de VHDL.
Dentro de la arquitectura se encuentra:
Sentencia When- ELSE:
Sentencia concurrente (no es secuencial) de selección múltiple. En hardware es nece- sario incluir todas las opciones posibles. En este caso es obligatorio siempre acabar la expresión con un ELSE:
<señal> <= <asignación1> WHEN <condición1> ELSE <asignación2> WHEN <condición2> ELSE ... <asignaciónN> WHEN <condiciónN> ELSE <asignaciónM>;
Sentencia Process: VHDL presenta una estructura particular denominada process que define los límites de un dominio que se ejecutará (simulará) si y sólo si alguna de las señales de su lista
de sensibilidad se ha modificado en el anterior paso de simulación. Un process tiene la siguiente estructura:
process (lista_de_sensibilidad) -- asignacion de variables -- opcional no recomendable begin -- Sentencias condicionales -- Asignaciones end process;
En la lista de sensibilidad se integran aquellos elementos que son independientes de las sentencias del process, generalmente al describir un circuito secuencial el reloj se incluye aca.
Sentencia If:
Es una de las sentencias secuenciales mas utilizadas, se debe ubicar dentro de un process, esta sentencia Permite la ejecución de un bloque de código dependiendo de una o varias condiciones.
IF <condición1> THEN [sentencias 1] ELSIF <condición2> THEN [sentencias 2] ELSE [sentencias N] END IF;
Sentencia Case: Esta sentencia secuencial nos ayuda mucho en maquinas de estado finito, pues pode-
else
-- Sentencias end if;
-- Sentencias condicionales -- Asignaciones end process;
Package:
un paquete consta de un conjunto de subprogramas, constantes, declaraciones, etc., con la intención de implementar algún servicio. Así se pueden hacer visibles las interfaces de los subprogramas y ocultar su descripción.
-- Declaración de paquete PACKAGE nombre IS declaraciones END [PACKAGE] [nombre];
-- Declaración del cuerpo PACKAGE BODY nombre IS declaraciones subprogramas ... END [PACKAGE BODY] [nombre];
Si queremos utilizar un package dentro de un archivo VHDL, tenemos que cargar la biblioteca work:
library work; use work.name_package.all;
si queremos utilizar la entidad de ese package necesitamos utilizar la sentencia stage además de portmap:
stagename : packagename PORT MAP (IN1,IN2,OUT1,etc);
Figura 13: Sumador de 8 Bits
La operación + indica suma aritmética, por lo que podemos ver que para cada conjunto de bits en orden de significancia, tendremos que construir varios Full Adders, como vimos en el marco teórico, tenemos el circuito combinacional para implementarlo, entonces se realizó en VHDL como se muestra a continuación: