Você pode ver os pinos de saída do usuário entrarem em um estado inesperado durante o estágio de inicialização no Intel® Arria® dispositivo 10.
Isso porque a lógica do usuário e os pinos de E/S do usuário são ativados gradualmente, não ao mesmo tempo durante a fase de inicialização.
Um exemplo é mostrado abaixo. ( Figura de exemplo )
- Um pino de entrada do usuário se conecta à porta de conjunto ativo baixo de um registro.
- Este pino de entrada do usuário é mantido em baixo desde o modo de alimentação até o modo do usuário.
- Uma porta de saída de dados do registro se conecta a um pino de saída do usuário.
Espera-se que o pino de saída do usuário mantenha alto, porque os pinos de E/S do usuário estão em tri-estado de entrada com pull-up fraco durante o estágio de configuração e o estado de inicialização e o registro deve ser definido como alto pela porta definida no modo do usuário.
Mas use a lógica e os pinos de E/S do usuário são ativados gradualmente durante a fase de inicialização. Quando o registro e o pino de saída do usuário são ativados mais rapidamente do que a porta de entrada e o estado inicial do registro é baixo, o pino de saída propaga-se baixo do registro até que a porta de entrada é ativada e a porta definida do registro fica baixa.
Quando um dispositivo externo monitora uma saída do dispositivo Intel Arria 10, um estado inesperado durante o estágio de inicialização pode afetar o comportamento do dispositivo externo.
Para resolver este problema, use uma das seguintes maneiras.
- Solução alternativa 1: faça com que o dispositivo externo ignore o estado do pino de saída do usuário até que o pino INIT_DONE alto (Figura de solução alternativa 1)
- Solução alternativa 2: mantenha o estado de entrada para os dispositivos externos adequadamente usando a lógica externa até que o pino INIT_DONE fique alto (Figura de solução alternativa 2)
- Solução alternativa 3: mantenha o estado de saída do dispositivo Arria 10 usando a lógica do usuário até que o sinal de INIT_DONE interno fique alto (Figura de solução alternativa 3)
Você pode usar o sinal INIT_DONE interno com a seguinte instação WYSIWYG.
<< Verilog >>
twentynm_controller u1 (.initdonecore() );
<< vhdl >>
componente twentynm_controller é
porta (initdonecore: fora STD_LOGIC);
componente final;
u1 : twentynm_controller
mapa de porta (initdonecore => );