Avanxe 7 – Aplicación 4: DAC como generador de funciones

Aplicación demostrativa donde se explica cómo generar funciones utilizando el DAC de Avanxe 7.

 

El proyecto consiste en generar diferentes funciones mediante uno de los canales del DAC. El FPGA utiliza memoria ROM en donde se almacenan las muestras de cada una de las funciones y mediante 3 switches se selecciona la función.

Se generan 5 funciones diferentes:

  • Senoidal
  • Triangular
  • Diente de sierra
  • Cuadrada
  • Random (Función generada de la suma de un Seno y un Coseno con diferente frecuencia y amplitud)

El siguiente esquema muestra de manera general la construcción del proyecto en VHDL.

ROM

Almacena las muestras de las 5 funciones, cada función se genera a partir de 160 muestras. El DAC opera a una frecuencia de 16.6MHz mediante interfaz SPI, el protocolo serial manda 15 bits por lo que cada muestra se manda cada 1.08 microsegundos.

Ejemplo de muestras almacenadas en la ROM:

TYPE ROM IS ARRAY (0 TO (160*5)-1) OF STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL MEM : ROM := (
X"07FF",
X"084F",
X"08A0",
X"08F0",
X"093F",
X"098E",
X"09DD",
X"0A2B",
X"0A78",
X"0AC4",
X"0B0E",
X"0B58",
X"0BA0",
X"0BE7",
X"0C2D",
...
...
...

 

Maquina de estados

Es el proceso principal del proyecto, se encarga de controlar la dirección de la memora ROM mediante el puerto “a”. Se encarga también de monitorear a la librería LIB_DAC_AVANXE7_REVA verificando cuándo ya se terminó de enviar un dato al DAC.

LIB_DAC_AVANXE7_REVA

Librería desarrollada por Intesc y se encarga de controlar al DAC y generar la interfaz SPI.

Especificaciones del DAC para el proyecto:

  • Voltaje de salida de 0 a 2.04 V.
  • Resolución de 12 bits.
  • Protocolo serial SPI a 16.6 MHz
  • Cada muestra se manda en 1.08 us

Crea un proyecto nuevo y añade los archivos .vhd y .xdc

Menú