domingo, 18 de mayo de 2008

Ocupación de la FPGA

Adjuntamos, a continuación el resumen obtenido con ISE del proyecto para dar una idea de la ocupación de la FPGA con dicho proyecto.
En el resumen se puede ver que en la fase de sintesis tenemos muchos avisos, pero este proyecto, no será el definitivo ya que muchos de los avisos son facilmente solucionables;
Por ejemplo: Hay varias señales declaradas en el proyecto que no se utilizan y por tanto hay algunos avisos referidos a esta cuestión.



martes, 29 de abril de 2008

Primeras simulaciones

Esta semana hemos realizado varias simulaciones del sistema y rutinas en ensamblador, principalmente, para el control del visualizador.

Asimismo, organizamos jerárquicamente las interrupciones de forma que, la llegada de un dato del receptor es la más prioritaria y en orden descendente se encuentran los pulsadores INICIO, LAT y LONG, aunque el orden podría ser cualquier otro. Es decir: en caso de que se pulse INICIO y LAT al mismo tiempo, se atenderá antes la interrupción correspondiente al pulsador INICIO.

En la imagen se muestra una simulación realizada con Modelsim:



El escenario es el siguiente: se envía la letra 'w' (código ASCII 77) al visualizador. En la gráfica puede verse cómo se activan las señales 'LCD_enable', 'busy', etc. del interfaz pBlaze-LCD.

El siguiente paso será realizar pruebas en la placa de desarrollo conectando el receptor GPS y el LCD; para ello debemos realizar el fichero de conexión de terminales (*.ucf) de la FPGA que relaciona las señales en VHDL con los componentes físicos de la placa.

lunes, 28 de abril de 2008

Programa ensamblador para el procesador empotrado picoblaze.

En este editor, programaremos las tareas de control de nuestro diseño principal (top GPS).

Concretamente, las tareas que estamos programando en este editor para que sean realizadas por el microprocesador incorporado a la placa Spartan 3 [XILINX] son:

  • Comunicación mediante interrupciones empleando una UART entre el receptor GPS y el microprocesador.

  • Comunicación mediante interrupciones entre el microprocesador y un visualizador LCD.

El código que hacemos con las instrucciones del picoblaze (con estensión “.psm”) se pasa a vhdl y se añade a nuestro proyecto.

A continuación adjuntamos una captura del editor dónde programamos el microprocesador picoblaze.


Recursos:
www.xilinx.com


viernes, 18 de abril de 2008

Diseño inicial del circuito

Después de reunir la información necesaria acerca del sistema, estamos en condiciones de comenzar a diseñar. En la siguiente figura se muestra el circuito inicial del sistema en formato "esquemático" realizado a lo largo de esta semana:




A continuación se detallan algunos aspectos del diseño:
  • Por claridad, se ha incluido la memoria de programa y el pBlaze en un único bloque denominado picoblaze3_empotrado.
  • Las puertas AND permiten seleccionar el periférico, mediante la combinación del identificador de puerto (port_id) y la señal de escritura (write_strobe).
  • El multiplexor de 4 entradas (MUX_4) permite seleccionar entre los datos introducidos por el usuario mediante pulsadores, los datos presentes en la UART de recepción y un conjunto de señales de control para la sincronización del sistema.
  • El decodificador 1 entre 4 permite seleccionar mediante 2 bits del port_id las señales write_buffer, read buffer y las señales reset_buffer de la UART de Tx y de Rx.
  • El bloque divisor_CLK, como se comentó en el artículo de la UART, genera una señal de 4800 bps mediante la división de la señal de reloj.
  • Se ha decidido, además, que cuando se reciban datos, se active una rutina de interrupción.
  • El biestable D, controla la señal de interrupción.

A pesar de todo, este diseño no es definitivo, ya que está sujeto a posibles cambios que mejoren el funcionamiento del sistema.

martes, 8 de abril de 2008

Hardware empleado.

En la realización del proyecto vamos a emplear como elemento base la
siguiente placa FPGA comercial Digilent con una FPGA Xilinx Spartan 3
y algunos periféricos integrados


Esta placa posee los siguientes recursos:
8 LED’s
reloj de 50MHz
4 pulsadores
4 Display de 7 segmentos
8 microinterruptores (switches)
1 puerto VGA
1 puerto serie RS232
1 puerto PS/2 mouse/keyboard
3 conectores de expansión
2 módulos de 256x16 de SRAM (1MByte)
2 Mbit de PROM (para almacenar la programación de la FPGA.)

martes, 1 de abril de 2008

Recepción y envío de la información: UART

Una vez que tenemos el diagrama de bloques de nuestra aplicación, conviene concretar algunos aspectos de cara a la implementación. Una de las partes más importantes (sino la más importante) del sistema es la recepción de los datos y el envío de solicitudes al receptor GPS.
Se utilizará una UART (Universal Asinchronous Receiver Transmiter) definida en dos macros en VHDL: una UART de transmisión y una UART de recepción. A grandes rasgos, permiten la transmisión/recepción de tramas en serie compuestas por 8 bits de datos, 1 bit de START y 1 bit de STOP (una trama RS232 básica). Cada una de las macros incorpora un buffer de 16 bytes para la sincronización:

Para garantizar una precisión aceptable, se muestrean los bits a enviar/recibir en la mitad de la duración del bit, de la siguiente forma (recepción) :

  1. Un flanco descendente indica el inicio de la trama e inicia un temporizador.

  2. El temporizador termina en la mitad del período del bit.

  3. En ese momento se muestrea el bit recibido.

  4. Se inicia de nuevo un temporizador, esta vez con el período de bit y se muestrea el siguiente bit, hasta recibir los 8 bytes de datos.
  5. El bit de STOP (dos períodos de bit a nivel alto) indica el fin de la transmisión.

A continuación se realiza una descripción más detallada de las macros:

  • UART_TX

Está formada por la interconexión de una memoria fifo de 16 posiciones de 8 bits (buffer de transmisión) y la UART propiamente dicha. Merece una mención especial la señal en_16_x_baud, que permite obtener una frecuencia de muestreo determinada. En nuestro caso, como el lector recordará, la tasa de las tramas es de 4800 bps; para conseguir esta velocidad se divide la frecuencia de reloj por el valor adecuado. El resto de las señales se incluyen en la siguiente tabla:


  • UART_RX

La estructura es análoga y todo lo dicho anteriormente es válido. Sólo destacar dos nuevas señales: buffer_data_present, que indica la presencia de datos recibidos en el buffer y read_buffer, que permite extraer los datos almacenados en el buffer de recepción, según el siguiente protocolo:











martes, 25 de marzo de 2008

Diagrama de bloques





NOTAS:



  • Los datos enviados por el receptor (en formato ASCII) se guardarán en la memoria interna del pBlaze.

  • El pulsador INICIO se conecta al terminal de interrupción del microprocesador, para detectar la puesta en marcha del sistema.

  • En los terminales en los que confluyen varias líneas será necesario el uso del tercer estado.

martes, 11 de marzo de 2008

PicoBlaze

PicoBlaze es un microprocesador diseñado para ser
totalmente empotrable en las FPGAS de XILINX.

Diagrama de conexión de PicoBlaze con la memoria de programa.

Características generales de PicoBlaze
  • 30 instrucciones
  • Cada instrucción tiene 18 bits de longitud
  • 16 registros de propósito general de 8 bits
  • 256 puertos direccionables
  • Permite direccionar una memoria de programa de 1024x18

Arquitectura

  • Unidad de datos contiene (banco de registros, modulo de control de I/O, ALU y memoria de 64 bytes)
  • Unidad de control (decodificación de la instrucción y gestión de interrupciones, registro PC y pila)
Versiones

Según el tipo de FPGA a utilizar, existen diferentes versiones.
La tabla que se adjunta a continuación clarifica esto e introduce
las características más destacables de cada versión.


FUENTES:
[1]http://www.dte.us.es/gtm/

lunes, 10 de marzo de 2008

Receptor GPS P28146 de Parallax

Tal y como se ha indicado, se utilizará un receptor GPS de Parallax para la recepción de la información procedente de los satélites. A continuación se detallan brevemente sus características más importantes:


  • Proporciona datos como la hora, fecha, latitud, longitud, altitud, velocidad y el sentido del movimiento del receptor.

  • Consta de 4 terminales, cuyo significado se indica en la siguiente tabla:


  • Un LED indica el estado del dispositivo:
    LED parpadeando => búsqueda de satélites o satélites no disponibles.
    LED fijo => satélites encontrados y listos para la transmisión
    LED apagado => problema


  • Consta de dos modos de funcionamiento, que se seleccionan mediante el terminal /RAW:

    - Raw Mode (/RAW=0): transmite tramas de datos según el estándar NMEA0183 v2.2 y permite trabajar con los datos recibidos directamente.

    Este estándar proporciona tramas de caracteres ASCII delimitados por comas precedidos de una cabecera y pueden ser extraídos mediante un interfaz serie. Un ejemplo de trama es la siguiente:

    $GPGGA,170834,4124.8963,N,08151.6838,W,1,05,1.5,280.2,M,-34.0,M,,,*75

    Para más información acerca del significado de las tramas, puede consultarse la página http://home.mira.net/~gnb/gps/nmea.html.


    - Smart Mode (/RAW=1 o terminal sin conectar): el usuario solicita el envío de determinada información que el sistema extrae de la trama NMEA0183. El usuario debe enviar el comando “¡GPS” seguido del comando correspondiente, según la siguiente tabla:

