IT202000006322A1 - Sistema di elaborazione comprendente un’interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento - Google Patents

Sistema di elaborazione comprendente un’interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento Download PDF

Info

Publication number
IT202000006322A1
IT202000006322A1 IT102020000006322A IT202000006322A IT202000006322A1 IT 202000006322 A1 IT202000006322 A1 IT 202000006322A1 IT 102020000006322 A IT102020000006322 A IT 102020000006322A IT 202000006322 A IT202000006322 A IT 202000006322A IT 202000006322 A1 IT202000006322 A1 IT 202000006322A1
Authority
IT
Italy
Prior art keywords
data
interface
transmission
circuit
spi
Prior art date
Application number
IT102020000006322A
Other languages
English (en)
Inventor
Rolf Nandlinger
Radek Olexa
Original Assignee
Stmicroelectronics Application Gmbh
St Microelectronics Des & Appl
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 Stmicroelectronics Application Gmbh, St Microelectronics Des & Appl filed Critical Stmicroelectronics Application Gmbh
Priority to IT102020000006322A priority Critical patent/IT202000006322A1/it
Priority to US17/199,418 priority patent/US11734221B2/en
Priority to EP22206499.0A priority patent/EP4152171B1/en
Priority to EP21162262.6A priority patent/EP3885924B1/en
Priority to CN202110311738.XA priority patent/CN113448902A/zh
Publication of IT202000006322A1 publication Critical patent/IT202000006322A1/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
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • 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
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)

Description

