Laboratorio de SDP-2

Diseño de un osciloscopio digital sobre FPGA

UNIDAD DE ADQUISICIÓN

Esta semana hemos terminado la UNIDAD DE ADQUISICIÓN. La tarea de este bloque es dejar almacenadas en las 640 primeras posiciones de la BRAM las muestras tomadas del conversor analógico-digital. Comentaremos a continuación los detalles concernientes a la estructura interna del bloque, interfaz y funcionamiento.

 

1.-ESTRUCTURA

 

Este bloque se compone de dos módulos, uno con la parte operativa (bloque_util_adq) y otro con la de control (uc_adq):

 

 

1.a.-UNIDAD DE CONTROL

 

La unidad de control debe activar las señales pertinentes para la realización de la adquisición. Está implementada mediante una máquina de estados finita, siguiendo el siguiente diagrama de secuencia de operaciones:

 

  

Los contadores a los que se hace referencia son dos:

  • Contador_de_t: para variar la frecuencia de muestreo.
  • Contador_col: para capturar 640 datos.

 

Cabe destacar que en el diagrama no se explicitan las asignaciones a señales sino que éstas van implícitas en las descripciones de los estados, lo que facilita su comprensión. También que la FSM no se realizó con ningún programa específico, sino que se creó directamente en vhdl, dado que resultó ser así más sencilla su realización por la necesidad de contadores adicionales, decisión que aunque por una parte podría no aprovechar todas las posibilidades en cuanto a rendimiento de la FPGA, sí aumenta la portabilidad del diseño a otros dispositivos de lógica programable e independiza el diseño de programas específicos.

 

 

1.b.-UNIDAD OPERATIVA

 

La unidad operativa está formada por tres bloques: el modelo del ADC, un multiplexor, el receptor del puerto serie, y un bloque divisor de frecuencia de reloj.

 

  • El modelo ADC fue implementado para probar el sistema, y aunque en un principio no pretendía formar parte del sistema final decidió incluírse para evitar la existencia de diferentes versiones de éste, además de permitir la prueba de la parte de procesado y visualización (ya que proporciona una fuente determinista de información) y ayudar a la detección de problemas una vez implementado en la placa. No se profundizará sobre detalles de su implementación ya que esto se hizo anteriormente.
  • El multiplexor permite seleccionar como entrada al receptor serie-paralelo la salida del ADC interno o del externo.
  • El receptor serie-paralelo recibe la trama y extrae de ella el dato de 12 bits, tarea para la cual necesita tres bloques:

§         Bloque de retardo: registro de desplazamiento de 5 bits si se selecciona la entrada del modelo del adc, 3 si es la externa, con un detector de flancos ascendentes a su entrada para conseguir la señal de inicio de conversión serie-paralelo del dato extraído del adc. La explicación de este retardo se basa en la inclusión al inicio de la trama de 4 ceros, lo que implica 4 registros para su retardo. Como el detector de flancos retarda un ciclo el pulso recibido, se utilizarán 3 registros. Los 2 adicionales para el modelo de ADC surgen de la imperfección del modelo realizado, que genera la trama con dos ciclos de retraso. El pulso retardado en este bloque dispara el siguiente bloque.

§         Bloque de control de desplazamiento: está formado por un contador y un circuito combinacional que genera el pulso de habilitación de los registros de desplazamiento de 12 bits donde se guardan los datos extraídos del ADC, además de indicar la finalización del desplazamiento con la activación de una señal.

§         Bloque de desplazamiento: 2 registros de 12 bits de desplazamiento colocados en serie en los que queda la muestra actual y la previa tras la adquisición de un dato. El almacenado de la muestra previa no provee todavía utilidad alguna, pero será útil en el momento de inclusión de un circuito de disparo para comenzar la adquisición con un cruce por cero, tras un máximo o mínimo…

·         El circuito divisor de frecuencia de reloj tiene por objeto generar la señal de reloj para alimentar al convertidor analógico-digital externo, ya que la frecuencia utilizada por el sistema es lo doble que la máxima que permite.

 

 

 

2.-INTERFAZ

 

Al inicio del apartado anterior (1.-ESTRUCTURA) pueden observarse las entradas y salidas del bloque diseñado.

  • El reloj de entrada será el mismo que el del sistema, 50MHz.
  • Se incluyen dos señales diferentes de reset, ya que es necesario inicializar el bloque divisor de frecuencia antes que activar el reset global del sistema. Esto es así porque todos los reset son síncronos, y si se inicializa todo con un único reset los circuitos dependientes del reloj de 25MHz quedan sin inicializar al no tener señal de reloj durante su reseteo. Por tanto, primero debe aplicarse el pulso al terminal de reset_clk (que únicamente va conectado al bloque divisor de frecuencia) y luego el pulso al terminal de  reset global.
  • La entrada simul debe permancer a ‘1’ si se utiliza el ADC interno (modelo) y a ‘0’ en caso de utilizar el ADC externo, cuyos terminales conectaremos con los de la unidad de adquisición: sdata->sdata_externo, cs->cs_out, clk->clk25_out.
  • Las señales amplitud y frecuencia permiten aplicar una “amplificación digital” a la señal muestreada y variar la frecuencia de muestreo respectivamente, aunque sus funcionalidades no han sido implementadas todavía.
  • La unidad de adquisición se conecta con la BRAM por medio de we_ram ( terminal de habilitación de escritura), puntero_ram (dirección) y dato_ram (dato de entrada).
  • Una vez configurada la unidad con los parámetros pertinentes mediante la activación de las señales correspondientes, se inicia el proceso de adquisición mediante un pulso en la entrada inicio_adq. Cuando el proceso finalice, quedarán en las primeras 640 posiciones de la BRAM los datos muestreados y se generará en la salida fin_adq un pulso para indicar tal finalización.

 

 

2.-FUNCIONAMIENTO

 

No incluiremos en esta publicación todos los test realizados a todos los subsistemas que forman la unidad operativa, aunque estos han sido realizados y verificados, para no incrementar demasiado la extensión de la misma; pero sí se incluye a continuación la gráfica resultante de la prueba del sistema final (unidad operativa):

                                                    

 

En la gráfica puede verse la inicialización, cómo la señal de reloj de 25 MHz no empieza hasta la aplicación de reset_clk, luego se aplica la señal de reset; y posteriormente inicio_adq. Puede observarse cómo dato_ram es igual al puntero más uno: esto es así ya que la inicialización del ADC interno genera la muestra cero, y por tanto la primera vez que se pida una muestra ésta será la siguiente, esto es, x”001”.

   

  

 

En la segunda gráfica podemos ver la finalización con activación de la señal fin_adq. Puede observarse que la frecuencia de muestreo máxima es 1/0.88 us = 1.14MHz.

  

  

 

Y en la tercera podemos ver la duración mínima total del proceso de adqusición: 563.24 us. Puede comprobarse que está dentro de los márgenes estimados si revisamos las especificaciones establecidas al inicio del diseño.

 

En la próxima publicación incluiremos la simulación temporal y la prueba con la BRAM, con lo daremos por finalizada la implementación de la unidad operativa básica. Intentaremos asimismo realizar las ampliaciones pertinentes para permitir la selección de amplitud y frecuencia, así como la selección del tipo de disparo para la captura tan pronto como nos sea posible.

 

mayo 5, 2008 - Publicado por | actividad final

Lo siento, el formulario de comentarios está cerrado en este momento.

Seguir

Get every new post delivered to your Inbox.