Re: Catturare Pulse

E

EDA_hg81

Guest
Nel mio progetto, ho utilizzato due macchine statali.

In primo luogo è stato macchina che funziona sotto 4MHZ, che generano un impulso 500us.

In secondo luogo è stato macchina che funziona sotto 16MHZ, che ricevono questa 500us impulso.

Il mio codice di controllo il polso è la seguente:

Codice:

processo (refclk)

iniziare

if (rising_edge (refclk)) allora

fstart_reg1 <= cformat;

fstart_reg2 <= fstart_reg1;

if (fstart_reg1 ='1 'e fstart_reg2 ='0'), poi

... ... ... ... ... ... ... ... ... ... ....

end if;

end if;

fine processo;
 
Pugno di metastability tutti potrebbe essere il problema.Il ricevere filpflops potrebbe essere sempre bloccato in una meta stabile di Stato.Tuttavia, se questo è il tuo problema quindi dovrebbe funzionare solo a volte non tutto il tempo.

Per rimuovere metastability problemi (e li riduce a somthing come accade di 0.000001%) doulbe registrare la vostra logica prima di usarla come di seguito

Codice:

processo (refclk)

variabile temp: std_logic_vector (1 downto 0);

iniziare

if (rising_edge (refclk)) allora

fstart_reg1 <= temperatura (0);

fstart_reg2 <= fstart_reg1;

if (fstart_reg1 ='1 'e fstart_reg2 ='0'), poi

... ... ... ... ... ... ... ... ... ... ....

end if;

temp (temp'high downto 1): = cformat & temp (temp'high-1 downto 0);

end if;

fine processo;
 
Si prega di spiegare come questo è di andare a lavorare?

il mio ingresso è trasformato in due fasi, con flip-flop già ...

<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutro" border="0" />
 
Sì.Lei ha ragione.

Quello che voglio è quello di utilizzare il segnale
all'interno 4MHZ di dominio per attivare un modulo
all'interno 16MHZ dominio.

Io uso @ ltera segnale toccare per controllare i segnali, non è accaduto nulla.

Se ho usato stretta di mano come questo:

Codice:

getformat <='1 ';

if (ackformat ='1 '), poi

getformat <='0 ';

format_state <= idle;

end if;
 
Citazione:

Io uso @ ltera segnale toccare per controllare i segnali, non è accaduto nulla.
 
So che se il problema è il seguente:

Quando il segnale di riconoscere (ackformat)
all'interno 16MHZ dominio tenta di attivare
all'interno 4MHZ modulo, il polso di riconoscere il segnale (ackformat) è troppo limitato e non può essere catturata da 4MHZ dominio.

Grazie comunque.

 
Se non vi è alcun rapporto tra la fase di clock domini metastability poi è sempre un problema che deve essere affrontato_Oppure il vostro codice di tutte le improvvise misterioso smettere di lavorare fino a quando non si riprogrammarlo.

Un modo per trattare con metastability è quello di assicurarsi che tutti i segnali sono doppio flip folped prima di utilizzarli.Per quanto il segnale in codice che attraversano l'orologio di dominio viene utilizzato dopo essere andati anche se solo uno filpflop (questo non è recormended).

Ho un po 'di codice attahced ho creato molto tempo fa.E 'un bene per ottenere lenta evoluzione parralell dati (per quanto riguarda sia gli orologi) da un orologio ad un altro dominio e garantire che non vi sono.Potrebbe essere utile uno sguardo se la tua intenzione di fare più cose come questa.

Quello che il codice è:
-
Gli utenti metastable registri.
- Cercare l'aumento bordo per determinare quando i dati sono validi
- Passi indietro uno acknolge ricevere il segnale a lato (utile per sapere quando è possibile inviare il prossimo).
E 'molto semplice e molto lento.

Applogise per qualche ragione mi è stato richiesto di aggiungere. Pdf alla fine (solo eliminare. Pdf)

Se i dati si sta muovendo rapidamente utilizzare uno async fifo.

Solo cercando di essere utile, vorrei sapere se lei dissagree qui con nulla o può fare in un modo migliore.
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
Citazione:

So che se il problema è il seguente:Quando il segnale di riconoscere (ackformat) all'interno 16MHZ dominio tenta di attivare all'interno 4MHZ modulo, il polso di riconoscere il segnale (ackformat) è troppo limitato e non può essere catturata da 4MHZ dominio.
 
Ho fissato il mio errore.

Siamo spiacenti per fuorviante voi, ho pensato che fosse metastability problema, ma finalmente ho scoperto che è stato mano problema.

Grazie ancora e di avere un buon fine settimana.

 

Welcome to EDABoard.com

Sponsor

Back
Top