DESCRIZIONE dell?invenzione industriale dal titolo:
?Sistema di elaborazione comprendente un?interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento?
TESTO DELLA DESCRIZIONE
Campo Tecnico
Le forme di attuazione della presente descrizione sono relative a interfacce di comunicazione con code, in particolare a un?Interfaccia Periferica Seriale (SPI, ?Serial Peripheral Interface?) comprendente una pluralit? di code.
Sfondo
La Figura 1 rappresenta un tipico sistema elettronico, come il sistema elettronico di un veicolo, comprendente una pluralit? di sistemi di elaborazione 10, come circuiti integrati o sistemi embedded, per es., una FPGA (Field Programmable Gate Array), un Processore di Segnale Digitale (DSP, ?Digital Signal Processor?) o un microcontrollore (per es., dedicato al mercato automotive).
Per esempio, nella Figura 1 sono rappresentati tre sistemi di elaborazione 101, 102 e 103 connessi attraverso un sistema di comunicazione 20 adatto. Per esempio, il sistema di comunicazione pu? comprendere un bus di controllo del veicolo, come un bus CAN (Controller Area Network), ed eventualmente un bus multimediale, come un bus MOST (Media Oriented Systems Transport), connesso al bus di controllo del veicolo attraverso un gateway. Tipicamente, i sistemi di elaborazione 10 sono situati in differenti posizioni del veicolo e possono comprendere, per es., una Unit? di Controllo del Motore (ECU, ?Engine Control Unit?), una Unit? di Controllo della Trasmissione (TCU, ?Transmission Control Unit?), un Sistema Frenante Antiblocco (ABS, ?Anti-lock Braking System?), moduli di controllo della scocca (BCM, ?Body Control Module?), e/o un sistema audio multimediale e/o di navigazione.
Le future generazioni di sistemi di elaborazione, in particolare microcontrollori dedicati alle applicazioni automotive, presenteranno un notevole aumento della complessit?, dovuto principalmente al numero crescente di funzionalit? (come nuovi protocolli, nuove caratteristiche, ecc.) e ai vincoli pi? stringenti per quanto concerne le condizioni operative del sistema (come un consumo di potenza pi? basso, maggiore velocit? e potenza di calcolo, ecc.).
La Figura 2 rappresenta uno schema a blocchi di un esempio di un sistema di elaborazione 10 digitale, come un microcontrollore, che pu? essere usato come uno qualsiasi dei sistemi di elaborazione 10 della Figura 1.
Nell?esempio considerato, il sistema di elaborazione 10 comprende almeno una unit? di elaborazione 102, come un microprocessore, di solito l?Unit? di Elaborazione Centrale (CPU, ?Central Processing Unit?), programmata attraverso istruzioni software. Di solito, il software eseguito dall?unit? di elaborazione 102 ? memorizzato in una memoria di programma 104, come una memoria non volatile, come una memoria Flash o una EEPROM. Generalmente, la memoria 104 pu? essere integrata con l?unit? di elaborazione 102 in un singolo circuito integrato, oppure la memoria 104 pu? essere sotto forma di un circuito integrato separato e pu? essere connessa all?unit? di elaborazione 102, per es., attraverso le piste di una scheda a circuito stampato. Cos?, in generale, la memoria 104 contiene il firmware per l?unit? di elaborazione 102, in cui il termine firmware comprende sia il software di un microprocessore sia i dati di programmazione di un circuito logico programmabile, come una FPGA.
Nell?esempio considerato, l?unit? di elaborazione 102 pu? avere associate una o pi? risorse (hardware) 106, selezionate tra il gruppo di:
- una o pi? interfacce di comunicazione IF, per es. per scambiare dati tramite il sistema di comunicazione 20, come una interfaccia UART (Universal Asynchronous Receiver/ Transmitter), Bus SPI (Serial Peripheral Interface), I<2>C (Inter-Integrated Circuit), bus CAN (Controller Area Network), e/o una interfaccia Ethernet e/o una interfaccia di debug; e/o
- uno o pi? convertitori analogico/digitali AD e/o digitale/analogici DA; e/o
- uno o pi? componenti digitali DC dedicati, come contatori e/o timer hardware, o un coprocessore crittografico; e/o
- uno o pi? componenti analogici AC, come comparatori, sensori, come un sensore di temperatura, ecc.; e/o
- uno o pi? componenti a segnali misti MSC, come un dispositivo di pilotaggio (?driver?) PWM (Pulse-Width Modulation).
Di conseguenza, il sistema di elaborazione digitale 10 pu? supportare differenti funzionalit?. Per esempio, il comportamento dell?unit? di elaborazione 102 ? determinato dal firmware memorizzato nella memoria 104, per es., le istruzioni software che devono essere eseguite da un microprocessore 102 di un microcontrollore 10. Cos?, installando un firmware differente, lo stesso (microcontrollore) hardware pu? essere usato per differenti applicazioni.
La Figura 3 rappresenta un esempio della comunicazione tra due sistemi di elaborazione 101 e 102 mediante un?Interfaccia Periferica Seriale (SPI), cio? un?interfaccia di comunicazione IF del sistema di elaborazione 10 ? un circuito di comunicazione SPI 30. Per esempio, tali interfacce di comunicazione SPI sono spesso usate per connettere un microcontrollore 10 a un dispositivo elettronico periferico, per es. montato sulla stessa scheda a circuito stampato (PCB, ?Printed Circuit Board?) o connesso al microcontrollore 10 mediante un cavo.
Come ben noto nella tecnica, in una comunicazione SPI uno dei dispositivi, per es. il dispositivo 101, ? un dispositivo master e l?altro dispositivo, per es. 102, ? un dispositivo slave, e la comunicazione tra i dispositivi 101 e 102 ? basata su un bus 20 avente quattro segnali (per es., applicati rispettivi pad/pin di un package di un circuito integrato/die rispettivo, e scambiati mediante rispettivi conduttori, come fili o tracce di una PCB), in particolare:
- un segnale di clock SCK fornito dal dispositivo master 101;
- un primo segnale di dati SOUT fornito dal dispositivo master 101, spesso indicato come ?Master Output Slave Input?, che rappresenta i dati forniti in uscita dal master 101 e i dati forniti in ingresso allo slave 102;
- un secondo segnale di dati SIN, fornito dal dispositivo slave 102, spesso indicato come ?Master Input Slave Output?, che rappresenta i dati forniti in ingresso al master 101 e i dati forniti in uscita dallo slave 101; e - un segnale di selezione del chip (?chip select?) periferico PCS fornito dal dispositivo master 101, spesso indicato come ?Slave Select?.
Cos?, la SPI ? un protocollo di comunicazione seriale full-duplex.
Per esempio, la Figura 4 rappresenta schematicamente una possibile comunicazione SPI. A un dato tempo t0, il segnale di selezione di slave PCS ? deasserito e impostato a un primo livello logico (per es., alto) che indica che la comunicazione/slave ? disabilitata (stato di inattivit? (?idle?)). A un istante t1, il dispositivo master 101 imposta il segnale PCS a un secondo livello logico (per es., basso) che indica che la comunicazione/slave ? abilitata. Durante una fase di trasmissione tra un istante t2 e un istante t3, il dispositivo master 101 genera quindi un dato primo numero di impulsi nel segnale di clock SCK e, per ciascun impulso di clock nel segnale SCK, imposta il segnale SOUT alto o basso, trasmettendo sequenzialmente con ci? una parola di dati di trasmissione che consiste di una sequenza di bit. Di conseguenza, il dispositivo slave 102 pu? campionare il segnale SOUT, per es. in risposta al segnale di clock SCK. Opzionalmente, il dispositivo master 101 pu? quindi attendere che il dispositivo slave 12 completi una data operazione (per es., in risposta al comando trasmesso). Durante una fase di ricezione tra un istante t4 e un istante t5, il dispositivo master 101 pu? quindi generare un dato secondo numero di impulsi nel segnale di clock SCK. In risposta a questi impulsi di clock, il dispositivo slave 102 imposta il livello logico del segnale SIN alto o basso, trasmettendo con ci? al dispositivo master 101 sequenzialmente una parola di dati di ricezione che consiste di una sequenza di bit. Di conseguenza, il dispositivo master 101 pu? campionare il segnale SIN, per es. in risposta al segnale di clock SCK. Una volta che la trasmissione ? completata, il dispositivo master 101 imposta di nuovo, a un istante t6, il segnale PCS al primo livello logico (per es., alto) che indica che la comunicazione/slave ? disabilitata. Generalmente, a causa del fatto che la comunicazione ? full duplex, sia il dispositivo master sia il dispositivo slave possono anche trasmettere dati contemporaneamente.
La Figura 5 rappresenta che anche una pluralit? di dispositivi slave 102, 103 e 104 pu? essere connessa allo stesso dispositivo master 101, in particolare alla stessa interfaccia di comunicazione 30, in cui ciascun dispositivo slave 102, 103 e 104 comprende terminali per scambiare i segnali SCK, SOUT e SIN con il dispositivo master 101, cio? i segnali SCK, SOUT e SIN sono condivisi, e ciascun dispositivo slave 102, 103 e 104 pu? comprendere un terminale di selezione di slave PCS connesso a un rispettivo terminale di selezione di slave del dispositivo master 101, cio? il dispositivo master 101 genera una pluralit? di segnali di selezione di slave PCS1, PCS2, PCS3, uno per ciascun dispositivo slave 102, 103 e 104, cio? il segnale di selezione di slave PCS ? un segnale dedicato. Generalmente, i segnali di selezione di slave PCS1, PCS2, PCS3 possono essere generati direttamente dal circuito di interfaccia 30 e/o mediante comandi software eseguiti dal circuito di elaborazione 102, per es. usando i pin di I/O General Purpose (GPIO, ?General Purpose I/O?) del sistema di elaborazione 101.
Mentre la comunicazione SPI ? ben nota nella tecnica, sfortunatamente ? stato usato un numero apprezzabile di varianti di implementazione. Per esempio, spesso uno o pi? dei seguenti parametri possono cambiare tra vari dispositivi slave:
- il numero dei bit da trasmettere dal dispositivo master 101 al dispositivo slave 102, cio? la lunghezza di una parola di dati di trasmissione (che pu? anche essere variabile in funzione di un comando trasmesso al dispositivo slave) e/o il numero dei bit da ricevere da parte del dispositivo master 101 dal dispositivo slave 102, cio? la lunghezza di una parola di dati di ricezione (che pu? anche essere variabile in funzione di un comando trasmesso al dispositivo slave);
- la frequenza di clock o la gamma di frequenze di clock supportata del segnale SCK;
- la polarit? del clock, cio? il livello logico del segnale di clock SCK durante lo stato di inattivit?; e
- la fase del clock, cio? se il dispositivo slave trasmette dati in risposta a un fronte di salita o di discesa del segnale di clock SCK.
Di conseguenza, quando una pluralit? di dispositivi slave 102, 103 e 104 ? connessa a un dispositivo master 101, ciascuna trasmissione di dati pu? richiedere una rispettiva riconfigurazione dell?interfaccia 30 del dispositivo master 101 al fine di scambiare dati correttamente con il rispettivo dispositivo slave 102, 103 o 104.
In generale, l?interfaccia di comunicazione SPI 30 comprende un?interfaccia 32 attraverso cui il circuito di elaborazione 102 pu? scambiare dati con l?interfaccia SPI 32. Spesso, una tale interfaccia 32 ? un?interfaccia a registri, in cui l?interfaccia 32 ? associata a dati indirizzi nell?intervallo di memoria del circuito di elaborazione 102.
In passato ? stata anche proposta una cosiddetta interfaccia periferica seriale con code (QSPI, ?Queued Serial Peripheral Interface?), in cui l?interfaccia 32 comprende una coda di dati usata per trasferire i dati attraverso il bus SPI 20. Tipicamente, in questo caso, l?interfaccia 32 comprende una prima memoria (di trasmissione, TX) 320, come una FIFO (First-In First-Out), nella quale sono memorizzati i dati da trasmettere e una seconda memoria (di ricezione, RX) 322, come una memoria FIFO, nella quale sono memorizzati i dati ricevuti. Di conseguenza, in questo caso, il circuito di elaborazione 102 pu? scambiare dati con un dispositivo slave mediante l?interfaccia 32 configurando l?interfaccia SPI 30, memorizzando (sequenzialmente) i dati nella memoria di TX 320, e leggendo (sequenzialmente) opzionalmente i dati ricevuti dalla memoria di RX 322.
Di conseguenza, come anche rappresentato nella Figura 6, un?interfaccia SPI 30 pu? essere usata per comunicare con una pluralit? di dispositivi slave 102..106. Le comunicazioni separate, con possibili caratteristiche differenti e/o la generazione del rispettivo segnale di selezione di slave devono essere gestite dal dispositivo master 101. Di conseguenza, la comunicazione con una pluralit? di differenti dispositivi slave 102..106 pu? essere abbastanza complessa da un punto di vista di implementazione dell?interfaccia SPI 30.
Inoltre, l?inventore ha osservato che spesso ? preferibile gestire la comunicazione con un dato dispositivo slave 102..106 mediante un rispettivo compito (?task?)/modulo software, per es. i compiti SWT1..SWT5 per la comunicazione con i dispositivi slave 102..106, rispettivamente. Generalmente, ciascun compito pu? fare riferimento all?attivit? di un sistema operativo OS o un?applicazione APP, per es. eseguita da un tale sistema operativo OS.
Tuttavia, quando ? usata una singola interfaccia di comunicazione SPI 30, differenti compiti software eseguiti dal circuito di elaborazione 102 possono dovere scambiare dati con l?interfaccia 32, come le memorie 320 e 322.
L?inventore ha osservato che questo problema potrebbe essere risolto fornendo una pluralit? di interfacce SPI all?interno del sistema di elaborazione 10. Tuttavia, questa soluzione pu? essere infattibile perch? ciascuna interfaccia SPI richiede quattro pin del sistema di elaborazione 10.
La Figura 7 rappresenta a questo riguardo una tipica architettura software. Spesso, il software eseguito da un microprocessore 102 comprende un sistema operativo OS, che ? configurato per eseguire almeno un?applicazione APP. Di solito, il sistema operativo OS comprende driver DRV, che permettono l?uso di date risorse hardware HW del sistema di elaborazione 10, come le risorse 106, come l?interfaccia di comunicazione SPI 30. Per esempio, un driver DRV pu? gestire la comunicazione con l?interfaccia SPI 30, per es. fornendo date funzioni software al sistema operativo OS e/o all?applicazione (alle applicazioni) APP, che permettono di configurare l?interfaccia SPI 30, di trasmettere dati e di leggere i dati ricevuti. Questi comandi software possono quindi essere convertiti dal driver DRV in comandi che accedono all?interfaccia 32 dell?interfaccia di comunicazione SPI, per es. al fine di programmare i registri di una rispettiva interfaccia a registri 32.
L?inventore ha osservato che un tale driver hardware DRV di un sistema operativo OS eseguito dal circuito di elaborazione 102 potrebbe cos? gestire differenti interfacce software virtuali per lo strato software superiore (per es., il sistema operativo OS o un?applicazione APP), e potrebbe quindi effettuare la configurazione e lo scambio di dati con la singola interfaccia SPI hardware IF. Tuttavia, questo ha vari svantaggi. Per esempio, da una parte, questo pu? comportare problemi di sicurezza perch? per es. ciascun compito software SWT potrebbe accedere ai registri dell?interfaccia SPI 30, leggendo eventualmente con ci? i dati associati a un altro compito SWT. Inoltre, ciascun compito software SWT ? atto a scambiare dati con tutti i dispositivi slave, mentre in alcuni casi sarebbe preferibile che un dato compito software SWT possa scambiare soltanto dati con un dato dispositivo slave. D?altra parte, il driver DRV deve essere atto a gestire richieste di scrittura/lettura parallele. Per esempio, richieste di trasmissione parallele implicano che deve essere presa una decisione su quale compito SWT pu? trasmettere per primo i dati. Tuttavia, quando si usa per es. una SPI con code 30, l?interfaccia 32 comprende soltanto una singola coda di trasmissione 320. Di conseguenza, al fine di gestire anche differenti priorit? di comunicazione, sarebbe necessario che il driver DRV gestisca code virtuali aggiuntive. Tutte queste interfacce emulate in software richiederebbero cos? uno spazio di memoria e una potenza di elaborazione supplementare.
Sintesi
In considerazione di quanto precede, uno scopo delle varie forme di attuazione della presente descrizione ? di fornire soluzioni perfezionate per un?interfaccia di comunicazione SPI.
Secondo una o pi? forme di attuazione, uno o pi? degli scopi precedenti sono raggiunti per mezzo di un sistema di elaborazione comprendente un?interfaccia periferica seriale con code avente le caratteristiche esposte specificamente nelle rivendicazioni che seguono. Le forme di attuazione concernono inoltre un relativo circuito integrato, dispositivo e procedimento.
Le rivendicazioni sono parte integrante dell?insegnamento tecnico della descrizione qui fornita.
Come menzionato in precedenza, varie forme di attuazione della presente descrizione sono relative a un sistema di elaborazione, come un microcontrollore, comprendente un circuito di elaborazione digitale, preferibilmente programmabile in funzione di un firmware memorizzato in una memoria non volatile, e un circuito SPI. In varie forme di attuazione, il circuito SPI comprende un?interfaccia di comunicazione SPI hardware, un arbitro e una pluralit? di circuiti di interfaccia.
In varie forme di attuazione, l?interfaccia di comunicazione SPI hardware comprende uno o pi? registri a scorrimento configurati per generare un primo segnale di dati seriale in funzione di una parola di dati di trasmissione e una parola di dati di ricezione campionando un secondo segnale di dati seriale, e un circuito di controllo configurato per generare un segnale di clock per l?uno o pi? registri a scorrimento. In varie forme di attuazione, l?arbitro ? configurato per fornire la parola di dati di trasmissione all?interfaccia di comunicazione SPI hardware e ricevere la parola di dati di ricezione dall?interfaccia di comunicazione SPI hardware.
In varie forme di attuazione, ciascun circuito di interfaccia comprende una memoria FIFO di trasmissione, una memoria FIFO di ricezione e un circuito di controllo di interfaccia. Specificamente, il circuito di controllo di interfaccia ? configurato per ricevere uno o pi? primi pacchetti di dati dal circuito di elaborazione digitale e memorizzare l?uno o pi? primi pacchetti di dati ricevuti nella memoria FIFO di trasmissione. In seguito, il circuito di controllo di interfaccia legge sequenzialmente l?uno o pi? primi pacchetti di dati dalla memoria FIFO di trasmissione, estrae dall?uno o pi? primi pacchetti di dati almeno una parola di dati di trasmissione, e fornisce l?almeno una parola di dati di trasmissione estratta all?arbitro. A sua volta, il circuito di controllo di interfaccia riceve dall?arbitro la parola di dati di ricezione e memorizza uno o pi? secondi pacchetti di dati nella memoria FIFO di ricezione, l?uno o pi? secondi pacchetti di dati comprendendo la parola di dati di ricezione ricevuta. Infine, il circuito di controllo di interfaccia legge sequenzialmente l?uno o pi? secondi pacchetti di dati dalla memoria FIFO di ricezione e trasmette l?uno o pi? secondi pacchetti di dati al circuito di elaborazione digitale.
In varie forme di attuazione, l?uno o pi? primi pacchetti di dati comprendono un comando seguito da almeno una parola di dati di trasmissione, in cui il comando comprende un campo per memorizzare dati che indicano un conteggio dei trasferimenti di dati che identifica il numero di parole di dati di trasmissione che seguono il comando. In questo caso, il circuito di controllo di interfaccia pu? essere configurato per estrarre il comando dall?uno o pi? primi pacchetti di dati, determinare il conteggio dei trasferimenti di dati, estrarre dall?uno o pi? primi pacchetti di dati un numero di parole di dati di trasmissione come indicato dal conteggio dei trasferimenti di dati, e fornire le parole di dati di trasmissione estratte all?arbitro.
Per esempio, in varie forme di attuazione, il circuito SPI comprende un insieme di registri di configurazione globali per specificare una pluralit? di elementi di attributi di trasmissione, in cui ciascun elemento di attributo di trasmissione comprende un rispettivo campo per memorizzare il conteggio dei trasferimenti di dati, e in cui il comando comprende un campo che indica uno degli elementi di attributi di trasmissione. In questo caso, ciascun elemento di attributo di trasmissione pu? anche comprendere uno o pi? campi per memorizzare almeno uno tra: dati che indicano la temporizzazione del segnale di clock, dati che indicano lo stato inattivo del segnale di clock, dati che indicano se l?uno o pi? registri a scorrimento generano il primo segnale di dati seriale e/o campionano il secondo segnale di dati seriale in risposta a un fronte di salita o di discesa del segnale di clock, e dati che indicano il numero dei bit della parola di dati di trasmissione da trasmettere mediante il primo segnale di dati seriale.
In varie forme di attuazione, il comando pu? comprendere anche ulteriori dati di configurazione. Per esempio, in varie forme di attuazione, il circuito di controllo ? configurato per generare una pluralit? di segnali di selezione di slave, e il comando pu? comprendere dati che indicano quale segnale di selezione di slave dovrebbe essere impostato durante la trasmissione delle rispettive parole di dati di trasmissione. In varie forme di attuazione, il comando pu? comprendere anche dati che indicano la priorit? della rispettiva parola di dati di trasmissione estratta fornita all?arbitro. Per contro, in altre forme di attuazione, ciascun circuito di interfaccia comprende un rispettivo insieme di registri di configurazione individuali, in cui ciascun insieme di registri di configurazione individuali comprende uno o pi? campi per memorizzare i dati che indicano la priorit? della rispettiva parola di dati di trasmissione estratta fornita all?arbitro.
Di conseguenza, in varie forme di attuazione, il circuito SPI pu? comprendere un insieme di registri di configurazione globali per configurare l?interfaccia di comunicazione SPI hardware e/o l?arbitro, e ciascun circuito di interfaccia pu? comprendere un rispettivo insieme di registri di configurazione individuali per configurare il rispettivo circuito di interfaccia. In questo caso, rispettivi intervalli di indirizzi di memoria nell?intervallo di indirizzi del circuito di elaborazione digitale possono essere associati all?insieme di registri di configurazione globali e agli insiemi di registri di configurazione individuali, e il sistema di elaborazione pu? essere configurato per limitare l?accesso agli intervalli di indirizzi di memoria per dati compiti software eseguiti dal circuito di elaborazione digitale.
Per esempio, in varie forme di attuazione, il circuito di elaborazione digitale ? configurato per eseguire (e, di conseguenza, pu? anche eseguire) un ipervisore (?hypervisor?) che fornisce una pluralit? di ambienti di esecuzione, in cui ciascun ambiente di esecuzione ? configurato per eseguire un rispettivo sistema operativo. Di conseguenza, in questo caso, l?ipervisore pu? essere configurato per limitare l?accesso agli intervalli di indirizzi di memoria per gli ambienti di esecuzione.
In varie forme di attuazione, il circuito SPI pu? anche scambiare dati con l?unit? di elaborazione digitale mediante richieste di DMA. Per esempio, in varie forme di attuazione, il sistema di elaborazione comprende una memoria connessa all?unit? di elaborazione digitale e un controllore DMA configurato per leggere dati dalla memoria in funzione di una richiesta di lettura di dati ricevuta mediante un primo canale di DMA e per memorizzare dati nella memoria in funzione di una richiesta di scrittura di dati ricevuta mediante un secondo canale di DMA. In questo caso, il circuito SPI pu? comprendere un?interfaccia DMA configurata per comunicare con il controllore DMA, e il circuito di controllo di interfaccia di almeno un circuito di interfaccia pu? essere configurato per ricevere l?uno o pi? primi pacchetti di dati inviando una richiesta di lettura di dati mediante l?interfaccia DMA al controllore DMA, e per trasmettere l?uno o pi? secondi pacchetti di dati inviando una richiesta di scrittura di dati mediante l?interfaccia DMA al controllore DMA.
Specificamente, in varie forme di attuazione, l?almeno un circuito di interfaccia comprende un rispettivo insieme di registri di configurazione individuali per configurare una prima soglia di immissioni (?entry?) libere nella memoria FIFO di trasmissione e una seconda soglia di immissioni riempite nella memoria FIFO di ricezione. In questo caso, il circuito di controllo di interfaccia dell?almeno un circuito di interfaccia pu? essere configurato per determinare se il numero di immissioni libere nella memoria FIFO di trasmissione supera la prima soglia, e per inviare la richiesta di lettura di dati mediante l?interfaccia DMA al controllore DMA quando il numero di immissioni libere nella memoria FIFO di trasmissione supera la prima soglia. Similmente, il circuito di controllo di interfaccia dell?almeno un circuito di interfaccia pu? essere configurato per determinare se il numero di immissioni riempite nella memoria FIFO di ricezione supera la seconda soglia, e per inviare la richiesta di scrittura di dati mediante l?interfaccia DMA al controllore DMA quando il numero di immissioni riempite nella memoria FIFO di ricezione supera la seconda soglia.
Breve descrizione delle figure
Forme di attuazione della presente descrizione saranno ora descritte con riferimento ai disegni annessi, che sono forniti puramente a titolo di esempio non limitativo, e nei quali:
- la Figura 1 rappresenta un esempio di un sistema elettronico comprendente una pluralit? di sistemi di elaborazione;
- la Figura 2 rappresenta un esempio di un sistema di elaborazione, come un microcontrollore;
- la Figura 3 rappresenta un esempio di una comunicazione SPI tra un dispositivo master e un dispositivo slave;
- la Figura 4 rappresenta un esempio di dati scambiati mediante una comunicazione SPI;
- la Figura 5 rappresenta un esempio di una comunicazione SPI tra un dispositivo master e una pluralit? di dispositivi slave;
- la Figura 6 rappresenta un esempio di una pluralit? di compiti software che usano la stessa interfaccia di comunicazione SPI per comunicare con una pluralit? di dispositivi slave;
- la Figura 7 rappresenta un esempio degli strati software del software eseguito da un sistema di elaborazione;
- la Figura 8 rappresenta una forma di attuazione di un?interfaccia di comunicazione SPI secondo la presente descrizione;
- la Figura 9 rappresenta una prima forma di attuazione degli strati software del software eseguito da un sistema di elaborazione;
- la Figura 10 rappresenta una seconda forma di attuazione degli strati software del software eseguito da un sistema di elaborazione;
- la Figura 11 rappresenta una forma di attuazione di un sistema di elaborazione secondo la presente descrizione;
- la Figura 12 rappresenta una terza forma di attuazione degli strati software del software eseguito da un sistema di elaborazione;
- la Figura 13 rappresenta una forma di attuazione ulteriore di un sistema di elaborazione secondo la presente descrizione;
- le Figure da 14 a 18, da 20 a 37 e 39 rappresentano vari registri di configurazione di forme di attuazione di interfacce di comunicazione SPI;
- la Figura 19 rappresenta una forma di attuazione della configurazione delle propriet? di una comunicazione SPI;
- le Figure 38, 40 e 41 rappresentano forme di attuazione di pacchetti di dati forniti a un?interfaccia di comunicazione SPI e di pacchetti di dati ricevuti dall?interfaccia di comunicazione SPI; e
- la Figura 42 rappresenta una forma di attuazione del funzionamento di un circuito di controllo di un?interfaccia di comunicazione SPI.
Descrizione Dettagliata
Nella descrizione che segue, sono illustrati numerosi dettagli specifici, allo scopo di fornire una comprensione approfondita delle forme di attuazione. Le forme di attuazione possono essere attuate senza uno o pi? dei dettagli specifici o con altri procedimenti, componenti, materiali, ecc. In altri casi, operazioni, materiali o strutture ben note non sono illustrate o descritte in dettaglio per evitare di rendere poco chiari certi aspetti delle forme di attuazione.
Un riferimento a ?una forma di attuazione? in tutta questa 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 compaiono in vari 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 non definiscono l?ambito o il significato delle forme di attuazione.
Nelle Figure da 8 a 42 che seguono, le parti, gli elementi o i componenti che sono gi? stati descritti con riferimento alle Figure da 1 a 7 sono indicati con gli stessi riferimenti usati precedentemente in tali Figure; la descrizione di tali elementi descritti precedentemente non sar? ripetuta in seguito al fine di non rendere troppo pesante la presente descrizione dettagliata.
Come menzionato in precedenza, varie forme di attuazione della presente descrizione sono relative a un?interfaccia di comunicazione SPI. Specificamente, in varie forme di attuazione, l?interfaccia di comunicazione SPI fornisce una pluralit? di interfacce al circuito di elaborazione 102, che permette cos? che ciascun compito software SWT che richiede l?uso di un?interfaccia SPI possa usare una rispettiva interfaccia dell?interfaccia di comunicazione SPI.
La Figura 8 rappresenta una prima forma di attuazione di un circuito di interfaccia SPI 30a secondo la presente descrizione. Specificamente, nella forma di attuazione considerata, l?interfaccia SPI 30a comprende un dato numero (n 1), per es. n = 7, di interfacce 320..32n, in cui ciascuna interfaccia 32 comprende una rispettiva coda di trasmissione 3200..320n per memorizzare rispettivi pacchetti di dati di trasmissione TX0..TXn, come una rispettiva memoria FIFO, e una rispettiva coda di ricezione 3220..322n per memorizzare i pacchetti di dati ricevuti RX0..RXn, come una rispettiva memoria FIFO.
Nelle forme di attuazione considerate, le code di trasmissione 3200..320n e le code di ricezione 3220..322n sono connesse a un arbitro 34 configurato per decidere quali dei dati di trasmissione dovrebbero essere forniti a un?interfaccia di comunicazione SPI hardware 36. Per esempio, in varie forme di attuazione, l?interfaccia di comunicazione SPI hardware 36 comprende almeno un registro 360 per memorizzare i dati da trasmettere mediante il segnale SOUT e i dati ricevuti mediante il segnale SIN. Per esempio, l?almeno un registro 360 pu? comprendere uno o pi? registri a scorrimento. Specificamente, nella forma di attuazione considerata, ? usato un singolo registro a scorrimento 360, in cui un ingresso seriale del registro a scorrimento 360 ? connesso al segnale SIN e un?uscita seriale del registro a scorrimento 360 ? connessa al segnale SOUT. Preferibilmente, sono usate interfacce parallele del registro (dei registri) a scorrimento 360 per scambiare (mediante l?arbitro 34) dati tra il registro (i registri) 360 e le code 320 e 322.
Nella forma di attuazione considerata, l?interfaccia di comunicazione SPI hardware 36 comprende anche un circuito di controllo 362 configurato per generare il segnale di clock (seriale) SCK e un dato numero (m 1), per es. m = 12, di segnali di selezione di slave PCS0..PCSm, identificati in seguito anche nella forma di un vettore di dati PCS[m:0], per es. PCS[11:0].
Di conseguenza, nella forma di attuazione considerata, l?arbitro 34 pu? decidere quale delle interfacce 320..32n ? connessa selettivamente all?interfaccia di comunicazione SPI hardware 36. Per esempio, un primo pacchetto di dati TX0,1 pu? essere fornito mediante il segnale di trasmissione TX0 alla coda 3200. In varie forme di attuazione, i pacchetti di dati scambiati mediante i vari segnali TX e RX hanno un dato primo numero di bit, come 8, 16, 32 o 64 bits, e il registro 360 ha un dato secondo numero di bit, come 8, 16, 32 o 64 bits. Preferibilmente, il primo e il secondo numero corrispondono, il secondo numero ? un multiplo del primo numero o il primo numero ? un multiplo del secondo numero.
In varie forme di attuazione, a questo scopo, l?arbitro 34 ? configurato per determinare una richiesta di trasmissione. Per esempio, l?arbitro 34 pu? determinare automaticamente una richiesta di trasmissione monitorando lo stato di riempimento della coda di trasmissione, come un segnale di vuoto che indica se la memoria FIFO ? vuota o se comprende almeno un elemento. In aggiunta o in alternativa, il circuito che richiede una trasmissione pu? impostare un rispettivo segnale di richiesta di trasmissione, come un segnale di innesco (?trigger?) di richiesta di trasmissione hardware o software.
Di conseguenza, in risposta alla richiesta di trasmissione, l?arbitro 34 connette la coda al registro 360, per cui il primo pacchetto di dati TX0,1 ? memorizzato nel registro 360. Generalmente, al fine di riempire il registro 360, soltanto una parte o una pluralit? di pacchetti di dati possono essere letti dalla coda 3200. Tuttavia, come menzionato in precedenza, preferibilmente il registro 360 ha la dimensione di ciascun pacchetto di dati memorizzato nelle code 320/322, che corrisponde preferibilmente alla lunghezza di parola del circuito di elaborazione 102.
Di conseguenza, una volta che i dati sono stati memorizzati nel registro 360, preferibilmente mediante un accesso di scrittura in parallelo al registro 360, il circuito di controllo 362 pu? generare il segnale di clock SCK e pu? impostare almeno uno dei segnali di selezione di slave PCS[m:0]. A questo scopo, come sar? descritto in maggiore dettaglio in seguito, il circuito di controllo 362 pu? avere associato:
- un insieme globale di registri di configurazione, che ? comune per tutte le interfacce 320..32n; e/o
- un insieme di registri di configurazione individuali per ciascuna interfaccia 320..32n.
Per esempio, i registri individuali di una data interfaccia 320..32n possono comprendere dati che identificano le propriet? richieste del segnale di clock SCK, i segnali di selezione di slave PCS[m:0] da impostare, e/o il numero dei bit da trasmettere.
Di conseguenza, in risposta alla configurazione, il circuito di controllo 362 pu? generare un dato primo numero di impulsi di clock per trasmettere sequenzialmente i livelli di bit dei dati memorizzati al registro 360 mediante il segnale SOUT. Se richiesto, il circuito di controllo 362 pu? quindi generare un dato secondo numero di impulsi di clock per campionare il livello di bit del segnale SIN e memorizzare sequenzialmente i bit ricevuti nel registro (nei registri) 360.
Per esempio, ipotizzando che la trasmissione SPI con un dato slave sia basata su una richiesta che comprende 16 bit usati per richiedere dati che hanno 16 bit, l?interfaccia 30a pu? essere configurata per trasmettere parole di dati che hanno 16 bit. In seguito, un primo pacchetto di dati di trasmissione pu? comprendere la richiesta e un secondo pacchetto di dati di trasmissione pu? comprendere dati di default, come una sequenza di bit che ha tutti i bit impostati a ?1? o ?0?. Cos?, in risposta alla trasmissione dei due pacchetti di dati di trasmissione, l?interfaccia SPI 36 fornirebbe un primo pacchetto di dati di ricezione comprendente dati di default, come una sequenza di bit impostati a ?1? o ?0?, e un secondo pacchetto di dati di ricezione comprendente i dati determinati in funzione della richiesta trasmessa.
Una volta che i dati ricevuti sono memorizzati nel registro (nei registri) 360, l?arbitro 34 pu? memorizzare i dati nella coda di ricezione 3220. Specificamente, a causa del fatto che la comunicazione SPI ? basata su una comunicazione master-slave, i dati possono essere ricevuti soltanto in risposta a una richiesta precedente dall?interfaccia 36, che pu? anche essere implicita impostando un segnale di selezione di slave. Di conseguenza, i dati ricevuti sono collegati in modo univoco a una data richiesta di trasmissione effettuata da una data interfaccia 32.
La Figura 9 rappresenta a questo riguardo una forma di attuazione di una architettura software modificata. Specificamente, anche in questo caso, il software eseguito dal microprocessore 102 comprende un sistema operativo OS che ? configurato per eseguire almeno un?applicazione APP. Anche in questo caso, il sistema operativo OS pu? comprendere dei driver DRV, che permettono l?uso di date risorse hardware 106 del sistema di elaborazione 10, come risorse 106, che includono l?interfaccia di comunicazione SPI 30a, come uno o pi? driver DRVx per l?una o pi? risorse 106.
Tuttavia, in questo caso, i driver DRV possono comprendere una pluralit? di driver DRV0..DRVn, in cui ciascun driver DRV0..DRVn ? configurato per gestire la comunicazione con una rispettiva interfaccia 320..32n, per es. fornendo date funzioni software al sistema operativo OS e/o all?applicazione (alle applicazioni) APP, che permettono di configurare l?interfaccia SPI 30, di trasmettere dati e di leggere i dati ricevuti. Questi comandi software possono quindi essere convertiti dal rispettivo driver DRV in comandi che accedono alla rispettiva interfaccia 320..32n. Di conseguenza, nella forma di attuazione considerata, ciascun driver DRV0..DRVn pu? comunicare soltanto con una rispettiva interfaccia 320..32n.
Di conseguenza, i vari compiti software, come le applicazioni APP0..APPn, possono usare un rispettivo driver DRV0..DRVn dedicato.
La Figura 10 rappresenta una seconda forma di attuazione di un?architettura software modificata. Specificamente, in questo caso, il software eseguito dal microprocessore 102 comprende un ipervisore HYP, come un sistema operativo ipervisore.
Un tale ipervisore HYP pu? fornire una pluralit? di ambienti di esecuzione, come un ambiente di esecuzione EEH, e uno o pi? ambienti di esecuzione EEa, EEb, ecc. Specificamente, ciascun ambiente di esecuzione permette di eseguire un rispettivo sistema operativo. Per esempio, gli ambienti di esecuzione EEH, EEa ed EEb possono eseguire rispettivamente sistemi operativi OSH, OSa e OSb. Per esempio, l?ambiente di esecuzione EEH pu? essere usato per eseguire un sistema operativo host, che ? usato per gestire il funzionamento dell?ipervisore HYP. Per contro, gli ambienti di esecuzione EEa ed EEb possono essere usati per eseguire rispettivi sistemi operativi guest OSa e OSb. Di conseguenza, ciascun sistema operativo EEH, EEa ed EEb pu? comprendere anche un rispettivo strato di driver DRVH, DRVa e DRVb. Similmente, anche l?ipervisore HYP pu? comprendere uno strato di driver HYP_DRV.
Di conseguenza, in varie forme di attuazione, l?ipervisore HYP pu? essere configurato, per es. mediante l?ambiente host EEH, per assegnare un dato sottoinsieme di interfacce 320..32n a ciascuno degli ambienti di esecuzione EEH, EEa ed EEb. Per esempio, usando interfacce 320..32n, che sono indirizzabili dall?unit? di elaborazione 102, un?unit? di protezione della memoria hardware del sistema di elaborazione 10 o un?unit? di protezione della memoria software, per es. implementata all?interno dell?ipervisore HYP, pu? essere usata per assicurare che ciascun ambiente di esecuzione possa accedere soltanto all?intervallo di indirizzi delle interfacce 320..32n abilitato per un dato ambiente di esecuzione. Di conseguenza, in questo modo, un dato compito software, come una applicazione, pu? usare soltanto l?interfaccia (le interfacce) 320..32n assegnata (assegnate) al rispettivo ambiente di esecuzione.
Inoltre, in varie forme di attuazione, l?ipervisore HYP pu? anche configurare una parte delle interfacce 320..32n, per es. mediante l?ambiente host EEH, per es. al fine di indicare per ciascuna interfaccia 320..32n, quali segnali di selezione di slave PCS possono essere impostati, specificando con ci? con quale dispositivo slave pu? comunicare un dato ambiente di esecuzione.
La Figura 11 rappresenta a questo riguardo una possibile forma di attuazione di un sistema di elaborazione 10a e in particolare il flusso di dati tra il circuito di elaborazione 102, come un microprocessore, e l?interfaccia 30a. Senza perdita di generalit?, sono rappresentate solo due interfacce 320 e 321.
Specificamente, nella forma di attuazione considerata, il circuito di elaborazione 102 pu? comunicare con una memoria 104, come una RAM, in una maniera adeguata qualsiasi, per es. usando un segnale di indirizzo ADR e un segnale di dati DAT, che sono trasmessi mediante un sistema di bus 112.
Nella forma di attuazione considerata, la memoria 104 pu? comprendere per ciascuna interfaccia 32 una rispettiva area di memoria, per es. B0 e B1. Inoltre, ciascuna delle aree di memoria comprende una rispettiva memoria tampone/sotto-area di trasmissione BTX per memorizzare i dati da trasmettere e una memoria tampone/sotto-area di ricezione BRX per memorizzare i dati ricevuti, per es. B0TX/B1TX e B0RX/B1RX, rispettivamente. Di conseguenza, il circuito di elaborazione 102 (o un?altra risorsa 106 del sistema di elaborazione 10) pu? memorizzare i dati da trasmettere in una delle sotto-aree di trasmissione BTX, per es. B0TX, e pu? leggere i dati ricevuti dalla rispettiva sotto-area di ricezione BRX, per es. B0RX.
Nella forma di attuazione considerata, la memoria 104 ? connessa anche all?interfaccia 30a, in particolare alla coda di trasmissione e di ricezione, mediante un canale di comunicazione adatto. Specificamente, in varie forme di attuazione, ciascuna sotto-area di memoria di trasmissione (per es., B0TX e B1TX) ? connessa a una rispettiva coda di trasmissione (per es., 3200 e 3201) mediante un rispettivo canale di Accesso Diretto in Memoria (DMA, ?Direct Memory Access?) (per es., CH01 e CH11), e ciascuna sotto-area di memoria di ricezione (per es., B0RX e B1RX) ? connessa a una rispettiva coda di ricezione (per es., 3220 e 3221) mediante un rispettivo canale di DMA (per es., CH02 e CH12). Di conseguenza, in varie forme di attuazione, lo scambio di dati tra la memoria 104 e l?interfaccia 30a ? basato su canali di DMA separati.
Come rappresentato nella Figura 11, in varie forme di attuazione, il circuito di elaborazione 102 pu? anche comunicare con uno o pi? registri di configurazione REGG, REG0 e REG1 dell?interfaccia 30a. Per esempio, la comunicazione con questi registri pu? essere effettuata mediante il bus 112 summenzionato, per es. usando il segnale di indirizzo ADR e il segnale di dati DAT. Per esempio, in varie forme di attuazione, dati intervalli di indirizzi possono essere associati alla memoria 104, in particolare alle sotto-aree di memoria BTX e BRX, e ai registri dell?interfaccia 30a. Specificamente, nella forma di attuazione considerata, l?intervallo di indirizzi associato ai registri comprende:
- un primo intervallo di indirizzi associato a una pluralit? di registri REGG per scambiare dati di stato e/o configurazione globale/comune dell?interfaccia 30a; e
- per ciascuna delle interfacce 320..32n, un rispettivo intervallo di indirizzi associato a una pluralit? di rispettivi registri (per es., REG0 e REG1) usati per scambiare dati di configurazione e/o stato con la rispettiva interfaccia (per es., 320 e 321).
Di conseguenza, un controllore di memoria del circuito di elaborazione 102 (per es., usato per generare il segnale di indirizzo ADR e il segnale di dati DAT), o un ipervisore HYP e/o un sistema operativo OS eseguito dal circuito di elaborazione 102 pu? limitare l?accesso alle interfacce 320..32n limitando l?accesso agli indirizzi o agli intervalli di indirizzi associati alle sotto-aree di memoria BTX e BRX, ai registri globali REGG e ai registri individuali (REG0 e REG1)
Per esempio, la Figura 12 rappresenta una forma di attuazione dell?organizzazione degli intervalli di indirizzi. Specificamente, nella forma di attuazione considerata, il circuito di elaborazione 102 usa di nuovo un segnale di indirizzo ADR e un segnale di dati DAT per accedere ai registri globali REGG e ai registri individuali, per es. otto registri REG0..REG7 nell?esempio considerato. Per esempio, nella forma di attuazione considerata, sono usati i seguenti indirizzi: 0x0000..0x00FF per i registri REGG, 0x0100..0x01FF per i registri REG0, 0x0200..0x02FF per i registri REG1, 0x0300..0x03FF per i registri REG2, ecc. Generalmente, a questi indirizzi pu? anche essere aggiunto uno scostamento (?offset?) fissato.
Di conseguenza, ciascuno dei registri globali REGG e dei registri individuali pu? essere assegnato a un dato driver, per es. i driver HYP_DRV, DRVH, DRVa e DRVb menzionati precedentemente, limitando l?accesso in memoria di ciascuno degli ambienti di esecuzione a dati intervalli di indirizzi, come:
- l?ipervisore HYP ha un accesso (privilegiato) e pu? accedere all?intervallo di indirizzi (per es., 0x0000..0x00FF) associato ai registri globali REGG, e opzionalmente anche all?intervallo di indirizzi (per es., 0x0100..0x08FF) associato ai registri individuali;
- ciascun ambiente di esecuzione o perfino ciascun compito software eseguito da un ambiente di esecuzione non pu? accedere all?intervallo di indirizzi (per es., 0x0000..0x00FF) associato ai registri globali REGG, e pu? accedere soltanto a un sottoinsieme degli intervalli di indirizzi (per es., 0x0100..0x01FF, e 0x0300..0x3FF) associato a un rispettivo sottoinsieme di registri individuali, mentre l?accesso agli intervalli di indirizzi delle altre interfacce 32 ? inibito.
Come menzionato in precedenza, il controllo di accesso pu? essere fatto rispettare da una protezione della memoria hardware o software, che pu? essere configurata:
a) dall?ipervisore, opzionalmente mediante l?ambiente host usato per configurare l?ipervisore, limitando con ci? l?accesso a date interfacce 321..32n per gli ambienti di esecuzione EEH, EEa, EEb e/o
b) dal sistema operativo OSH, OSa, OSb eseguito da un dato ambiente di esecuzione EEH, EEa, EEb, limitando con ci? l?accesso a date interfacce 321..32n per i compiti software eseguiti dal rispettivo sistema operativo OSH, OSa, OSb.
Come descritto in precedenza (si veda, per es., la Figura 8), interfacce plurali 321..32n possono usare la stessa interfaccia di comunicazione SPI hardware 36 scambiando dati con l?interfaccia di comunicazione SPI hardware 36 mediante un arbitro/schedulatore 34.
Come menzionato in precedenza, preferibilmente l?arbitraggio ? effettuato in base alle priorit?. In varie forme di attuazione, la priorit? pu? essere specificata, per es., con almeno uno tra:
- memorizzando primi dati di priorit? nei registri globali REGG, per cui la priorit? ? specificata per ciascuna interfaccia 321..32n, per es. mediante l?ipervisore HYP;
- memorizzando secondi dati di priorit? nei registri individuali REG1..REG7, dove la priorit? ? specificata per ciascuna interfaccia 321..32n; per es. mediante il driver eseguito da un dato sistema operativo; e
- memorizzando terzi dati di priorit? nella memoria tampone di trasmissione BTX insieme ai rispettivi dati da trasmettere, dove la priorit? ? specificata per ciascun pacchetto di dati o ciascuna sequenza di pacchetti di dati da trasmettere, per es. mediante il driver eseguito da un dato sistema operativo.
Di conseguenza, in varie forme di attuazione, il circuito di interfaccia SPI 32a proposto pu? essere usato da compiti software indipendenti, sia in un ambiente software tradizionale con un singolo sistema operativo (Figura 9) sia in un ambiente di ipervisore/virtuale (Figura 10). In varie forme di attuazione, l?accesso alle interfacce 321..32n separate pu? essere controllato per ciascun ambiente di esecuzione e/o ciascun compito software. Inoltre, il trattamento delle priorit? pu? essere effettuato direttamente in uno strato hardware 34, per es. in funzione di data che identificano l?ambiente di esecuzione, il compito software (per es., collegato a un dato dispositivo slave), o perfino la singola trasmissione che richiede la trasmissione di dati.
In varie forme di attuazione, i registri associati a date interfacce 321..32n e i registri globali REGG sono raggruppati in intervalli di indirizzi consecutivi, il che semplifica l?implementazione di un accesso in memoria a questi rispettivi registri.
In seguito, ? descritta ora una possibile implementazione dettagliata del circuito di interfaccia di comunicazione SPI 32a. Un tale circuito 32a pu? avere una o pi? delle caratteristiche seguenti:
- l?interfaccia 32a pu? essere configurata come un dispositivo master o un dispositivo slave;
- supporto di fino a un dato numero di interfacce/gruppi di trasferimento 32, come otto interfacce 320..327, in cui ciascuna interfaccia/gruppo di trasferimento 32 pu? supportare uno o pi? tra:
- un?operazione con memorizzazione tampone con un dato numero di immissioni nelle FIFO di TX e di RX 320 e 322;
? interfacce DMA alle code di TX e di RX 320 e 322;
? la trasmissione pu? essere iniziata mediante un controllo software e/o in base ad almeno un innesco hardware (programmabile) generato da un?altra risorsa hardware del sistema di elaborazione (per es., un pin/pad o una risorsa 106);
- pu? essere fornito uno stato dei dati ricevuti, che pu? comprendere uno o pi? tra: un errore di parit?, un errore di CRC, uno stato di fine della coda (?end-of-queue?), il segnale di chip select usato, una marcatura temporale (?timestamp?);
? pu? essere supportata una modalit? burst, in cui una trama (?frame?) di trasmissione comprende una pluralit? di pacchetti di dati da trasmettere;
- un arbitraggio basato su priorit? tra gruppi di trasferimento usato per determinare la prossima trama da trasferire;
- attributi di trasferimento di SPI globali e/o individuali programmabili, come:
? fase e polarit? del clock programmabile;
- ritardi programmabili, per es. tra il segnale PCS e il segnale di clock SCK (ritardo tra gli istanti t1 e t2 e/o t5 e t6), e/o tra pacchetti di dati all?interno di una trama; e
? dimensione programmabile dei pacchetti di dati di una trama da trasmettere/ricevere, per es. da 4 a 32 bit.
La Figura 13 rappresenta una forma di attuazione dell?interfaccia di comunicazione SPI 30a, che comprende di nuovo un dato numero di interfacce 320..32n, e un arbitro 34 e un circuito trasmettitore/ricevitore SPI hardware 36, in cui ciascuna interfaccia 320..32n comprende una coda di trasmissione 320 e una coda di ricezione 322.
Come menzionato in precedenza, il circuito di interfaccia SPI 32a ? connesso mediante un?interfaccia di comunicazione adeguata al circuito di elaborazione 102. Per esempio, nella forma di attuazione considerata, il circuito di interfaccia SPI 32a comprende:
- un?interfaccia DMA 300 configurata per gestire una pluralit? di canali di DMA DMA_Tx e DMA_Rx, in cui ciascuna coda di trasmissione 320 e ciascuna coda di ricezione 322 pu? avere associato un rispettivo canale di DMA; e
- un?interfaccia slave di bus 302 configurata per connettere l?interfaccia SPI 30a a un sistema di bus 112 del sistema di elaborazione 10, per es. per una connessione al sistema di elaborazione 102.
Per esempio, in varie forme di attuazione, l?interfaccia slave di bus 302 e l?interfaccia DMA 300 seguono l?architettura AMBA (Advanced Microcontroller Bus Architecture), in cui l?interfaccia DMA 300 ? connessa a un bus AHB (AMBA High-performance Bus) o AMBA 112 mediante il controllore DMA 108, e l?interfaccia slave di bus 302 ? uno slave APB (Advanced Peripheral Bus) connesso a un bus APB connesso a sua volta al bus AHB o AMBA mediante un circuito bridge 110. In questo caso, il circuito di elaborazione 102 ? connesso al bus AHB o AMBA 140. Similmente, l?una o pi? memorie 104 possono essere connesse al bus 112 mediante uno o pi? controllori di memoria 104a. Per esempio, la memoria pu? essere la memoria di programma non volatile del circuito di elaborazione 102 o una memoria volatile 104b, come una memoria ad accesso casuale (RAM, ?Random-Access-Memory?).
Nella forma di attuazione considerata, ciascuna interfaccia 320..32n comprende una rispettiva coda di trasmissione 3200..320n e una rispettiva coda di ricezione 3220..322n. In varie forme di attuazione, ciascuna interfaccia 320..32n comprende anche un rispettivo circuito di controllo di interfaccia 3240..324n configurato per gestire lo scambio di dati con l?arbitro 34. Specificamente, come sar? descritto in maggiore dettaglio in seguito, ciascun circuito di controllo 324 ? configurato per leggere il contenuto della rispettiva coda di trasmissione 320 ed estrarre un comando CMD e i rispettivi dati DATA da trasmettere, cio? il circuito di elaborazione 102 (o un qualsiasi altro circuito che richiede la trasmissione di dati) fornisce (per es., mediante il controllore DMA 108 e l?interfaccia DMA 300) a una rispettiva interfaccia 32 uno o pi? pacchetti di dati, che sono memorizzati nella rispettiva coda di trasmissione 320, in cui l?uno o pi? pacchetti di dati comprendono un comando CMD e rispettivi dati DATA. Di conseguenza, il circuito di controllo 324 pu? essere configurato per estrarre il comando e i dati, e per fornire queste informazioni all?arbitro 34. Per esempio, questo ? rappresentato schematicamente nella Figura 13, in cui le interfacce 320..32n forniscono segnali di comando CMD0..CMDn e segnali di dati DATA0..DATAn all?arbitro 34. Per contro, l?arbitro 34 fornisce all?interfaccia SPI hardware 36 i comandi CMD e i dati DATA selezionati. Di conseguenza, l?interfaccia SPI hardware trasmette i dati DATA in funzione del comando CMD e opzionalmente riceve rispettivi dati RXDATA, che sono inoltrati all?arbitro 34. Nella forma di attuazione considerata, l?arbitro 34 fornisce cos? i dati ricevuti RXDATA alle interfacce 320..32n.
In varie forme di attuazione, l?interfaccia SPI hardware 36 pu? essere connessa ai pin/pad del sistema di elaborazione 10 mediante un circuito di instradamento 114, come una crossbar configurabile.
In varie forme di attuazione, ciascuna interfaccia 320..32n pu? comprendere anche un circuito di gestione di innesco 3260..326n, che ? configurato, per es., per:
- ricevere un segnale di innesco TIN da un altro circuito del sistema di elaborazione 10 e segnalare una richiesta di trasmissione all?arbitro; e/o
- generare un segnale di innesco TOUT in risposta al completamento di una trasmissione/ricezione.
In varie forme di attuazione, ciascuna interfaccia 320..32n pu? comprendere anche un circuito di gestione della marcatura temporale 3280..328n. Specificamente, questo circuito di gestione della marcatura temporale 328 pu? essere configurato per memorizzare un segnale di marcatura temporale TIME in risposta all?inizio della trasmissione (come segnalato dal circuito di gestione di innesco 326 o preferibilmente l?inizio effettivo della trasmissione come segnalato dall?arbitro 34) o la fine della ricezione dei dati (come segnalato dall?arbitro 34).
Generalmente, l?operazione precedente si applica quando il circuito 32a ? configurato come dispositivo master. Tuttavia, in varie forme di attuazione, il circuito 32a pu? anche essere configurabile come dispositivo slave. Di conseguenza, in questo caso, l?interfaccia SPI hardware 36 pu? generare un segnale di abilitazione EN, che indica che sono stati ricevuti dati RXDATA e che questi dati dovrebbero essere memorizzati in una coda predeterminata, per es. la coda 3200. Per esempio, quando fatto funzionare in modalit? slave, il circuito di comunicazione SPI hardware 36 pu? monitorare il segnale di selezione di slave PCS[0] e il segnale SCK e, quando abilitato mediante il segnale di selezione di slave PCS[0], il circuito di comunicazione SPI 36 pu? memorizzare il livello logico del segnale SIN in risposta al segnale di clock SCK.
Di conseguenza, nella forma di attuazione considerata, il circuito 30a fornisce interfacce di code multiple 320..32n per memorizzare a tampone sequenze di SPI. Ciascuna coda rappresenta un gruppo di trasferimento e implementa delle FIFO per trasmettere e ricevere dati a e da dispositivi esterni. Come sar? descritto in maggiore dettaglio in seguito, la FIFO di TX 320 pu? essere configurata per memorizzare comandi di SPI e dati da trasferire, mentre la FIFO di RX 322 memorizza a tampone i dati seriali in arrivo. In varie forme di attuazione, il numero di immissioni delle code e/o il numero dei bit di ciascuna immissione pu? essere configurabile.
In varie forme di attuazione, anche sequenze di SPI pi? lunghe possono essere memorizzate in una memoria all?esterno del circuito di interfaccia SPI 30a, per es. la memoria 104b. In questo caso, i trasferimenti di dati tra la memoria e il circuito di interfaccia SPI 30a possono essere realizzati automaticamente attraverso il controllore DMA 108 e/o mediante istruzioni software eseguite dal circuito di elaborazione 102.
Specificamente, in varie forme di attuazione, l?interfaccia SPI 30a supporta una modalit? master e una modalit? slave. Nella modalit? master, l?interfaccia 32a fa iniziare e controlla la comunicazione seriale. In questa modalit?, il segnale di clock SCK e i segnali di selezione di slave PCS[m:0] sono configurati come uscita e sono generati dall?interfaccia 30a. Nella modalit? master di SPI, ciascuna trama di SPI da trasmettere pu? comprendere un comando CMD associato ai rispettivi dati DATA che consente di specificare dati attributi del trasferimento su base trama per trama. Per contro, i dati DATA di una trama sono caricati dalla FIFO di trasmissione 320 nel registro a scorrimento di trasmissione 360 e sono fatti scorrere in uscita sul pin di uscita seriale (?Serial Out?) SOUT. Allo stesso tempo, l?ingresso di dati seriale sul pin di ingresso seriale (?Serial In?) SIN ? fatto scorrere nel registro a scorrimento di ricezione 360 (che pu? anche corrispondere al registro a scorrimento di trasmissione) ed ? memorizzato come una immissione di dati nella FIFO di ricezione 322.
Per contro, in varie forme di attuazione, la modalit? slave pu? permettere all?interfaccia SPI 30a di comunicare con un master del bus SPI. In questa modalit?, l?interfaccia SPI 30a risponde a trasferimenti seriali controllati esternamente. Il segnale SCK e un dato segnale di selezione di slave, per es. PCS[0], sono configurati come ingressi e sono pilotati da un master del bus SPI. Certi attributi del trasferimento come la polarit? del clock, la fase del clock e la dimensione della trama possono essere programmabili anche in questo caso.
Di conseguenza, in varie forme di attuazione, quando funziona come dispositivo master, la FIFO di trasmissione 320 ? configurata per ricevere una trama comprendente:
- una prima immissione comprendente un comando CMD; e - una o pi? immissioni comprendenti i dati da trasmettere.
In varie forme di attuazione, sia nella modalit? master sia in quella slave, la FIFO di ricezione 322 ? configurata per ricevere una trama comprendente una o pi? immissioni che comprendono i dati ricevuti. Come sar? descritto in maggiore dettaglio in seguito, opzionalmente ciascuna trama o ciascun pacchetto di dati ricevuto pu? comprendere anche un?ultima immissione comprendente uno stato RxSTATUS che indica lo stato dei dati ricevuti.
Come menzionato in precedenza, in varie forme di attuazione, l?interfaccia SPI 30a pu? comprendere un insieme di registri globali REGG e un insieme di registri individuali REG0..REGn al fine di controllare il funzionamento dell?interfaccia SPI 30a, in particolare dell?arbitro 34 e dell?interfaccia di comunicazione SPI hardware 36. Preferibilmente, questi registri sono accessibili mediante l?interfaccia slave di bus 302, per es. mediante rispettivi indirizzi.
Per esempio, in varie forme di attuazione, i registri globali REGG possono comprendere uno o pi? dei seguenti registri:
- MCR: Registro di configurazione del modulo;
- HW_CONFIG_STATUS: Registro di stato di configurazione HW;
- GLOBAL_STATUS: Registro di stato globale;
- GLOBAL_IRQ_CTRL: Registro di controllo di interruzione (?interrupt?) globale;
- GLOBAL_IRQ_STATUS: Registro di stato di interrupt globale;
- TAC[k:0]: insieme di registri di controllo degli attributi dei trasferimenti, in cui uno o pi? registri TAC (come due registri TAC_L e TAC_H) sono associati a ciascuna interfaccia 320..32n; e
- MONITOR_SLAVE_SELECT: Registro di selezione dello slave di monitor.
Per contro, ciascuna interfaccia 320..32n pu? avere associati registri individuali REG0..REGn, che possono comprendere registri di controllo delle code, di stato e opzionalmente di interrupt. Per esempio, i registri di controllo delle code, di stato e di interrupt possono comprendere uno o pi? dei seguenti registri:
- Q_SETUP: Registro di impostazione della coda;
- Q_HW_CFG: Registro di configurazione hardware delle code;
- Q_STATUS: Registro di stato della coda;
- Q_CTRL: Registro di controllo delle code;
- Q_IRQ_CTRL: Registro di controllo di interrupt della coda; e
- Q_IRQ_STATUS: Registro di stato di interrupt della coda.
In varie forme di attuazione, ciascuna interfaccia 320..32n pu? anche avere associati ulteriori registri individuali REG0..REGn opzionali, come uno o pi? dei seguenti registri:
- Registri di Push/Pop di FIFO della coda;
- Registri di debug della coda; e
- Registri di CRC della coda.
Per esempio, in varie forme di attuazione, un registro di Push di FIFO della coda Q_TxFIFO_PUSH e un registro di Pop di FIFO della coda Q_RxFIFO_POP possono essere usati per memorizzare temporaneamente i dati (ricevuti mediante l?interfaccia 300 e) da memorizzare nella FIFO di trasmissione 320 e i dati letti dalla memoria FIFO di ricezione 322 (e da trasmettere mediante l?interfaccia 300). Ai fini del debug, pu? cos? essere utile avere accesso a questi registri.
Generalmente, questi registri possono anche essere usati per trasmettere direttamente pacchetti di dati a una data interfaccia 32 (per es., memorizzando dati nel registro Q_TxFIFO_PUSH, che sono poi scritti nella rispettiva FIFO di trasmissione 320) e per leggere pacchetti di dati dalla data interfaccia 32 (per es., leggendo i dati dal registro Q_RxFIFO_POP, che ? quindi riempito di nuovo leggendo un nuovo pacchetto di dati dalla FIFO di ricezione 322). Di conseguenza, in varie forme di attuazione, lo scambio di dati tra il circuito di elaborazione 102 e l?interfaccia 30a (di trame di dati da trasmettere o ricevute) pu? essere realizzato direttamente mediante i registri Q_TxFIFO_PUSH e Q_RxFIFO_POP di una data coda, o indirettamente mediante le rispettive memorie tampone BTX e BRX e usando trasferimenti di DMA.
Per contro, i registri di debug delle code possono comprendere uno o pi? dei seguenti registri:
- Q_TxFIFO_PTR: Registro di puntatore della FIFO di trasmissione della coda;
- Q_RxFIFO_PTR: Registro di puntatore di ricezione della coda.
In aggiunta o in alternativa, pu? anche essere possibile un debugging completo delle memorie FIFO 320 e 322, che pu? comprendere un accesso in lettura e/o scrittura a ciascuna immissione delle memorie FIFO 320 e/o 322. Per esempio, in varie forme di attuazione, i registri di debug delle code possono comprendere inoltre i seguenti registri:
- Q_DEBUG_PTR: Registro di puntatore di debug della coda;
- Q_DEBUG_TxFIFO_DATA: Dati di debug della coda del registro di trasmissione (come selezionati mediante il puntatore di segnale Q_DEBUG_PTR); e
- Q_DEBUG_RxFIFO_DATA: Dati di debug della coda del registro di ricezione (come selezionati mediante il puntatore di segnale Q_DEBUG_PTR).
In varie forme di attuazione, i registri di debug delle code possono comprendere anche un registro di comando della coda Q_DEBUG_TxFIFO_CMD che indica l?ultimo comando CMD o il comando CMD in corso.
Come menzionato in precedenza, in varie forme di attuazione, l?interfaccia SPI hardware pu? anche essere configurata per effettuare selettivamente un?operazione di verifica degli errori, come una verifica di parit? o di CRC dei dati ricevuti. In questo caso, il registro di CRC della coda pu? comprendere uno o pi? dei seguenti registri:
- Q_CRC_CFG: Registro di configurazione CRC della coda;
- Q_CRC_INIT: Registro di inizializzazione del CRC della coda;
- Q_CRC_POLY: Registro polinomiale del CRC della coda; - Q_CRC_TX: Registro di trasmissione del CRC della coda; e
- Q_CRC_RX: Registro di ricezione del CRC della coda. In seguito, saranno descritte ora possibili implementazioni dei registri summenzionati. Generalmente, la descrizione ? puramente a scopo di illustrazione al fine di mostrare come pu? essere implementata la configurazione di una data funzione dell?interfaccia SPI 30a. Tuttavia, uno o pi? dei registri di configurazione o di loro campi possono essere puramente opzionali (a condizione che la rispettiva configurazione possa anche essere fissata a un livello hardware), la configurazione pu? anche essere implementata con altri registri, o i campi dei registri possono essere organizzati in una maniera differente. Similmente, a titolo di esempio, sar? mostrato che le immissioni possono essere leggibili e/o scrivibili, indicato lateralmente con una ?R? e una ?W?, e che ? possibile resettare i valori per i rispettivi bit, indicato con ?Reset?.
Per esempio, la Figura 14 rappresenta una forma di attuazione del registro di configurazione del modulo MCR. Nella forma di attuazione considerata, il registro MCR comprende i seguenti campi (che sono elaborati di conseguenza dall?interfaccia 30a):
- MSTR: permette di selezionare se l?interfaccia SPI 30a funziona nella modalit? master o nella modalit? slave;
- CONT_SCKE: permette di selezionare se il segnale di clock SCK ? non continuo, cio? ? generato soltanto durante il trasferimento di una trama, o ? continuo;
- PCS_DEFAULT_LEVEL: permette di selezionare il livello inattivo di ciascun segnale di selezione di slave, per es. se il livello inattivo di PCS[x] ? 0 o 1;
- SAFE_SPI_MODE: permette di selezionare se ? abilitata oppure no una modalit? di SafeSPI;
- SAMPLE_POINT: permette di specificare quando il master di SPI campiona il segnale SIN e genera il segnale SOUT;
- MTFE: permette di specificare se abilitare o disabilitare un formato di temporizzazione modificato;
- DEBUG_FREEZE: permette di specificare se un?operazione di trasmissione/ricezione dell?interfaccia SPI 30a ? arrestata oppure no in risposta a una richiesta di debug;
- LOOPBACK_EN: permette di abilitare o disabilitare un loopback interno, in cui il segnale SIN ? connesso selettivamente (internamente) al segnale SOUT;
- CRC_ERR_STOP: permette di specificare se una trasmissione di dati ? interrotta oppure no quando si verifica un errore di CRC;
- PAR_ERR_STOP: permette di specificare se una trasmissione di dati ? interrotta oppure no quando si verifica un errore di parit?;
- MODULE_EN: permette di abilitare o disabilitare l?interfaccia SPI 30a.
Come menzionato in precedenza, il campo SAMPLE_POINT permette di specificare il formato di trasferimento dei segnali SIN e SOUT. Per esempio, in varie forme di attuazione (come sar? descritto in seguito) la fase e la polarit? del clock possono essere specificate mediante rispettivi campi CPOL e CPHA per ciascuna interfaccia 300..30n, per es. mediante un rispettivo indicatore (?flag?) nel registro TAC_H (che sar? descritto in maggiore dettaglio in seguito). In questo caso, il campo SAMPLE_POINT pu? specificare soltanto le propriet? dei segnali SIN e SOUT. Per esempio, quando il flag CPHA ? impostato basso per un dato 300..30n, l?interfaccia SPI hardware 36 pu? campionare il segnale SIN e pilotare il segnale SOUT secondo i seguenti valori di bit del campo SAMPLE_POINT:
- 00: SIN ? campionato su un fronte di SCK pari, e SOUT ? pilotato su un fronte di SCK dispari; e
- 01: SIN ? campionato un clock di sistema prima del fronte di SCK pari, e SOUT ? pilotato un clock di sistema dopo il fronte di SCK dispari.
Per contro, quando il flag CPHA ? impostato alto per un dato 300..30n, l?interfaccia SPI hardware 36 pu? campionare il segnale SIN e pilotare il segnale SOUT secondo i seguenti valori di bit del campo SAMPLE_POINT:
- 00: SIN ? campionato su un fronte di SCK dispari, e SOUT ? pilotato su un fronte di SCK pari;
- 01: SIN ? campionato un clock di sistema prima di un fronte di SCK dispari, e SOUT ? pilotato un clock di sistema dopo un fronte di SCK pari.
La Figura 15 rappresenta una forma di attuazione del registro di stato di configurazione hardware HW_CONFIG_STATUS. Nella forma di attuazione considerata, il registro HW_CONFIG_STATUS comprende i seguenti campi (di sola lettura) (che sono generati di conseguenza dall?interfaccia 30a):
- NUM_TAC: fornisce il numero di registri di Controllo degli Attributi del Trasferimento (TAC, ?Transfer Attribute Control?) fissati durante il progetto;
- NUM_QUEUES: fornisce il numero di interfacce 320..32n fissato nel progetto.
La Figura 16 rappresenta una forma di attuazione del registro di stato globale GLOBAL_STATUS. Nella forma di attuazione considerata, il registro GLOBAL_STATUS comprende i seguenti campi (di sola lettura) (che sono generati di conseguenza dall?interfaccia 30a):
- QUEUE_NUM: specifica per ciascuna interfaccia 320..32n se ? riportato uno stato (1) oppure no (0);
- SPIQ_STATUS: fornisce il messaggio di stato, come:
- IDLE (000): tutte le code sono inattive.
- RUNNING (001): trasferimento di SPI in corso - WAIT_TRIGGER (010): nessun trasferimento di SPI in corso, tutte le code abilitate in attesa di un innesco;
- SUSPENDED (011): tutte le code in stato di sospeso;
- ERROR (111): almeno una coda sta riportando uno stato di errore (come UNDERFLOW, IN STALLO, underrun della FIFO, overrun della FIFO, errore di parit?, errore di CRC, errore di overrun di innesco).
La Figura 17 rappresenta una forma di attuazione del registro di controllo di interrupt globale GLOBAL_IRQ_CTRL. Nella forma di attuazione considerata, il registro GLOBAL_IRQ_CTRL comprende i seguenti campi (che sono elaborati di conseguenza dall?interfaccia 30a):
- ERR_IRQ_EN: permette di abilitare o disabilitare gli interrupt di errore per ciascuna interfaccia individuale 320..32n;
- STATUS_IRQ_EN: permette di abilitare o disabilitare gli interrupt di stato per ciascuna interfaccia individuale 320..32n.
La Figura 18 rappresenta una forma di attuazione del registro di stato di interrupt globale GLOBAL_IRQ_STATUS. Nella forma di attuazione considerata, il registro GLOBAL_IRQ_STATUS comprende i seguenti campi (di sola lettura) (che sono generati di conseguenza dall?interfaccia 30a):
- ERR_IRQ_STATUS: fornisce il valore di interrupt di errore per ciascuna interfaccia individuale 320..32n;
- STATUS_IRQ: fornisce il valore di interrupt di stato per ciascuna interfaccia individuale 320..32n.
Come menzionato in precedenza, in varie forme di attuazione, la configurazione dell?interfaccia SPI hardware ? basata su dati attributi del trasferimento. Specificamente, come rappresentato nella Figura 19, in varie forme di attuazione, invece di specificare tutti gli attributi del trasferimento nel campo di comando CMD, l?interfaccia SPI 30a comprende una pluralit? di registri TAC[k:0] che hanno memorizzati dati attributi del trasferimento, e il campo di comando CMD comprende soltanto un campo TAC_NUM che ha memorizzato il numero i di uno dei registri TAC[k:0], cio? i = 0..k.
Per esempio, in varie forme di attuazione, ciascun registro TAC[k:0] ? implementato con due registri TAC_L[k:0] e TAC_H[k:0] indirizzabili.
Le Figure 20 e 21 rappresentano una forma di attuazione dei registri TAC_L[k:0] e TAC_H[k:0]. Nella forma di attuazione considerata, ciascun registro TAC_L[k:0] comprende i seguenti campi (che sono elaborati di conseguenza dall?interfaccia 30a):
- DBR, PBR e BR: permettono di specificare un baud rate, cio? la frequenza del segnale di clock SCK;
- PLD e LD: permettono di specificare il ritardo tra un asserimento del segnale di selezione di slave PCS e il primo fronte del SCK, per es. in numero di cicli del segnale SCK;
- PTD e TD: permettono di specificare il ritardo tra l?ultimo fronte del segnale SCK e la negazione del PCS di selezione dello slave, per es. in numero di cicli del segnale SCK;
- PNFD e NFD: permettono di specificare il ritardo tra la negazione del segnale di selezione di slave PCS alla fine di una trama e l?asserimento del segnale di selezione di slave PCS all?inizio della prossima trama, per es. in numero di cicli del segnale SCK; e
- PIWD e IWD: permettono di specificare il ritardo tra il trasferimento dell?ultimo bit di una parola e il trasferimento del primo bit della prossima parola in una modalit? di selezione di PCS continua, per es. in numero di cicli del segnale SCK.
Nella forma di attuazione considerata, ciascun registro TAC_H[k:0] comprende i seguenti campi:
- CPOL: permette di selezionare lo stato inattivo del Clock di Comunicazioni Seriale (SCK, ?Serial Communications Clock?), cio? alto o basso;
- CPHA: permette di selezionare quale fronte del segnale SCK fa s? che i dati cambino e quale fronte del segnale SCK fa s? che i dati siano catturati, cio? il segnale di clock del registro (dei registri) 360, per es. basso pu? indicare che il segnale SIN ? catturato sul fronte di salita del segnale SCK e il segnale SOUT ? cambiato sul fronte (di discesa) seguente, mentre alto pu? indicare che il segnale SOUT ? cambiato sul fronte di salita del segnale SCK e il segnale SIN ? catturato sul fronte (di discesa) seguente;
- LSBFE: permette di selezionare la direzione di scorrimento del registro (dei registri) 360, cio? i dati sono trasferiti con l?MSB per primo (0) o con l?LSB per primo (1);
- SCK_DISABLE_CYCLES: permette di specificare il ritardo tra l?impostazione della polarit? del segnale SCK e l?asserimento del segnale di selezione di slave PCS, per es. in numero di cicli del segnale SCK;
- FMSZ: permette di selezionare il numero dei bit trasferiti per trama, per es. tra 4 e 32 bit;
- DTC: permette di specificare un conteggio dei trasferimenti di dati per immissione di comando, cio? il numero di parole di dati che seguono un comando, per es. tra 1 e 65536.
La Figura 22 rappresenta anche una forma di attuazione del registro TAC_H, per es. il registro TAC_H[0], quando l?interfaccia SPI 30a ? fatta funzionare come slave, identificato in seguito come TAC_H_SLAVE. Specificamente, in confronto alla Figura 21, in questo caso, i campi LSBFE, SCH_DISABLE_CYCLES e DTC non sono usati, ma il registro pu? comprendere i seguenti campi:
- PE: permette di selezionare se la trasmissione e la ricezione del bit di parit? per trama ? abilitata o disabilitata;
- PP: permette di specificare la polarit? della parit?, per es. il numero di bit impostato a ?1? ? pari o dispari, in cui il circuito di controllo 362 pu? impostare un rispettivo flag nel campo Q_IRQ_STATUS allo stato PAR_ERR, quando la parit? calcolata in funzione di una trama ricevuta non corrisponde al campo PP.
La Figura 23 rappresenta una forma di attuazione del registro di selezione dello slave di monitor MONITOR_SLAVE_SELECT. Specificamente, questo registro pu? essere usato per specificare se un monitor SPI, come un modulo di registrazione (?logging?) degli errori, ? connesso a una delle linee di selezione dello slave insieme al rispettivo numero di selezione dello slave. Per esempio, nella forma di attuazione considerata, ciascun registro MONITOR_SLAVE_SELECT comprende i seguenti campi:
- MONITOR_SPI_CONNECTED: permette di specificare se un modulo di monitor SPI ? connesso oppure no; e
- MONITOR_SPI_SLAVE_SELECT: permette di specificare per ciascuna linea di selezione di slave PCS[k:0] se un modulo di monitor SPI ? connesso alla rispettiva linea di selezione di slave.
Per esempio, il contenuto del registro MONITOR_SLAVE_SELECT pu? essere usato dal circuito di elaborazione 102 o da un modulo di raccolta/rilevazione degli errori del sistema di elaborazione 10 per inviare automaticamente messaggi di errore e/o di stato al modulo di monitor SPI esterno.
Di conseguenza, i registri precedenti permettono sostanzialmente di specificare la configurazione globale del circuito di comunicazione SPI hardware 36, e una serie di configurazioni di trasmissione TAC[k:0] predeterminate. Opzionalmente, i registri possono anche fornire informazioni di configurazione e di stato aggiuntive. Oltre a questi registri, ciascuna interfaccia 320..32n pu? avere associati registri individuali REG0..REGn.
Per esempio, la Figura 24 rappresenta una forma di attuazione del registro di impostazione delle code Q_SETUP. Per esempio, nella forma di attuazione considerata, ciascun registro Q_SETUP comprende i seguenti campi (che sono elaborati di conseguenza dall?interfaccia 30a):
- PRIORITY: permette di specificare la priorit? dell?interfaccia 320..32n, per es. tra 0 (pi? bassa) e n (pi? alta)
- TIMESTAMP_NOT_TRANSFER_CNT: permette di specificare se, in risposta alla ricezione di dati, l?interfaccia SPI 30a campiona la marcatura temporale TIME (si veda anche la descrizione del circuito di gestione della marcatura temporale 328) e memorizza la marcatura temporale nel campo di stato RxSTATUS, o memorizza un conteggio dei trasferimenti nel campo di stato RxSTATUS;
- Rx_STATUS_EN: permette di specificare se il campo RxSTATUS dovrebbe essere aggiunto oppure no nella FIFO di ricezione 322 dopo ciascuna ricezione di dati;
- HW_TRIG_OUT_WIDTH: permette di specificare le propriet? del segnale di innesco TOUT generato mediante il circuito 326 della rispettiva coda, come il numero di cicli di clock durante i quali il segnale di innesco ? impostato alto;
- RxDMA_EN: permette di specificare se la FIFO di ricezione 322 dovrebbe generare oppure no una richiesta di DMA mediante il controllore DMA 300 quando il numero di immissioni nella FIFO di ricezione 322 supera una data soglia RxFIFO_THRESHOLD;
- RxFULL_STALL_EN: permette di specificare se le operazioni di trasmissione dell?interfaccia SPI hardware 36 dovrebbero essere sospese oppure no quando la FIFO di ricezione 322 ? piena;
- RxFIFO_THRESHOLD: permette di specificare la soglia per il funzionamento del flag RxDMA_EN;
- TxDMA_EN: permette di specificare se la FIFO di trasmissione 320 dovrebbe generare oppure no una richiesta di DMA mediante il controllore DMA 300 quando il numero di immissioni nella FIFO di trasmissione 320 scende al di sotto di una data soglia TxFIFO_THRESHOLD;
- HW_TRIG_EDGE: permette di specificare se la trasmissione dei dati dovrebbe essere innescata su un fronte di salita o su un fronte di discesa del segnale TIN (si veda la descrizione del circuito di innesco 326);
- HW_TRIG_EN: permette di specificare se la trasmissione della coda ? avviata mediante un innesco software o mediante un innesco hardware, cio? mediante il segnale TIN.
- TxFIFO_THRESHOLD: permette di specificare la soglia per il funzionamento del flag TxDMA_EN.
Di conseguenza, in varie forme di attuazione, ciascuna interfaccia 320..32n pu? richiedere automaticamente nuovi dati da trasmettere e/o pu? trasmettere i dati ricevuti mediante una richiesta di DMA generata mediante l?interfaccia 300, cio? ciascuna interfaccia 320..32n pu? leggere direttamente i dati da trasmettere da una memoria 104/104b e pu? scrivere i dati ricevuti nella memoria 104/104b senza un intervento del circuito di elaborazione 102.
La Figura 25 rappresenta una forma di attuazione del registro di configurazione hardware delle code Q_HW_CFG. Per esempio, nella forma di attuazione considerata, ciascun registro Q_HW_CFG comprende i seguenti campi (di sola lettura) (che sono generati di conseguenza dall?interfaccia 30a):
- RxFIFO_DEPTH: indica il numero di immissioni nella FIFO di ricezione 322, come da 2 a 32 parole;
- TxFIFO_DEPTH: indica il numero di immissioni nella FIFO di trasmissione 320, come da 2 a 32 parole.
La Figura 26 rappresenta una forma di attuazione del registro di stato della coda Q_STATUS. Per esempio, nella forma di attuazione considerata, ciascun registro Q_STATUS comprende i seguenti campi (di sola lettura):
- TRANSFER_COUNT: indica il valore di un Contatore dei Trasferimenti di SPI, che ? incrementato dall?interfaccia SPI hardware 36 ogni volta che ? trasmesso l?ultimo bit di una trama SPI, ed ? resettato a zero all?inizio della trama quando un campo CLR_COUNTER ? impostato nel rispettivo campo di comando CMD;
- Q_STATUS: indica lo stato della coda, come INATTIVIT?, IN FUNZIONAMENTO, ATTESA_INNESCO, SOSPESO, UNDERFLOW o IN STALLO.
La Figura 27 rappresenta una forma di attuazione del registro di controllo delle code Q_CTRL. Per esempio, nella forma di attuazione considerata, ciascun registro Q_CTRL comprende i seguenti campi (che sono elaborati di conseguenza dall?interfaccia 30a):
- Q_FLUSH: permette di resettare le code 320 e 322, e i registri di stato Q_STATUS;
- Q_SW_TRIG: permette di dare inizio a una trasmissione mediante un comando software eseguito dal circuito di elaborazione 102, cio? questo flag rappresenta un innesco software.
La Figura 28 rappresenta una forma di attuazione del registro di controllo di interrupt della coda Q_IRQ_CTRL. Per esempio, nella forma di attuazione considerata, ciascun registro Q_IRQ_CTRL comprende i seguenti campi (cio? l?interfaccia 30a pu? essere configurata per rilevare uno o pi? dei rispettivi eventi):
- PARITY_ERR_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di un errore di parit?;
- CRC_ERR_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di un errore di CRC;
- TRIG_OVERRUN_ERR_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di un overrun di innesco;
- COMMAND_ERR_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di un errore di comando, cio? un comando CMD che comprende dati invalidi;
- EOS_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione della fine di una sequenza che comprende una pluralit? di trame;
- FRAME_END_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione della fine di una trama;
- RXFIFO_OVERRUN_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di un overrun della FIFO di ricezione;
- RXFIFO_UNDERRUN_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di un underrun della FIFO di ricezione;
- RXFIFO_FULL_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di una FIFO di ricezione piena;
- RXFIFO_EMPTY_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di una FIFO di ricezione vuota;
- RXFIFO_THRESH_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione che il numero di immissioni nella FIFO di ricezione supera la soglia descritta precedente;
- TXFIFO_OVERRUN_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di un overrun della FIFO di trasmissione;
- TXFIFO_UNDERRUN_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di un underrun della FIFO di trasmissione; - TXFIFO_FULL_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di una FIFO di trasmissione piena;
- TXFIFO_EMPTY_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione di una FIFO di trasmissione vuota; e
- TXFIFO_THRESH_IRQ_EN: permette di abilitare o disabilitare la generazione di un interrupt in risposta alla rilevazione che il numero di immissioni nella FIFO di trasmissione scende al di sotto della soglia descritta precedente.
La Figura 29 rappresenta una forma di attuazione del registro di stato di interrupt della coda Q_IRQ_STATUS. Per esempio, nella forma di attuazione considerata, ciascun registro Q_IRQ_STATUS comprende i seguenti campi (cio? l?interfaccia 30a pu? essere configurata per generare uno o pi? degli interrupt seguenti in base ai flag di abilitazione del registro Q_IRQ_CTRL):
- PARITY_ERR: Flag di Errore di Parit? di SPI, che ? impostato quando ? stata ricevuta una trama SPI con errore di parit? (come rilevato dall?interfaccia SPI 36);
- CRC_ERR: Flag di Errore di CRC di SPI, che ? impostato quando ? stata ricevuta una trama SPI con una discordanza del CRC (come rilevato dall?interfaccia SPI 36);
- TRIG_OVERRUN_ERR: Flag di Errore di Overrun di Innesco HW, che ? impostato quando si verifica un innesco HW mentre era gi? pendente l?innesco HW precedente;
- COMMAND_ERR: Errore di comando, che ? impostato, per es., quando il campo di immissione del comando CMD ha un valore TAC_NUM che ? maggiore della configurazione del parametro HW rispettivo.
- EOS: Flag di Fine della Sequenza (?End of Sequence?), che ? impostato, per es. quando l?ultimo bit di una trama ha un campo di comando CMD che comprende un?indicazione di fine della sequenza in un campo EOS;
- FRAME_END: Interrupt di fine trama, che ? impostato alla fine di ciascuna trama;
- RXFIFO_OVERRUN_ERR: Questo flag ? impostato quando la FIFO di ricezione 322 ? piena e sono letti nuovi dati da scrivere nella FIFO 322;
- RXFIFO_UNDERRUN_ERR: Questo flag ? impostato quando l?interfaccia di lettura tenta di leggere dati da una FIFO di ricezione vuota 320;
- RXFIFO_FULL: Questo flag ? impostato quando la FIFO di ricezione 322 ? piena;
- RXFIFO_EMPTY: Questo flag ? impostato quando la FIFO di ricezione 322 ? vuota;
- RXFIFO_THRESH: Questo flag ? impostato quando il numero di immissioni nella FIFO di ricezione 322 ? maggiore o uguale alla soglia della FIFO di ricezione;
- TXFIFO_OVERRUN_ERR: Questo flag ? impostato quando la FIFO di trasmissione 320 ? piena ed ? scritta un?altra parola nel registro TxFIFO_PUSH;
- TXFIFO_UNDERRUN_ERR: Questo flag ? impostato quando la FIFO di trasmissione 320 ? vuota e la coda ? selezionata per un trasferimento della parola successiva;
- TXFIFO_FULL: Questo flag ? impostato quando la FIFO di trasmissione 320 ? piena;
- TXFIFO_EMPTY: Questo flag ? impostato quando la FIFO di trasmissione 320 ? vuota;
- TXFIFO_THRESH: Questo flag ? impostato quando il numero di immissioni libere nella FIFO di trasmissione 320 ? maggiore o uguale alla soglia della FIFO di trasmissione.
Come menzionato in precedenza, in varie forme di attuazione, la comunicazione con la FIFO di trasmissione 320 e la FIFO di ricezione 322 si verifica memorizzando dati in e leggendo dati da un registro di Push FIFO Q_TxFIFO_PUSH e un registro di Pop FIFO della coda Q_RxFIFO_POP, rispettivamente, per es. mediante l?interfaccia 302 o l?interfaccia DMA 302.
In varie forme di attuazione, ciascuna FIFO di trasmissione 320 pu? cos? gestire un puntatore di scrittura TxFIFO_WR_PTR che ? incrementato quando sono trasferiti dati dal registro Q_TxFIFO_PUSH alla FIFO di trasmissione 320, e un puntatore di lettura TxFIFO_RD_PTR che ? incrementato quando sono trasferiti dati all?arbitro 34. In base a questi puntatori, la FIFO di trasmissione 320 pu? anche generare un segnale TxFIFO_ACTIVE_ENTRIES che indica il numero di immissioni nella FIFO di trasmissione 320 non ancora trasmesse.
Similmente, in varie forme di attuazione, ciascuna FIFO di ricezione pu? gestire un puntatore di scrittura RxFIFO_WR_PTR che ? incrementato quando sono trasferiti dati dall?arbitro 34 alla FIFO di ricezione 322, e un puntatore di lettura RxFIFO_RD_PTR che ? incrementato quando sono trasferiti dati dalla FIFO di ricezione 322 al registro Q_RxFIFO_POP. In base a questi puntatori, la FIFO di ricezione 322 pu? anche generare un segnale RxFIFO_ACTIVE_ENTRIES che indica il numero di immissioni nella FIFO di ricezione 320 non ancora lette.
Come menzionato in precedenza, in varie forme di attuazione, uno o pi? di questi registri e parametri possono essere leggibili a scopi di debug. Per esempio, le Figure 30 e 31 rappresentano forme di attuazione del Q_TxFIFO_PTR e del Qn_RxFIFO_PTR associati a ciascuna interfaccia 32, che permettono di leggere i dati seguenti:
- TxFIFO_ACTIVE_ENTRIES;
- TxFIFO_WR_PTR;
- TxFIFO_RD_PTR;
- RxFIFO_ACTIVE_ENTRIES;
- RxFIFO_WR_PTR; e
- RxFIFO_RD_PTR.
Generalmente, come menzionato in precedenza, questi registri sono relativi ai parametri effettivi usati dalle FIFO di trasmissione e di ricezione. In varie forme di attuazione, l?interfaccia 30a pu? anche supportare un?interfaccia di debug che permette di fornire un rispettivo puntatore di lettura a una FIFO (320, 322), al fine di leggere il rispettivo contenuto della FIFO. Per esempio, a questo scopo possono essere usati i registri di debug delle code menzionati precedentemente.
Infine, come menzionato in precedenza, in varie forme di attuazione, l?interfaccia 30a, in particolare l?interfaccia SPI hardware 36, pu? anche essere configurabile al fine di effettuare un?operazione di controllo degli errori, come un controllo di parit? o un controllo di CRC. Tuttavia, quando ? effettuato un controllo di CRC, di solito ? usato un polinomio di riferimento per calcolare un codice di CRC. Al fine di gestire correttamente il calcolo del CRC, l?interfaccia 30a pu? cos? comprendere i registri Q_CRC_CFG, Q_CRC_INT, Q_CRC_POLY, Q_CRC_TX e Q_CRC_RX menzionati precedentemente (che sono elaborati di conseguenza dall?interfaccia 30a).
La Figura 32 rappresenta una forma di attuazione del registro di configurazione di CRC della coda Q_CRC_CFG. Per esempio, nella forma di attuazione considerata, ciascun registro Q_CRC_CFG comprende i seguenti campi:
- INV_OUT: permette di specificare se il valore di CRC finale calcolato dovrebbe essere invertito oppure no;
- CRC_SIZE: permette di specificare la dimensione del campo di CRC, come da 3 a 32 bit.
La Figura 32 rappresenta una forma di attuazione del registro di inizializzazione del CRC del registro di configurazione di CRC della coda, che permette di specificare un valore iniziale CRC_INI (in base alla dimensione selezionata mediante il campo CRC_SIZE) per il calcolo del CRC.
La Figura 34 rappresenta una forma di attuazione del registro polinomiale di CRC della coda Q_CRC_POLY, che permette di per il polinomio CRC_POLY (in base alla dimensione selezionata mediante il campo CRC_SIZE), impostando alto o basso il rispettivo bit. Per esempio, il polinomio x? x 1 pu? corrispondere alla sequenza ?1011?.
Di conseguenza, come rappresentato nelle Figure 35 e 36, l?interfaccia 30a pu? anche prevedere per ciascuna interfaccia 32 rispettivi registri Q_CRC_TX e Q_CRC_RX che hanno memorizzato il valore del calcolo di CRC corrente. Di conseguenza, il circuito di controllo 362 pu? comprendere un circuito di elaborazione del CRC che ? configurato per calcolare rispettivamente i valori Q_CRC_TX e Q_CRC_RX in funzione del valore iniziale Q_CRC_INT, del polinomio CRC_POLY e dei dati trasmessi o ricevuti.
Di conseguenza, in varie forme di attuazione, i registri descritti precedenti permettono di effettuare la configurazione dell?interfaccia 36 e delle interfacce 32, in particolare rispetto agli attributi di trasmissione TAC[k:0]. Inoltre, i registri possono essere usati opzionalmente per effettuare un debug dell?interfaccia 36 e/o delle interfacce 32, per es. delle code 320 e 322. A questo riguardo, in varie forme di attuazione, la trasmissione dei dati si verifica memorizzando una trama comprendente un comando CMD e dati DATA nella FIFO di trasmissione 320 di un?interfaccia 32.
Specificamente, in varie forme di attuazione, ciascuna coda comprende:
- una FIFO di dati e di comando di trasmissione 320, per es. avente 32 bit, in cui il numero dei bit da trasmettere dei dati DATA memorizzati nella FIFO 320 pu? essere configurabile, per es. tra 1 e 32;
- una FIFO di dati di ricezione, per es. avente 32 bit, in cui il numero dei bit dei dati ricevuti RXDATA, che sono memorizzati nella FIFO 322, pu? essere configurabile, per es. tra 1 e 32;
- un ingresso di innesco hardware TIN opzionale gestito dal circuito 326;
- un?uscita di innesco hardware TOUT opzionale gestita dal circuito 326;
- un?interfaccia DMA di trasmissione gestita dall?interfaccia DMA 300, che pu? essere configurata per generare un segnale di richiesta di DMA quando la FIFO di trasmissione ha un dato numero di immissioni libere;
- un?interfaccia DMA di ricezione gestita dall?interfaccia DMA 300, che pu? essere configurata per generare un segnale di richiesta di DMA quando la FIFO di ricezione ha un dato numero di immissioni riempite;
- un ingresso di marcatura temporale opzionale gestito dal circuito 328, che pu? essere configurato per memorizzare una marcatura temporale nello stato RxStatus.
Specificamente, ciascuna FIFO di trasmissione 320 ha un dato numero di immissioni (fissate), che possono anche essere memorizzate nel registro Q_HW_CONFIG o specificate nel manuale. Le immissioni (per es., di 32 bit) scritte nella FIFO di trasmissione fanno parte di una trama comprendente una sequenza di pacchetti di dati che comprendono un comando CMD e uno o pi? valori di dati DATA. Come menzionato in precedenza, in varie forme di attuazione, ciascuna immissione di comando CMD punta a uno dei registri di Controllo degli Attributi del Trasferimento (TAC) che ha un campo di conteggio dei trasferimenti di dati (DTC, ?Data Transfer Count?). Questo campo determina il numero di immissioni di dati per la rispettiva trama, per es. DTC = 0 pu? specificare che il comando CMD ha una parola di dati associata a esso e DTC = i pu? implicare i 1 immissioni di dati per ciascuna immissione di comando. Generalmente, invece di specificare il campo DTC nei registri di TAC, il campo DTC potrebbe anche fare parte del campo di comando CMD.
Per esempio, la Figura 37 rappresenta una forma di attuazione del comando CMD. Per esempio, nella forma di attuazione considerata, ciascun comando CMD comprende i seguenti campi (che sono elaborati di conseguenza dall?interfaccia 30a):
- CONT_PCS e DEASSERT_PCS_AFTER_DTC: permettono di specificare se il segnale di selezione di slave PCS ? deasserito oppure no dopo la fine di ciascuna parola di dati di una trama e/o ciascuna trama, che pu? essere utile per trasmettere una sequenza di trame, in cui il segnale di selezione di slave ? deasserito soltanto alla fine della trasmissione;
- TAC_NUM: permette di specificare uno dei registri di Controllo degli Attributi del Trasferimento TAC[k:0] da usare per un trasferimento dei dati in modalit? master (in modalit? slave, pu? essere usato un dato TAC, come il TAC[0]);
- EOS: permette di attivare la generazione dell?interrupt EOS nel registro Q_IRQ_STATUS, cio? il flag indica che la trama SPI corrente ? ultima in una sequenza;
- CLR_COUNTER: permette di resettare il campo di contatore dei trasferimenti TRANSFER_COUNT nel registro Q_STATUS;
- PARITY_EN: permette di abilitare o disabilitare la generazione di un bit di parit? per la trasmissione, e in base ai dati ricevuti per una verifica;
- PARITY_POLARITY: permette di specificare la polarit? del bit di parit? trasmesso e verificato (si veda anche la descrizione del flag PARITY_ERR nel registro Q_IRQ_STATUS);
- TRIG_OUT_CONDITION e TRIG_OUT_EN: permettono di specificare se e quando dovrebbe essere generato un segnale di innesco TOUT, per es. all?inizio o alla fine di un trasferimento dei dati di una trama;
- SW_TRIGGER e WAIT_TRIGGER: permettono di specificare se la trasmissione dovrebbe essere avviata immediatamente o, in base alla configurazione del campo HW_TRIG_EN nel registro Q_SETUP, in risposta a un innesco hardware segnalato mediante il segnale TIN o un innesco software separato programmando il campo Q_SW_TRIG nel registro Q_CTRL;
- DATA_IN_RXFIFO: permette di specificare se i dati ricevuti dovrebbero essere memorizzati nella memoria FIFO di ricezione 322;
- BURST_MODE_EN: permette di abilitare una modalit? burst, che segnala all?arbitro 34 che una sequenza di una pluralit? di trame non dovrebbe essere interrotta dall?arbitro 34;
- CUMMULATIVE_CRC_DTC, CRC_TRANSMIT e CRC_EN: permettono di specificare se il CRC dovrebbe essere calcolato, se e quando il CRC calcolato dovrebbe essere trasmesso, per es. per ciascuna parola, trama e/o sequenza di trame;
- CRC_RST: permette di specificare se il calcolo del CRC dovrebbe iniziare dal valore memorizzato nel campo CRC_INIT; e
- PCS_EN: permette di selezionare quale segnale di selezione di slave dovrebbe essere asserito, per es. specificando il valore di un rispettivo bit per ciascun segnale di selezione di slave PCS[m:0].
Come menzionato in precedenza, a scopi di sicurezza, date interfacce 32 possono anche essere configurate per scambiare dati soltanto con dati dispositivi slave. Di conseguenza, in questo caso, un rispettivo campo PCS_EN pu? essere associato a ciascuna interfaccia 32, e questi campi possono essere memorizzati in un registro globale.
Per esempio, in varie forme di attuazione, un rispettivo campo PCS_EN ? memorizzato in ciascun attributo di trasmissione TAC[k:0]. In questo caso, l?interfaccia 30a pu? anche essere configurata per limitare l?uso degli attributi di trasmissione TAC[k:0] per una o pi? delle interfacce, per es. memorizzando in ciascun attributo di trasmissione TAC[k:0] un campo che indica quale interfaccia 32 pu? usare i rispettivi attributi di trasmissione TAC.
La Figura 38 rappresenta a questo riguardo un esempio delle immissioni memorizzate nella FIFO di trasmissione 320. Specificamente, nell?esempio considerato, la FIFO 320 comprende una prima trama comprendente un primo comando CMD0 che specifica mediante il TAC_NUM gli attributi di trasmissione TAC[0]. Gli attributi di trasmissione TAC[0] indicano un numero di parole di dati di 1, per es. DTC = 0. Di conseguenza, l?interfaccia 32 si aspetta che la trama comprenda una parola di dati D0, che ? memorizzata in una immissione nella FIFO 320 successivamente al comando CMD0, cio? l?interfaccia 32 legge una immissione dalla FIFO 320 che ? fornita all?arbitro 34 per la trasmissione. La parola di dati D0 ? seguita da una seconda trama comprendente un secondo comando CMD1 che specifica mediante il TAC_NUM gli attributi di trasmissione TAC[2]. Gli attributi di trasmissione TAC[2] indicano un numero di due parole di dati, per es. DTC = 1. Di conseguenza, l?interfaccia 32 si aspetta che la trama comprenda due parole di dati D1 e D2, che sono memorizzate in immissioni nella FIFO 320 successivamente al comando CMD1, cio? l?interfaccia 32 legge sequenzialmente due immissioni dalla FIFO 320 che sono fornite all?arbitro 34 per la trasmissione. In modo simile, la trama seguente pu? comprendere un comando CMD2 che comprende un numero TAC_NUM che si riferisce agli attributi di trasmissione TAC[1], per es. che specifica la trasmissione di tre parole di dati.
Come menzionato in precedenza, in varie forme di attuazione, l?interfaccia 30a pu? essere configurata per memorizzare nella FIFO di ricezione 322 soltanto i dati ricevuti o, dopo ciascuna parola di dati, una rispettiva immissione di stato RxFIFO. Per esempio, la Figura 39 rappresenta una forma di attuazione del pacchetto di dati RxFIFO. Per esempio, nella forma di attuazione considerata, ciascun pacchetto di stato RxFIFO comprende i seguenti campi (che sono generati di conseguenza dall?interfaccia 30a):
- PAR_ERR: indica se la parola di dati ricevuta ha un errore di parit?;
- CRC_ERR: indica se la parola di dati ricevuta ha un errore di CRC;
- EOS: ? impostato quando il pacchetto di dati ? stato ricevuto in risposta a un comando CMD in cui il flag EOS era impostato;
- PCS_NUM: indica il segnale di selezione di slave che era impostato per la parola di dati ricevuta;
- TIMESTAMP_OR_TRANSFER_COUNT: indica la marcatura temporale o il conteggio dei trasferimenti della parola di dati ricevuta (come specificato, per es., mediante il flag TIMESTAMP_NOT_TRANSFER_COUNT nel registro Q_SETUP).
Di conseguenza, le forme di attuazione qui descritte hanno il vantaggio che le varie interfacce 32 possono essere usate in modo indipendente, anche con configurazioni differenti. Per esempio, in varie forme di attuazione, il circuito di elaborazione 102 pu? essere configurato, per es. mediante istruzioni software, per configurare l?interfaccia SPI 30a mediante le fasi seguenti:
1. Configurare i registri globali per impostare la modalit? di funzionamento (master o slave) e uno o pi? attributi del trasferimento dei registri TAC[k:0];
2. Opzionalmente configurare i valori di soglia di DMA per una o pi? delle FIFO di trasmissione e di ricezione nel rispettivo registro di impostazione delle code;
3. Abilitare l?interfaccia 30a, per es. impostando il campo MODULE_EN nel registro MCR;
4. Una volta che il modulo ? abilitato, il circuito di elaborazione 102 pu? scambiare dati con i registri Q_TxFIFO_PUSH e Q_RxFIFO_POP o l?interfaccia 32 genera automaticamente richieste di DMA per leggere dati dalle memorie tampone BTX, e si verificano trasferimenti di SPI in base ai dati e ai comandi letti;
5. Contrassegnare la fine di una coda particolare, il flag EOS del campo di comando CMD dell?ultima trama dovrebbe essere impostato.
Per esempio, la Figura 40 rappresenta un esempio, in cui l?interfaccia 30a comprende almeno due interfacce 320 e 321, e in cui:
- l?interfaccia 320 ? configurata per usare il messaggio di stato RxSTATUS, e per trasmettere due trame indipendenti, comprendenti ciascuna un rispettivo comando CMD0, CMD1, in cui il comando CMD0 usa un attributo di trasmissione che indica la trasmissione di una parola di dati TxData0 e il comando CMD1 usa un attributo di trasmissione che indica la trasmissione di una parola di dati TxData1; e
- l?interfaccia 321 ? configurata per non usare il messaggio di stato RxSTATUS, e per trasmettere due trame indipendenti, comprendenti ciascuna un rispettivo comando CMD0, CMD1, in cui il comando CMD0 usa un attributo di trasmissione che indica la trasmissione di una parola di dati TxData0 e il comando CMD1 usa un attributo di trasmissione che indica la trasmissione di una parola di dati TxData1.
Per contro, la Figura 41 rappresenta un esempio in cui l?interfaccia 30a comprende di nuovo almeno due interfacce 320 e 321, e in cui:
- l?interfaccia 320 ? configurata per usare il messaggio di stato RxSTATUS, e per trasmettere una sequenza di trame collegate, comprendenti ciascuna un rispettivo comando CMD0, CMD1, in cui il comando CMD0 usa un attributo di trasmissione che indica la trasmissione di due parole di dati TxData0, TxData1 e il comando CMD1 usa un attributo di trasmissione che indica la trasmissione di due parole di dati TxData2, TxData3 successive; e
- l?interfaccia 321 ? configurata per non usare il messaggio di stato RxSTATUS, e per trasmettere una sequenza di trame collegate, comprendenti ciascuna un rispettivo comando CMD0, CMD1, in cui il comando CMD0 usa un attributo di trasmissione che indica la trasmissione di tre parole di dati TxData0, TxData1, TxData2 e il comando CMD1 usa un attributo di trasmissione che indica la trasmissione di parole di dati TxData3 successive, ecc.
La Figura 42 riassume il funzionamento di varie forme di attuazione del circuito di controllo di interfaccia 324 di ciascuna interfaccia 32.
Dopo una fase di inizio 1000, il circuito di controllo di interfaccia 324 riceve, in una fase 1002, uno o pi? primi pacchetti di dati. Come menzionato in precedenza, il circuito riceve dati mediante il registro TxFIFO_PUSH. Opzionalmente, il circuito di controllo di interfaccia 324 pu? inviare, nella fase 1002, una richiesta di lettura di dati mediante l?interfaccia DMA 300 al controllore DMA 108, che memorizza in ritorno i dati ricevuti nel registro TxFIFO_PUSH. Generalmente, per generare le richieste di lettura di DMA, il circuito di controllo di interfaccia 324 pu? monitorare lo stato di riempimento della rispettiva FIFO di trasmissione 320.
In seguito, in una fase 1004, il circuito di controllo di interfaccia 324 memorizza l?uno o pi? primi pacchetti di dati ricevuti nella rispettiva memoria FIFO di trasmissione 320, cio? i pacchetti di dati sono trasferiti dal registro TxFIFO_PUSH all?interfaccia di scrittura della FIFO 320.
Una volta che i dati sono memorizzati nella FIFO di trasmissione 320, il circuito di controllo di interfaccia 324 legge sequenzialmente (mediante l?interfaccia di lettura della FIFO di trasmissione 320), in una fase 1006, l?uno o pi? primi pacchetti di dati dalla memoria FIFO di trasmissione 320 ed estrae dall?uno o pi? primi pacchetti di dati almeno una parola di dati di trasmissione DATA e opzionalmente anche la parola di comando CMD.
Di conseguenza, in una fase di verifica 1008 opzionale, il circuito di controllo di interfaccia 324 pu? verificare se la trasmissione ? abilitata, per es. in funzione dell?innesco hardware o software. Per esempio, nel caso in cui la trasmissione sia disabilitata (uscita ?N? della fase di verifica 1008), il circuito di controllo di interfaccia 324 ritorna alla fase 1008. Per contro, nel caso in cui la trasmissione sia abilitata (uscita ?Y? della fase di verifica 1008), il circuito di controllo di interfaccia 324 procede a una fase 1010. Generalmente, questa fase ? puramente opzionale, perch? la trasmissione dei dati pu? essere sempre abilitata.
Nella fase 1010, il circuito di controllo di interfaccia 326 fornisce l?almeno una parola di dati di trasmissione DATA estratta all?arbitro 34. Come menzionato in precedenza, l?arbitro 34 seleziona quale delle parole di dati fornite dalle interfacce 32 deve essere trasmessa, per es. in base a una priorit? associata ai dati, e fornisce la parola di dati selezionata (o la sequenza di parole di dati) all?interfaccia SPI hardware 36.
Di conseguenza, in un dato momento, l?interfaccia SPI hardware 36 trasmette l?almeno una parola di dati di trasmissione DATA. A questo scopo, l?interfaccia SPI hardware 36 pu? comprendere uno o pi? registri a scorrimento 360 configurati per generare un primo segnale di dati seriale SOUT in funzione di una parola di dati di trasmissione DATA e genera una parola di dati di ricezione RXDATA campionando un secondo segnale di dati seriale SIN. Inoltre, l?interfaccia SPI hardware 36 pu? comprendere anche un circuito di controllo 362 configurato per generare un segnale di clock SCK per l?uno o pi? registri a scorrimento 360. Come menzionato in precedenza, i parametri per la trasmissione possono essere specificati mediante i registri globali REGG, i rispettivi registri individuali REG0..REGn e/o il comando CMD. Cos?, in generale, sebbene sia preferibile, il campo di comando ? puramente opzionale perch? attributi di trasmissione TAC fissi potrebbero anche essere definiti (globalmente) per ciascuna interfaccia 32.
Di conseguenza, una volta che l?interfaccia SPI hardware 36 ha trasmesso l?almeno una parola di dati di trasmissione DATA e ha ricevuto la parola di dati di ricezione RXDATA, l?interfaccia SPI hardware 36 fornisce la parola di dati di ricezione RXDATA all?arbitro 34, cio? l?arbitro 34 riceve la parola di dati di ricezione RXDATA dall?interfaccia di comunicazione SPI hardware 36 e inoltra la parola di dati di ricezione RXDATA all?interfaccia 32 associata all?almeno una parola di dati di trasmissione DATA trasmessa.
Di conseguenza, in una fase 1012, il circuito di controllo di interfaccia 326 riceve da detto arbitro 34 la parola di dati di ricezione (RXDATA).
In seguito, il circuito di controllo di interfaccia 326 memorizza, in una fase 1014, mediante l?interfaccia di scrittura della FIFO di ricezione 322 uno o pi? secondi pacchetti di dati nella memoria FIFO di ricezione 322, in cui l?uno o pi? secondi pacchetti di dati comprendono la parola di dati di ricezione RXDATA ricevuta.
Di conseguenza, una volta che i dati sono disponibili, il circuito di controllo di interfaccia 326 pu? trasmettere sequenzialmente, in una fase 1016, l?uno o pi? secondi pacchetti di dati memorizzati nella memoria FIFO di ricezione 322. Come menzionato in precedenza, il circuito 326 pu? leggere mediante l?interfaccia di lettura della FIFO di ricezione 322 almeno un secondo pacchetto di dati dalla FIFO di ricezione 322 e pu? trasferire l?almeno un secondo pacchetto di dati al registro RxFIFO_PULL. In seguito, il circuito di controllo di interfaccia 326 pu? trasmettere l?almeno un secondo pacchetto di dati memorizzato nel registro RxFIFO_PULL, per es.:
- in risposta a una richiesta di lettura al registro RxFIFO_PULL; o
- inviando una richiesta di scrittura di dati mediante l?interfaccia DMA 300 al controllore DMA 108.
Una volta che la trasmissione/ricezione dei dati ? completata, il circuito di controllo di interfaccia 326 pu? ritornare alla fase 1002 per trasmettere una nuova richiesta.
Generalmente, sebbene rappresentate nella Figura 42 come operazioni sequenziali, in effetti varie fasi possono essere eseguite in parallelo, per es. mediante un rispettivo sotto-circuito hardware, come:
- le fasi 1002 e 1004 relative al funzionamento dell?interfaccia di scrittura della FIFO 320;
- le fasi da 1006 a 1014 relative al funzionamento dell?interfaccia di lettura della FIFO 320 e dell?interfaccia di scrittura della FIFO 322; e
- la fase 1016 relativa al funzionamento dell?interfaccia di lettura della FIFO 322.
Come menzionato in precedenza, quando code plurali richiedono la trasmissione di una rispettiva trama o sequenza di trame (in modalit? BURST), l?arbitro 34 deve decidere quale trama ? trasmessa per prima.
Per esempio, come menzionato in precedenza, in varie forme di attuazione, la trasmissione di una trama pu? essere richiesta (per es., selettivamente) direttamente in base al campo di comando CMD, a un innesco software o a un innesco hardware.
Di conseguenza, in varie forme di attuazione, l?arbitro 34 ? configurato per determinare le code che hanno richiesto una trasmissione di dati. In varie forme di attuazione, la priorit? di una richiesta di trasmissione ? basata sulla priorit? impostata per una data interfaccia 32 come specificato nel campo PRIORITY del rispettivo registro Q_SETUP. Tuttavia, come menzionato in precedenza, la priorit? potrebbe anche essere specificata direttamente nel campo di comando CMD.
Per esempio, in varie forme di attuazione, una volta che ha determinato la priorit? associata a una data richiesta di trasmissione, l?arbitro 34 ? configurato per selezionare la richiesta di trasmissione con la pi? alta priorit?, per es. con il pi? alto (o, in alternativa, con il pi? basso) valore.
Di conseguenza, l?arbitro 34 connette la coda di trasmissione 320 e la coda di ricezione 322 della rispettiva interfaccia 32 all?interfaccia di comunicazione SPI hardware, che cos? d? inizio alla trasmissione dei dati in base alla configurazione globale, alla rispettiva configurazione individuale e opzionalmente alla configurazione memorizzata nel campo di comando CMD.
A questo riguardo, come descritto in precedenza, nel caso in cui una pluralit? di trame sia memorizzata in una data FIFO di trasmissione 320, il flag di modalit? burst BURST_MODE_EN pu? specificare se la trasmissione della sequenza di trame pu? essere interrotta dalla trasmissione di un?altra trama con priorit? pi? alta. Per esempio, in varie forme di attuazione l?arbitro 34 ? configurato per interrompere la trasmissione delle trame di una sequenza di trame e per trasmettere una o pi? trame con priorit? pi? alta, quando ? soddisfatta una delle condizioni seguenti:
- BURST_MODE_EN = 0 AND CONT_PCS = 0
- BURST_MODE_EN = 0 AND (CONT_PCS = 1 AND DTC > 0 AND DEASSERT_PCS_AFTER_DTC = 1).
Come rappresentato schematicamente nella Figura 13, in varie forme di attuazione, una o pi? delle interfacce 320..32n possono anche comprendere una coda di ricezione ausiliaria 330 (in aggiunta alla coda di ricezione 322). Per esempio, in varie forme di attuazione, la coda di ricezione ausiliaria 330 ? prevista soltanto per l?interfaccia 320, che ? anche l?interfaccia usata quando l?interfaccia SPI 30a ? fatta funzionare nella modalit? slave. Per esempio, in varie forme di attuazione, il registro di configurazione della coda pu? comprendere un flag che specifica se i dati ricevuti dovrebbero essere memorizzati nella FIFO di ricezione 320 e/o nella coda di ricezione ausiliaria 330. Questa coda di ricezione ausiliaria 330, come una ulteriore memoria FIFO, pu? essere utile al fine di fornire direttamente i dati rispettivi mediante un segnale AuxData a un altro circuito hardware del sistema di elaborazione 10, per es. mediante un?interfaccia di lettura FIFO, bypassando con ci? l?interfaccia DMA 300. In questo caso, la coda di ricezione ausiliaria 330 pu? avere associati i dati di configurazione come la FIFO di ricezione 322, come almeno uno tra: un valore di soglia (AuxFIFO_THRESHOLD), un campo che indica le locazioni della FIFO (AuxFIFO_DEPTH), rispettivi flag di abilitazione di interrupt (AUXFIFO_OVERRUN_IRQ_EN, AUXFIFO_UNDERRUN_IRQ_EN, AUXFIFO_FULL_IRQ_EN, AUXFIFO_EMPTY_IRQ_EN, AUXFIFO_THRESH_IRQ_EN), flag di interrupt (AUXFIFO_OVERRUN_ERR, AUXFIFO_UNDERRUN_ERR, AUXFIFO_UNDERRUN_ERR, AUXFIFO_EMPTY, AUXFIFO_THRESH) e registri di debug.
Di conseguenza, la presente descrizione ? relativa a vari aspetti, che forniscono miglioramenti rispetto a interfacce SPI note, che possono essere usati separatamente o in combinazione.
Generalmente, il circuito SPI 30a della presente descrizione pu? essere usato con un qualsiasi circuito di elaborazione digitale 102, e preferibilmente un circuito di elaborazione digitale 102 programmabile in funzione di un firmware memorizzato in una memoria non volatile 104, come un microprocessore.
In varie forme di attuazione, il circuito SPI 30a comprende un?interfaccia di comunicazione SPI hardware 36, un arbitro 34 e una pluralit? di circuiti di interfaccia 320..32n.
In varie forme di attuazione, l?interfaccia di comunicazione SPI hardware 36 comprende uno o pi? registri a scorrimento 360 configurati per generare un primo segnale di dati seriale SOUT in funzione di una parola di dati di trasmissione DATA e di una parola di dati di ricezione RXDATA campionando un secondo segnale di dati seriale SIN.
L?interfaccia di comunicazione SPI hardware 36 comprende anche un circuito di controllo 362 configurato per generare un segnale di clock SCK per l?uno o pi? registri a scorrimento 360.
In varie forme di attuazione, l?arbitro 34 ? configurato per fornire la parola di dati di trasmissione DATA all?interfaccia di comunicazione SPI hardware 36 e per ricevere la parola di dati di ricezione RXDATA dall?interfaccia di comunicazione SPI hardware 36.
In varie forme di attuazione, ciascun circuito di interfaccia 320..32n comprende una memoria FIFO di trasmissione 320, una memoria FIFO di ricezione 322 e un circuito di controllo di interfaccia 324. Specificamente, in varie forme di attuazione, il circuito di controllo di interfaccia 324 ? configurato per ricevere uno o pi? primi pacchetti di dati dal circuito di elaborazione digitale 102, e per memorizzare l?uno o pi? primi pacchetti di dati ricevuti nella memoria FIFO di trasmissione 320. In seguito, il circuito di controllo di interfaccia 324 legge sequenzialmente l?uno o pi? primi pacchetti di dati dalla memoria FIFO di trasmissione 320, estrae dall?uno o pi? primi pacchetti di dati almeno una parola di dati di trasmissione DATA, e fornisce l?almeno una parola di dati di trasmissione DATA estratta all?arbitro 34. A sua volta, il circuito di controllo di interfaccia 324 riceve dall?arbitro 34 la parola di dati di ricezione RXDATA, e memorizza uno o pi? secondi pacchetti di dati nella memoria FIFO di ricezione 322, in cui l?uno o pi? secondi pacchetti di dati comprendono la parola di dati di ricezione RXDATA ricevuta. Infine, il circuito di controllo di interfaccia 324 legge sequenzialmente l?uno o pi? secondi pacchetti di dati dalla memoria FIFO di ricezione 322, e trasmette l?uno o pi? secondi pacchetti di dati (letti) al circuito di elaborazione digitale 102.
Secondo un primo aspetto della presente descrizione, il circuito di controllo di interfaccia 324 non estrae soltanto almeno una parola di dati di trasmissione DATA dall?uno o pi? primi pacchetti di dati, ma anche un comando CMD. Specificamente, in varie forme di attuazione, questo comando indica le propriet? della comunicazione SPI da usare per trasmettere l?almeno una parola di dati di trasmissione DATA. Pi? specificamente, in varie forme di attuazione, il comando comprende un riferimento a uno tra una pluralit? di attributi di trasmissione TAC configurabili.
Secondo un secondo aspetto della presente descrizione, il circuito SPI 30a comprende una pluralit? di registri di configurazione, in cui registri globali REGG sono usati per configurare l?interfaccia di comunicazione SPI hardware 36 e/o l?arbitro 34, e registri individuali REG0..REGn sono usati per configurare ciascun circuito di interfaccia 320..32n. In varie forme di attuazione, il sistema di elaborazione ? configurato per limitare l?accesso a questi registri mediante un controllore di accesso in memoria hardware e/o software.
Secondo un terzo aspetto della presente descrizione, il sistema di elaborazione 10 comprende una memoria 104 (o 104b) connessa all?unit? di elaborazione digitale 102, e un controllore DMA 108 configurato per leggere dati dalla memoria 104 in funzione di una richiesta di lettura di dati ricevuta mediante un primo canale di DMA DMA_Tx e per memorizzare dati nella memoria 104 in funzione di una richiesta di scrittura di dati ricevuta mediante un secondo canale di DMA DMA_Rx. In questo caso, il circuito SPI 30a pu? comprendere un?interfaccia DMA 300 configurata per comunicare con il controllore DMA 108. Inoltre, il circuito di controllo di interfaccia 324 pu? essere configurato per ricevere l?uno o pi? primi pacchetti di dati inviando una richiesta di lettura di dati mediante l?interfaccia DMA 300 al controllore DMA 108, e per trasmettere l?uno o pi? secondi pacchetti di dati inviando la richiesta di scrittura di dati mediante l?interfaccia DMA 300 al controllore DMA 108. Di conseguenza, in questo caso, l?unit? di elaborazione digitale 102 pu? scambiare dati con il circuito SPI 30a indirettamente mediante la memoria 104 (o 104b). In varie forme di attuazione, il sistema di elaborazione 10 ? configurato per limitare l?accesso alle aree di memoria disposte per memorizzare i primi pacchetti di dati e i secondi pacchetti di dati mediante un controllore di accesso in memoria hardware e/o software.
Naturalmente, fermi restando i principi di fondo dell?invenzione, i dettagli di costruzione e le forme di attuazione possono variare, anche in modo apprezzabile, rispetto a quanto ? stato descritto e illustrato qui, puramente a titolo di esempio, senza uscire con ci? dall?ambito della presente invenzione, come definito dalle rivendicazioni che seguono.

