Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Tarea 2 Microcontroladores, Apuntes de Microcontroladores

Simulacion de un Microcontrolador de 8 bits

Tipo: Apuntes

2020/2021

Subido el 11/03/2021

carlos-rubio-becerra
carlos-rubio-becerra 🇲🇽

1 documento

1 / 47

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Índice general
1. Planteamiento del proyecto. 2
1.1. Objetivos: ..................................... 2
1.2. Descripción del proyecto: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Requerimientos del Proyecto. 3
3. Marco Teórico. 4
3.1. Circuitos Combinacionales: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Circuitos Secuenciales: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3. Descripción de Hardware VHDL: . . . . . . . . . . . . . . . . . . . . . . . . 15
4. DISEÑO: 20
4.1. Sumador: ..................................... 20
4.2. Restador: ..................................... 22
4.3. Multiplicador:................................... 24
4.4. Divisor: ...................................... 25
4.5. ROM: ....................................... 30
4.6. Decodificador de Instrucciones: . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.7. ContadordelPrograma: ............................. 34
4.8. GCM: ....................................... 36
4.9. Registros: ..................................... 38
4.10.PuertosParalelos:................................. 39
4.11.PuertoSerie: ................................... 40
4.12.ControldePuertos:................................ 42
5. Construcción: 46
6. Resultados y Conclusiones: 47
Referencias 47
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f

Vista previa parcial del texto

¡Descarga Tarea 2 Microcontroladores y más Apuntes en PDF de Microcontroladores solo en Docsity!

Índice general

    1. Planteamiento del proyecto.
    • 1.1. Objetivos:
    • 1.2. Descripción del proyecto:
    1. Requerimientos del Proyecto.
    1. Marco Teórico.
    • 3.1. Circuitos Combinacionales:
    • 3.2. Circuitos Secuenciales:
    • 3.3. Descripción de Hardware VHDL:
    1. DISEÑO:
    • 4.1. Sumador:
    • 4.2. Restador:
    • 4.3. Multiplicador:
    • 4.4. Divisor:
    • 4.5. ROM:
    • 4.6. Decodificador de Instrucciones:
    • 4.7. Contador del Programa:
    • 4.8. GCM:
    • 4.9. Registros:
    • 4.10. Puertos Paralelos:
    • 4.11. Puerto Serie:
    • 4.12. Control de Puertos:
    1. Construcción:
    1. Resultados y Conclusiones:
  • Referencias

1. Planteamiento del proyecto.

1.1. Objetivos:

  1. Comprender el funcionamiento interno de un microcontrolador, como realiza las opera- ciones, la secuencia que llevan los registros, como habilitar los puertos y poder recibir o enviar información a través de ellos.

1.2. Descripción del proyecto:

Se diseñara un microcontrolador de 8 bits el cual debe tener las características básicas las cuales son:

  1. Unidad Lógica Aritmética: Se realizarán operaciones lógicas básicas como AND, OR, XOR, NOT así como arit- méticas como suma, resta, multiplicación o división, contando un bit de bandera de error en caso de que la operación no haya sido exitosa.
  2. Unidad de Control: Se encargará de generar las señales adecuadas para los diversos registros así como al contador del programa, utilizará un oscilador maestro.
  3. Contador del Programa: Se encargará de aumentar la cuenta para poder enviar los datos que tiene la ROM (Instrucciones así como cantidades no signadas para poder operarse con el acumulador.
  4. Memoria del Programa: Se alimenta del contador del programa y dará la instrucción que tenga almacenada para ser realizada por la unidad lógica.
  5. Registros: Se utilizarán para almacenar distintos tipos de datos: datos numéricos en caso del acumulador temporal y el acumulador, o instrucciones en caso del registro de instruc- ciones, son manejados mediante la gcm por lo que solo trabajarán cuando haya una señal de reloj entrante en ellos.

12. ESCRIBE PUERTO P-P 2

13. LEE PUERTO SERIE

14. ESCRIBE PUERTO SERIE

15. NO OPERACIÓN

16. CARGA DATOS.

17. SALTAR.

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.

3. Marco Teórico.

3.1. Circuitos Combinacionales:

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:

A B C

0 0 Z

1 0 Z

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:

S 1 S 0 Y

0 0 D 0

0 1 D 1

1 0 D 2

1 1 D 3

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

X 1 X 0 Y 3 Y 2 Y 1 Y 0

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:

X Y Z P S

Finalmente la construcción del restador completo es el siguiente:

Figura 8: Diagrama Combinacional de un FULL SUBSTRACTOR

3.2. Circuitos Secuenciales:

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:

  • Tipos y señales intermedias necesarios para la descripción del comportamiento.
  • Sentencias de asignación que deben realizarse siempre así como sentencias concu- rrentes.
  • Uno a varios process que tienen en su interior sentencias condicionales y/o asig- naciones a señales que dan lugar a hardware secuencial.

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);

4. DISEÑO:

4.1. Sumador:

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: