Estoy utilizando el LX9 Microboard de AVNET con Spartan 6 PFPGA. Implemento SPI para leer desde un ADC (ADS7822). Estaba obteniendo valores muestreados incorrectos. Cuando cambié las señales con un osciloscopio, no fue como esperaba.
Reloj FPGA (sistema): 100 MHz Divisor: 32 Reloj SPI (salida): 3.125 MHz
Así que espero, un ciclo de 320 ns con 160 ns de tiempo ALTO y 160 ns de tiempo BAJO. De la simulación obtengo exactamente lo que espero. Pero al usar un osciloscopio en la salida PMOD, recibo una señal de reloj que no es demasiado satisfactoria. Además, desde la hoja de datos del ADC (pág. 10), el tiempo mínimo máximo o mínimo debe ser de 125 ns cuando se trabaja por encima de 4.74 Vcc. Vcc en mi caso es 5V.
El tiempo máximo es 132 ns en el nivel 3V (ALTO) y 144 ns en el nivel 0.8V (LOW). La duración del reloj converge a nivel de 3.2V. El tiempo esperado es de 160 ns y no encuentro ninguna razón para la salida de reloj deficiente.
Debajo del diagrama hay una impresión de pantalla del osciloscopio.
Línea azul: CLK Redline: CS
La razón por la que marqué los valores a 3V y 0.8V es según la hoja de datos de ADC (pág. 4) el Vih es de 3 a 5.5V y Vil es de -0.3 a 0.8V.
Por favor, sugiera una posible razón por la mala salida del FPGA y ¿cómo puedo mejorar la salida del reloj?