Sie sind auf Seite 1von 5

MICROCONTROLADOR EMBEBIDO EN FPGA

ANDRES FERNANDO PREZ SARMIENTO 1801639 FABIAN LEONARDO SUAREZ 1801945 Bogot, Colombia 2. MARCO TEORICO El microcontrolador: A los microcontroladores se le puede hacer una analoga comparndolos con los computadores ya que los microcontroladores ya que este es un chip que cuentan con un microprocesador o unidad de procesamiento central (CPU), una memoria para almacenar el programa, una memoria para almacenar datos y puertos de entrada salida.

Abstract: Developed a counter from 0 to 99, with functions automatic and manual programmed with the assembler language, using the architecture of a PICOBLAZE microcontroller, embedded in an FPGA on a Spartan card 3e. With the aim of providing introduction to the subject of micros and laboratory, managing basic instructions and taking it as a conceptual basis for other microcontrollers that are handled in the future.

Resumen: Se desarrollo un contador de 0 a 99, con funciones automtico y manual programado con el lenguaje assembler, usando la arquitectura de un microcontrolador PICOBLAZE, embebido en una FPGA en una tarjeta Spartan 3e. Con el objetivo de dar introduccin a la materia de micros y laboratorio, manejando las instrucciones bsicas y tomndolo como base conceptual para otros microcontroladores que se manejaran en el futuro.

Imagen 1. Esquema de un microcontrolador

Palabras clave: Embebido, Assembler, PICOBLAZE, Spartan 3e, microcontrolador.

1.

OBJETIVOS

Desarrollar habilidades en el diseo y programacin de un sistema microcontrolado mediante lenguaje de mquina y embebido de FPGA. Utilizar lenguajes de programacin de microcontroladores para la implementacin de un cdigo. Disear un cdigo para un lenguaje de programacin y de esta forma implementarlo en un microcontrolador.

El micro controlador se emplea para controlar el funcionamiento de una tarea determinada. En su memoria slo reside un programa destinado a realizar una aplicacin determinada; en sus lneas de entrada/salida soportan la conexin de sensores y actuadores de los dispositivos que se desean controlar. Despus de programado el microcontrolador este solo funcionara para realizar lo que se le haya asignado. Para el funcionamiento del microprocesador es necesario un programa, para lo cual es necesario algn tipo de lenguaje de programacin. Uno de ellos es ASSEMBLER, el cual se caracteriza por ser un lenguaje de bajo nivel. ASSEMBLER constituye la relacin ms directa del cdigo mquina para cada arquitectura de microprocesador. Uno de los dispositivos en el cual se utiliza ASSEMBLER es el PicoBlaze el cual es un microcontrolador de 8 bits que se encuentra en dispositivos FPGA como por ejemplo la Spartan3. Este dispositivo utiliza un tipo de sistema

ASSEMBLER que funciona como ayuda para la realizacin de programas, el ensamblador en el que se basa PicoBlaze de denomina KCPSM. PicoBlaze Cuenta con 16 registros de propsito general y una memoria interna de 64 bytes. Adems de una sencilla Unidad Lgica Aritmtica (ALU) que maneja suma, resta, comparar, operaciones lgicas y las pruebas incluyendo la paridad, cambios y rotaciones. Esta ALU tambin compatible con los indicadores Carry y Zero, que se puede utilizar en distintos casos, como por ejemplo en saltos condicionales y llamadas. PicoBlaze tiene como complemento una pila del contador del programa interno que soporta subrutinas anidadas automticamente. Este microcontrolador tiene una ciertas instrucciones. Estas instrucciones son importantes pues con estas se puede tener y crear muchas aplicaciones, que pueden ser realizadas en el ensamblador. Aunque es casi imposible probar completamente las posibles combinaciones de cdigo y las seales que pueden ser encontradas en un procesador dado, el KCPSM3 se basa en gran medida de la experiencia adquirida con KCPSM y KCPSM2 que son diseos muy estables. KCPSM3 se completo en junio de 2003 y ha sido utilizada en una amplia gama de aplicaciones. Aunque esta versin de KCPSM y ensamblador se cree que es estable y plenamente operacional, es necesario llevar a cabo la verificacin contina de la funcionalidad de la macro KCPSM3 y de su ensamblador. Estas son algunas de las instrucciones bsicas de KCPSM3 de distintos tipos como, instrucciones aritmticas e instrucciones lgicas. Instrucciones del ncleo KCPSM3 Las instrucciones se pueden clasificar en 4 grupos: 1. INSTRUCCIONES DE TRANSFERENCIA: Como su nombre lo indica, este transfiere datos, copia datos de un punto a otro sin perder lo que tena en el origen. Se pueden transferir desde una letra (string) hasta una palabra (cadena de strings) Push: Bsicamente almacena en la cima de la pila 16 bits y decrementa el puntero de a 2 bytes. Forma de declaracin: PUSH: CX; cx es un registro puede ser cualquier registro, que no sea CS o IP PUSH: ALGO

