No se puede mantener el pin BAJO durante la configuración de FPGA

3

Me gustaría tener una señal de control que permanezca baja todo el tiempo y que se apague solo cuando se lo indique. Inicializar el pin en la entidad no parece establecer el valor en cero ( xc6slx25-3ftg256 ) :

Entity myEntity IS
PORT(
     -- clock and other IOs
     mySignal : OUT STD_LOGIC := '0'
);
END myEntity;

ARCHITECTURE structural OF myModule IS
BEGIN
-- ...
-- at some point I set mySignal to 'HI'
mySignal <= '1';
-- ...
END structural;

contenido .UCF

-- other nets
NET "mySignal" LOC = "H15";

Me doy cuenta de que durante la configuración, la estructura FPGA no está configurada, por lo que puede tener algunos valores aleatorios en sus salidas. Sin embargo, después de bajar el pin con 10k, aún permanece 'HI' durante el reinicio y la configuración. ¿Cómo hacer que se mantenga bajo?

    
pregunta Nazar

2 respuestas

4

Este tipo de cosas es específico del dispositivo. Debe consultar la documentación de su dispositivo y ver cuál es el comportamiento de los pines de E / S antes de la configuración. Es muy poco probable que sea un 'valor aleatorio', es mucho más probable que sea un pull-up / down definido

Como estoy seguro de que aprecias, nada de lo que pongas en tu configuración influirá en el dispositivo antes que la configuración se ha cargado ...

Actualización:

Ahora que ha proporcionado información sobre el dispositivo específico, lo señalaré en la página 45 de enlace , que tiene una larga descripción del comportamiento de los pines antes de que finalice la configuración. En resumen, tienen un pull-up incorporado, que debería poder deshabilitar atando una línea de control hacia abajo.

La corriente de activación del dispositivo se especifica en la hoja de datos, y es creíble que 10K no sean suficientes para superarla.

La documentación de Spartan 6 está ridículamente fragmentada en innumerables documentos separados. No pretendo que necesites leerlos todos de principio a fin, pero sí necesitas poder encontrar tu camino alrededor de ellos. Todos los enlaces de ese documento que ha vinculado. Creo que si estuviera empezando un diseño de Spartan-6 ahora mismo, descargaría todo el lote y los uniría en un gran PDF antes de comenzar.

    
respondido por el user1844
2

He tenido una experiencia de primera mano con el problema de que los pines Xilinx Spartan 6 se levantaron alto durante la configuración, ya sea en la lectura de encendido del chip de inicio SPI flash o en el momento de la programación. Poner resistencias desplegables para vencer las flexiones en la placa puede ser problemático porque en el modo de operación normal, el pin de salida FPGA tiene que generar una corriente extra del controlador para superar el menú desplegable y obtener la señal a un nivel alto.

Encontré que hay dos formas bastante decentes de lidiar con esto.

1) Cambie su diseño de FPGA para que emita la señal de control del chip con su estado inactivo (no activo) como un nivel alto en lugar de un nivel bajo. Luego almacene en búfer la señal del pin FPGA a través de un chip inversor para obtener la señal deseada de nivel de ralentí bajo.

2) Otro esquema, que es particularmente aplicable a aplicaciones donde las salidas FPGA van a circuitos que se apagan durante el período de tiempo del ciclo de configuración de FPGA, es colocar una parte del tipo de "interruptor rápido" en la ruta de la señal. El interruptor es una puerta de transmisión de modo digital que no se habilita a ON hasta que el FPGA emita la señal DONE al final de la configuración. Durante el tiempo de configuración, el interruptor está apagado y la parte del viento de la señal de control se puede bajar fácilmente con una resistencia de valor bastante alto. Esta resistencia de alto valor puede representar una carga adicional muy ligera en el pin de salida FPGA una vez que se alcanza el modo normal y la puerta de transmisión está activada.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas