ITUB20151177A1 - Interfaccia auto-sincronizzante, dispositivo e procedimento corrispondenti - Google Patents

Interfaccia auto-sincronizzante, dispositivo e procedimento corrispondenti Download PDF

Info

Publication number
ITUB20151177A1
ITUB20151177A1 ITUB2015A001177A ITUB20151177A ITUB20151177A1 IT UB20151177 A1 ITUB20151177 A1 IT UB20151177A1 IT UB2015A001177 A ITUB2015A001177 A IT UB2015A001177A IT UB20151177 A ITUB20151177 A IT UB20151177A IT UB20151177 A1 ITUB20151177 A1 IT UB20151177A1
Authority
IT
Italy
Prior art keywords
data
communication link
miso
signal
speed
Prior art date
Application number
ITUB2015A001177A
Other languages
English (en)
Inventor
Daniele Mangano
Riccardo Condorelli
Gaetano Distefano
Original Assignee
St Microelectronics Srl
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by St Microelectronics Srl filed Critical St Microelectronics Srl
Priority to ITUB2015A001177A priority Critical patent/ITUB20151177A1/it
Priority to US14/969,642 priority patent/US9990329B2/en
Priority to EP15202773.6A priority patent/EP3098720B1/en
Publication of ITUB20151177A1 publication Critical patent/ITUB20151177A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

DESCRIZIONE dell?invenzione industriale dal titolo:
?Interfaccia auto-sincronizzante, dispositivo e procedimento corrispondenti?
TESTO DELLA DESCRIZIONE
Campo tecnico
La descrizione si riferisce a interfacce di comunicazione.
Una o pi? forme di realizzazione possono riguardare un protocollo per interfaccia seriale (SPI ? Serial Protocol Interface) per l?utilizzo ad esempio nei microcontrollori.
Sfondo tecnologico
Un protocollo per interfaccia seriale (SPI) ? di fatto una interfaccia di comunicazione standard supportata da molti microcontrollori e diversi altri dispositivi (sensori, attuatori, e cos? via).
La velocit? operativa della comunicazione SPI pu? essere collegata ad esempio alla specifica implementazione on-chip dei dispositivi che comunicano attraverso l?interfaccia e alle caratteristiche elettriche della scheda di interconnessione.
In questo contesto operativo ? sentita l?esigenza di soluzioni migliorate che possano aumentare la velocit? delle comunicazioni indipendentemente ad esempio dai ritardi fisici specifici, dalle schede di interconnessione e dalle condizioni tensione/temperatura. Un altro obbiettivo perseguito pu? essere semplificare lo sviluppo di applicazioni e/o offrire funzionalit? a valore aggiunto per gli utenti.
Scopo e sintesi
Uno scopo di una o pi? forme di realizzazione ? di soddisfare tale esigenza.
Secondo una o pi? forme di realizzazione, tale scopo viene raggiunto grazie ad un procedimento come definito nelle rivendicazioni che seguono.
Una o pi? forme di attuazione possono riferirsi ad un corrispondente dispositivo e apparecchiatura.
Le rivendicazioni formano parte integrante della descrizione di una o pi? forme di realizzazione qui fornite.
Una o pi? forme di realizzazione possono essere applicate a diversi tipi di dispositivi che supportano ad esempio un?interfaccia SPI.
Una o pi? forme di realizzazione possono essere applicate a microcontrollori con prestazioni ad elevata velocit? di comunicazione.
Una o pi? forme di realizzazione possono essere implementate senza alcuna specifica procedura software e/o senza alcuna apprezzabile degradazione della velocit?.
Una o pi? forme di realizzazione consentono la risincronizzazione quando/se richiesta (possibilmente attivata via software) ad esempio al risveglio (wake-up) del dispositivo.
Breve descrizione delle figure
Una o pi? forme di attuazione verranno ora descritte, a puro titolo di esempio non limitativo, con riferimento alle figure annesse, in cui:
- la figura 1 ? una rappresentazione schematica di una comunicazione che coinvolge un protocollo di interfaccia seriale (SPI);
- la figura 2 esemplifica una possibile modifica del layout di figura 1;
- la figura 3 ? un diagramma di flusso semplificato esemplificativo della selezione della modalit? SPI in una o pi? forme di attuazione;
- le figure da 4 a 6 sono cronogrammi esemplificativi dei tempi in forme di attuazione che prevedono una interfaccia SPI; e
- le figure 7 e 8 sono diagrammi a blocchi di una o pi? forme di attuazione.
Descrizione dettagliata
Nella seguente descrizione sono illustrati uno o pi? dettagli specifici, mirati a fornire una comprensione approfondita di varie forme di attuazione esemplificative. Le forme di attuazione possono essere ottenute senza uno o pi? di tali dettagli specifici, oppure attraverso altri procedimenti, componenti, materiali, ecc.. In altri casi, strutture, materiali, o operazioni note non sono rappresentate o descritte in dettaglio per evitare di oscurare i alcuni aspetti delle forme di attuazione.
Un riferimento a ?una forma di attuazione? nel contesto della presente descrizione ? destinata ad indicare che una particolare configurazione, struttura o caratteristica descritta in relazione alla forma di attuazione ? compresa in almeno una forma di attuazione. Per cui, espressioni quali ?in una forma di attuazione?, eventualmente presenti in uno o pi? punti della presente descrizione, non fanno necessariamente riferimento ad una stessa forma di attuazione. Inoltre, particolari configurazioni, strutture o caratteristiche possono essere combinate in qualsiasi modo adeguato in una o pi? forme di attuazione.
I riferimenti qui utilizzati sono forniti semplicemente per convenienza e quindi non definiscono l?ambito di protezione o la portata delle forme di attuazione.
I diagrammi delle figure 1 e 2 sono esemplificativi di un possibile interfacciamento di un dispositivo master MD e di un dispositivo slave SD in un sistema elettronico come ad esempio un microcontrollore.
Il riferimento a un microcontrollore come qui considerato ? puramente a titolo di esempio: le forme di attuazione non sono limitate a tale campo di applicazione e possono difatti essere applicate a ciascun dispositivo che supporta un protocollo di interfaccia seriale.
In una semplice configurazione, un protocollo di interfaccia seriale (di seguito, brevemente SPI) pu? consentire la comunicazione sincrona tra due dispositivi MD e SD che lavorano con un segnale di clock generato dal dispositivo master MD, ad esempio attraverso un generatore di clock SPI 10, controllato da un segnale di controllo di clock CLK.
In una configurazione che comprende un singolo dispositivo master MD ed un singolo dispositivo slave SD (una o pi? forme di attuazioni possono infatti comprendere pi? dispositivi, ma qui per semplicit? si far? riferimento a due dispositivi) una interfaccia SPI pu? prevedere un link di comunicazione comprendente tre ?cavi? 121, 122, 123 vale a dire:
- una linea 121 per trasferire dati Master Input Slave Output (MISO) ad esempio 1-bit di dati dal dispositivo slave SD al dispositivo master MD;
- una linea 122 per trasferire dati Master Output Slave Input (MOSI) ad esempio 1-bit di dati dal dispositivo master MD al dispositivo slave SD; e
- una linea 123 per mezzo della quale un segnale di clock SCK generato dal dispositivo master MD pu? essere inviato al dispositivo slave SD per essere utilizzato dal dispositivo slave SD ad esempio per campionare i dati ricevuti.
Due registri a scorrimento 14M (nel dispositivo master MD) e 14F (nel dispositivo slave SD) possono gestire la comunicazione, ad esempio in modo che a ciascun ciclo di clock SPI (segnale SCK) i bit dei dati MOSI ricevuti dal dispositivo slave SD sulla linea 122 possono essere campionati e memorizzati nei registri a scorrimento ?slave? 14S mentre, allo stesso tempo, i bit dei dati MISO ricevuti dal dispositivo master MD sulla linea 121 possono essere campionati e memorizzati nei registri a scorrimento ?master? 14M.
In una o pi? forme di attuazione, il segnale di clock SPI SCK come generato dal dispositivo master MD pu? quindi essere:
- usato nel dispositivo master MD per campionare i dati MISO nel registro a scorrimento 14M e guidare un nuovo bit dati sulla linea MOSI 122;
- instradato (ad esempio attraverso un pin del dispositivo) sulla linea 123 per essere utilizzato nel dispositivo slave SD per campionare i dati MOSI nel registro a scorrimento 14S e guidare un nuovo bit dati sulla linea MISO 121.
I diagrammi di figura 1 e 2 sono quindi esemplificativi del funzionamento di un protocollo di interfaccia seriale in un dispositivo di comunicazione (ad esempio il dispositivo master MD) nello scambio di dati (ad esempio MOSI, MISO) tramite un link di comunicazione, comprendente ad esempio le linee 121, 122, 123 in cui lo scambio di dati dal dispositivo comprende inviare dati di uscita (ad esempio MOSI) sulla linea 122 del link di comunicazione e ricevere dati di ingresso (ad esempio MISO) sulla linea 121 del link di comunicazione, con i dati di ingresso (ad esempio MISO) sincroni con un segnale di clock SCK generato dal dispositivo di comunicazione MD e propagato sulla linea 123 del link di comunicazione al dispositivo slave SD.
Al fine di avere un sufficiente margine per rispettare i requisiti di temporizzazione (ad esempio il setup time e l?hold time del registro a scorrimento) ad una frequenza di clock adatta, una versione invertita del clock SPI pu? essere utilizzata sia dal lato master che dal lato slave.
Come schematicamente rappresentato nella figura 1 tale segnale di clock SCK come generato dal generatore 10 pu? essere:
- inviato dal dispositivo master MD sulla linea 123 al dispositivo slave SD, e
- applicato al registro a scorrimento 14M nel dispositivo master MD come un segnale modificato FSCK ottenuto attraverso un elemento di ritardo 16 cosicch? ad esempio FSCK e SCK abbiano diverse polarit?.
Nella rappresentazione schematica di figura 1 si ipotizza che il segnale di clock come ricevuto al dispositivo master MD ? invertito rispetto al segnale di clock inviato al dispositivo slave SD cos? che il ritardo ? si aggiunge a quello coinvolto nell?inversione di polarit?. Si pu? pertanto ritenere che il blocco 16 della figura 1 possa comprendere una porta NOT (a monte o a valle dell?elemento di ritardo ?) con lo scopo di fornire l?inversione di polarit?.
Di conseguenza, almeno teoricamente, i seguenti margini possono essere raggiunti:
- met? ciclo di clock (mezzo periodo) per propagare il segnale di clock al dispositivo slave SD per campionare i dati MOSI, guidare un nuovo dato sulla linea MISO 121 e propagare al master il nuovo dato sulla linea MISO 121;
- met? ciclo di clock per propagare il nuovo dato sulla linea MOSI 122 prima che si verifichi un nuovo evento di clock.
In un tale scenario come quello illustrato nella figura 1, la massima velocit? di comunicazione (cio? la frequenza di clock) pu? dipendere dal ritardo sperimentato dai segnali sui circuiti di ingresso/uscita, sui pin e sulla scheda di interconnessione.
Il tempo relativo al campionamento del segnale MISO pu? essere critico. Infatti, il ritardo del ?round trip? dal generatore di clock SPI 10 all?ingresso del registro a scorrimento master 14M (Td nella figura 1) pu? essere minore di mezzo periodo di clock, ovvero:
Td<T/2+? (dove ? ? un ritardo addizionale sul clock interno).
Al fine di migliorare le prestazioni sulla frequenza massima di clock, il ritardo 16 come mostrato nella figura 1 pu? essere aggiunto sul ramo del clock connesso al registro a scorrimento master 14M.
In questo modo, due margini possono essere associati alla propagazione del clock:
- i) quello dal generatore 10 al registro a scorrimento 14M attraverso l?elemento di ritardo 16, e
- ii) l?altro dal generatore di clock 10 al dispositivo slave SD sulla linea 123 e poi indietro dal dispositivo slave SD al dispositivo master MD tramite la linea 121.
Questi margini sono gi? stati discussi in precedenza. Nel caso in cui venga utilizzato un clock ?invertito? al lato master (o al lato slave) entrambi corrispondono a met? ciclo di clock, ovvero:
- mezzo ciclo di clock (met? periodo) per propagare il segnale di clock al dispositivo slave SD per campionare i dati MOSI, guidare un nuovo dato sulla linea MISO 121 e propagare al master il nuovo dato sulla linea MISO 121;
- met? ciclo di clock per propagare il nuovo dato sulla linea MOSI 122 prima che un nuovo evento di clock si verifichi.
Se un ulteriore ritardo ? viene aggiunto al ritardo di mezzo-ciclo gi? presente sul segnale di clock come ricevuto dal registro a scorrimento 14M dal lato master, questi margini diventano:
- mezzo ciclo di clock pi? ? (mezzo periodo ?) per propagare il segnale di clock al dispositivo slave SD per campionare i dati MOSI, guidare un nuovo dato sulla linea MISO 121 e propagare al master il nuovo dato sulla linea MISO 121;
- mezzo ciclo di clock meno ? (mezzo periodo - ?) per propagare il nuovo dato sulla linea MOSI 122 prima che un nuovo evento di clock si verifichi, e
tali margini possono essere considerati incrementati o ridotti, rispettivamente, del tempo ?.
Possono tuttavia verificarsi condizioni dove ? ? troppo grande, cos? che il secondo margine viene eccessivamente ridotto, il che pu? dar luogo ad una violazione della temporizzazione al dispositivo slave SD. Allo stesso modo, una violazione temporale pu? succedere al dispositivo master MD se i dati ricevuti sulla linea MISO 121 sono ?troppo veloci?.
Un ritardo corretto pu? quindi essere dettato dalla specifica applicazione (per esempio dallo specifico ritardo della scheda di interconnessione, dal ritardo interno del dispositivo slave e cos? via).
Una sorta di meccanismo di ritardo configurabile potrebbe essere desiderabile. Tuttavia, questo implicherebbe ad esempio una procedura software per scrivere e leggere una sequenza predefinita di dati da/verso il dispositivo slave SD con lo scopo di trovare un valore opportuno per il ritardo ?.
? stato osservato che, a parte questi inconvenienti, un tale approccio non risolverebbe il problema relativo alle possibili violazioni di temporizzazione dei dispositivi slave SD.
A titolo di confronto diretto con la figura 1, la figura 2 esemplifica una o pi? forme di attuazione in cui l?elemento di ritardo 16 pu? essere non incluso mentre un elemento di auto-sincronizzazione 18 (che pu? essere implementato ad esempio in forma hardware ed eventualmente compreso nel dispositivo master MD) pu? essere compreso per realizzare una auto-sincronizzazione all?inizio della comunicazione. Una volta che l?auto-sincronizzazione ? completata, ad esempio in una fase di inizializzazione, la comunicazione pu? continuare ad una velocit? di picco come permesso ad esempio dal ritardo fisico.
In una o pi? forme di attuazione, un tale meccanismo di auto-sincronizzazione pu? essere trasparente al software eseguito dal sistema cos? che nessuna specifica attenzione deve essere rivolta a questo punto durante lo sviluppo dell?applicazione.
In una o pi? forme di realizzazione come esemplificato in figura 2, il registro a scorrimento master 14M pu? essere temporizzato con lo stesso clock CLK usato per generare un segnale di clock SPI nel generatore 10. In una o pi? forme di attuazione CLK pu? avere una frequenza due volte il clock SPI FCLK.
In una o pi? forme di realizzazione, il modulo di auto-sincronizzazione 18 pu? essere aggiunto e utilizzato per generare un segnale di abilitazione EN (enable) per il registro a scorrimento 14M.
In una o pi? forme di realizzazione, i dati ricevuti sulla linea MISO 121 possono quindi essere scritti nel registro a scorrimento 14M se il modulo di autosincronizzazione 18 genera un corrispondente segnale di abilitazione.
In una o pi? forme di attuazione, il modulo 18 pu? gestire la fase di inizializzazione e rendere possibile per guidare il segnale di abilitazione con la corretta temporizzazione in una modalit? a massima velocit? (fullspeed mode).
In una o pi? forme di realizzazione un tale approccio pu? essere insensibile a ciascun ritardo nel cammino che comprende il generatore di clock SPI 10, il registro a scorrimento slave 14S e il registro a scorrimento master 14M, che pu? essere pi? di un ciclo di clock.
Come schematicamente rappresentato nel diagramma di flusso della figura 3 l?inizializzazione pu? essere eseguita ad esempio quando viene iniziata una nuova comunicazione SPI (come attivata da un segnale N-SPI) ad esempio dopo l?accensione o se esternamente richiesto ad esempio via software, da altri dispositivi periferici e cos? via.
In una o pi? forme di realizzazione, in un passo 100 il modulo 18 pu? verificare se l?inizializzazione ? richiesta e nel caso di un esito positivo del passo 100 l?inizializzazione pu? essere eseguita in un passo 102 (eventualmente mentre pochi bit sono trasmessi ad una velocit? ridotta) per poi passare al funzionamento a massima velocit? 104 una volta che l?inizializzazione ? completata. Tale condizione pu? essere raggiunta direttamente dal passo 100 se la verifica in esso eseguita rivela che nessuna inizializzazione ? richiesta (esito negativo del passo 100).
In una o pi? forme di realizzazione, l?inizializzazione pu? essere eseguita ad una velocit? ridotta, ad esempio con un bit di dati trasferito ogni K cicli di clock finch? l?inizializzazione ? completata. Dopodich?, una modalit? a pieno funzionamento (full operating Mode) (passo 104) pu? essere automaticamente selezionata, con ad esempio un bit di dati trasferito ad ogni ciclo di clock SPI (ad esempio due cicli CLK) secondo lo standard di comunicazione SPI.
Come meglio specificato nel seguito, in una o pi? forme di attuazione, trasferire un bit di dati ogni K cicli di clock finch? l?inizializzazione ? completata pu? essere raggiunto ad esempio generando sulla linea di clock 123 un impulso ogni K cicli di clock.
In una o pi? forme di attuazione, l?inizializzazione pu? essere completata dopo che una transizione da 0 a 1 ? rilevata sulla linea MISO 121 (linea di ingresso al dispositivo master MD).
Si apprezzer? che la scelta della transizione usata per la rilevazione pu? dipendere dalle condizioni di reset della linea MISO 121, cos? che una transizione da 1 a 0 pu? essere utilizzata al posto della transizione da 0 a 1.
In una o pi? forme di attuazione, durante l?inizializzazione, i dati ricevuti sulla linea MISO 121 non verranno persi e potranno essere memorizzati nel registro a scorrimento 14M.
Il principio di funzionamento come considerato nel seguito ? inoltre esemplificato nei diagrammi delle figure 4 a 6.
Questi diagrammi sono essenzialmente cronogrammi che rappresentano, su una base temporale comune, il possibile comportamento dei segnali di clock CLK, SCLK, il segnale MISO sulla linea di ingresso al dispositivo master MD (il segnale MISO essendo assunto avere un tempo di ?on? due volte il ciclo del segnale di clock CLK) e un segnale di conteggio CNT che verr? discusso nel seguito.
Gli esempi si riferiscono per semplicit? al funzionamento nel caso in cui un singolo impulso di clock SPI SCLK sia generato.
Nella rappresentazione esemplificativa di figura 4: - lo stato di reset della linea MISO 121 ? 0;
- il dato ricevuto sulla linea MISO 121 dal dispositivo slave SD come una conseguenza dell?impulso generato sul clock SPI SCLK ? ?1?;
- siccome il segnale MISO ? guidato dal dispositivo slave SD in modo sincrono con il clock SPI SCLK, si pu? assumere che la durata dei dati sulla linea MISO 121 sia uguale a due cicli di clock interni (questa ? la durata corrispondente alla comunicazione a massima velocit?, ad esempio assumendo che il clock SPI SCLK venga commutato ad una velocit? di picco);
- un contatore CNT sincrono con il clock interno CLK viene avviato nello stesso momento in cui l?impulso ? generato sul clock SPI.
La durata dell?impulso sulla linea MISO 121 pu? quindi essere uguale a due cicli CLK, cos? che due fronti di salita successivi del segnale CLK possono essere utilizzati per campionare i dati. Nel diagramma pi? basso della figura 4, gli istanti corrispondenti a questi fronti sono denominati come ?candidato 1? e ?candidato 2?.
Uno di questi fronti di salita pu? essere preferibile rispetto all?altro, il miglior candidato essendo quello che fornisce il pi? grande margine (ovvero quello pi? lontano dall?istante in cui il segnale MISO sulla linea 121 cambia).
Nel diagramma pi? basso di figura 4, questi margini possono essere denominati M1 (candidato 1) e M2 (candidato 2).
Se si suppone che la distanza tra i candidati sia un ciclo CLK e la durata dei dati MISO sia due cicli CLK, la somma dei due margini M1 e M2 ? un ciclo di clock CLK Tclk, ovvero M1+M2 = Tclk.
Di conseguenza, il miglior candidato pu? corrispondere ad un margine uguale a met? periodo di clock o maggiore.
Nell?esempio rappresentato in figura 4, il miglior candidato sarebbe il candidato 1 che corrisponde al valore di conteggio CNT uguale a 1. Il conteggio che identifica il miglior candidato pu? essere denominato Safe Sampling Time (SST).
Il passo di inizializzazione (102 in figura 3) pu? quindi aspirare a trovare automaticamente il miglior candidato, che ? SST. Una volta identificato, il valore SST pu? essere utilizzato come un ritardo per il clock SPI generato internamente (ovvero l?uscita SCLK del generatore di clock SPI 10).
In una o pi? forme di realizzazione, una versione ritardata del clock SPI internamente generato pu? quindi essere utilizzata per attivare il segnale di abilitazione per il registro a scorrimento 14M.
In una o pi? forme di realizzazione, un valore per SST pu? essere trovato sincronizzando il segnale MISO utilizzando i fronti di discesa del clock CLK (o, eventualmente, i fronti di salita del segnale invertito CLK).
Un caso esemplificativo basato su un tale approccio ? presentato nelle figure 5 e 6.
Nella figura 5 una sincronizzazione a forza bruta ? assunta ad esempio mettendo in cascata due flip-flop di tipo D (come meglio dettagliato nel seguito) cos? che un MISO sincronizzato (denominato S_MISO@!CLK) pu? salire dopo due fronti di discesa dei segnali CLK.
Il valore SST pu? quindi essere il valore di conteggio nell?istante in cui il MISO sincronizzato sale, meno 1 (ad esempio SST=CNT-1=1).
Come esemplificato nella figura 5, il segnale MISO pu? essere asserito un po? dopo il fronte di discesa di CLK, cos? che M1 sar? pi? piccolo di M2 e il segnale MISO sincronizzato sar? asserito un ciclo CLK dopo. Questo pu? comportare che il contatore venga congelato un ciclo pi? tardi (ad esempio SST=CNT-1=2).
Il diagramma di figura 6 mostra una situazione simile in cui il miglior candidato identificato congelando il segnale di conteggio CNT attraverso una istantanea SNS del segnale MISO sincronizzato sar? il secondo invece del primo.
In una o pi? forme di attuazione, il valore SST trovato come sopra descritto corrisponder? al miglior candidato. Una incertezza pu? verificarsi quando il segnale MISO cambia in prossimit? del fronte di discesa del segnale CLK, cos? che la variazione pu? non essere catturata dal modulo di sincronizzazione 18. Tale comportamento pu? essere accettabile in quanto in queste condizioni i due candidati (M1 e M2) saranno pi? o meno equivalenti tra loro.
Si pu? notare in modo simile che lo stesso principio pu? essere esteso a candidati validi corrispondenti a fronti di discesa. In questo modo, quattro candidati possono essere identificati con il migliore corrispondente a un margine in linea principale uguale a un periodo di clock o maggiore. In questo caso, possono essere generate due versioni del segnale MISO sincronizzato, cio? il primo ottenuto dalla sincronizzazione sui fronti di discesa e l?ultimo ottenuto dalla sincronizzazione sui fronti di salita (come dettagliato nel seguito).
Il diagramma a blocchi della figura 7 ? esemplificativo di una possibile implementazione di un modulo di auto-sincronizzazione 18 che genera un segnale di abilitazione EN per il registro a scorrimento 14M, gestendo anche il funzionamento dell?interfaccia STI cos? che, dopo l?inizializzazione, lo scambio di dati sul collegamento (linee 121, 122) ? sincronizzato in funzione delle transizioni MISO rilevate durante l?inizializzazione.
In una o pi? forme di attuazione, il modulo 18 pu? comprendere un sotto-modulo inizializzatore 180 configurato per guidare un time shifter 182.
In una o pi? forme di attuazione, l?inizializzatore 180 pu? essere responsabile di trovare il valore SST come dettagliato nel seguito.
In una o pi? forme di attuazione come esemplificato in figura 7, in aggiunta al segnale di clock CLK, l?inizializzatore 180 pu? essere sensibile al segnale MISO sulla linea 121, al segnale SCLK sulla linea 123 e ad un segnale di inizio (start) indicativo che l?inizializzazione potrebbe essere richiesta (vedi anche il diagramma di flusso della figura 3).
L?inizializzatore 180 pu? quindi emettere segnali di modalit? e di attivazione al generatore di clock SP 10 cos? come il valore SST al time shifter 182.
Pu? essere prevista una porta AND 184 per alimentare il time shifter 182 con il prodotto logico del segnale di modalit? e del segnale SCLK (cos? che il time shifter 182 pu? essere alimentato con il segnale SCLK quando questo tipo di funzionamento ? abilitato dal segnale di modalit? -Mode signal).
Una porta OR 186 pu? generare un segnale di abilitazione EN (enable) per il registro a scorrimento 14M come somma logica del segnale di attivazione (trigger) e del segnale di uscita dal time shifter 182.
In una o pi? forme di attuazione, il time shifter pu? comprendere un insieme di flip-flop in cascata FF1,? FFN che ? alimentato con l?uscita dalla porta AND 184 e guidato (in termini di numero di flip-flop attraversati dal segnale che viene ritardato) dal segnale SST.
In una o pi? forme di attuazione, l?inizializzatore 180 pu? anche controllare la commutazione dalla modalit? di inizializzazione alla modalit? a pieno funzionamento (attraverso il segnale di modalit?). Quando l?inizializzatore 180 riceve il comando di inizio rappresentato dal segnale di inizio (start signal), l?inizializzazione pu? essere eseguita con la modalit? di funzionamento guidata ad esempio dallo 0. Una volta che l?inizializzazione ? completata la modalit? pu? essere guidata ad esempio da 1.
Nella modalit? a pieno funzionamento (?full?), il generatore di clock SPI 10 emette in uscita un segnale di clock SP alla massima velocit?.
Diversamente, in una o pi? forme di attuazione, durante l?inizializzazione, l?inizializzatore 180 pu? forzare la generazione di un impulso sul clock SPI ogni K cicli di CLK (dove K ? un parametro che pu? ad esempio essere configurato al momento della progettazione o programmato in un registro).
In una o pi? forme di attuazione, tale generazione pu? essere forzata per mezzo di un segnale denominato Trigger. Quando il segnale di Trigger ? asserito, il generatore di clock SPI 10 pu? emettere in uscita un impulso di clock SPI (che tende ad attivare il clock SPI con il segnale di Trigger). Allo stesso tempo, il segnale di Trigger pu? essere utilizzato per abilitare il registro a scorrimento 14M cos? che i dati ricevuti sulla linea MISO 121 (ad esempio come generati dal precedente impulso di clock SPI) non vengano persi.
Quando nella modalit? ?full?, il time shifter 182 pu? essere responsabile di ritardare tutti gli impulsi di clock SPI di una quantit? uguale a SST. Come mostrato, tale compito pu? essere effettuato mediante una catena di flipflop la cui lunghezza ? definita in funzione del valore di SST, con l?uscita dal time shifter 182 utilizzata come segnale di abilitazione per il registro a scorrimento 14M. Il diagramma a blocchi di figura 8 ? esemplificativo di una possibile implementazione dell?inizializzatore 180.
In una o pi? forme di attuazione, questo pu? comprendere un sincronizzatore a ?forza bruta? 1801 comprendente due flip-flop in cascata che agiscono ad esempio sui fronti di discesa del segnale CLK per generare una versione sincronizzata del segnale MISO. Questo pu? essere alimentato a un rilevatore di transizione 1802 che pu? rilevare una transizione (ad esempio la transizione da 0 a 1) del segnale MISO sincronizzato.
In una o pi? forme di attuazione, il rilevatore di transizione pu? comprendere una porta AND che riceve:
- come un ingresso, il segnale di uscita dal sincronizzatore 1801, e
- come altro ingresso, una versione logicamente invertita dell?uscita dal flip-flop alimentato con lo stesso segnale di uscita dal sincronizzatore 1801.
Entrambi i circuiti di sincronizzazione 1801 e il circuito di rilevamento della transizione 1802 possono comprendere flip-flop temporizzati con il segnale CLK.
L?uscita dal rilevatore di transizione 1802 pu? essere utilizzata per azionare il segnale di modalit? rendendo quindi possibile per la modalit? di inizializzazione di essere forzata appena il segnale di inizio ? ricevuto. Il segnale modalit? pu? essere generato ad esempio attraverso un altro flip-flop 1803 che riceve l?uscita dal rilevatore di transizione 1802 ed ? temporizzato dal segnale di clock CLK essendo anche sensibile al segnale di inizio (rst), questo segnale essendo anche inviato al circuito di sincronizzazione 1801 e al rilevatore di transizione 1802.
Una macchina a stati finiti (FSM) 1804 (ad esempio una macchina a stati finiti a un bit) pu? rilevare un comando di start cos? che, non appena tale segnale di avvio ? asserito, un contatore 1805 (ad esempio un contatore a 2/3 bit) pu? essere avviato mentre un ingresso di arresto associato viene forzato a 0 e la macchina a stati finiti 1804 genera un impulso del segnale di Trigger e sul contatore 1805.
Il contatore pu? quindi essere resettato e iniziare a contare non appena viene generato un impulso del clock interno SP. Questo pu? essere suggerito dall?uscita di una porta AND associata 1806 quando questa va a ?1? come risultato del prodotto logico del clock SCLK e del segnale (logicamente invertito) di modalit?.
Se una transizione (ad esempio da 0 a 1) ? rilevata prima del timeout definito come una funzione del valore K, il contatore 1805 pu? fermarsi, con la modalit? di funzionamento commutata a ?full? e il valore calcolato SST, ad esempio sottraendo un valore fisso 2 dal valore del contatore, ad esempio in 1807.
Se dopo K cicli una transizione (ad esempio da 0 a 1) non ? rilevata (CNT=K), la macchina a stati finiti 1804 riceve il comando per generare un nuovo impulso sul Trigger.
Fatti salvi i principi alla base, i particolari e le forme di attuazione potranno variare, anche in modo significativo, rispetto a quanto ? stato descritto a titolo di puro esempio non limitativo, senza per questo uscire dall?ambito di protezione.
L?ambito di protezione ? definito dalle rivendicazioni annesse.