POP: Esta otra funcin hace lo contrario de push, extrae de la cima de la pila el valor de 16 bits almacenado, transmitindolo a un espacio de memoria ya declarada o indicada. Esta funcin en vez de decrementar, incrementa la pila en dos bytes. Forma de declaracin: POP: DX; cx es un registro puede ser cualquier registro ,que no sea CS o IP POP: BX XCHG: Esta funcin se encarga de intercambiar un valor o valores entre 2 espacios de memoria o registros, por lo que modifica los operando a no ser que tengan idntico valor. Forma de declaracin: XCHG: BL, CH XCHG: ALGO, BX 2. INSTRUCIONES ARITMETICAS Esta se encarga de las operaciones matemticas que se encuentran en la ALU. INC: Esta funcin nos permite incrementar en 1 o sumar en 1 a algn registro o espacio de memoria, pude incrementar datos de tipo byte o string. Forma de declaracin: INC AX; AX +1 INC ALGO; ALGO +1 DEC: nos sirve para decrementar en 1 o restar en 1, en otras palabras hace lo contrario a la funcin INC. Forma de declaracin: DEC AX; AX -1 DEC ALGO; ALGO -1 SUB: Esta funcin es para restar, pero ya aqu restamos entre registros. Forma de declaracin: SUB al, bl SUB dx, dx 3. INSTRUCCIONES LOGICAS Esta se encarga de las instrucciones de conjuncin, disyuncin, exclusiva y negacin. AND: Esta funcin hace la operacin lgica y, se necesitan dos variables (registros o espacios de memoria). Forma de declaracin: AND AX,Bx AX and BX

OR: Esta funcin hace la operacin lgica O, se necesitan dos variables (registros o espacios de memoria). Forma de declaracin: OR AX,Bx AX or BX XOR: Esta funcin hace la operacin lgica o exclusiva, se necesitan dos variables (registros o espacios de memoria). Forma de declaracin: XOR AX,Bx AX xor BX 4. INSTRUCCIONES DE SALTO Como su nombre indica nos sirve para saltar de funcin en funcin para facilitarnos la estructura del programa y la facilidad de desplazarnos a otra operacin del cdigo. JMP: Es la que se encarga de ir de funcin en funcin bsicamente salta de una a otra. Forma de declaracin: JMP FUNCION1 ; SALTA A LA FUNCION FUNCION1 CALL:Si en algn punto de nuestro cdigo quisiramos llamar A una operacin, esta operacin se encarga de llamar a dicha operacin, con la diferencia de que se guardan ciertos datos para cuando esta retorne a su inicio. Forma de declaracin: Call FUNCION1; Nota: en lenguaje Assembler se utiliza ; para escribir una nota.

Algunas de las funciones ms caractersticas y que son utilizadas por su importancia la hora de realizar de un cdigo son las siguientes JUMP Bajo condiciones normales, el contador del programa (PC, ProgramCounter) incrementa el apuntador a la siguiente instruccin. El espacio disponible es de 1024 localidades (000h a 3FFh) adems de que el contador del programa tiene un ancho de 10 bits. Cuando el contador alcance el valor mximo 3FFh y se incremente, pasar al valor 000h. La instruccin JUMP puede ser utilizada para modificar esta secuencia especificando una nueva direccin. La instruccin JUMP puede ser condicional, un salto condicional ser ejecutado dependiendo de evaluar la bandera ZERO y de CARRY. La instruccin JUMP no tiene efecto en el estado de las banderas. CALL La instruccin CALL es similar en funcionamiento a la instruccin JUMP, en el sentido de que modifica la ejecucin normal de la secuencia del programa especificando una nueva direccin. La instruccin CALL tambin puede ser condicional. Adems de suministrar una nueva direccin, la instruccin CALL tambin provoca que el valor del contador del programa se almacene dentro de la pila del contador de