-------------------------------------------------------------
Fuentes:
[1] Hoja de características del módulo, disponible en http://www.parallax.co/

Diagrama de secuencia de operaciones




Especificaciones iniciales del sistema

1. DETALLES DE IMPLEMENTACIÓN

  • Un receptor GPS (del fabricante Parallax) envía en serie la información de la posición respecto a los satélites del sistema GPS. El objetivo de nuestro sistema será la interpretación de esta información y su posterior presentación en coordenadas de latitud y longitud.
  • Utilizaremos el receptor en su modo de operación Smart (se solicitan las coordenadas mediante comandos).
  • Para la recepción y el procesado de los datos se utilizará el microprocesador Picoblaze empotrado en una FPGA del fabricante XILINX.

2. INTERFAZ DE USUARIO

  • Dispondrá de un pulsador INICIO para arrancar el sistema, que recibirá la latitud y longitud del receptor.
  • El usuario podrá consultar dicha información mediante los pulsadores LAT y LONG respectivamente.
  • Los datos vendrán expresados en grados y minutos seguidos de una letra (N, S, E, O).
    El formato de visualización será el siguiente:
    Latitud: 1 2 0º 30.5’ N
    Longitud: 150º 12.4’ E

martes, 4 de marzo de 2008

Lanzamiento de un satélite GPS

El GPS es un sistema basado en una red de satélites que emiten una señal permanentemente
Para dar una idea del tamaño de un satélite GPS incluimos una foto.



Lanzamiento de satélites para la constelación NAVSTAR-GPS mediante un cohete Delta



Satélite NAVSTAR GPS


--------------------------------------------------------------

Fuentes:

[1] http://es.wikipedia.org/

lunes, 3 de marzo de 2008

Aplicaciones similares

Algunas aplicaciones del GPS son las siguientes:



  • Receptor GPS para automóvil (diagrama de bloques):




  • Sincronización: los sistemas de transmisión pueden utilizar la señal de sincronización de un único satélite para conseguir una referencia temporal.




  • Topografía: trazado de mapas con mayor precisión.




  • Navegación marítima y aérea.





  • Aplicaciones militares como el guiado de misiles.



  • Localización de vehículos, personas, animales, mercancías, ...




  • etc.
--------------------------------------------------------------

Fuentes:

[1] http://www.xilinx.com/
[2]http://www.zonagps.com/

¿Qué es el GPS?

La repercusión de este sistema en nuestra sociedad es bien conocida; sus aplicaciones actuales han transcendido la primera aplicación para la que fue concebido: la obtención de la posición de un objeto con fines militares. A día de hoy se encuentra en teléfonos móviles, PDAs, automóviles,...

El GPS (Global Positioning System) se basa en una red de 27 satélites. Cada uno de ellos está provisto de un reloj atómico que permite obtener con precisión el tiempo de propagación de la señal desde el satélite al objeto y así, su distancia. Utilizando las distancias de 3 satélites se conoce la posición en 3D (longitud, latitud y altitud). Sin embargo, para el cálculo directo de las distancias se hace necesario incorporar también un reloj atómico en el receptor del usuario. Esto se evita utilizando 4 satélites en lugar de 3 (figura 1). El objeto estará situado en la intersección de las 4 esferas imaginarias con centro en cada satélite y radio la distancia satélite-objeto correspondiente.

La precisión de la medida depende, fundamentalmente, del tipo de sistema de posicionamiento empleado: el SPS (Standard Positioning System) proporciona medidas con una incertidumbre de ±100m, mientras que el PPS (Precise Positioning System) reduce la incertidumbre a ±20m. Existe además, un sistema conocido gomo DGPS (Diferential GPS) cuya resolución se sitúa en torno a los 3 m; este sistema se basa en la corrección de la medida usando un receptor de referencia. El uso de portadoras permite reducir aún más la incertidumbre que, en los sistemas más sofisticados, es del orden de 1cm.

--------------------------------------------------------------
Fuentes:
[1] http://www.xilinx.com/automotive/presentations/collateral/Presentations/gps_nav_sys.pdf
[2] "Sistema de Posicionamiento Global." Microsoft® Encarta® 2007 [DVD]

martes, 26 de febrero de 2008

Bienvenida

Bienvenidos al blog de la asignatura Laboratorio de Sistemas Digitales Programables 2. A lo largo del presente cuatrimestre se abordará el diseño de un sistema receptor de posicionamiento global (GPS) y su posterior implementación en una FPGA de Xilinx. Semana a semana, y a medida que se avance en el proyecto, se comentarán las novedades más relevantes. Esperamos que las explicaciones sean de vuestro agrado.