Diseño de código de simulación del controlador de muestreo AD0809 basado en FPGA
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.