programa. La instruccin CALL no tiene efecto en los estados de las banderas. LOAD La instruccin LOAD, provee de un mtodo para especificar el contenido de cualquier registro. El nuevo valor puede ser una constante, o el contenido de cualquier otro registro. La instruccin LOAD no tiene efecto en los estados de las banderas. Como la instruccin LOAD no tiene efecto sobre las banderas puede ser usado para reordenar o asignar contenidos de registros en cualquier etapa del programa de ejecucin. La habilidad para asignar una constante sin que tenga impacto en el tamao del programa o la ejecucin significa que la instruccin LOAD es la manera mas obvia para asignar un valor o limpiar un registro. COMPARE La instruccin COMPARE ejecuta una substraccin de dos operandos de ocho bits. A diferencia de la instruccin SUB el resultado de la operacin es descartado y solo las banderas son afectadas. La bandera ZERO es puesto en uno 1 cuando todos los bits del resultado temporal estn en bajo e indica que ambos operandos eran idnticos. La bandera de CARRY indica que ha ocurrido un desbordamiento y que el segundo operando fue mayor que el primero. OUTPUT La instruccin OUTPUT transfiere el contenido de cualquier registro a la lgica externa del KCPSM3. La direccin del puerto (en el rango de 00 a FF) puede ser definida por un valor constante o indirectamente como el contenido de cualquier otro registro. Las banderas no son afectadas por esta operacin. INPUT La instruccin INPUT recibe un dato externo para ser ubicado dentro de cualquiera de los registros internos. La direccin del puerto (en el rango de 00 a FF) puede ser definido por un valor constante o indirectamente como el contenido de cualquier otro registro. Las banderas no son afectadas por esta operacin. 3. MATERIALES ELEMENTOS Spartan 3E Xilinx ISE Desing Ensamblador PicoBlaze KCPSM3 Display 7 segmentos

C.I. 74ls47 Fuente de voltaje Cables de conexin

4. PROCEDIMIENTO: En esta prctica de laboratorio se debe embeber un microcontrolador PicoBlaze en una tarjeta Spartan 3, cuyo cdigo de operacin en ASSEMBLER genere una cuenta de dos dgitos, en incremento o decremento (switch 1), sea automtica o manual (switch 2), visualizada en dos display 7 segmentos, conectado a las salida de la Spartan 3E. Para la realizacin de la prctica se toma como base un ejemplo acerca de ala utilizacin del KCPSM3 y la forma de asociar dicho cdigo a Xilinx y de esta forma modificar las caractersticas bsicas en lenguaje VHDL. 4.1 Cdigo: El cdigo base generado en una carpeta en la cual se generaban distintos archivos, los cuales tienen como finalidad embeber el micro, adems de modificar su funcin inicial y de esta manera de tal manera que este realice el accin que se le pide al dispositivo: Control.vhd Kcpsm3.vhd S3esk_startup.ucf S3esk_startup.vhd Kcpsm3.exe

Estos archivos son los que finalmente nos permitirn embeber al PicoBlaze. Al tener el archivo enlazado en Xilinx, a partir de esto el cdigo control.psm ser modificado. Este archivo es donde esta las acciones del programa y las sentencias de este. Despus de realizado este procedimiento, y terminar el programa, este se compila. Generalmente este proceso de compilacin se realiza en el cmd (smbolo de sistema), en el cual se especificara la ruta del compilador y el archivo a compilar. Si se desea, el compilador KCPSM3 se puede mover a la carpeta donde se encuentra el cdigo.psm y de esta forma facilitar el proceso. Despus de haber introducido la serie de instrucciones en cmd y compilar satisfactoriamente el programa, se obtendr una una serie de archivos asociados al cdigo. El

archivo generado que ms utilidad traer para este caso sera el .VHD, ya que este contiene el cdigo o buffer que se debe introducir en el proyecto de Xilinx. Ahora con el .vhd generado en la compilacin del cdigo ASSEMBLER se reemplaza por el cdigo que est en s3esk_startup.vhd cambiando el buffer para trabajar con el programa que se realiz, en Xilinx. Luego en el archivo s3esk_startup.ucf se configuran los pines de salida en la Spartan. Finalmente se programa la Spartan normalmente para poder observar que los displays realizan el proceso deseado.

5. Conclusiones
En la construccin de un programa capaz de manejar el microcontrolador de la Spartan se observ que varias de las instrucciones propias del leguaje ASSEMBLER varan dependiendo del tipo de ensamblador que se est utilizando (tabla 1.1 y 1.2 ). Fue posible determinar la relacin entre ASSEMBLER y VHDL, ya que fue posible asociar un programa de tipo ASSEMBLER a un compilador de VHDL como Xilinx, y manejar las distintas funciones de este.

6. Bibliografa
http://602-a.blogspot.com/2013/02/11importancia-de-la-programacion-en.html http://es.scribd.com/doc/51365750/definicion-yfuncionamiento-de-microcontroladores-ymicroprocesadores

Referencias
[1] KCPSM3_Manual [2] manual PICOBLAZE

Das könnte Ihnen auch gefallen