Red de conocimiento informático - Material del sitio web - Diseño de código de simulación del controlador de muestreo AD0809 basado en FPGA

Diseño de código de simulación del controlador de muestreo AD0809 basado en FPGA

En el Experimento 1, el circuito de control de muestreo de ADC0809 se implementó utilizando una máquina de estados.

1. Propósito del experimento:

Utilizar una máquina de estado de aprendizaje para implementar el circuito de control de muestreo del convertidor A/D ADC0809.

2. Principio:

ADC0809 es un convertidor analógico-digital CMOS de 8 bits. Hay 8 interruptores analógicos en el chip, que pueden controlar una de las 8 señales analógicas para ingresar al convertidor. La resolución de ADC0809 es de 8 bits y el tiempo de conversión es de aproximadamente 100us. Tiene 8 interruptores multicanal con control de pestillo y las salidas están controladas por buffers de tres estados y alimentadas por un único suministro de 5 V.

Descripción de la señal de control principal: como se muestra en la Figura 1, START es la señal de inicio de conversión, que está activa en un nivel alto; ALE es la señal de bloqueo de la dirección de selección de canal de 3 bits (ADDC, ADDB, ADDA) señal. Cuando el valor analógico se envía a un terminal de entrada (como IN1 o IN2, etc.). ), seleccionada por la señal de dirección de 3 bits, que está bloqueada por ALE, es la señal de estado de la situación de conversión (similar al estado de AD574). Cuando la conversión comienza aproximadamente a 100 us, el EOC genera un pulso negativo, que indica el final de la conversión. Después del flanco ascendente de EOC, si la señal de habilitación de salida OE se establece en un nivel alto, se controla la apertura del búfer de tres estados y el resultado de datos convertidos de 8 bits se envía al bus de datos. En este punto, finaliza una conversión de ADC0809.

Figura 1

3. Contenido experimental:

1. Utilice MAX plusII para realizar la entrada de edición de texto y la prueba de simulación del Ejemplo 3-1; se le da forma de onda. Finalmente, los pines se bloquean y se prueban para verificar la función de control del circuito de ADC0809 en el Ejemplo 3-1 del hardware.

2. Según la Figura 2-12, se recomienda que el pin de bloqueo sea: START esté conectado a PIO34, OE esté conectado a PIO35, EOC esté conectado a PIO8, ALE esté conectado a PIO33 y el reloj de la máquina de estado CLK está conectado al reloj0 (PIN2, "65536Hz" opcional o superior), ADDA está conectado a Pio 32 (tanto ADDB como ADDC están conectados a GND), ADC.

3. Si el dispositivo de destino es EPF10K10, se recomienda seleccionar el diagrama de circuito experimental No. 5 (es decir, el reloj de conversión CLK de ADC0809 se ha preconectado a una frecuencia de 750 KHz). y use dos tapas de cortocircuito para conectar el diagrama de circuito seleccionado en la esquina inferior izquierda del sistema experimental. Los pines "extremo de conversión" y "habilitación A/D" están en cortocircuito. Después de descargar el archivo de destino, puede usar un destornillador para girar el potenciómetro en la esquina inferior izquierda del sistema experimental para proporcionar al ADC0809 una señal analógica cambiante para realizar pruebas. En este momento, el valor digital de la salida de muestreo del ADC0809 se mostrará en los tubos digitales 8 y 7 (16).

Ejemplo 3-1

Biblioteca IEEE

Utilice IEEE. STD_LOGIC_1164. all;

La entidad ADCINT es

Puerto (D

: en STD_LOGIC_VECTOR (7 hasta 0); salida de datos de conversión de 8 bits de -0809

p>

CLK, EOC: IN

STD_LOGIC- CLK es el reloj de operación de conmutación

LOCK1, ALE, START, OE, ADDA: OUT STD_ LOGIC;

Q

: OUT STD_LOGIC_VECTOR(7 hasta 0)

);

END ADCINT

El comportamiento arquitectónico de publicidad

es

El tipo de estado es (st0, st1,

st2, st3, st4, st5, st6 - define cada subtipo de estado).

Estado actual de la señal, siguiente estado: estado

: = st0

REGLO DE SEÑAL: STD _ LOGIC _ VECTOR(7 hasta 0

p>

Bloqueo de señal: señal de reloj de bloqueo de salida de datos convertida STD_LOGIC.

Inicio

ADDA lt= '1'; bloqueo 1 lt;

PRO: Se inicia el proceso (estado actual, EOC)

-Especifica el modo de transición de estado.

El estado actual del caso es

Cuando st0 = gt

ALE lt='0'; 0'; bloquear lt='0'; next_state lt= ST 1;

cuando st1 =

ALE lt='1'; = '0'; bloquear lt='0'; next_state lt= st2

cuando st2 = gt

ALE lt='0'; ='0'; bloquear lt='0'; next_state lt= st3

cuando st3 = gt

ALE lt='0'; ='0'; lock lt='0';

IF (EOC='1 ') luego next_state lt=

st3-prueba el flanco descendente de EOC

ELSE next _ state lt=

st4

Fin IF;

Cuando st4=

ALE lt='0 '; start lt='0'; OE lt='0'; lock lt='0';

IF (EOC='0 ') luego next_state lt= st4- Pruebe el flanco ascendente de EOC , =1 indica el final de la conversión.

ELSE next _ state lt=

st5-continuar esperando

Finalizar IF;

Cuando st5 = gt

ALE lt='0'; iniciar lt='0'; OE lt='1'; bloquear lt='0'; next_state lt= st6

Cuando st6=

ALE lt='0'; start lt='0'; OE lt='1'; lock lt='1'; next_state lt= st0

Cuando otros= gt

ALE lt='0'; inicio lt='0'; OE lt='0'; bloqueo lt='0'; next_state lt= st0

Fin caso; >Finalizar proceso PRO

Proceso (CLK)

Iniciar

Si (evento CLK y CLK='1') Entonces

p>

Estado actual lt= next_state: en el flanco ascendente del reloj, pasa al siguiente estado.

Finalizar IF;

Finalizar proceso;

-La señal current_state saca el valor del estado actual de este proceso y ingresa al proceso profesional.

PROCESO (BLOQUEO): en este proceso, en el flanco ascendente de LOCK, los datos convertidos se bloquean.

Iniciar

Si LOCK='1' y evento LOCK', REGL lt= D

Finalizar IF

Finalizar proceso; ;

Q lt= REGL

Comportamiento final;

4. Pensando en el problema:

Sin cambiar la función del original. código A continuación, el ejemplo 3-1 se expresa como una máquina de estado que genera directamente el código de estado.

Verbo (abreviatura de verbo) Informe del experimento:

Escriba un informe del experimento basado en los requisitos experimentales, el contenido experimental y las preguntas de pensamiento experimental anteriores.