Nenhum comentário

Evitando metaestabilidade na prática – VHDL

Evitando metaestabilidade

Projeto de sistemas digitais com domínios de clock distintos estão sujeitos a problemas de metaestabilidade. Uma solução prática para evitar este problema é a utilização de flip flops de sincronismo. A cadeia de flip flop de sincronismo é uma das técnicas utilizadas para transferir sinais entre circuitos de domínio de clocks distintos ou de domínios assíncronos para domínios síncronos.

Este artigo irá apresentar um projeto em VHDL de uma cadeia de flip flops de sincronismo para evitar a metaestabilidade em FPGAs.

Para compreender o que é a metaestabilidade e qual a solução prática para este fenômeno, recomenda-se a leitura do artigo Metaestabilidade.

Uma Situação do Cotidiano

Para exemplificar na prática este conceito, convido o leitor a imaginar a seguinte situação recorrente no cotidiano de projetistas de FPGAs: uma entrada digital acionada por um ser humano através de um push button será processada dentro de um bloco digital. Para este exemplo, o autor está considerando a existência de um circuito de debounce externo ao FPGA.

Este exemplo ilustra a situação na qual a metaestabilidade possa ocorrer. Temos um sinal de um domínio de clock assíncrono (ação do ser humano ao pressionar o push button) entrando em um FPGA com domínio de clock síncrono e bem estabelecido.

O flip flop que será utilizado para compor a cadeia de sincronismo é um flip flop do tipo D de transição positiva de clock, com reset em nível alto assíncrono e clock enable.

Flip Flop do tipo D em VHDL

Um flip flop D em VHDL pode ser descrito da seguinte forma:

Resultado do RTL Viewer da ferramenta Quartus II.

Flip Flop D
Figura 1 - Flip Flop D

Cadeia de Flip Flop de Sincronismo em VHDL

A entidade em VHDL a ser descrita corresponde à área demarcada em pontilhado na Figura 2.

Cadeia de Flip Flops de Sincronismo
Figura 2 - Cadeia de Flip Flops de Sincronismo

Descrição da entidade para evitar metaestabilidade com uma cadeia de dois flip flops de sincronismo em VHDL:

Resultado do RTL Viewer da ferramenta Quartus II.

RTL Viewer Cadeia de Flip Flops de Sincronismo
Figura 3 - RTL Viewer Cadeia de Flip Flops de Sincronismo

A entidade metaestabilidade encapsula o sinal de entrada do sistema input e disponibiliza o sinal output para ser utilizado no projeto do sistema digital.

Conclusões

Utilizar a cadeia de flip flops de sincronismo evita problemas de metaestabilidade em projetos de circuitos digitais. Recomenda-se utilizar este recurso quando tem-se uma migração de um sinal assíncrono para um domínio de clock síncrono, como por exemplo os pinos de entradas em um FPGA. A mesma recomendação é sugerida para migração de sinais entre domínio de clocks distintos dentro de um mesmo FPGA, desde que seja respeitada a regra: a frequência do domínio de clock de origem deve ser menor que a frequência do domínio de clock de destino.

Referências:

Créditos para a imagem destacada: http://www.fpga-faq.com/FAQ_Pages/0017_Tell_me_about_metastables.htm

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware » Sistemas Digitais » Evitando metaestabilidade na prática - VHDL
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries

Menu

WEBINAR
 
Sensores e soluções para aplicações em indústria inteligente

Data: 13/08 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link