Claims (10)

  1. RIVENDICAZIONI 1. Procedimento per il funzionamento di una interfaccia di protocollo seriale in un dispositivo di comunicazione (MD) per scambiare dati (MOSI, MISO) tramite un link di comunicazione (121, 122, 123), in cui detto scambio di dati comprende: - inviare dati di uscita (MOSI) tramite detto link di comunicazione (122), e - ricevere dati di ingresso (MISO) su detto link di comunicazione (122), detti dati di ingresso (MISO) essendo sincroni con un segnale di clock (SCLK) generato in detto dispositivo di comunicazione (MD) e propagato tramite detto link di comunicazione (123), il procedimento comprendendo: - un?operazione di inizializzazione per scambiare dati tramite detto link di comunicazione (121, 122, 123) inviando dati di uscita (MOSI) su detto link di comunicazione (122) ad una prima velocit? dati, - rilevare una transizione di segnale (SNS) in detti dati di ingresso (MISO) ricevuti tramite detto link di comunicazione (121), e - una volta che detta transizione viene rilevata, scambiare dati tramite detto link di comunicazione (121, 122, 123) ad una seconda velocit? dati, superiore rispetto a detta prima velocit? dati, con detto scambio di dati ad una seconda velocit? dati sincronizzato (18) in funzione di detta transizione di segnale (SNS).
  2. 2. Procedimento secondo la rivendicazione 1, comprendente: - selezionare detta prima velocit? dati come 1 bit di dati ogni K cicli di clock di detto segnale di clock, e - selezionare detta seconda velocit? dati come 1 bit di dati per ciascun ciclo di clock di detto segnale di clock.
  3. 3. Procedimento secondo la rivendicazione 1 o la rivendicazione 2, comprendente memorizzare (14M) detti dati di ingresso come ricevuti tramite detto link di comunicazione (121) durante lo scambio di dati su detto link di comunicazione (121, 122, 123) a detta prima velocit? dati.
  4. 4. Procedimento secondo una qualsiasi delle precedenti rivendicazioni, comprendente sincronizzare (18) la memorizzazione (14M) di detti segnali di ingresso (MISO) ricevuti tramite detto link di comunicazione (121) a detta seconda velocit? dati in funzione di detta transizione di segnale (SNS).
  5. 5. Procedimento secondo la rivendicazione 4, in cui detta sincronizzazione (18) di detta memorizzazione (14M) comprende ritardare (182) detti segnali di ingresso (MISO) ricevuti tramite detto link di comunicazione (121) a detta seconda velocit? dati in funzione di detta transizione di segnale (SNS).
  6. 6. Il procedimento secondo una qualsiasi delle precedenti rivendicazioni, comprendente: - rilevare una pluralit? di transizioni di segnale candidate in detti segnali di ingresso (MISO) ricevuti tramite detto link di comunicazione (121) a detta prima velocit? dati, e - selezionare una transizione per iniziare lo scambio di dati su detto link di comunicazione (121, 122, 123) a detta seconda velocit? dati come una di dette transizioni candidate avente un margine maggiore (M1, M2) di entrambi un fronte di salita o un fronte di discesa di detto segnale di clock (CLK).
  7. 7. Procedimento secondo la rivendicazione 6, comprendente: - iniziare un conteggio (1805) sincrono con detto segnale di clock (CLK) generato in detto dispositivo di comunicazione (MD), - congelare detto conteggio (1805) all?occorrenza di una transizione in detti dati di ingresso (MISO) ricevuti tramite detto link di comunicazione (121), preferibilmente dopo la sincronizzazione con detto segnale di clock (CLK) generato in detto dispositivo di comunicazione (MD), e - selezionare detta transizione per iniziare lo scambio di dati tramite detto link di comunicazione (121, 122, 123) a detta seconda velocit? dati in funzione del valore di detto conteggio quando congelato.
  8. 8. Dispositivo di comunicazione (MD) configurato per scambiare dati (MOSI, MISO) tramite un link di comunicazione (121, 122, 123) in cui detto scambio di dati comprende: - inviare dati di uscita (MOSI) tramite detto link di comunicazione (122), e - ricevere dati di ingresso (MISO) tramite detto link di comunicazione (121), detti dati di ingresso (MISO) sincroni con il segnale di clock (SCK, SCLK) generato nel dispositivo di comunicazione (MD) e propagato tramite detto link di comunicazione (123), il dispositivo comprendendo un modulo sincronizzatore (18) configurato per: - inizializzare il funzionamento del dispositivo scambiando dati tramite detto link di comunicazione (121, 122, 123) inviando dati di uscita (MOSI) tramite detto link di comunicazione (122) ad una prima velocit? dati, - rilevare una transizione di segnale (SNS) in detti dati di ingresso (MISO) ricevuti tramite detto link di comunicazione (121) a detta prima velocit? dati e, una volta che detta transizione ? rilevata, iniziare lo scambio di dati tramite detto link di comunicazione (121, 122, 123) ad una seconda velocit? dati, maggiore della prima velocit? dati, con detto scambio di dati a detta seconda velocit? dati sincronizzato (18) in funzione di detta transizione di segnale (SNS), il dispositivo configurato per funzionare secondo il procedimento di una qualsiasi delle rivendicazioni 1 a 7.
  9. 9. Apparecchiatura comprendente: - un dispositivo di comunicazione (MD) secondo la rivendicazione 8, - un dispositivo di comunicazione complementare (SD) configurato per ricevere da detto dispositivo di comunicazione (MD) detti dati di uscita (MOSI) e per inviare a detto dispositivo di comunicazione (MD) detti dati di ingresso (MISO) sincroni con detto segnale di clock (SCLK) generato in detto dispositivo di comunicazione (MD), e - detto link di comunicazione (121, 122, 123) per scambiare detti dati (MOSI, MISO) tra detto dispositivo di comunicazione (MD) e detto dispositivo di comunicazione complementare (SD).
  10. 10. Un prodotto di comunicazione, preferibilmente un microcontrollore, comprendente il dispositivo di comunicazione (MD) della rivendicazione 8.
