Instituto Tecnológico de Costa Rica Escuela de Ingenierı́a Electrónica EL-4311 Estructura de Microprocesadores Profesor: Ing. Jorge Castro-Godı́nez I Semestre, 2013 Proyecto 1: ¿Cuál es la menor distancia entre dos puntos? 1. Descripción Los conceptos de la geometrı́a euclideana establecen que la distancia más corta entre dos puntos es un segmento de recta que pasa por ellos. Conociendo dos puntos en un espacio euclideano se puede encontrar la ecuación que describe la recta que los une, la distancia entre los puntos y el ángulo de la recta con respecto al eje horizontal. Funciones trigonométricas básicas como el seno y el coseno, son requeridas para determinar estos parámetros. El algoritmo CORDIC (Cordinate Rotation Digital Computer ), inventado por Jack Volder en 1959, permite calcular funciones matemáticas trigonométricas e hiperbólicas. Este algoritmo resulta páctico pues puede ser implementado en Hardware (HW) reconfigurable, como un CPLD o FPGA, con un pequño footprint. CORDIC solo requiere de una pequeña Lookup table (LUT) junto con lógica para realizar corrimientos y sumas, sin requerir de multiplicadores o divisores dedicados. En la solución de problemas de Ingenierı́a Electrónica es frecuente contar con dispositivos de HW especı́ficos que desempeñan tareas puntuales y que requieren de comunicación entre sı́, como sucede en algunos equipos de comunicaciónes eléctricas donde se cuenta con un sistema basado en microprocesador que realiza el control general del sistema y que delega tareas especı́ficas en subsistemas o módulos de procesamiento digital de señales (DSP) desarrollados en FPGA. 2. Requisitos Se desea desarrollar un sistema que reciba dos puntos coordenados y que calcule la distancia entre dichos puntos ası́ como el ángulo del segmento de recta que une los puntos con respecto al eje horizontal. Una aplicación desarrollada en ensamblador(nasm) de x86 recibirá la solicitud de cálculo de la forma: (xi , yi ), (xj , yj ) e.g., (5, 6), (45, 57) La aplicación enviará, mediante comunicación serie ası́ncrona, la información extraı́da de los puntos coordenados a un subsistema que se implementará en una FPGA (Spartan 3) para realizar los cálculos empleando el algoritmo de CORDIC. 1 El subsistema de la FPGA debe ser capaz de comunicarse con el computador mediante comunicación serie, por lo que deberá implementarse un bloque IP que será proveido. La aplicación tomará los resultados obtenidos y los mostrará al usuario, e.g, Distancia: 100 Ángulo: 75◦ Considere un espacio de rectangular de dimensiones 800 × 600, en donde el origen se encontrará en la esquina superior izquierda del rectángulo. 3. Objetivos Al concluir este proyecto el estudiante podrá: Escribir programas en lenguaje ensamblador x86 en los que requieran la comunicación con otros dispositivos mediante comunicación serie. Integrar un sistema de propósito general, como lo es una PC, con un sistema de propósito especı́fico, en este caso, una implementación particular desarrollada en FPGA. 4. Metodologı́a El desarrollo de este proyecto implica diferentes etapas: 1. Realizar una investigación bibliográfica en cuanto al concepto y funcionamiento del CORDIC 2. Diseñar una solución empleando diagramas de flujo y representaciones en alto nivel con pseudocódigo, tanto para el programa que se ejecutará en el computador como la implementación en la FPGA. 3. Escribir y depurar la implementación escrita en lenguaje ensamblador para x86 de 32 bits. 4. Realizar una descripción de HW que implemente el algoritmo CORDIC y la comunicación serie. 5. Integrar y validar el sistema. 5. Entregables Archivos fuente, código en ensamblador y descripción de HW. Un documento donde se presenten los diagramas de bloques, de flujo y de estados desarrollados en el diseño de la solución propuesta. 2 La fecha de entrega y presentación del proyecto es el lunes 15 de abril de 2013, antes de las 5:00 pm. Los entregables deben ser subidos al tecDigital. Todos los archivos deben ser entregados en un archivo .zip, donde se indique los nombres de los miembros del grupo, e.g., ButchCassidy SundanceKid.zip 3