IT201800003008A1 - Un circuito di conversione da binario a gray, relativi memoria fifo, circuito integrato e procedimento - Google Patents
Un circuito di conversione da binario a gray, relativi memoria fifo, circuito integrato e procedimento Download PDFInfo
- Publication number
- IT201800003008A1 IT201800003008A1 IT102018000003008A IT201800003008A IT201800003008A1 IT 201800003008 A1 IT201800003008 A1 IT 201800003008A1 IT 102018000003008 A IT102018000003008 A IT 102018000003008A IT 201800003008 A IT201800003008 A IT 201800003008A IT 201800003008 A1 IT201800003008 A1 IT 201800003008A1
- Authority
- IT
- Italy
- Prior art keywords
- binary
- signal
- gray
- circuit
- value
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims description 72
- 238000006243 chemical reaction Methods 0.000 title claims description 43
- 238000000034 method Methods 0.000 title claims description 6
- 101150037339 Cavin1 gene Proteins 0.000 claims description 46
- 230000006870 function Effects 0.000 claims description 7
- 238000007781 pre-processing Methods 0.000 claims description 7
- 230000003111 delayed effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000010420 art technique Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
- G06F5/14—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
- G06F13/4243—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
- G11C7/222—Clock generating, synchronizing or distributing circuits within memory device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/16—Conversion to or from unit-distance codes, e.g. Gray code, reflected binary code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/10—Indexing scheme relating to groups G06F5/10 - G06F5/14
- G06F2205/102—Avoiding metastability, i.e. preventing hazards, e.g. by using Gray code counters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/10—Indexing scheme relating to groups G06F5/10 - G06F5/14
- G06F2205/106—Details of pointers, i.e. structure of the address generators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1018—Serial bit line access mode, e.g. using bit line address shift registers, bit line address counters, bit line burst counters
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Logic Circuits (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
- Communication Control (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Error Detection And Correction (AREA)
Description
DESCRIZIONE dell’invenzione industriale dal titolo:
“Un circuito di conversione da binario a Gray, relativi memoria FIFO, circuito integrato e procedimento”
TESTO DELLA DESCRIZIONE
Campo tecnico
La descrizione è relativa alle tecniche per generare segnali codificati Gray da segnali codificati binari. Per esempio, tali segnali codificati Gray possono essere usati per sincronizzare dati attraverso domini di clock multipli.
Una o più forme di attuazione possono essere applicate a circuiti di sincronizzazione che comprendono memorie FIFO con capacità di scrittura a burst.
Sfondo tecnologico
Un possibile approccio per far favorire uno scambio di dati in un sistema tra componenti che sono temporizzati con segnali di clock a frequenze differenti è di includere una memoria First-In First-Out (FIFO) come descritto, per es., nel documento EP 2362318 A1.
A una tale memoria FIFO si può accedere tramite blocchi logici separati per le operazioni di lettura/scrittura, che possono appartenere a domini di clock separati. Specificamente, il funzionamento delle memorie FIFO può comportare di scrivervi in risposta a un primo dominio di clock e di leggervi in risposta a un secondo dominio di clock.
Il circuito di memoria FIFO può comprendere un’area di memoria, per es., un banco di registri implementato con una pluralità di registri. Inoltre, una memoria FIFO comprende un’interfaccia di scrittura configurata per generare un puntatore di scrittura che indica una locazione di memoria/indirizzo nell’area di memoria per un’operazione di scrittura e un’interfaccia di lettura configurata per generare un puntatore di lettura che indica una locazione di memoria/indirizzo nell’area di memoria per un’operazione di lettura. La memoria FIFO può così essere accoppiata a un primo circuito digitale configurato per fornire dati all’interfaccia di scrittura per memorizzare i dati nell’area di memoria e un secondo circuito digitale configurato per accedere all’interfaccia di lettura per leggere dati dall’area di memoria.
Generalmente, il numero di locazioni di memoria è limitato. Di conseguenza, l’interfaccia di scrittura dovrebbe essere atta a determinare che l’area di memoria non è piena e l’interfaccia di lettura dovrebbe essere atta a determinare che l’area di memoria non è vuota. A questo scopo, sono spesso generati segnali di controllo confrontando i puntatori di scrittura e di lettura.
A questo riguardo, la coerenza dei segnali può essere facilitata usando un circuito di sincronizzazione, associato alla FIFO, configurato per fornire una sincronizzazione tra i puntatori di scrittura e di lettura. Inoltre, spesso i puntatori di scrittura e di lettura non vengono scambiati come valori binari, ma i puntatori di scrittura e di lettura vengono convertiti da una codifica binaria a una codifica Gray. I codici Gray sono ben noti nella tecnica. Per esempio, si può fare riferimento al documento US 2008/0013386 A1 per la costruzione di codici Gray aventi un dato numero di bit, che è incorporato qui tramite citazione a questo scopo.
Di conseguenza, tale sincronizzazione comporta, per es., un’operazione di codifica Gray del puntatore di scrittura codificato binario nel primo dominio di clock (segnale di clock di scrittura) e un’operazione di decodifica Gray nel secondo dominio di clock (segnale di clock di lettura) al fine di ottenere di nuovo il puntatore di scrittura codificato binario. Un’operazione simile può anche essere effettuata per il puntatore di lettura.
Specificamente, una tale codifica Gray assicura che cambi soltanto un singolo bit mentre i puntatori di scrittura e di lettura vengonoincrementati. In effetti, in una memoria FIFO tradizionale, è scritta o letta una singola locazione di memoria per ciclo di clock, per es., in risposta a un segnale di abilitazione di scrittura o di lettura fornito rispettivamente dal primo o dal secondo circuito digitale. Per esempio, in questo schema, il puntatore di scrittura può essere incrementato soltanto di uno alla volta a ciascun ciclo di clock di scrittura, avendo come risultato con ciò un puntatore di scrittura con codifica Gray che cambia soltanto di un singolo bit, cioè la distanza di Hamming tra due puntatori di scrittura consecutivi è sempre al massimo uno, riducendo con ciò possibili falsi segnali (“glitch”) durante la trasmissione.
Tuttavia, le interfacce di scrittura e/o di lettura possono supportare anche una modalità burst, nella quale una pluralità di locazioni di memoria possono essere scritte o lette in un singolo ciclo di clock, incrementando con ciò il puntatore di scrittura o di lettura per un numero di locazioni di memoria che è potenzialmente maggiore di uno.
Tuttavia, un tale salto del puntatore di scrittura codificato binario può avere come risultato errori durante la sincronizzazione, nella misura in cui un tale incremento avrà come risultato una variazione del puntatore di scrittura codificato Gray rispetto a un suo valore precedente di una distanza di Hamming maggiore di uno. Problemi simili esistono anche per il puntatore di lettura.
Scopo e sintesi
In considerazione di quanto precede, una o più forme di attuazione della presente descrizione forniscono soluzioni per generare una sequenza di valori codificati Gray in funzione di un segnale binario, in cui il valore finale corrisponde al valore codificato Gray del segnale binario, mentre la distanza di Hamming tra i valori intermedi consecutivi dei valori codificati Gray mantiene una distanza di Hamming unitaria, cioè si verifica al massimo un cambiamento di un singolo bit tra due valori intermedi consecutivi.
Per esempio, una tale sequenza di valori codificati Gray può essere usata di nuovo nella sincronizzazione dei puntatori di scrittura e/o di lettura di una memoria FIFO.
In una o più forme di attuazione tale scopo può essere raggiunto per mezzo di un circuito avente le caratteristiche esposte nelle rivendicazioni che seguono. Una o più forme di attuazione possono essere relative a un corrispondente dispositivo comprendente un tale circuito, per es. una memoria FIFO, e a un relativo procedimento.
Le rivendicazioni sono parte integrante dell’insegnamento tecnico qui fornito con riferimento alle forme di attuazione.
Come menzionato in precedenza, varie forme di attuazione della presente descrizione sono relative a un circuito di conversione da Binario a Gray.
In varie forme di attuazione, il circuito di conversione da Binario a Gray comprende un ingresso per ricevere un primo segnale binario.
In varie forme di attuazione, il circuito di conversione da Binario a Gray comprende anche un registro che memorizza un secondo segnale binario. Un circuito di predizione riceve in ingresso il secondo segnale binario e fornisce in uscita un insieme di valori binari candidati, in cui il rispettivo equivalente Gray di ciascun valore binario candidato ha una distanza di Hamming di uno dall’equivalente Gray del secondo segnale binario. Specificamente, in varie forme di attuazione, il circuito di predizione è configurato per fornire un numero di valori binari candidati corrispondenti al numero dei bit del primo segnale binario.
In varie forme di attuazione, un arbitro seleziona uno dei valori binari candidati in funzione del primo segnale binario e del secondo segnale binario, in cui il valore binario candidato selezionato è fornito di nuovo al registro. Per esempio, l’arbitro può avere associato un circuito di preelaborazione configurato per selezionare i valori binari candidati dell’insieme di valori binari candidati, che sono tra il valore del secondo segnale binario, che rappresenta un limite inferiore, e il valore del primo segnale binario, che rappresenta un limite superiore o un valore target. Per esempio, il circuito di preelaborazione può comprendere per ciascun valore binario candidato un rispettivo circuito di Fuori-Intervallo (“Out-of-Range”), ciascuno configurato per generare un rispettivo segnale di mascheratura (“mask”) che indica se il rispettivo valore binario candidato è tra/non è tra il limite inferiore e quello superiore. L’arbitro può così scartare i valori binari candidati che hanno un rispettivo segnale di mask che indica che il rispettivo valore binario candidato non è tra il limite inferiore e quello superiore. In aggiunta, l’arbitro può anche scartare i valori binari candidati che hanno una distanza dal secondo segnale binario che è maggiore di una data distanza massima. In varie forme di attuazione, l’arbitro può così selezionare un valore binario candidato tra i valori binari candidati rimanenti. Per esempio, l’arbitro può selezionare il valore binario candidato che ha il valore più grande.
In varie forme di attuazione, il valore binario candidato selezionato è fornito anche a un blocco codificatore configurato per fornire in uscita l’equivalente codificato Gray del valore binario candidato selezionato.
In varie forme di attuazione, il circuito di predizione è implementato con un circuito logico combinatorio. Per esempio, come sarà descritto in seguito, il circuito di predizione può comprendere per ciascun valore binario candidato un rispettivo sotto-circuito. Specificamente, in varie forme di attuazione, i sotto-circuiti hanno associato un circuito configurato per fornire in uscita un primo segnale corrispondente al secondo segnale binario che ha i bit invertiti. In varie forme di attuazione, ciascun sottocircuito comprende un circuito configurato per generare un secondo segnale selezionando un dato numero di Bit Più Significativi (“Most Significant Bit”) del secondo segnale binario, un circuito configurato per generare un terzo segnale selezionando un dato numero di Bit Meno Significativi (“Least Significant Bit”) del primo segnale, e un circuito configurato per generare il rispettivo valore binario candidato combinando il secondo segnale e il terzo segnale.
Specificamente, il numero di Bit Più Significativi e di Bit Meno Significativi dipende dall’indice dei valori binari candidati da fornire al rispettivo sotto-circuito.
Per esempio, un tale circuito di conversione da Binario a Gray può essere usato in una memoria FIFO. Per esempio, una memoria FIFO comprende di solito un’area di memoria che comprende una pluralità di locazioni di memoria e un circuito di controllo. Specificamente, il circuito di controllo comprende un’interfaccia di scrittura configurata per generare un puntatore di scrittura binario che indica una locazione di memoria per scrivere i dati nell’area di memoria e un’interfaccia di lettura configurata per generare un puntatore di lettura binario che indica una locazione di memoria per leggere dati dall’area di memoria.
Al fine di determinare lo stato di pieno e/o di vuoto della memoria FIFO, il circuito di controllo comprende anche un circuito di sincronizzazione per scambiare il puntatore di scrittura binario e/o il puntatore di lettura binario tra l’interfaccia di scrittura e l’interfaccia di lettura. Specificamente, di solito un tale circuito di sincronizzazione è configurato per scambiare segnali codificati Gray. Di conseguenza, in varie forme di attuazione, la memoria FIFO comprende almeno un circuito di conversione da Binario a Gray come descritto in precedenza, in cui il circuito di conversione da Binario a Gray riceve in ingresso il puntatore di scrittura binario o il puntatore di lettura binario, in cui l’equivalente codificato Gray dei valori binari candidati selezionati all’uscita del circuito di conversione da Binario a Gray è fornito al circuito di sincronizzazione.
Breve descrizione delle varie viste dei disegni
Una o più forme di attuazione saranno ora descritte, a puro titolo di esempio non limitativo, con riferimento alle Figure annesse, nelle quali:
- la Figura 1 rappresenta un esempio di un’architettura di una memoria FIFO;
- la Figura 2 rappresenta un esempio di un circuito di controllo atto a generare un puntatore di scrittura o di lettura nella memoria FIFO della Figura 1;
- la Figura 3 rappresenta un esempio di un circuito per generare un puntatore di scrittura o di lettura codificato Gray;
- la Figura 4 rappresenta un diagramma di temporizzazione del funzionamento del circuito della Figura 3;
- la Figura 5 rappresenta un ulteriore circuito per generare un puntatore di scrittura o di lettura codificato Gray;
- la Figura 6 rappresenta un diagramma di temporizzazione del funzionamento del circuito della Figura 5;
- la Figura 7 rappresenta una forma di attuazione di un circuito per generare un puntatore di scrittura o di lettura codificato Gray; e
- le Figure 8, 9, 10 e 11 rappresentano dettagli del funzionamento del circuito della Figura 7.
Descrizione dettagliata di esempi di forme di attuazione
Nella descrizione che segue, sono illustrati vari dettagli specifici, allo scopo di fornire una comprensione approfondita di esempi di varie forme di attuazione. Le forme di attuazione possono essere ottenute senza uno o più dei dettagli specifici o con altri procedimenti, componenti, materiali, ecc. In altri casi, operazioni, materiali o strutture note non sono illustrate o descritte in dettaglio in modo da evitare di rendere poco chiari vari aspetti delle forme di attuazione.
Un riferimento a “una forma di attuazione” nel quadro della presente descrizione intende indicare che una particolare configurazione, struttura, o caratteristica descritta con riferimento alla forma di attuazione è compresa in almeno una forma di attuazione. Così, le frasi come “in una forma di attuazione” che possono essere presenti in uno o più punti della presente descrizione non fanno necessariamente riferimento tutte alla stessa forma di attuazione. Inoltre, particolari conformazioni, strutture o caratteristiche possono essere combinate in un modo adeguato qualsiasi in una o più forme di attuazione.
I riferimenti usati qui sono forniti semplicemente per convenienza e quindi non definiscono l’ambito di protezione o l’ambito delle forme di attuazione.
Come descritto in precedenza, in un sistema, come un System on Chip (SoC), che comprende domini di clock multipli, la metastabilità dei segnali è un problema generale presente ogni volta che sono attraversati domini di clock, per es., quando sono trasferiti dati da un primo circuito digitale, che funziona con un primo clock, a un secondo circuito digitale, che funziona con un secondo clock, differente dal primo clock. Differenti segnali di clock possono avere frequenze differenti, per es., come in un sistema asincrono oppure possono avere la stessa frequenza ma una differenza di fase relativa non-correlata, per es., come in un sistema mesocrono.
Per esempio, ciò si applica ai puntatori di scrittura e di lettura descritti in precedenza. Per trasferire un segnale da un primo dominio di clock a un altro, una tecnica allo stato dell’arte comprende di far passare il segnale attraverso una catena di sincronizzazione, per es. una cascata di flip-flop di tipo D controllati attraverso il secondo segnale di clock. La metastabilità si verifica naturalmente quando il segnale di ingresso della catena di sincronizzazione cambia durante il tempo di impostazione/mantenimento (“setup/hold”) dei flip-flop.
Un approccio convenzionale per ridurre la possibilità di errori dovuti alla metastabilità è la codifica Gray. Un codice Gray può evitare che stati transitori invalidi (“glitch”) siano catturati quando un segnale attraversa i domini di clock. Ciascun bit del segnale è campionato in modo non deterministico per questo trasferimento di dominio di clock. Così, per ciascun bit, è propagato il valore vecchio o il valore nuovo. Perciò, se più di un bit nel segnale multi-bit sta cambiando nel punto di campionamento, può essere propagato un valore binario di “glitch” (né nuovo né vecchio). Garantendo che possa cambiare soltanto un bit, cioè è garantita una distanza di Hamming tra valori di segnale successivi, un codice Gray permette che i soli valori campionati possibili siano i valori multi-bit nuovi o vecchi. La codifica Gray insieme a una sincronizzazione a forza bruta (“brute force synchronization”) aiuta così a ridurre o perfino a eliminare qualsiasi glitch, perché l’uscita di qualsiasi registro rimane stabile.
Il problema di sincronizzazione precedente sarà ora descritto di nuovo nell’esempio di una memoria FIFO.
Specificamente, la Figura 1 rappresenta un esempio di un’architettura di una memoria FIFO 50 accoppiata a un primo circuito digitale (blocco logico di scrittura) 10 che funziona con un primo segnale di clock Clock1 e a un secondo circuito digitale (blocco logico di lettura) 40 che funziona con un secondo segnale di clock Clock2.
Specificamente, la memoria FIFO 50 comprende un‘area di memoria 30 che comprende una pluralità di locazioni di memoria, per es. implementate con registri, e un circuito di controllo 20 configurato per gestire un puntatore di scrittura e un puntatore di lettura per un accesso rispettivamente in scrittura e in lettura alle locazioni di memoria dell’area di memoria 30.
Per esempio, il blocco logico di scrittura 10 può essere atto a scrivere dati in una o più locazioni di memoria selezionate attualmente dal circuito di controllo 20 tramite il puntatore di scrittura alla frequenza del segnale di clock Clock1, e il blocco logico di lettura 40 può leggere dati da una o più locazioni di memoria selezionate attualmente dal circuito di controllo 20 attraverso il puntatore di lettura alla frequenza del segnale di clock Clock2.
In varie forme di attuazione, il circuito di controllo 20 può essere configurato per usare una codifica binaria per il puntatore di scrittura e il puntatore di lettura usati per selezionare le rispettive locazioni di memoria di scrittura e di lettura, per es. la sequenza binaria “100” corrisponde al numero decimale 4.
In varie forme di attuazione, il circuito di controllo 20 può essere configurato per generare un segnale di pieno e un segnale di vuoto in funzione dei puntatori di scrittura e di lettura.
A questo scopo, il circuito di controllo 20 può essere configurato per sincronizzare il puntatore di scrittura e/o di lettura attraverso un Sincronizzatore a Forza Bruta (“Brute Force Synchronizer”), per es. una catena di registri.
La coerenza dei segnali mentre attraversano domini di clock può essere favorita per costruzione attraverso il circuito di controllo 20 associato alla FIFO, configurato per fornire una sincronizzazione dei puntatori codificati Gray. La codifica Gray assicura che cambi soltanto un singolo bit quando il bus di indirizzi conta in su o in giù. Così, il puntatore di scrittura può essere incrementato soltanto di uno alla volta a ciascun ciclo di clock di scrittura, altrimenti il vantaggio dell’uso della codifica Gray può diventare irrilevante.
Per esempio, la Figura 2 rappresenta una possibile forma di attuazione del circuito di controllo 20.
Nella forma di attuazione considerata, il circuito di controllo 20 comprende un primo sotto-circuito 20a che funziona alla frequenza di clock Clock1 fornita dal blocco logico di scrittura 10 e un secondo sotto-circuito 20b che funziona alla seconda frequenza di clock Clock2 fornita dal blocco logico di lettura 40.
Come menzionato in precedenza, il circuito di controllo 20 è configurato per generare un puntatore di scrittura e un puntatore di lettura.
Nella forma di attuazione considerata, il circuito di controllo 20 comprende un accumulatore che comprende un sommatore binario 202 e un registro 201. Specificamente, il sommatore 202 riceve in ingresso il contenuto del registro 201 e un segnale 200. Di conseguenza, il sommatore 202 fornisce in uscita un segnale che corrisponde alla somma del contenuto del registro 201 e del segnale 200, che è scritto di nuovo nel registro 201. Nella forma di attuazione considerata, il segnale all’uscita del sommatore 202 può così corrispondere al puntatore di scrittura con codifica binaria WPB.
Per esempio, quando è usata una memoria FIFOconvenzionale, il segnale 200 può corrispondere a un segnale di abilitazione di scrittura, per cui il puntatore di scrittura WPB è incrementato di uno quando il segnale di abilitazione di scrittura è posto alto e il puntatore di scrittura WPB rimane costante quando il segnale di abilitazione di scrittura è posto basso. Specificamente, il sommatore 202 e il registro 201 fanno parte del sottocircuito 20a che funziona con il segnale di clock Clock1.
Per contro, quando è implementata una memoria FIFO che supporta una modalità di scrittura a burst, il segnale 200 può corrispondere al numero di locazioni di memoria da scrivere in un singolo ciclo di clock.
Similmente, il sotto-circuito 20b può comprendere un accumulatore implementato con un sommatore binario 222 e un registro 221, in cui il sommatore fornisce in uscita un puntatore di lettura con codifica binaria RPB che corrisponde alla somma del contenuto del registro 221 e di un segnale 220, che può corrispondere a un segnale di abilitazione di lettura o può indicare un numero di locazioni di memoria da leggere. Specificamente, il sommatore 222 e il registro 221 fanno parte del sotto-circuito 20b che funziona con il segnale di clock Clock2.
In varie forme di attuazione, il circuito di controllo 20 può anche comprendere un primo circuito 232 configurato per determinare un segnale di FIFO piena 234 e/o un secondo circuito 212 configurato per determinare un segnale di FIFO vuota 214.
In generale, il circuito 232 è configurato per generare il segnale di FIFO piena 234 confrontando il puntatore di scrittura con il puntatore di lettura. Similmente, il circuito 212 è configurato per generare il segnale di FIFO vuota 214 confrontando il puntatore di scrittura con il puntatore di lettura.
Di conseguenza, nella forma di attuazione considerata, il circuito di controllo 20 comprende una circuiteria per fare passare il puntatore di scrittura al dominio di clock 20b e/o una circuiteria per fare passare il puntatore di lettura al dominio di clock 20a.
Specificamente, in varie forme di attuazione, questa circuiteria fa passare una versione codificata Gray rispettivamente del puntatore di scrittura e di lettura.
Specificamente, nella forma di attuazione considerata, il puntatore di scrittura binario WPB all’uscita del sommatore 202 è fornito a un circuito di conversione da Binario a Gray 204, che fornisce così in uscita un puntatore di scrittura codificato Gray WPG.
Nella forma di attuazione considerata, l’uscita del circuito di conversione da Binario a Gray 204 (cioè il segnale WPG) è fornita a un circuito di sincronizzazione 211.
Per esempio, in una o più forme di attuazione, il circuito di sincronizzazione 211 comprende una pluralità di registri 206, 208 e 210. In una o più forme di attuazione, almeno un registro (per es., il registro 206) può essere pilotato dal segnale di clock Clock1 e almeno un registro (per es., i registri 208 e 210) può essere pilotato dal segnale di clock Clock2. I registri del circuito di sincronizzazione 211 possono essere chiamati collettivamente sincronizzatore a forza bruta (BFS, “Brute Force Synchronizer”). L’ultimo registro 210 del circuito di sincronizzazione 210 fornisce così in uscita una versione ritardata del puntatore di scrittura WP’G codificato Gray.
Similmente, il puntatore di lettura binario RPB all’uscita del sommatore 222 può essere fornito a un circuito di conversione da Binario a Gray 224, che fornisce così in uscita un puntatore di lettura codificato Gray RPG. Il puntatore di lettura codificato Gray RPG può essere fornito a un circuito di sincronizzazione 231, che fornisce così in uscita una versione ritardata del puntatore di lettura RP’G codificato Gray. Anche in questo caso, il circuito di sincronizzazione 231 può essere implementato con una pluralità di registri 226, 228 e 230, in cui almeno un registro (per es., il registro 226) può essere pilotato dal segnale di clock Clock2 e almeno un registro (per es., i registri 228 e 230) può essere pilotato dal segnale di clock Clock1.
Di conseguenza, in varie forme di attuazione il primo circuito 232 può determinare il segnale di FIFO piena 234, per es.:
- convertendo a ritroso il puntatore di lettura codificato Gray ritardato RP’G in codifica binaria e confrontando il rispettivo puntatore binario con il puntatore di scrittura codificato binario WPB; o
- confrontando il puntatore di lettura codificato Gray ritardato RP’G con il puntatore di scrittura codificato Gray WPG.
Similmente, il secondo circuito 212 può determinare il segnale di FIFO vuota 214, per es.:
- convertendo a ritroso il puntatore di scrittura codificato Gray ritardato WP’G in una codifica binaria e confrontando il rispettivo puntatore binario con il puntatore di lettura codificato binario RPB; o
- confrontando il puntatore di scrittura codificato Gray ritardato WP’G con il puntatore di lettura codificato Gray RPG.
Così, generalmente, il circuito 212 e/o il circuito 232 possono comprendere un decodificatore da Gray a Binario. Specificamente, nella forma di attuazione considerata, il circuito di controllo 20 controlla l’incremento del puntatore di scrittura mediante un sotto-circuito 205 che comprende un nodo di ingresso accoppiato al segnale 200, il registro 201, il sommatore 202 e il circuito di conversione da Binario a Gray 204. Similmente, il circuito di controllo 20 controlla l’incremento del puntatore di lettura all’interno di un sotto-circuito 225, che comprende un nodo di ingresso accoppiato al segnale 220, il registro 221, il sommatore 222 e il circuito di conversione da Binario a Gray 224. In varie forme di attuazione, il sotto-circuito 205 e il sotto-circuito 225 possono avere la stessa struttura circuitale.
A questo riguardo, il documento US 9,311,975 B1 fornisce una soluzione per implementare i sotto-circuiti 205 e/o 225. Specificamente, questo documento descrive una soluzione nella quale la memoria FIFO 50 può essere configurata per consentire un salto non consecutivo nel puntatore di scrittura/lettura a una nuova locazione di memoria. Per esempio, il puntatore di scrittura può essere il risultato di un burst di dati dal blocco logico di scrittura 10. Sostanzialmente, questo documento propone una memoria FIFO 50 configurata per determinare una pluralità di candidati di salto di indirizzo (che possono essere chiamati in alternativa candidati o candidati di salto) per il puntatore di scrittura e/o di lettura da una posizione di una locazione di memoria corrente. In seguito, la memoria FIFO 50 può essere configurata per selezionare un candidato di salto di indirizzo tra la loro pluralità.
Una forma di attuazione di un sotto-circuito 205 del circuito di controllo 20 senza una progettazione specifica per burst di dati è rappresentata nella Figura 3 per illustrare il concetto che l’uso di una codifica Gray con un burst di dati abilitato non garantisce che la distanza tra due puntatori codificati Gray (cicli di clock) consecutivi mantenga una distanza di Hamming unitaria dal suo valore precedente.
In questo esempio di forma di attuazione, il sommatore binario 201 consiste di un sommatore accoppiato al segnale 200 e al registro 201. Specificamente, il sommatore 202 riceve in ingresso il contenuto del registro 201 e un segnale 200. Di conseguenza, il sommatore 202 fornisce in uscita un segnale che corrisponde alla somma del contenuto del registro e del segnale 200, che è scritto di nuovo nel registro 201. Nella forma di attuazione considerata, il segnale all’uscita del sommatore 202 può così corrispondere al puntatore di scrittura con codifica binaria WPB. Lo stesso può anche applicarsi al puntatore di lettura con codifica binaria RPB. Il valore risultante dalla somma di questi due valori sarà indicato così genericamente come segnale/puntatore target PTR_target in seguito.
Nella forma di attuazione considerata, il puntatore target PTR_target è quindi fornito al circuito di conversione da Binario a Gray 204. Nella forma di attuazione considerata, il segnale all’uscita dell’uscita del circuito di conversione da Binario a Gray 204 corrisponde così all’equivalente codificato Gray del valore di ingresso PTR_target e sarà indicato in seguito come segnale PTR_gray.
La Figura 4 rappresenta un diagramma temporale del contenuto dei segnali summenzionati in un esempio di una forma di attuazione secondo la Figura 3.
Per esempio, al ciclo di clock indicato come T0, il valore del segnale PTR_target è PTR_target(T0)=(4)10, dove ()10 indica la rappresentazione decimale del valore del puntatore. Per esempio, in una codifica binaria, il valore decimale quattro corrisponde alla sequenza di bit “0100”. Il valore del segnale PTR_gray è l’equivalente codificato Gray del valore del segnale PTR_target durante il ciclo di clock T0, per es. usando una sequenza di bit che comprende quattro bit, il segnale PTR_gray può essere “0110”=(4)10.
Nell’esempio considerato, durante lo stesso ciclo di clock il valore WE del segnale 200 è, per es., WE(T0)=(9)10. Così, nel ciclo di clock successivo, indicato come T1, il valore PTR_target memorizzato nel registro 401 cambia ed è aggiornato con il valore della somma dei segnali PTR_target e WE in T0, per es., PTR_target(T1)=PTR_target(T0)+WE(T0)= (13)10. Così, quando è usato il circuito della Figura 3, l’equivalente Gray di PTR_target in T1 sarebbe, per es., PTR_gray(T1)=“1011”=(13)10, che è a una distanza di Hamming superiore all’unità dal valore precedente. Così, nella catena di sincronizzazione successiva, la distanza di Hamming da valori consecutivi del segnale PTR_gray è maggiore dell’unità, il che conduce a possibili errori siccome un cambiamento di più un bit è stato fatto passare attraverso i domini di clock.
Un esempio di una forma di attuazione del sotto-circuito 205 del circuito di controllo 20 in linea con il documento US 9,311,975 B1 è rappresentato nella Figura 5.
In questo esempio di forma di attuazione, il sommatore binario 201 consiste di nuovo di un sommatore accoppiato al segnale 200 e al registro 201. Specificamente, il sommatore 202 riceve in ingresso il contenuto del registro 201 e il segnale 200. Di conseguenza, il sommatore 202 fornisce in uscita il segnale PTR_target corrispondente alla somma del contenuto del registro 201 e del segnale 200, che è scritto di nuovo al prossimo ciclo di clock nel registro 201.
Il risultato PTR_target è passato a un circuito 204 che esegue una conversione da Binario a Gray 204. Tuttavia, questo circuito 204 non implementa un semplice convertitore da Binario a Gray 204, ma esegue una conversione più complessa. A questo scopo, il segnale PTR_target è fornito a un circuito di conversione da Binario a Gray 240a. Il circuito 240a comprende un nodo di ingresso per ricevere un segnale codificato binario, come il segnale PTR_target, e un nodo di uscita che fornisce un segnale codificato Gray PTR_gray. Come sarà descritto in seguito, in un dato ciclo di clock, il segnale di uscita codificato Gray PTR_gray non corrisponde necessariamente al valore codificato Gray del segnale di ingresso codificato binario PTR_target. Di conseguenza, in varie forme di attuazione, il nodo di ingresso può essere accoppiato all’uscita del circuito sommatore 202.
Nella forma di attuazione considerata, il circuito di conversione da Binario a Gray 240a comprende inoltre un ulteriore nodo di ingresso configurato per ricevere il segnale di uscita codificato Gray PTR_gray, implementando con ciò un anello di retroazione del segnale di uscita PTR_gray.
Specificamente, secondo il documento US 9,311,975 B1, il circuito di conversione da Binario a Gray 240a genera tutti i candidati/valori Gray che hanno una distanza di Hamming unitaria dal segnale corrente PTR_gray. In seguito, il circuito 240a determina gli equivalenti binari di questi candidati/valori Gray e seleziona il valore Gray, il cui equivalente binario è il più vicino al segnale PTR_target. Queste operazioni sono ripetute per uno o più cicli di clock, finché l’equivalente binario del segnale di uscita PTR_gray raggiunge il valore del segnale PTR_target. Il risultato è una sequenza di valori codificati Gray PTR_gray, in cui gli ultimi valori PTR_gray corrispondono all’equivalente Gray del segnale binario PTR_target.
La Figura 6 rappresenta un diagramma temporale di un trasferimento di dati in una forma di attuazione secondo la Figura 5.
Per esempio, al ciclo di clock indicato come T0, il valore del segnale PTR_target è di nuovo PTR_target(T0)=(4)10. Il valore del segnale PTR_gray è l’equivalente codificato Gray del valore del segnale PTR_target durante il ciclo di clock T0, per es. PTR_gray=“0110”=(4)10. Durante lo stesso ciclo di clock, il valore WE del segnale 200 è di nuovo WE(T0)=(9)10.
Nel ciclo di clock successivo, indicato come T1, il valore del segnale PTR_target memorizzato nel registro 201 cambia ed è aggiornato con il valore della somma di PTR_target e di WE a T0, per es., PTR_target(T1)=PTR_target(T0)+WE(T0)=(13)10.
Di conseguenza, il valore del segnale PTR_target fornito al circuito di conversione da Binario a Gray 240a cambia ed è ora (13)10.
Specificamente, nella forma di attuazione considerata, il circuito di conversione da Binario a Gray 240a genera i candidati/valori Gray che hanno una distanza di Hamming di uno dal segnale corrente PTR_gray, come i segnali “1110”, “0010”, “0100”, “0111” per l’esempio considerato. Inoltre, il circuito di conversione da Binario a Gray 240a determina gli equivalenti binari di questi candidati/valori Gray, come “1110”=(11)10, “0010”=(3)10, “0100”=(7)10, “0111”=(5)10 per l’esempio considerato. In seguito, il circuito di conversione da Binario a Gray 240a seleziona il valore Gray, il cui equivalente binario ha la più piccola distanza positiva dal segnale PTR_target (cioè l’equivalente binario, che è il più vicino al e minore del segnale PTR_target), cioè “1110”=(11)10 per l’esempio considerato. Di conseguenza, nell’esempio considerato, il circuito 240a fornisce ora in uscita PTR_gray(T1)=“1110”=(11)10.
Queste operazioni sono ripetute per uno o più cicli di clock, finché l’equivalente binario del segnale di uscita PTR_gray raggiunge il valore del segnale PTR_target. Il risultato è una sequenza di valori codificati Gray PTR_gray (“1110”=(11)10, “1010”=(12)10, “1011”=(13)10) in cui l’ultimo valore PTR_gray corrisponde all’equivalente Gray del segnale binario PTR_target.
Così, questa implementazione garantisce la coerenza dei segnali nella catena di sincronizzazione successiva.
Tuttavia, gli inventori hanno osservato che questa soluzione è lenta (per es., per le operazioni di decodifica da Gray a binario effettuate per ciascun valore candidato) ed è costosa nei termini dell’occupazione di area dei componenti.
Una o più forme di attuazione di un sotto-circuito 205 del circuito di controllo 20 secondo la presente descrizione sono rappresentate nella Figura 7. Per esempio, anche questo circuito può essere usato in una memoria FIFO che supporta una modalità a burst di dati. Specificamente, anche questo circuito assicura che la distanza di Hamming tra due valori Gray PTR_gray consecutivi all’uscita del sotto-circuito 205 rimanga unitaria.
Anche in questo esempio di forma di attuazione, il sommatore binario 202 consiste di un sommatore accoppiato al segnale 200 e al registro 201 come descritto in precedenza. Il segnale PTR_target all’uscita del sommatore 202 è passato a un circuito che esegue una conversione da Binario a Gray 204. Specificamente, nella forma di attuazione considerata, il circuito 204 comprende un circuito di conversione da Binario a Gray 240b, che riceve in ingresso il segnale codificato binario PTR_target e fornisce in uscita una sequenza di segnali codificati Gray PTR_gray, in cui di nuovo l’ultimo valore codificato Gray corrisponde all’equivalente Gray del segnale PTR_target.
La Figura 8 rappresenta un esempio di una forma di attuazione hardware del sotto-circuito 205 del circuito di controllo 20.
In una o più forme di attuazione, un circuito 240b comprende un nodo di ingresso per ricevere il segnale binario PTR_target e un nodo di uscita per fornire il segnale PTR_gray.
Nella forma di attuazione considerata, il circuito 240b comprende anche un registro 61. Specificamente, nella forma di attuazione considerata, il registro 61 è configurato per memorizzare il valore equivalente binario PTRf del segnale PTR_gray.
Specificamente, nella forma di attuazione considerata, il segnale di uscita PTRf del registro 61 è fornito a un circuito di predizione 62. Specificamente, il circuito di predizione 62 è configurato per ricevere in ingresso il segnale PTRf e per fornire in uscita un insieme di valori binari candidati 63a a 63c, in cui il rispettivo equivalente Gray di ciascun valore binario candidato ha una distanza di Hamming di uno dall’equivalente Gray del segnale PTRf. Per esempio, ipotizzando che il valore PTRf abbia il valore binario (4)10 (che corrisponde al valore Gray “0110”), il circuito di predizione 62 può fornire in uscita i valori binari (11)10 (che corrisponde al valore Gray “1110”), (3)10 (che corrisponde al valore Gray “0010”), (7)10 (che corrisponde al valore Gray “0100”) e (5)10 (che corrisponde al valore Gray “0111”).
In varie forme di attuazione, il numero di valori binari candidati corrisponde al numero dei bit del segnale PTRf.
In generale, i possibili valori binari candidati 63a a 63c per ciascun valore del segnale PTRf possono essere calcolati preliminarmente. Di conseguenza, il circuito di predizione 62 può essere implementato con una tabella di ricerca (“Look-Up Table”) che ha memorizzato per ciascun valore del segnale PTRf il rispettivo insieme di valori binari candidati, in cui il rispettivo equivalente Gray di ciascuno dei valori binari candidati ha una distanza di Hamming di uno dall’equivalente Gray del rispettivo segnale PTRf.
Per contro, la Figura 8 rappresenta una forma di attuazione nella quale il circuito di predizione 62 comprende una pluralità di circuiti di predizione da 62a a 62c. Il numero di circuiti di predizione da 62a a 62c corrisponde al numero dei bit del segnale PTRf, in cui ciascun circuito di predizione da 62a a 62c fornisce in uscita un rispettivo valore binario candidato 63a a 63c.
Specificamente, in varie forme di attuazione, i circuiti di predizione da 62a a 62c sono implementati con circuiti logici combinatori configurati per calcolare il rispettivo valore binario candidato in tempo reale come sarà descritto in seguito.
In una o più forme di attuazione, i valori binari candidati 63a a 63c sono forniti a un arbitro 66, che è configurato per selezionare uno dei valori binari candidati 63a a 63c. Il segnale all’uscita dell’arbitro 66 corrisponde così al prossimo segnale binario PTRf ed è così fornito in ingresso al registro 61. Inoltre, il segnale all’uscita dell’arbitro 66 è fornito a un blocco codificatore da binario a Gray 68. Specificamente, in varie forme di attuazione, il blocco codificatore 68 è un circuito logico combinatorio che fornisce in uscita l’equivalente codificato Gray del segnale PTRf ricevuto in ingresso.
Per esempio, al fine di selezionare il “migliore” valore binario candidato per un dato segnale PTR_target, l’arbitro può avere associato un circuito di preelaborazione 64. Per esempio, in varie forme di attuazione, il circuito di preelaborazione 64 è configurato per selezionare soltanto i valori binari candidati 63a a 63c che sono tra il valore corrente del segnale PTRf, che rappresenta un limite inferiore, e del segnale PTR_target, che rappresenta un limite superiore o un valore target.
Per esempio, nella forma di attuazione considerata, ciascun valore binario candidato 63a a 63c può essere fornito a un rispettivo blocco di Out-of-Range da 64a a 64c, ciascuno configurato per generare un rispettivo segnale di mask 65a a 65c, che indica se il rispettivo valore binario candidato è tra il limite inferiore e quello superiore.
Di conseguenza, nella forma di attuazione considerata, l’arbitro 66 può prendere soltanto in considerazione i valori binari candidati 63a a 63c che hanno un rispettivo segnale di mask che indica che il valore binario candidato 63a a 63c è tra il limite inferiore e quello superiore, cioè i valori binari candidati 63a a 63c che sono fuori dall’intervallo non sono presi in considerazione.
In varie forme di attuazione, il circuito di preelaborazione 64/blocchi di Out-of-Range da 64a a 64c possono anche limitare (in aggiunta al limite inferiore e a quello superiore) la selezione ai valori binari candidati 63a a 63c che hanno una distanza massima dal valore corrente del segnale PTRf. Per esempio, questa distanza massima può essere programmabile, permettendo con ciò di impostare un valore di salto massimo ammesso.
Di conseguenza, una volta ricevuto il sottoinsieme di valori binari candidati 63a a 63c, come indicato per es. dai segnali di mask 65a a 65c (per es., il rispettivo segnale di mask può essere impostato quando il rispettivo valore binario candidato 63a a 63c è selezionato ed è tra i limiti permessi), l’arbitro 66 può selezionare uno dei valori del sottoinsieme di valori binari candidati 63a a 63c.
Per esempio, l’arbitro 66 può selezionare il più grande valore del sottoinsieme di valori binari candidati 63a a 63c. Per esempio, il circuito di predizione 62 può fornire in uscita una sequenza di valori binari candidati 63a a 63c in ordine crescente (o, in alternativa, decrescente). Di conseguenza, l’arbitro 66 può selezionare il valore del sottoinsieme di valori binari candidati 63a a 63c che è l’ultimo (o, in alternativa, il primo) valore che ha un segnale di mask che indica che il rispettivo valore binario candidato 63a a 63c è tra il limite permesso.
In varie forme di attuazione, l’arbitro 66 può essere implementato con un circuito logico combinatorio, selezionando con ciò un valore binario candidato all’interno di un singolo ciclo di clock.
In seguito, sarà descritta ora una possibile implementazione del circuito di predizione 62.
In generale, un qualsiasi valore codificato binario V può essere rappresentato con un dato numero di bit k.
Usando una codifica Gray per un tale valore codificato binario V, di solito anche il rispettivo valore codificato Gray VG ha k bit. A causa del fatto che i valori candidati dovrebbero avere una distanza di Hamming di uno da questo valore codificato Gray VG, esistono k possibili valori candidati codificati Gray, in cui l’i-esimo candidato codificato Gray ha l’i-esimo bit del valore codificato Gray VG invertito.
Invece di eseguire queste operazioni sui valori codificati Gray, varie forme di attuazione della presente descrizione funzionano direttamente con valori binari al fine di stimare k valori candidati codificati binari C1...Ck.
Specificamente, in varie forme di attuazione, l’i-esimo (con i = 1...k) valore candidato codificato binario può essere calcolato risolvendo l’equazione:
in cui l’operazione “mod” corrisponde all’operazione di modulo, e l’operazione “floor” riceve in ingresso un numero reale e fornisce in uscita il più grande numero intero che è minore o uguale al numero in ingresso.
L’equazione precedente può essere determinata empiricamente, e risulta sostanzialmente dalle proprietà del codice Gray, che può essere generato “rispecchiando” i codici dei bit precedenti (si veda, per es., la descrizione del documento US 2008/0013386 A1 per la costruzione dei codici Gray).
Un esempio di un diagramma concettuale di come il circuito di predizione 62 calcola i rispettivi valori binari candidati in tempo reale secondo l’equazione (1) è rappresentato nella Figura 9.
Specificamente, nell’esempio considerato, il valore V indicato come 621 nella Figura 9 ha un valore che corrisponde al numero decimale V = 17. Nell’esempio considerato, il numero dei bit usati per rappresentare il numero decimale V in una codifica binaria è, per es., k = 5.
In questo esempio, il valore del segnale V può quindi essere elaborato nella logica combinatoria del circuito di predizione 62 fornendo un insieme di k = 5 valori binari candidati 622 a 626, calcolato secondo la formula (1). Specificamente, in varie forme di attuazione, il circuito di predizione 62 determina una pluralità di candidati di salto 622 a 626, un i-esimo candidato per ciascun i-esimo bit dei k bit che rappresentano l’equivalente binario del numero decimale V.
Nell’esempio operazionale considerato, i valori binari candidati 622 a 626 calcolati con l’equazione (1) corrispondono, per es., rispettivamente ai valori decimali 16, 18, 22, 30, 14.
In uno o più esempi di forme di attuazione, l’insieme di valori C1...Ck può essere ottenuto attraverso circuiti logici combinatori.
La Figura 10 rappresenta un esempio di una forma di attuazione hardware 62i dell’i-esimo circuito di predizione 62a a 62c che fornisce così in uscita l’i-esimo valore binario candidato 63i.
Così, in questo esempio di forma di attuazione, il circuito 62i riceve in ingresso il valore del segnale PTRf dal registro 61 e fornisce in uscita l’i-esimo valore binario candidato 63i, in cui l’equivalente Gray dell’i-esimo valore binario candidato ha una distanza di Hamming di uno dall’equivalente Gray del segnale PTRf.
Specificamente, il circuito 62i implementa così l’equazione (1) per un dato i.
Specificamente, gli inventori hanno osservato che il termine “floor(V/2<i>)” può essere implementato con un’operazione di spostamento a destra (“right logical shift”). Per contro, la moltiplicazione con 2<i >può essere implementata con un’operazione di spostamento a sinistra (“left logical shift”).
Questo è rappresentato anche nella Figura 10, in cui il circuito 62i comprende uno spostamento logico a destra 621 e uno spostamento logico a sinistra 622. Specificamente, nell’esempio di forma di attuazione considerato, il blocco di spostamento logico a destra 621 riceve in ingresso il segnale PTRf dal blocco di puntatore 61 e calcola il valore della funzione floor del rapporto tra V e l’i-esima potenza di 2 per un dato valore i. L’uscita del blocco di spostamento logico a destra 621 è fornita al blocco di spostamento logico a sinistra 622 che calcola così il prodotto dell’i-esima potenza di due e il valore della funzione floor del rapporto tra V e l’i-esima potenza di 2.
Generalmente, nella misura in cui il valore i è fissato per un dato circuito 62i, le operazioni di spostamento possono essere cablate in hardware (“hardwired”). Per esempio, invece di implementare esplicitamente le operazioni di spostamento a destra e di spostamento a sinistra, i circuiti 621 e 622 possono essere combinati in un circuito 627 configurato per porre semplicemente a “0” gli i bit meno significativi (LSB) del segnale PTRf, mantenendo con ciò sostanzialmente soltanto (k-i) bit più significativi (MSB) del segnale PTRf.
Nella forma di attuazione considerata, il circuito 62i comprende inoltre un circuito sottrattore binario 623 configurato per calcolare la differenza tra il termine (2<k >- 1) e il valore di V - indicato come valore di uscita 620 nella figura - dove k è di nuovo il numero dei bit usati per rappresentare V.
Per esempio, in un’implementazione hardware, il circuito sottrattore binario 623 può essere implementato con un circuito sommatore binario. Specificamente, una sottrazione binaria dei due termini A e B può essere implementata a livello hardware con un’addizione binaria di (A NOT(B) 1). Di conseguenza, un circuito sommatore binario 623 può ricevere in ingresso il segnale PTRf e può fornire in uscita i risultati dell’addizione binaria di (2<k >+ NOT(PTRf)), in cui l’operazione logica NOT corrisponde a un’inversione logica di ciascun bit del segnale PTRf e il termine 2<k >può essere calcolato preliminarmente e fissato a livello hardware.
Tuttavia, un’addizione binaria con il termine 2<k >non cambia in effetti il risultato dell’operazione e, di conseguenza, il circuito 623 può fornire semplicemente in uscita NOT(PTRf).
In generale, il circuito 623 non considera il parametro i, e di conseguenza il circuito 623 può essere comune per tutti i circuiti di predizione da 62a a 62c, cioè il circuito 623 può non essere presente all’interno del circuito 62i siccome il valore 620 è lo stesso per tutti i circuiti di predizione.
Il valore di uscita 620 del circuito 623 può essere passato come ingresso a un circuito 624 configurato per calcolare l’operazione di modulo mod 2<i>.
Per esempio, in varie forme di attuazione, il circuito 624 è implementato con un separatore (“slicer”) dei bit meno significativi (LSB) configurato per mantenere soltanto gli i Bit Meno Significativi (LSB) del segnale 620, cioè (k-i) Bit Più Significativi (MSB) del segnale 620 sono posti a “0”.
Nella forma di attuazione considerata, i segnali forniti dai circuiti 621/622 e 624 sono quindi forniti a un sommatore binario 625, che produce il valore dell’i-esimo valore binario candidato 63i.
Specificamente, il circuito 627 fornisce un segnale con gli i Bit Meno Significativi posti a “0” e il circuito 624 fornisce un segnale con (k-i) Bit Più Significativi (MSB) posti a “0”. Di conseguenza, il circuito sommatore 625 può anche generare semplicemente un segnale:
- selezionando (k-i) Bit Più Significativi (MSB) del segnale forniti dal circuito 627; e
- selezionando gli i Bit Meno Significativi del segnale forniti dal circuito 624.
La Figura 11 rappresenta una forma di attuazione di un esempio di implementazione hardware 62i dell’i-esimo circuito di predizione da 62a a 62c che implementa l’equazione (1) nel caso in cui i possa essere considerato una costante cablata in hardware per l’i-esima istanza.
In questo esempio di forma di attuazione, similmente a quanto descritto nei paragrafi precedenti, il circuito 62i riceve in ingresso il valore del segnale PTRf dal registro 61 e fornisce in uscita l’i-esimo valore binario candidato 63i, in cui l’equivalente Gray dell’i-esimo valore binario candidato ha una distanza di Hamming di uno dall’equivalente Gray del segnale PTRf.
Il circuito di spostamento (“shift circuit”) 627 riceve i k bit del segnale PTRf, mentre l’uscita del circuito 627 è fornita come ingresso al sommatore binario 625. Specificamente, il circuito 627 propaga soltanto (k-i) Bit Più Significativi (MSB) del segnale PTRf, ponendo eventualmente a “0” gli i Bit Meno Significativi (LSB) del segnale PTRf. Per esempio, nel caso di k=5 e i=4, il circuito di spostamento 627 può fornire in uscita un segnale che consiste di un singolo bit che ha il valore del MSB di PTRf.
Il circuito 623 può essere implementato con un invertitore (o una porta logica NOT), che riceve in ingresso il segnale PTRf e fornisce in uscita un segnale 620 i cui bit sono posti al livello logico opposto rispetto ai bit in ingresso.
Il valore di uscita 620 del circuito 623 può essere passato, di nuovo, come ingresso a un circuito 624 configurato per calcolare l’operazione di modulo mod 2<i>. Per esempio, in varie forme di attuazione, il circuito 624 riceve i k bit del segnale 620, mentre gli i bit all’uscita del circuito 624 sono forniti come ingresso al sommatore binario 625.
Specificamente, il circuito 624 propaga soltanto gli i Bit Meno Significativi (LSB) del segnale 620 e (k-i) Bit Più Significativi (MSB) del segnale 620 possono essere posti eventualmente a “0”. Per esempio, nel caso di k=5 e i=4, il circuito 624 può fornire in uscita un segnale che consiste di 4 bit che hanno il valore degli ultimi quattro bit significativi di PTRf.
Nella forma di attuazione considerata, di nuovo, i segnali forniti dai circuiti 627 e 624 sono poi forniti a un circuito 625, che produce k bit che rappresentano il valore dell’i-esimo valore binario candidato 63i combinando i segnali provenienti dai circuiti 624 e 627, per es., usando (k-i) Bit Più Significativi forniti dal circuito 627 e gli i Bit Meno Significativi (LSB) forniti dal circuito 624.
Perciò, il fatto di usare il circuito rappresentato nella Figura 11 per implementare le operazioni del circuito rappresentato nella Figura 10 fornirà l’i-esimo valore binario candidato 63i che corrisponde a uno qualsiasi dei valori binari candidati 63a a 63c.
Così, usando il circuito rappresentato nella Figura 10 nel circuito di predizione 62 della Figura 8, il circuito di predizione 62 fornirà in uscita k valori binari candidati e l’arbitro 66 selezionerà uno dei k valori binari candidati 63a a 63c come descritto in precedenza. Così, l’arbitro fornisce in uscita un valore binario, che è fornito sia al registro 61 sia al codificatore da binario a Gray 68.
Per esempio, come descritto con riferimento alla Figura 7 nel contesto di una memoria FIFO, il segnale PTR_target può corrispondere al puntatore di scrittura o di lettura di valore binario. Così, in questo caso, il circuito 240b fornisce in uscita una sequenza di valori codificati Gray PTR_gray (con una distanza di Hamming di uno tra valori Gray consecutivi), in cui l’ultimo valore Gray corrisponde alla versione codificata Gray del segnale PTR_target.
Così, nel contesto di una memoria FIFO come rappresentato nella Figura 2, il circuito rappresentato nella Figura 7 può essere usato in combinazione con un sincronizzatore per trasferire il puntatore di scrittura e/o di lettura a un altro dominio di clock.
I circuiti descritti precedentemente sono così particolarmente utili per memorie FIFO che supportano operazioni di scrittura e/o di lettura in modalità burst, in cui una pluralità di locazioni di memoria sono scritte/lette durante un ciclo di clock. In generale, mentre il segnale PTR_gray (che corrisponde a WPG o a RPG) non corrisponde necessariamente al valore del puntatore di scrittura/lettura binario WPB o RPB (che corrisponde a PTR_target), questo non rappresenta un problema nella misura in cui la sequenza di valori codificati Gray incrementa soltanto finché è raggiunto il rispettivo puntatore di scrittura/lettura binario. Per esempio, al massimo il segnale PIENO (“FULL”) rimane impostato anche se l’interfaccia di lettura ha già letto i dati o il segnale VUOTO (“EMPTY”) rimane impostato anche se l’interfaccia di scrittura ha già scritto i dati, mentre gli errori sono ancora evitati durante la sincronizzazione.
Così, similmente a una memoria FIFO tradizionale con operazioni di scrittura/lettura, la soluzione assicura la coerenza dei segnali durante la sincronizzazione. Inoltre, in confronto alle soluzioni note, sono possibili risparmi di area e un’implementazione più compatta. Specificamente, varie forme di attuazione sono basate sul riconoscimento che è anche possibile determinare direttamente candidati di puntatori binari, il che può essere sfruttato in una semplice implementazione hardware perfezionata. Così, varie forme di attuazione possono presentare un’occupazione ridotta di area della circuiteria riducendo il numero di componenti, affrontando nel contempo vari problemi discussi in precedenza.
In generale, il circuito discusso in precedenza può anche essere usato in altri dispositivi nei quali una conversione tra un valore binario che è soggetto a “salti” deve essere convertito in un rispettivo valore codificato Gray. Per esempio, talvolta i bus digitali nei sistemi elettronici sono usati per convogliare quantità che possono soltanto aumentare o diminuire, per esempio, l’uscita di un contatore che è quindi fatta passare tra domini di clock o a un convertitore digitale/analogico. Similmente, possono esistere problemi per trasmettere segnali di sensori, in cui la consistenza dei segnali è più rilevante della latenza della trasmissione dei dati. Così, in generale, la soluzione può anche essere usata in altri sistemi di trasmissione, in cui sono usati codici Gray.
Fermi restando i principi di fondo, i dettagli di implementazione e le forme di attuazione possono variare, anche in modo apprezzabile, rispetto a quanto è stato descritto qui, puramente a titolo di esempio non limitativo, senza uscire dall’ambito di protezione.
Claims (14)
- RIVENDICAZIONI 1. Un circuito di conversione da Binario a Gray (240b), comprendente: - un ingresso configurato per ricevere un primo segnale binario (PTR_target), - un registro (61) configurato per memorizzare un secondo segnale binario (PTRf), - un circuito di predizione (62) configurato per ricevere in ingresso detto secondo segnale binario (PTRf) e per fornire in uscita un insieme di valori binari candidati (63a a 63c), in cui il rispettivo equivalente Gray di ciascun valore binario candidato (63a a 63c) ha una distanza di Hamming di uno dall’equivalente Gray di detto secondo segnale binario (PTRf), - un arbitro (66) configurato per selezionare uno di detti valori binari candidati (63a a 63c) in funzione di detto primo segnale binario (PTR_target) e di detto secondo segnale binario (PTRf), in cui il valore binario candidato selezionato è fornito in ingresso a detto registro (61); - un blocco codificatore (68) configurato per ricevere il valore binario candidato selezionato e per fornire in uscita l’equivalente Gray codificato (PTR_gray) del valore binario candidato selezionato.
- 2. Il circuito di conversione da Binario a Gray secondo la Rivendicazione 1, in cui detto primo segnale binario (PTR_target), detto secondo segnale binario (PTRf) e detto equivalente codificato Gray (PTR_gray) del valore binario candidato selezionato hanno un dato numero k di bit, e detto circuito di predizione è configurato per fornire detto dato numero k di valori binari candidati (63a a 63c).
- 3. Il circuito di conversione da Binario a Gray secondo la Rivendicazione 2, in cui detto circuito di predizione (62) comprende k sotto-circuiti (62a a 62c; 62i), ciascuno configurato per fornire in uscita un i-esimo valore binario candidato (63a a 63c; 63i), con i = 1...k.
- 4. Il circuito di conversione da Binario a Gray secondo la Rivendicazione 3, in cui detto circuito di predizione (62) comprende un primo circuito (623) configurato per ricevere in ingresso detto secondo segnale binario (PTRf) e per fornire in uscita un primo segnale (620): - calcolando la differenza tra il termine (2<k >- 1) e il valore di detto secondo segnale binario (PTRf); o - invertendo i bit di detto secondo segnale binario (PTRf).
- 5. Il circuito di conversione da Binario a Gray secondo la Rivendicazione 4, in cui ciascun detto sotto-circuito (62i) comprende: - un ingresso per ricevere detto secondo segnale binario (PTRf); - un secondo circuito (621, 622) configurato per generare un secondo segnale selezionando (k-i) Bit Più Significativi (MSB) di detto secondo segnale binario (PTRf); - un terzo circuito (624) configurato per generare un terzo segnale selezionando gli i Bit Meno Significativi (LSB) di detto primo segnale (620); e - un quarto circuito (625) configurato per generare il rispettivo valore binario candidato (63i) combinando detto secondo segnale e detto terzo segnale.
- 6. Il circuito di conversione da Binario a Gray secondo una qualsiasi delle rivendicazioni precedenti, in cui detto arbitro (66) ha associato un circuito di preelaborazione (64) configurato per selezionare i valori binari candidati di detto insieme di valori binari candidati (63a a 63c), che sono tra il valore di detto secondo segnale binario (PTRf), che rappresenta un limite inferiore, e il valore di detto primo segnale binario (PTR_target), che rappresenta un limite superiore o un valore target.
- 7. Il circuito di conversione da Binario a Gray secondo la Rivendicazione 6, in cui detto circuito di preelaborazione (64) comprende per ciascun valore binario candidato un rispettivo circuito di Out-of-Range (64a a 64c), ciascuno configurato per generare un rispettivo segnale di mask (65a a 65c) che indica se il rispettivo valore binario candidato è tra detto limite inferiore e detto limite superiore.
- 8. Il circuito di conversione da Binario a Gray secondo la Rivendicazione 7, in cui detto arbitro (66) è configurato per scartare i valori binari candidati (63a a 63c) che hanno un rispettivo segnale di mask (65a a 65c) che indica che il rispettivo valore binario candidato (63a a 63c) non è tra detto limite inferiore e detto limite superiore.
- 9. Il circuito di conversione da Binario a Gray secondo la Rivendicazione 7 o la Rivendicazione 8, in cui detto arbitro (66) è configurato per scartare i valori binari candidati (63a a 63c) che hanno una distanza da detto secondo segnale binario (PTRf) che è maggiore di una data distanza massima.
- 10. Il circuito di conversione da Binario a Gray secondo una qualsiasi delle rivendicazioni precedenti, in cui detto arbitro (66) è configurato per selezionare il valore binario candidato (63a a 63c) che ha il valore più grande.
- 11. Il circuito di conversione da Binario a Gray secondo una qualsiasi delle rivendicazioni precedenti, in cui detto arbitro (66) è implementato con un circuito logico combinatorio.
- 12. Una memoria FIFO comprendente: - un’area di memoria (30) che comprende una pluralità di locazioni di memoria, e - un circuito di controllo (20) che comprende: - un’interfaccia di scrittura configurata per generare un puntatore di scrittura binario (WPB) che indica una locazione di memoria per scrivere dati in detta area di memoria (30); - un’interfaccia di lettura configurata per generare un puntatore di lettura binario (RPB) che indica una locazione di memoria per leggere dati da detta area di memoria (30); - un circuito di sincronizzazione (211, 231) per scambiare detto puntatore di scrittura binario (WPB) e/o detto puntatore di lettura binario (RPB) tra detta interfaccia di scrittura e detta interfaccia di lettura, in cui detto circuito di sincronizzazione (211, 231) è configurato per scambiare segnali codificati Gray; in cui detta memoria FIFO comprende almeno un circuito di conversione da Binario a Gray (240b) secondo una qualsiasi delle rivendicazioni precedenti, in cui detto circuito di conversione da Binario a Gray (240b) è configurato per ricevere in ingresso detto puntatore di scrittura binario (WPB) o detto puntatore di lettura binario (RPB), in cui l’equivalente codificato Gray (PTR_gray) di detto uno di detti valori binari candidati (63a a 63c) all’uscita di detto circuito di conversione da Binario a Gray (240b) è fornito a detto circuito di sincronizzazione (211, 231).
- 13. Un circuito integrato comprendente un circuito di conversione da Binario a Gray secondo una qualsiasi delle rivendicazioni precedenti da 1 a 11 o una memoria FIFO secondo la Rivendicazione 12.
- 14. Un procedimento per effettuare una conversione da Binario a Gray, comprendente le fasi: - ricevere un primo segnale binario (PTR_target) che rappresenta un valore target, - memorizzare un secondo segnale binario (PTRf) in un registro (61), - determinare un insieme di valori binari candidati (63a a 63c), in cui il rispettivo equivalente Gray di ciascun valore binario candidato (63a a 63c) ha una distanza di Hamming di uno dall’equivalente Gray di detto secondo valore binario (PTRf), - selezionare uno di detti valori binari candidati (63a a 63c) in funzione di detto primo segnale binario (PTR_target) e di detto secondo segnale binario (PTRf), in cui il valore binario candidato selezionato è fornito in ingresso a detto registro (61); e - generare un segnale codificato determinando l’equivalente codificato Gray (PTR_gray) del valore binario candidato selezionato.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IT102018000003008A IT201800003008A1 (it) | 2018-02-23 | 2018-02-23 | Un circuito di conversione da binario a gray, relativi memoria fifo, circuito integrato e procedimento |
US16/256,449 US10635394B2 (en) | 2018-02-23 | 2019-01-24 | Binary-to-gray conversion circuit, related FIFO memory, integrated circuit and method |
EP19157120.7A EP3531560B1 (en) | 2018-02-23 | 2019-02-14 | A binary-to-gray conversion circuit, related fifo memory, integrated circuit and method |
CN201920225037.2U CN209417720U (zh) | 2018-02-23 | 2019-02-22 | 二进制至格雷转换电路和fifo存储器 |
CN201910133529.3A CN110187918B (zh) | 2018-02-23 | 2019-02-22 | 二进制至格雷转换电路、相关的fifo存储器、集成电路和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IT102018000003008A IT201800003008A1 (it) | 2018-02-23 | 2018-02-23 | Un circuito di conversione da binario a gray, relativi memoria fifo, circuito integrato e procedimento |
Publications (1)
Publication Number | Publication Date |
---|---|
IT201800003008A1 true IT201800003008A1 (it) | 2019-08-23 |
Family
ID=62218255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
IT102018000003008A IT201800003008A1 (it) | 2018-02-23 | 2018-02-23 | Un circuito di conversione da binario a gray, relativi memoria fifo, circuito integrato e procedimento |
Country Status (4)
Country | Link |
---|---|
US (1) | US10635394B2 (it) |
EP (1) | EP3531560B1 (it) |
CN (2) | CN110187918B (it) |
IT (1) | IT201800003008A1 (it) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT201800003008A1 (it) * | 2018-02-23 | 2019-08-23 | St Microelectronics Srl | Un circuito di conversione da binario a gray, relativi memoria fifo, circuito integrato e procedimento |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6934198B1 (en) * | 2004-05-04 | 2005-08-23 | Xilinx, Inc. | First-in, first-out buffer system in an integrated circuit |
US20160099031A1 (en) * | 2014-10-07 | 2016-04-07 | Stmicroelectronics S.R.L. | Bi-synchronous electronic device with burst indicator and related methods |
US20160099032A1 (en) * | 2014-10-07 | 2016-04-07 | Stmicroelectronics S.R.L. | Bi-synchronous electronic device and fifo memory circuit with jump candidates and related methods |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6314154B1 (en) * | 1999-11-04 | 2001-11-06 | Vlsi Technology, Inc | Non-power-of-two Gray-code counter and binary incrementer therefor |
US6337893B1 (en) | 1999-11-04 | 2002-01-08 | Philips Electronics North America Corp. | Non-power-of-two grey-code counter system having binary incrementer with counts distributed with bilateral symmetry |
US7668983B2 (en) * | 2003-10-24 | 2010-02-23 | Broadcom Corporation | System for designing data structures |
WO2007046558A1 (ja) * | 2005-10-21 | 2007-04-26 | Nec Corporation | 変復調方法、並びに変調装置及び復調装置 |
DE602006013444D1 (de) | 2006-07-11 | 2010-05-20 | St Microelectronics Srl | Verfahren und System zur Steuerung von Datensynchronisation in FIFO-Speichern und zugehöriger Synchronisierer |
US7796062B1 (en) | 2007-10-17 | 2010-09-14 | Tellabs San Jose, Inc. | Method and apparatus for providing non-power-of-two even count gray code |
US8458427B2 (en) | 2010-02-26 | 2013-06-04 | Stmicroelectronics S.R.L. | Synchronization system and related integrated circuit |
CN101944976A (zh) * | 2010-10-11 | 2011-01-12 | 复旦大学 | 一种基于格雷映射的优化网格编码调制系统编码设计方法 |
US10048893B2 (en) * | 2015-05-07 | 2018-08-14 | Apple Inc. | Clock/power-domain crossing circuit with asynchronous FIFO and independent transmitter and receiver sides |
IT201800003008A1 (it) * | 2018-02-23 | 2019-08-23 | St Microelectronics Srl | Un circuito di conversione da binario a gray, relativi memoria fifo, circuito integrato e procedimento |
-
2018
- 2018-02-23 IT IT102018000003008A patent/IT201800003008A1/it unknown
-
2019
- 2019-01-24 US US16/256,449 patent/US10635394B2/en active Active
- 2019-02-14 EP EP19157120.7A patent/EP3531560B1/en active Active
- 2019-02-22 CN CN201910133529.3A patent/CN110187918B/zh active Active
- 2019-02-22 CN CN201920225037.2U patent/CN209417720U/zh not_active Withdrawn - After Issue
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6934198B1 (en) * | 2004-05-04 | 2005-08-23 | Xilinx, Inc. | First-in, first-out buffer system in an integrated circuit |
US20160099031A1 (en) * | 2014-10-07 | 2016-04-07 | Stmicroelectronics S.R.L. | Bi-synchronous electronic device with burst indicator and related methods |
US20160099032A1 (en) * | 2014-10-07 | 2016-04-07 | Stmicroelectronics S.R.L. | Bi-synchronous electronic device and fifo memory circuit with jump candidates and related methods |
Also Published As
Publication number | Publication date |
---|---|
CN209417720U (zh) | 2019-09-20 |
EP3531560A1 (en) | 2019-08-28 |
CN110187918A (zh) | 2019-08-30 |
US10635394B2 (en) | 2020-04-28 |
CN110187918B (zh) | 2024-03-12 |
EP3531560B1 (en) | 2020-06-17 |
US20190265947A1 (en) | 2019-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101373424B (zh) | 一种异步先进先出存储器的数据读写方法、装置及系统 | |
US8510503B2 (en) | Ring buffer circuit and control circuit for ring buffer circuit | |
US6327207B1 (en) | Synchronizing data operations across a synchronization boundary between different clock domains using two-hot encoding | |
JP5169486B2 (ja) | Fpgaコンフィグレーション装置及びこれを有する回路基板、電子装置、及びfpgaコンフィグレーション方法 | |
US6389489B1 (en) | Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size | |
TWI224790B (en) | Apparatus and method of asynchronous FIFO control | |
JP3645584B2 (ja) | データ転送同期装置 | |
US7423563B2 (en) | Serial data transfer in a numerically controlled control system to update an output value of the control system | |
IT201800003008A1 (it) | Un circuito di conversione da binario a gray, relativi memoria fifo, circuito integrato e procedimento | |
JP2007071865A (ja) | エンコーダ出力の内挿方法及び内挿回路 | |
US6370667B1 (en) | CRC operating calculating method and CRC operational calculation circuit | |
WO2018214856A1 (zh) | 一种数据处理的方法和设备 | |
CN102684648B (zh) | 一种基于微控制器的波形产生系统及方法 | |
JP4371113B2 (ja) | デジタルdll回路 | |
JP2007310600A (ja) | 非同期fifo回路 | |
CN101145117A (zh) | 检错处理方法及装置 | |
JP5091911B2 (ja) | コード変換回路およびカウンタ | |
US20090232266A1 (en) | Signal processing device | |
JP4735268B2 (ja) | サンプリング周波数変換装置 | |
JP2001308832A (ja) | 速度変換装置 | |
JP2006172672A (ja) | Fifoメモリ | |
JP2005348095A (ja) | A/dコンバータおよびa/d変換方法 | |
JP2597041B2 (ja) | Fifoメモリ装置 | |
JP3471275B2 (ja) | 同期化回路 | |
CN116760985A (zh) | Dsc编码器的视频输入电路、dsc编码器系统及视频输入方法 |