Estoy usando la Microplaca LX9 de AVNET con el Spartan 6 PFPGA. Implemento SPI para leer desde un ADC (ADS7822). Estaba obteniendo valores muestreados incorrectos. Cuando revisé 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 un tiempo ALTO de 160 ns y un tiempo BAJO de 160 ns. De la simulación obtengo exactamente lo que espero. Pero usando un osciloscopio en la salida PMOD, obtengo una señal de reloj que no es demasiado satisfactoria. También de la hoja de datos de ADC (Pág. 10) el tiempo mínimo alto o bajo debe ser de 125 ns cuando se trabaja por encima de 4,74 Vcc. Vcc en mi caso es 5V.
El tiempo alto es de 132 ns a un nivel de 3 V (ALTO) y de 144 ns a un nivel de 0,8 V (BAJO). La duración del reloj converge a un nivel de 3,2 V. El tiempo esperado es de 160 ns y no encuentro ninguna razón para la mala salida del reloj.
El siguiente diagrama es una impresión de pantalla del osciloscopio.
Línea azul: CLK Línea roja: CS
La razón por la que marco los valores en 3 V y 0,8 V es según la hoja de datos de ADC (Pág. 4) el Vih es de 3 a 5,5 V y Vil es de -0,3 a 0,8 V.
Sugiera una posible razón de la mala salida de la FPGA y cómo mejoro la salida del reloj.
Su medida no es correcta.
El ciclo de trabajo se mide al 50% ( ). Así que mida de nuevo a 1,65 voltios, si es 3.3V.
Los tiempos altos y bajos 'reales':
- por encima del 90% de
es alto
- por debajo del 10 % de
es bajo
no importa. Si un circuito tiene requisitos especiales para el reloj o la señal de datos, define el tiempo de subida y bajada.
Ejemplo:
El tiempo de subida de menor a mayor (10 % a 90 %) debe ser inferior a 5 ns.
Entonces, el circuito puede estar seguro de que la señal sube o baja después de un tiempo predefinido y la señal puede ser muestreada por la lógica de entrada.
Andy alias
Avakar
dDepurar
dDepurar
Paebbels
dDepurar
Avakar
Avakar
dDepurar
Paebbels
dDepurar