Claims (13)

  1. RIVENDICAZIONI 1. Sistema di elaborazione (10a) comprendente: - un circuito di Interfaccia Periferica Seriale, SPI, (30a); - un circuito di elaborazione digitale (102) programmabile in funzione di un firmware memorizzato in una memoria non volatile (104); in cui detto circuito SPI (30a) comprende: - un?interfaccia di comunicazione SPI hardware (36) comprendente: - uno o pi? registri a scorrimento (360) configurati per generare un primo segnale di dati seriale (SOUT) in funzione di una parola di dati di trasmissione (DATA) e di una parola di dati di ricezione (RXDATA) campionando un secondo segnale di dati seriale (SIN); - un circuito di controllo (362) configurato per generare un segnale di clock (SCK) per detti uno o pi? registri a scorrimento (360); - un arbitro (34) configurato per fornire detta parola di dati di trasmissione (DATA) a detta interfaccia di comunicazione SPI hardware (36) e ricevere detta parola di dati di ricezione (RXDATA) da detta interfaccia di comunicazione SPI hardware (36); - una pluralit? di circuiti di interfaccia (320..32n), in cui ciascun circuito di interfaccia (320..32n) comprende una memoria FIFO di trasmissione (320), una memoria FIFO di ricezione (322) e un circuito di controllo di interfaccia (324) configurati per: - ricevere uno o pi? primi pacchetti di dati da detto circuito di elaborazione digitale (102); - memorizzare l?uno o pi? primi pacchetti di dati ricevuti in detta memoria FIFO di trasmissione (320); - leggere sequenzialmente detti uno o pi? primi pacchetti di dati da detta memoria FIFO di trasmissione (320); - estrarre da detti uno o pi? primi pacchetti di dati almeno una parola di dati di trasmissione (DATA); - fornire detta almeno una parola di dati di trasmissione (DATA) estratta a detto arbitro (34); - ricevere da detto arbitro (34) detta parola di dati di ricezione (RXDATA); - memorizzare uno o pi? secondi pacchetti di dati in detta memoria FIFO di ricezione (322), detti uno o pi? secondi pacchetti di dati comprendendo detta parola di dati di ricezione (RXDATA) ricevuta; - leggere sequenzialmente detti uno o pi? secondi pacchetti di dati da detta memoria FIFO di ricezione (322); e - trasmettere detti uno o pi? secondi pacchetti di dati a detto circuito di elaborazione digitale (102).
  2. 2. Sistema di elaborazione secondo la Rivendicazione 1, in cui detti uno o pi? primi pacchetti di dati comprendono un comando (CMD) seguito da almeno una parola di dati di trasmissione (DATA), in cui detto comando (CMD) comprende un campo (TAC_NUM) per memorizzare dati che indicano un conteggio dei trasferimenti di dati (DTC) che identifica il numero di parole di dati di trasmissione (DATA) che seguono detto comando (CMD), e in cui detto circuito di controllo di interfaccia (324) ? configurato per: - estrarre detto comando (CMD) dall?uno o pi? primi pacchetti di dati; - determinare detto conteggio dei trasferimenti di dati (DTC); - estrarre da detti uno o pi? primi pacchetti di dati un numero di parole di dati di trasmissione (DATA) come indicato da detto conteggio dei trasferimenti di dati (DTC); e - fornire dette parole di dati di trasmissione (DATA) estratte a detto arbitro (34).
  3. 3. Sistema di elaborazione secondo la Rivendicazione 2, in cui detto circuito di controllo (362) ? configurato per generare una pluralit? di segnali di selezione di slave (PCS), e in cui detto comando (CMD) comprende dati (PCS_EN) che indicano quale segnale di selezione di slave (PCS) dovrebbe essere impostato durante la trasmissione delle rispettive parole di dati di trasmissione (DATA).
  4. 4. Sistema di elaborazione secondo la Rivendicazione 2 o la Rivendicazione 3, in cui detto circuito SPI (30a) comprende un insieme di registri di configurazione globali (REGG) per specificare una pluralit? di elementi di attributi di trasmissione (TAC), in cui ciascun elemento di attributo di trasmissione (TAC) comprende un rispettivo campo (DTC) per memorizzare detto conteggio dei trasferimenti di dati (DTC), e in cui detto comando (CMD) comprende un campo (TAC_NUM) che indica uno di detti elementi di attributi di trasmissione (TAC).
  5. 5. Sistema di elaborazione secondo la Rivendicazione 4, in cui ciascun elemento di attributo di trasmissione (TAC) comprende uno o pi? campi per memorizzare almeno uno tra: - dati (TAC_L) che indicano la temporizzazione di detto segnale di clock (SCK); - dati (CPOL) che indicano lo stato inattivo di detto segnale di clock (SCK); - dati (CPHA) che indicano se l?uno o pi? registri a scorrimento (360) generano detto primo segnale di dati seriale (SOUT) e/o campionano detto secondo segnale di dati seriale (SIN) in risposta a un fronte di salita o di discesa di detto segnale di clock (SCK); - dati (FMSZ) che indicano il numero dei bit di detta parola di dati di trasmissione (DATA) da trasmettere mediante detto primo segnale di dati seriale (SOUT).
  6. 6. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, in cui ciascun circuito di interfaccia (320..32n) comprende un rispettivo insieme di registri di configurazione individuali (REG0..REGn), ciascun insieme di registri di configurazione individuali comprendendo uno o pi? campi per memorizzare dati (PRIORITY) che indicano la priorit? della rispettiva parola di dati di trasmissione (DATA) estratta fornita a detto arbitro (34).
  7. 7. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, in cui detto circuito SPI (30a) comprende un insieme di registri di configurazione globali (REGG) per configurare detta interfaccia di comunicazione SPI hardware (36) e/o detto arbitro (34), e in cui ciascun circuito di interfaccia (320..32n) comprende un rispettivo insieme di registri di configurazione individuali (REG0..REGn) per configurare i rispettivi circuiti di interfaccia (320..32n), e in cui a detto insieme di registri di configurazione globali (REGG) e a detti insiemi di registri di configurazione individuali (REG0..REGn) sono associati rispettivi intervalli di indirizzi di memoria nell?intervallo di indirizzi di detto circuito di elaborazione digitale (102), e in cui detto sistema di elaborazione (10a) ? configurato per limitare l?accesso a detti intervalli di indirizzi di memoria per dati compiti software eseguiti da detto circuito di elaborazione digitale (102).
  8. 8. Sistema di elaborazione secondo la Rivendicazione 7, in cui detto circuito di elaborazione digitale (102) ? configurato per eseguire un ipervisore (HYP) che fornisce una pluralit? di ambienti di esecuzione (EEH, EEa, EEb), in cui ciascun ambiente di esecuzione ? configurato per eseguire un rispettivo sistema operativo (OSH, OSa, OSb), e in cui detto ipervisore (HYP) ? configurato per limitare l?accesso a detti intervalli di indirizzi di memoria per detti ambienti di esecuzione (EEH, EEa, EEb).
  9. 9. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, comprendente una memoria (104, 104b) connessa all?unit? di elaborazione digitale (102) e un controllore DMA (108) configurato per leggere dati da detta memoria (104, 104b) in funzione di una richiesta di lettura di dati ricevuta mediante un primo canale di DMA (DMA_Tx) e per memorizzare dati nella memoria (104, 104b) in funzione di una richiesta di scrittura di dati ricevuta mediante un secondo canale di DMA (DMA_Rx), e in cui detto circuito SPI (30a) comprende un?interfaccia DMA (300) configurata per comunicare con detto controllore DMA (108), e in cui il circuito di controllo di interfaccia (324) di almeno un circuito di interfaccia (320..32n) ? configurato per: - ricevere detti uno o pi? primi pacchetti di dati inviando una richiesta di lettura di dati mediante detta interfaccia DMA (300) al controllore DMA (108), e - trasmettere detti uno o pi? secondi pacchetti di dati inviando una richiesta di scrittura di dati mediante detta interfaccia DMA (300) a detto controllore DMA (108).
  10. 10. Sistema di elaborazione secondo la Rivendicazione 9, in cui detto almeno un circuito di interfaccia (320..32n) comprende un rispettivo insieme di registri di configurazione individuali (REG0..REGn) per configurare una prima soglia (TxFIFO_THRESHOLD) di immissioni libere in detta memoria FIFO di trasmissione (320) e una seconda soglia (RxFIFO_THRESHOLD) di immissioni riempite in detta memoria FIFO di ricezione (322), e in cui detto circuito di controllo di interfaccia (324) di detto almeno un circuito di interfaccia (320..32n) ? configurato per: - determinare se il numero di immissioni libere in detta memoria FIFO di trasmissione (320) supera detta prima soglia (TxFIFO_THRESHOLD), e inviare detta richiesta di lettura di dati mediante detta interfaccia DMA (300) al controllore DMA (108) quando il numero di immissioni libere in detta memoria FIFO di trasmissione (320) supera detta prima soglia (TxFIFO_THRESHOLD), e - determinare se il numero di immissioni riempite in detta memoria FIFO di ricezione (322) supera detta seconda soglia (RxFIFO_THRESHOLD), e inviare detta richiesta di scrittura di dati mediante detta interfaccia DMA (300) a detto controllore DMA (108) quando il numero di immissioni riempite in detta memoria FIFO di ricezione (322) supera detta seconda soglia (RxFIFO_THRESHOLD).
  11. 11. Circuito integrato comprendente un sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti.
  12. 12. Dispositivo, come un veicolo, comprendente un sistema di elaborazione (101) secondo una qualsiasi delle Rivendicazioni da 1 a 10, e un dispositivo slave SPI (102..106), in cui detto sistema di elaborazione (101) ? configurato per scambiare dati con detto dispositivo slave SPI (102..106) mediante il circuito SPI (30a) di detto sistema di elaborazione.
  13. 13. Procedimento di funzionamento di un sistema di elaborazione (10a) secondo una qualsiasi delle Rivendicazioni da 1 a 10, comprendente: - ricevere uno o pi? primi pacchetti di dati da detto circuito di elaborazione digitale (102); - memorizzare l?uno o pi? primi pacchetti di dati ricevuti in detta memoria FIFO di trasmissione (320); - leggere sequenzialmente detti uno o pi? primi pacchetti di dati da detta memoria FIFO di trasmissione (320); - estrarre da detti uno o pi? primi pacchetti di dati almeno una parola di dati di trasmissione (DATA); - fornire detta almeno una parola di dati di trasmissione (DATA) estratta a detto arbitro (34); - ricevere da detto arbitro (34) detta parola di dati di ricezione (RXDATA); - memorizzare uno o pi? secondi pacchetti di dati in detta memoria FIFO di ricezione (322), detti uno o pi? secondi pacchetti di dati comprendendo detta parola di dati di ricezione (RXDATA) ricevuta; - leggere sequenzialmente detti uno o pi? secondi pacchetti di dati da detta memoria FIFO di ricezione (322); e - trasmettere detti uno o pi? secondi pacchetti di dati a detto circuito di elaborazione digitale (102).