ITUB2015A001177A 2015-05-26 2015-05-26 Interfaccia auto-sincronizzante, dispositivo e procedimento corrispondenti ITUB20151177A1 (it)

Priority Applications (3)

Application Number Priority Date Filing Date Title
ITUB2015A001177A ITUB20151177A1 (it) 2015-05-26 2015-05-26 Interfaccia auto-sincronizzante, dispositivo e procedimento corrispondenti
US14/969,642 US9990329B2 (en) 2015-05-26 2015-12-15 Interface for a communication device and related methods
EP15202773.6A EP3098720B1 (en) 2015-05-26 2015-12-28 A self-synchronizing interface, corresponding device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ITUB2015A001177A ITUB20151177A1 (it) 2015-05-26 2015-05-26 Interfaccia auto-sincronizzante, dispositivo e procedimento corrispondenti

Publications (1)

Publication Number Publication Date
ITUB20151177A1 true ITUB20151177A1 (it) 2016-11-26

Family

ID=53794441

Family Applications (1)

Application Number Title Priority Date Filing Date
ITUB2015A001177A ITUB20151177A1 (it) 2015-05-26 2015-05-26 Interfaccia auto-sincronizzante, dispositivo e procedimento corrispondenti

Country Status (3)

Country Link
US (1) US9990329B2 (it)
EP (1) EP3098720B1 (it)
IT (1) ITUB20151177A1 (it)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289600B2 (en) 2013-08-08 2019-05-14 Qualcomm Incorporated Reducing transmitter encoding jitter in a C-PHY interface using multiple clock phases to launch symbols
US9276731B2 (en) * 2013-08-08 2016-03-01 Qualcomm Incorporated N-phase signal transition alignment
CN107819659B (zh) * 2017-10-24 2020-09-29 七玄驹智能科技(上海)有限公司 一种基于spi的智能级联通信网络
TWI657662B (zh) * 2018-07-19 2019-04-21 新唐科技股份有限公司 信號介面系統及其資料傳送方法
EP3709177B1 (en) * 2019-03-13 2021-03-03 Axis AB Serial peripheral interface master
CN112860613B (zh) * 2021-04-06 2024-04-19 北京集创北方科技股份有限公司 通信系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274997B2 (en) 2012-05-02 2016-03-01 Smsc Holdings S.A.R.L. Point-to-point serial peripheral interface for data communication between devices configured in a daisy-chain
US9753487B2 (en) 2013-03-14 2017-09-05 Micron Technology, Inc. Serial peripheral interface and methods of operating same

