Sincronização em FIFO

K

Kaustubh

Guest
Alguém pode me dizer por que a sincronização é necessária em um FIFO.
Se é para evitar que alguns metaestabilidade, por que não podemos usar WCLK-se a fazer a sincronização para wptr (escrever ponteiro) na leitura de domínio de relógio em vez do relógio de ler?

 
Você deveria fazer a pergunta de maneira que também é compreensível para aqueles que, como não são só agora projetar um FIFO.

 
geralmente o contador no FIFO precisa ser sincronizado.Use cinzento codeing para o contador.

 
Kaustubh escreveu:

Alguém pode me dizer por que a sincronização é necessária em um FIFO.

Se é para evitar que alguns metaestabilidade, por que não podemos usar WCLK-se a fazer a sincronização para wptr (escrever ponteiro) na leitura de domínio de relógio em vez do relógio de ler?
 
rjainv escreveu:Kaustubh escreveu:

Alguém pode me dizer por que a sincronização é necessária em um FIFO.

Se é para evitar que alguns metaestabilidade, por que não podemos usar WCLK-se a fazer a sincronização para wptr (escrever ponteiro) na leitura de domínio de relógio em vez do relógio de ler?
 
Existem dois tipos de FIFO FIFO síncrona e assíncrona FIFO.Synchronous FIFO de operar na mesma freqüência, isto é, ler e escrever utilizar um único / freqüência do relógio mesmo.Estes FIFOs podem ser usados como buffers de dados.

Asynchronous FIFO no otherhand operar com clocks diferentes para ler e gravar operações.Estes são utilizados como elementos de sincronização em um projeto multi-relógio.Nestes FIFO, já que o ler e gravar operações ocorrem em relógios diferentes, temos que sincronizar a ler e escrever ponteiros antes que possamos compará-los.

Ponteiro de comparação é usado para gerar o FIFO cheio, vazio, meio cheio e sinais de meio vazio_O ponteiro de escrever tem que ser sincronizado com o relógio de ler antes que possa ser comparado a gerar o sinal vazio eo ponteiro leitura tem que ser sincronizado com o relógio para escrever cheio de geração de sinal.

Outro problema é quando nos sincronizar e comparar os dois ponteiros, o ponteiro endereços podem mudar dando origem a COMPLETO incorreto e sinais VAZIO.Para evitar que isso fazemos uso do estilo Grey ler e escrever ponteiros.Isso garante que os endereços não são alteradas durante a operação de comparação.

 
Kaustubh escreveu:pode elaborar sobre isso?
imaginem que eu não estou usando qualquer SINCRONIZADORES.
Agora vou dar wptr (não sincronizadas) e rptr diretamente a uma lógica de combinação que compara-os e gera sinal rempty no domínio relógio ler.
rempty vai alto quando rptr = wptr.
Esta rempty é usado como uma entrada para um flop para determinar se rptr tem de ser incrementado ou não.
Agora, rempty continuarão a ser elevados, enquanto rptr = wptr.
os incrementos wptr momento, é rempty de-afirmou.
Eu não vejo porque a sincronização é necessária no processo acima.--|_|--|_|--|_|--|_|--|_|--|_|--|_|--| <WCLK --

1 --- 2 ---- 3 ---- 4 ---- 5 ---- 6 ---- 7 ---- 8 <wptr ------------|_______|---------|_______ <Rclk --No exemplo acima, suponha, wptr está sendo recolhido pelo rclk usando um de dois estágios synchronizer.clearly apenas os valores 1 e 5 são amostrados a rclk ...
o restante dos valores wptr são perdidas.
Então, basicamente você acaba substituindo se o Departamento do fifo era de 4.
Mas ainda usamos sincronizadores.
.
.
Como?- = Alta_ = Low
 

Welcome to EDABoard.com

Sponsor

Back
Top