IT102020000006322A 2020-03-25 2020-03-25 Sistema di elaborazione comprendente un’interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento IT202000006322A1 (it)

Priority Applications (5)

Application Number Priority Date Filing Date Title
IT102020000006322A IT202000006322A1 (it) 2020-03-25 2020-03-25 Sistema di elaborazione comprendente un’interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento
US17/199,418 US11734221B2 (en) 2020-03-25 2021-03-11 Processing system comprising a queued serial peripheral interface, related integrated circuit, device and method
EP22206499.0A EP4152171B1 (en) 2020-03-25 2021-03-12 A processing system comprising a queued serial peripheral interface, related integrated circuit, device and method
EP21162262.6A EP3885924B1 (en) 2020-03-25 2021-03-12 A processing system comprising a queued serial peripheral interface, related integrated circuit, device and method
CN202110311738.XA CN113448902A (zh) 2020-03-25 2021-03-24 有排队串行外围接口的处理系统、集成电路、设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102020000006322A IT202000006322A1 (it) 2020-03-25 2020-03-25 Sistema di elaborazione comprendente un’interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento

Publications (1)

Publication Number Publication Date
IT202000006322A1 true IT202000006322A1 (it) 2021-09-25

Family

ID=70739134

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102020000006322A IT202000006322A1 (it) 2020-03-25 2020-03-25 Sistema di elaborazione comprendente un’interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento

Country Status (3)

Country Link
US (1) US11734221B2 (it)
EP (2) EP3885924B1 (it)
IT (1) IT202000006322A1 (it)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4086763A1 (en) 2021-05-06 2022-11-09 STMicroelectronics Application GmbH System for managing access rights for virtual machines in a multi-core processing system, related integrated circuit, device and method.

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392448B2 (en) * 2020-10-20 2022-07-19 Micron Technology, Inc. Payload parity protection for a synchronous interface
US11824681B2 (en) * 2021-08-18 2023-11-21 Stmicroelectronics Application Gmbh Processing system, related integrated circuit, device and method
CN115794722B (zh) * 2023-02-10 2023-05-16 智绘微电子科技(南京)有限公司 一种AXI outstanding接口转换实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146157A1 (en) * 2008-12-10 2010-06-10 Electronics And Telecommunications Research Institute Multi-radio interfacing and direct memory access based data transferring methods and sink node for performing the same in wireless sensor network
US20160132440A1 (en) * 2014-11-11 2016-05-12 Microchip Technology Incorporated Multi-channel i2s transmit control system and method

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805922A (en) * 1994-05-02 1998-09-08 Motorola, Inc. Queued serial peripheral interface having multiple queues for use in a data processing system
US6157968A (en) * 1998-01-26 2000-12-05 Motorola Inc. Interface with selector receiving control words comprising device identifiers for determining corresponding communications parameter set for interface port transfer of data words to peripheral devices
US6260086B1 (en) * 1998-12-22 2001-07-10 Motorola, Inc. Controller circuit for transferring a set of peripheral data words
US6687769B2 (en) * 2001-03-16 2004-02-03 Texas Instruments Incorporated Serial peripheral interface with high performance buffering scheme
GB2466982B (en) * 2009-01-16 2013-07-17 Nvidia Technology Uk Ltd DMA Engine
TW201216063A (en) * 2010-10-08 2012-04-16 Asix Electronic Corp Hybrid serial peripheral interface data transmission architecture and method of the same
JP5746090B2 (ja) * 2012-05-08 2015-07-08 トヨタ自動車株式会社 シリアル通信装置、シリアル通信システム、シリアル通信方法
US11256651B2 (en) * 2019-04-26 2022-02-22 Qualcomm Incorporated Multiple master, multi-slave serial peripheral interface
WO2021071546A1 (en) * 2019-10-10 2021-04-15 Microchip Technology Incorporated N-channel serial peripheral communication, and related systems, methods and devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146157A1 (en) * 2008-12-10 2010-06-10 Electronics And Telecommunications Research Institute Multi-radio interfacing and direct memory access based data transferring methods and sink node for performing the same in wireless sensor network
US20160132440A1 (en) * 2014-11-11 2016-05-12 Microchip Technology Incorporated Multi-channel i2s transmit control system and method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
INTEL: "Enhanced Serial Peripheral Interface (eSPI) Interface Base Specification (for Client and Server Platforms)", 1 February 2016 (2016-02-01), XP055683687, Retrieved from the Internet <URL:https://www.intel.com/content/dam/support/us/en/documents/software/chipset-software/327432-004_espi_base_specification_rev1.0_cb.pdf> [retrieved on 20200407] *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4086763A1 (en) 2021-05-06 2022-11-09 STMicroelectronics Application GmbH System for managing access rights for virtual machines in a multi-core processing system, related integrated circuit, device and method.