Also Published As

Publication number Publication date
US20160350258A1 (en) 2016-12-01
EP3098720A1 (en) 2016-11-30
EP3098720B1 (en) 2018-07-04
US9990329B2 (en) 2018-06-05

Similar Documents

Publication Publication Date Title
ITUB20151177A1 (it) Interfaccia auto-sincronizzante, dispositivo e procedimento corrispondenti
TWI479805B (zh) 外部同步多相位脈波寬度調變訊號
US20140115229A1 (en) Method and system to reduce system boot loader download time for spi based flash memories
JP2013118033A5 (it)
US20090049212A1 (en) Method and systems for mesochronous communications in multiple clock domains and corresponding computer program product
JP4141885B2 (ja) シリアル通信装置
JP2012033251A (ja) データ入力回路
KR20000073449A (ko) 반도체 메모리 장치의 데이터 입력 회로 및 데이터 입력 방법
KR101045070B1 (ko) 반도체 메모리 장치와 반도체 메모리 장치를 포함하는 반도체 시스템 및 그 동작방법
TWI679631B (zh) 基於中繼之雙向顯示介面
KR20100058575A (ko) 지연 회로를 이용한 클록없는 직렬화
US9753487B2 (en) Serial peripheral interface and methods of operating same
US7233543B2 (en) System and method to change data window
JP2018514873A (ja) 集積回路間の通信
JP2009526278A (ja) データインタフェースおよび同期探索方法
US9218030B2 (en) Programming interface and method
TWI522773B (zh) 跨域啓動方法及電子裝置
US7752475B2 (en) Late data launch for a double data rate elastic interface
US8495436B1 (en) System and method for memory testing in electronic circuits
US7839168B2 (en) Circuit with parallel functional circuits with multi-phase control inputs
TWI459401B (zh) 應用於一記憶體電路內複數個記憶區塊的栓鎖系統
Howard et al. Investigation and comparison of bus alternatives for asynchronous circuits
EP3739463A1 (en) Circuit for asynchronous data transfer
RU95939U1 (ru) Устройство синхронизации для систем параллельной пространственной коммутации
Bononi Design of FPGA IP for modular architectures on VirtLAB board