Diseño de un Microcontrolador Educativo en VHDL



Diseño de un Microcontrolador Educativo en VHDL

Alejandro Juárez Arellano
 

Texto completo de la Tesis     

 



Resumen

 

En este trabajo se presenta el diseño de un microcontrolador de 16 bits, el diseño del lenguaje ensamblador para programarlo y un banco de siete pruebas para demostrar su funcionamiento. El diseño fue realizado en el lenguaje de descripción de hardware (VHDL), lo que permite probar el diseño en dispositivos lógicos programables, con el objetivo de optimizarlo y usarlo en distintas aplicaciones, permitiendo experimentar con diversas arquitecturas y organización de computadoras. La última prueba realizada es la aplicación no trivial de los esquemas CCM y GCM de Autenticación Encriptada. Los microcontroladores forman parte de un gran número de aparatos electrónicos hoy en da. En los relojes que tienen una pantalla de LED o LCD, dentro del automóvil puede llegar a tener al menos cuarenta de estos componentes para controlar el motor, los frenos, el aire acondicionado y así sucesivamente. Cualquier sistema que cuente con un control remoto es seguro que tenga un microcontrolador: televisiones, reproductores de vdeo, ratón y teclado inalámbrico, impresoras, telefonos, camaras digitales, ..., etc. Los microcontroladores se usan para controlar una sola tarea con recursos limitados integrados dentro del circuito integrado, por lo regular se encuentra incrustado en la tarjeta del dispositivo que controla. Las características principales del microcontrolador diseñado son: Bus de 16 bits para datos y direcciones y bus de instrucciones de 29 bits. La memoria de datos almacena palabras de 16 bits, el archivo de registros cuenta con 16 registros de propósito general de 16 bits. Cuenta con cuatro puertos paralelos de 16 bits, cada pin de los puertos puede configurarse de entrada o salida, los bits de entrada se actualizan en cada ciclo del reloj. Un puerto serial que transmite y recibe un byte de forma asíncrona. Tiene un manejador de interrupciones que atiende las señales por prioridad para controlar componentes internos y externos. También tiene cuatro temporizadores atendidos por interrupciones, además de un temporizador guardián como opción de seguridad en cualquier aplicación. Además cuenta con un contador de programa organizado con una pila de registros para las subrutinas. La arquitectura es de un conjunto reducido de instrucciones RISC con una organización de memoria Harvard. La memoria de programas es lineal y la memoria de datos está organizada por páginas. El ciclo de instrucción se ejecuta en un ciclo del reloj.

 

Abstract

This work presents the design of a 16-bit microcontroller, the design of its assembly language for programming, and a bank of seven tests to prove their functionality. It was designed in hardware description language (VHDL), which allows testing the design with programmable logic devices, in order to optimize it and use it in di erent applications, allowing to experiment with di erent architectures and computer organization. The last test performed was the nontrivial application of CCM and GCN schemes of Encrypted Authentication. The microcontrollers are part of a large number of electronic devices today. They are used in watches that have LED or LCD screen, inside cars where at least forty of these components are used to control the engine, brakes, air conditioning and so on. Any system that has a remote control is sure to have a microcontroller: TVs, VCRs, wireless keyboard and mouse, printers, phones, digital cameras, etc. The microcontrollers are used to control a single task with limited resources embedded within an integrated circuit, and it is usually embedded within the card of the device it controls. The main features of the designed microcontroller are: Bus 16-bit data and address and instruction bus of 29 bits. The data memory stores 16-bit words, the log le has 16 general purpose registers of 16 bits. It has four 16-bit parallel ports, each port pin can be con gured for input or output, the input bits are updated at each clock cycle. A serial port that transmits and receives a byte asynchronously. It has an interrupt handler which handles priority signals to control internal and external components. It also has four timers attended by interruptions, and a guard or watch dog timer as security option in any application. Furthermore, it count with a program counter organized as a stack of records for subroutines. The architecture is a RISC reduced instruction set with a Harvard memory organization. The program memory is linear and the data memory is organized by pages. The instruction cycle is executed in one clock cycle.