Also Published As

Publication number Publication date
US11734221B2 (en) 2023-08-22
EP4152171B1 (en) 2024-01-31
EP4152171A1 (en) 2023-03-22
EP3885924A1 (en) 2021-09-29
EP3885924B1 (en) 2023-01-04
US20210303504A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
IT202000006322A1 (it) Sistema di elaborazione comprendente un’interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento
US7287194B2 (en) Real-time debug support for a DMA device and method thereof
US8458267B2 (en) Distributed parallel messaging for multiprocessor systems
CN103198856B (zh) 一种ddr控制器及请求调度方法
CN113448902A (zh) 有排队串行外围接口的处理系统、集成电路、设备和方法
US7433977B2 (en) DMAC to handle transfers of unknown lengths
CN112292670A (zh) 调试控制器电路
US20180217952A1 (en) Communication interface for interfacing a transmission circuit with an interconnection network, and corresponding system and integrated circuit
US20130054852A1 (en) Deadlock Avoidance in a Multi-Node System
CN110188059B (zh) 数据有效位统一配置的流控式fifo缓存装置及方法
EP3644192B1 (en) Master chip, slave chip, and dma transfer system between chips
US20230359396A1 (en) Systems and methods for processing commands for storage devices
JP2007034910A (ja) マルチcpuシステム及びスケジューラ
US9424166B2 (en) Routing debug messages
JP2008502977A (ja) バス・コントローラのための割り込み方式
US7254667B2 (en) Data transfer between an external data source and a memory associated with a data processor
US8402178B2 (en) Device to device flow control within a chain of devices
JP2008502980A (ja) データを転送するためのバス・コントローラ
US20110055446A1 (en) Semiconductor integrated circuit device
EP4095704B1 (en) Processing system, related integrated circuit, device and method
IT202100029735A1 (it) Metodo per interfacciare una prima unità di lettura/scrittura dati ad una seconda unità di lettura/scrittura dati e relativi moduli di interfaccia
EP3945407A1 (en) Systems and methods for processing copy commands
EP1990725A1 (en) Central processing unit, central processing unit control method, and information processing system
Song et al. Implement of Intelligent Node for Vehicles Based on FlexRay Bus
CN112585593A (zh) 链路层数据打包和封包流控制方案