El convertidor A/D 7823 de Analog Devices posee las siguientes señales de E/S: - /CONVST: orden de conversión (IN). - SCLK: reloj para la salida del resultado de la conversión (IN). - DOUT: salida de datos del resultado de la conversión (OUT). El tiempo de conversión aproximado es de 5 us. La secuencia de señales necesaria para realizar conversiones a la máxima velocidad posible es la siguiente: 1) En el momento de dar alimentación al convertidor, la señal /CONVST debe estar en nivel cero. 2) Una vez conectada la alimentación, el convertidor se despierta ("power-up") cuando se produce el primer flanco ascendente en la señal /CONVST. El tiempo del despertar es 1'5 us. 3) Una vez el convertidor ha despertado, se inicia una conversión cuando se produce un flanco descendente en la señal /CONVST. El tiempo mínimo que debe permanecer esta señal a nivel cero es de 20 ns. 4) Es importante poner la señal /CONVST a uno como máximo 3 us después de iniciar una conversión. Esto hará que al finalizar la conversión, el convertidor no entre en el modo de espera, del que habría que despertarlo de nuevo con un flanco ascendente en la señal /CONVST y el consiguiente tiempo de espera de 1'5 us. 5) El flanco ascendente de la señal /CONVST es el que inicializa el contador de bits de dato y permite capturar el resultado de la conversión desde el exterior, una vez finalizada ésta. 6) Una vez iniciada una conversión, ésta finaliza como máximo 5 us después del inicio de conversión. 7) Una vez transcurrido ese tiempo, es necesario suministrar al convertidor una señal de reloj SCLK, que debe estar como mínimo 25 ns en nivel cero y 25 ns en nivel uno en cada ciclo. Esta señal de reloj permite leer los 8 bits resultado de la conversión en la señal DOUT. 8) Cada bit del resultado de la conversión está disponible 10 ns después de cada flanco ascendente de los primeros 8 ciclos del reloj SCLK. Los posteriores ciclos de reloj de SCLK que se le envíen al convertidor son ignorados hasta que haya un nuevo flanco ascendente de /CONVST. 9) Se puede iniciar una nueva conversión (mediante un flanco descendente en /CONVST) antes de finalizar (o incluso de empezar) la lectura del resultado de la conversión anterior, pero no puede generarse de nuevo un flanco ascendente en /CONVST hasta finalizar una lectura de dato ya iniciada., pues ese flanco inicializa el contador de bits del convertidor. 10) La manera más sencilla de hacer todo esto parece que es mediante un S.S.S. que realice la siguiente secuencia de operaciones y que funcione con una señal de reloj de 50 MHz (20 ns de período): La señal /CONVST está invertida mediante las opciones del compilador de grafos de estado, por lo que aparece justo con el valor opuesto al que debe tomar en los estados S0 a S4. Esto facilita que se mantenga a uno en los estados S5 a S10, sin necesidad de explicitarlo en todos. S0.- Poner /CONVST a cero (necesario al conectar Vdd del convertidor) y SCLK a cero. Inicializar contador de bits recibidos y temporizador. S1.- Poner /CONVST a uno (despierta al convertidor). Esperar 1'5 us (tiempo de despertar del convertidor). S2. - ¿Orden de inicio de conversión?. S3. - Poner /CONVST a cero durante al menos 20 ns (inicia conversión). S4. - Poner /CONVST a uno (inicializa el contador de bits del CAD). Esperar 5 us (tiempo de conversión). S5. - Inicializa contador de bits recibidos y temporizador. Es necesario poner SCLK a uno durante al menos 25 ns, por lo que: S6. - Pone SCLK a uno. S7. - Pone SCLK a uno. Captura el bit presente en DOUT y lo carga en el registro de desplazamiento e incrementa el contador de bits recibidos. Es necesario poner SCLK a cero durante al menos 25 ns, por lo que: S8. - Pone SCLK a cero. S9. - Pone SCLK a cero. ¿8 bits?. No --> repetir (ir a S6). Sí --> finalizar (ir a S10). S10. - Indica fin de conversión. Inicializa contador de bits leídos. Vuelve a S2.