IT202000016393A1 - Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento - Google Patents

Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento Download PDF

Info

Publication number
IT202000016393A1
IT202000016393A1 IT102020000016393A IT202000016393A IT202000016393A1 IT 202000016393 A1 IT202000016393 A1 IT 202000016393A1 IT 102020000016393 A IT102020000016393 A IT 102020000016393A IT 202000016393 A IT202000016393 A IT 202000016393A IT 202000016393 A1 IT202000016393 A1 IT 202000016393A1
Authority
IT
Italy
Prior art keywords
fft
circuit
processing
memory banks
data
Prior art date
Application number
IT102020000016393A
Other languages
English (en)
Inventor
Giampiero Borgonovo
Fiorentin Lorenzo Re
Original Assignee
St Microelectronics Srl
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by St Microelectronics Srl filed Critical St Microelectronics Srl
Priority to IT102020000016393A priority Critical patent/IT202000016393A1/it
Priority to US17/339,083 priority patent/US11461257B2/en
Priority to EP21181073.4A priority patent/EP3937033A1/en
Priority to CN202110762708.0A priority patent/CN113971260A/zh
Publication of IT202000016393A1 publication Critical patent/IT202000016393A1/it
Priority to US17/811,209 priority patent/US11675720B2/en

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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/287Multiplexed DMA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/37Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/372Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a time-dependent priority, e.g. individually loaded time counters or time slot
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Channel Selection Circuits, Automatic Tuning Circuits (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

DESCRIZIONE dell?invenzione industriale dal titolo:
?Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento?
TESTO DELLA DESCRIZIONE
Campo tecnico
La descrizione ? relativa ai circuiti di elaborazione di segnale digitale, come i processori di trasformata di Fourier veloce (FFT, ?Fast Fourier Transform?).
Sfondo tecnologico
I moderni sistemi di comunicazione a banda larga basati sulla multiplazione a divisione di frequenza ortogonale (OFDM, ?Orthogonal Frequency Division Multiplexing?), come il DVB (Digital Video Broadcasting) e il DAB (Digital Audio Broadcasting), o i moderni sistemi radar (sempre pi? usati, per esempio, nel settore automotive) sono esempi di sistemi di elaborazione che comportano il calcolo di trasformate di Fourier veloci (FFT), la cui lunghezza (o dimensione) pu? raggiungere fino a 8192 punti, o anche di pi?.
Il calcolo delle trasformate di Fourier veloci pu? essere realizzato da processori di FFT implementati in hardware. Un processore di FFT pu? comprendere uno o pi? elementi di elaborazione (PE, ?Processing Element?), per esempio elementi di elaborazione butterfly radice 2, e una o pi? memorie di sola lettura (ROM, ?Read-Only Memory?). Le memorie di sola lettura nel processore di FFT possono essere configurate per memorizzare i fattori di twiddle per il calcolo delle trasformate di Fourier veloci.
Nel caso di algoritmi di FFT lunghe che implicano un numero elevato di differenti fattori di twiddle, le memorie ROM possono rappresentare una porzione significativa dell?intero processore di FFT (per es., in termini di area di silicio occupata).
Le memorie ROM possono rappresentare una porzione significativa del processore di FFT specialmente se il processore di FFT si basa sull?uso del calcolo parallelo, cio?, nel caso in cui il processore di FFT comprenda una pluralit? di elementi di elaborazione e una rispettiva pluralit? di memorie ROM accoppiate ad essi.
Di solito, i fattori di twiddle sono memorizzati (per es., cablati in hardware (?hard-wired?)) nelle memorie ROM e sono recuperati per la moltiplicazione butterfly per mezzo di generatori di indirizzi di ROM (RAG, ?ROM Address Generator?) implementati all?interno degli elementi di elaborazione. I generatori di indirizzi di ROM possono fornire l?indirizzo di memoria in cui ? memorizzato un fattore di twiddle richiesto.
Se ? usata una pluralit? di elementi di elaborazione in un processore di FFT per un calcolo parallelo, una pluralit? di tabelle di ricerca (?lookup table?) in ROM pu? essere fornita nel processore di FFT (per es., una memoria ROM dedicata per ciascun elemento di elaborazione) al fine di evitare conflitti di accesso alla memoria quando gli elementi di elaborazione accedono alle memorie ROM per estrarre (?fetch?) i fattori di twiddle.
In alternativa, possono essere implementati complessi schemi di accesso senza conflitti, per es., come descritto da P. Jui, C. Wey e M. Shiue, "Low-cost parallel FFT processors with conflict-free ROM-based twiddle factor generator for DVB-T2 applications," 2013 IEEE 56th International Midwest Symposium on Circuits and Systems (MWSCAS), Columbus, OH (Stati Uniti d?America), 2013, pagine da 1003 a 1006, doi: 10.1109/MWSCAS.2013.6674821.
Scopo e sintesi
Uno scopo di una o pi? forme di attuazione ? contribuire a fornire un processore di FFT avente un?architettura efficiente per la generazione degli indici dei fattori di twiddle (per es., la memorizzazione e la lettura dei fattori di twiddle), per es., in termini di compromesso tra l?occupazione dell?area di silicio e le prestazioni.
Secondo una o pi? forme di attuazione, tale scopo pu? essere raggiunto per mezzo di un circuito (per es., un processore di segnale digitale) avente le caratteristiche esposte nelle rivendicazioni che seguono.
Una o pi? forme di attuazione possono essere relative a un corrispondente procedimento di funzionamento del circuito.
Le rivendicazioni sono parte integrante dell?insegnamento tecnico qui fornito con riferimento alle forme di attuazione.
Una o pi? forme di attuazione possono basarsi su uno schema vantaggioso per memorizzare i fattori di twiddle in una memoria ROM, il che pu? facilitare una riduzione della dimensione della memoria ROM evitando nel contempo conflitti di accesso alla memoria.
Una o pi? forme di attuazione possono fornire un corrispondente generatore di indirizzi di ROM che coopera con un circuito controllore di ROM per estrarre i fattori di twiddle dalla memoria ROM.
Secondo una o pi? forme di attuazione, ? fornito un circuito che pu? comprendere una pluralit? di unit? di elaborazione comprendente un numero P di unit? di elaborazione, una pluralit? di banchi di memoria di dati configurati per memorizzare dati e una pluralit? di banchi di memoria di coefficienti configurati per memorizzare i fattori di twiddle per un?elaborazione di trasformata di Fourier veloce, FFT. La pluralit? di banchi di memoria di coefficienti pu? comprendere un numero P di banchi di memoria di coefficienti uguale al numero P di unit? di elaborazione.
Il circuito pu? essere configurato per applicare un?elaborazione di trasformata di Fourier veloce avente una dimensione N, nella forma N=2<n >con n che ? un intero, ai dati memorizzati nei banchi di memoria di dati. Applicare un?elaborazione di trasformata di Fourier veloce avente una dimensione N pu? comprendere elaborare i dati in una pluralit? di stadi di calcolo della FFT comprendenti un numero n di stadi di calcolo della FFT. Ciascuno stadio di calcolo della FFT pu? comprendere un numero di cicli di calcolo della FFT.
Le unit? di elaborazione possono essere configurate per estrarre (per es., in ciascuno degli stadi di calcolo della FFT) dati di ingresso dai banchi di memoria di dati con una transazione in memoria di lettura a burst, estrarre (per es., in ciascuno dei cicli di calcolo della FFT) un rispettivo insieme di fattori di twiddle dai banchi di memoria di coefficienti, elaborare i dati di ingresso e l?insieme di fattori di twiddle per generare dati di uscita, e memorizzare (per es., in ciascuno degli stadi di calcolo della FFT) i dati di uscita nei banchi di memoria di dati con una transazione in memoria di scrittura a burst.
Le unit? di elaborazione possono essere configurate per estrarre, in ciascuno dei cicli di calcolo della FFT, differenti fattori di twiddle nel rispettivo insieme di fattori di twiddle da differenti banchi di memoria di coefficienti.
Una o pi? forme di attuazione possono cos? fornire una generazione efficiente degli indici dei fattori di twiddle.
Breve descrizione delle figure
Una o pi? forme di attuazione saranno ora descritte, a puro titolo di esempio, con riferimento alle figure annesse, nelle quali:
la Figura 1 ? uno schema a blocchi circuitale esemplificativo di un circuito processore di trasformata di Fourier veloce secondo una o pi? forme di attuazione della presente descrizione,
la Figura 2 ? uno schema a blocchi circuitale esemplificativo di un circuito controllore di ROM secondo una o pi? forme di attuazione della presente descrizione, la Figura 3 ? un diagramma di flusso esemplificativo di una procedura per calcolare indici dei fattori di twiddle per un?elaborazione di FFT, e
la Figura 4 ? uno schema a blocchi circuitale esemplificativo di dettagli di implementazione di un circuito generatore di indirizzi di ROM secondo una o pi? forme di attuazione della presente descrizione.
Descrizione dettagliata di esempi di forme di attuazione
Nella descrizione che segue, sono illustrati uno o pi? dettagli specifici, allo scopo di fornire una comprensione approfondita di esempi di forme di attuazione di questa descrizione. Le forme di attuazione possono essere ottenute senza uno o pi? dei dettagli specifici o con altri procedimenti, componenti, materiali, ecc. In altri casi, operazioni, materiali o strutture note non sono illustrate o descritte in dettaglio in modo tale che certi aspetti delle forme di attuazione non saranno resi poco chiari.
Un riferimento a ?una forma di attuazione? nel quadro della presente descrizione intende indicare che una particolare configurazione, struttura, o caratteristica descritta con riferimento alla forma di attuazione ? compresa in almeno una forma di attuazione. Per cui, le frasi come ?in una forma di attuazione? o simili che possono essere presenti in uno o pi? punti della presente descrizione non fanno necessariamente riferimento proprio alla stessa forma di attuazione. Inoltre, particolari conformazioni, strutture o caratteristiche possono essere combinate in un modo adeguato qualsiasi in una o pi? forme di attuazione.
I riferimenti usati qui sono forniti semplicemente per convenienza e quindi non definiscono l?ambito di protezione o l?ambito delle forme di attuazione.
La Figura 1 ? uno schema a blocchi circuitale esemplificativo dell?architettura di un processore di trasformata di Fourier veloce basato su memoria in parallelo (PMBFFT, ?Parallel Memory-Based Fast Fourier Transform?) 10.
Un processore di FFT basato su memoria in parallelo 10 come illustrato nella Figura 1 ? adatto a essere integrato in un sistema elettronico, come un SoC (System-On-Chip), per l?uso in un veicolo, come un?automobile, per es., al fine di elaborare segnali digitali raccolti da uno o pi? sensori (per es., un sensore radar) forniti nel veicolo.
Come esemplificato nella Figura 1, il processore di FFT basato su memoria in parallelo 10 comprende una pluralit? (per es., un numero P) di elementi di elaborazione 1000, 1001, ?, 100P-1 (per es., elementi di elaborazione butterfly radice 2), una pluralit? (per es., un numero Q=2*P) di banchi di memoria locale di dati M0, ?, MQ-1 e una pluralit? (per es., un numero P) di banchi di memoria locale di sola lettura 1050, 1051, ?, 105P-1.
Per semplicit?, in tutta la presente descrizione: il numero di riferimento 100 pu? essere usato per indicare collettivamente gli elementi di elaborazione 1000, 1001, ?, 100P-1,
il numero di riferimento 105 pu? essere usato per indicare collettivamente i banchi di memoria locale di sola lettura 1050, 1051, ?, 105P-1,
il riferimento M pu? essere usato per indicare collettivamente i banchi di memoria locale di dati M0, ?, MQ-1, e
i termini come ?lunghezza di FFT?, ?lunghezza di trasformata?, ?dimensione di FFT? sono usati per designare la dimensione (per es., 4096 punti, 8192 punti o anche pi?) della trasformata FFT.
In aggiunta:
in tutte le figure qui annesse, le parti o gli elementi simili sono indicati con riferimenti/numeri simili e una descrizione corrispondente non sar? ripetuta per brevit?,
al fine di evitare di interrompere la presentazione, varie tabelle numerate da I a VIII a cui si fa riferimento nella descrizione sono raggruppate alla fine della descrizione.
Come illustrato nella Figura 1, un processore di FFT basato su memoria in parallelo 10 pu? comprendere un?unit? di controllo locale 101, un controllore della memoria locale di dati 103 accoppiato ai banchi di memoria locale di dati M, e un controllore della ROM locale 104 accoppiato ai banchi di memoria locale di sola lettura 105.
Per accoppiare l?unit? di controllo locale 101, gli elementi di elaborazione 100 e il controllore della memoria locale di dati 103 pu? essere fornita una rete di interconnessione locale 102.
La rete di interconnessione locale 102 pu? anche fornire una connessione a un?unit? di controllo del sistema (per es., un?unit? a microprocessore o un?unit? a microcontrollore), non visibile nelle Figure qui annesse. L?unit? di controllo del sistema pu? essere usata per configurare il processore di FFT 10 e pu? innescare l?inizio del calcolo dell?algoritmo di FFT. In aggiunta, la connessione all?unit? di controllo del sistema pu? essere usata per caricare dati nei banchi di memoria locale di dati M.
Differenti forme di attuazione possono comprendere un numero P differente di elementi di elaborazione 100 e di banchi di memoria locale di sola lettura 105, e/o un numero Q differente di banchi di memoria locale di dati M. Puramente a titolo di esempio non limitativo, P pu? essere uguale a 8 e Q pu? essere uguale a 16.
In una o pi? forme di attuazione, gli elementi di elaborazione 100 comprendono rispettivi controllori di accesso diretto alla memoria (DMA, ?Direct Memory Access?) interni 1080, 1081, ?, 108P-1 (indicati collettivamente con il numero di riferimento 108) configurati per interfacciare gli elementi di elaborazione 100 ai banchi di memoria locale di dati M mediante il controllore della memoria locale di dati 103.
In una o pi? forme di attuazione, il controllore della memoria locale di dati 103 pu? essere configurato per arbitrare l?accesso (per es., da parte degli elementi di elaborazione 100) ai banchi di memoria locale di dati M.
Gli elementi di elaborazione 100 come qui esemplificati sono configurati per estrarre dati di ingresso dai banchi di memoria locale di dati M attraverso i rispettivi controllori DMA 108, come indicato dall?unit? di controllo locale 101. Gli elementi di elaborazione possono cos? elaborare i dati di ingresso estratti per generare dati di uscita elaborati, con tale elaborazione che comporta l?uso di fattori di twiddle estratti dai banchi di memoria ROM 105. Gli elementi di elaborazione sono configurati per scrivere i dati di uscita elaborati nei banchi di memoria locale di dati M attraverso i rispettivi controllori DMA 108.
In una o pi? forme di attuazione, il controllore della memoria locale di dati 103 pu? tradurre ?burst? di transazioni di lettura/scrittura di ingresso (per es., burst AXI) generate dai controllori DMA di lettura/scrittura 108 in una sequenza di accessi alla memoria in lettura/scrittura, secondo il tipo di burst, la lunghezza del burst e uno schema di accesso alla memoria specificati.
In una o pi? forme di attuazione, il fatto di fornire un insieme di banchi di memoria locale di dati M pu? facilitare un?elaborazione dei dati in parallelo e una riduzione dei conflitti di accesso alla memoria.
Opzionalmente, i banchi di memoria locale di dati M possono essere provvisti di buffering (per es., buffering doppio) che pu? facilitare un recupero del tempo di caricamento (operazione di scrittura) e/o del tempo di scaricamento (operazione di lettura) in memoria. In particolare, ciascun banco di memoria locale di dati pu? essere duplicato, affinch? i dati possano essere letti (per es., per essere elaborati) da uno dei due banchi di memoria e che (nuovi) dati possano essere memorizzati (per es., per essere elaborati successivamente) nell?altro banco di memoria allo stesso tempo. Come risultato, muovere i dati pu? non influenzare negativamente le prestazioni di calcolo, poich? pu? essere mascherato.
In una o pi? forme di attuazione, uno schema di buffering doppio dei banchi di memoria locale di dati M pu? essere vantaggioso in combinazione con un?elaborazione dei dati in modalit? streaming o back-to-back (per es., come applicabile in un processore di FFT a N punti che ? configurato per elaborare sequenze continue di N ingressi di dati).
In una o pi? forme di attuazione, i banchi di memoria locale di dati M possono comprendere banchi di memoria aventi una capacit? di memorizzazione limitata (e cos?, un?area di silicio limitata). Per esempio, ciascuno dei banchi di memoria locale di dati pu? avere una capacit? di memorizzazione di almeno (maxN)/Q, dove maxN ? la pi? lunga FFT che il processore hardware ? atto a trattare. Valori tipici in applicazioni che coinvolgono un processore di FFT basato su memoria possono essere N = 4096 punti, con ciascun punto che ?, per esempio, un numero complesso a singola precisione in virgola mobile (reale, img) avente una dimensione di 64 bit (o di 8 byte), e P = 8 avendo come risultato Q = 16, cosicch? la capacit? di memorizzazione di ciascun banco di memoria locale di dati pu? essere uguale a (4096*8 byte)/16 = 2 KB (KB = kilobyte).
In una o pi? forme di attuazione, i banchi di memoria locale di sola lettura 105 accessibili da parte degli elementi di elaborazione 100 mediante il controllore della ROM locale 104 sono configurati per memorizzare i fattori di twiddle per il calcolo della FFT.
In una o pi? forme di attuazione, gli elementi di elaborazione 100 comprendono rispettivi circuiti generatori di indirizzi di ROM (RAG) interni 1100, 1101, ?, 110P-1 (indicati collettivamente con il numero di riferimento 110) configurati per interfacciare gli elementi di elaborazione 100 ai banchi di memoria ROM locale 105 mediante il controllore della ROM locale 104. Gli elementi di elaborazione 100 possono essere configurati per recuperare dati di ingresso (per es., fattori di twiddle) dai banchi di memoria ROM locale 105 per effettuare un?elaborazione di FFT.
In una o pi? forme di attuazione, la memoria di sola lettura locale ? suddivisa vantaggiosamente in un numero P di banchi di memoria ROM 105 uguale al numero P di elementi di elaborazione 100 compresi nel processore di FFT 10. Ci? pu? facilitare il fatto di evitare conflitti durante calcoli paralleli.
Come anticipato, la memorizzazione e/o il recupero di fattori di twiddle (TF, ?Twiddle Factor?) ? un aspetto rilevante nel progetto dei processori di FFT basati su memoria in parallelo, in particolare nel caso in cui sia coinvolto un calcolo di FFT con grandi lunghezze di trasformata (per es., 4096 punti, 8192 punti o pi?).
Perci?, una o pi? forme di attuazione hanno come scopo fornire una soluzione implementata in hardware, ad alte prestazioni, per un circuito generatore di fattori di twiddle basato su ROM.
In una o pi? forme di attuazione, gli elementi di elaborazione butterfly radice 2 100 possono condividere il controllore della ROM locale 104 e una stessa tabella di ricerca in ROM, suddivisa in banchi differenti (per es., con il numero di banchi di ROM 105 uguale al numero di elementi di elaborazione 100).
L?elaborazione di FFT basata su burst implementata dai controllori DMA interni 108 degli elementi di elaborazione 100 e lo schema di accesso in ROM implementato dal controllore della ROM locale 104 facilitano il fatto di evitare conflitti durante il calcolo della FFT, riducendo anche il costo in termini di risorse hardware.
L?architettura circuitale esemplificata nella Figura 1, con soltanto una tabella di ricerca in ROM comprendente un numero N/2 di parole suddivise equamente in un numero P di differenti banchi 105 (con ciascun banco di ROM che memorizza un numero di parole uguale a N/(2*P)), pu? migliorare il throughput di elaborazione.
La Tabella I annessa alla presente descrizione ? un esempio di possibili valori dei parametri architetturali.
In una o pi? forme di attuazione, i burst di dati possono essere emessi dai controllori DMA di lettura/scrittura interni 108 degli elementi di elaborazione 100 secondo una lunghezza N selezionata della trasformata di Fourier veloce (per esempio, la lunghezza N pu? essere configurabile da software, con il solo vincolo di essere una potenza di 2, cio?, con la forma N = 2<n>). In funzione del numero P di elementi di elaborazione nel processore di FFT parallelo 10 e della lunghezza N selezionata, la lunghezza di burst LENGTH e lo stride STRIDE in ciascuno stadio di calcolo della FFT possono essere definiti, come esemplificato nella Tabella II annessa alla presente descrizione.
Per esempio, come esemplificato nella Tabella II, il valore LENGTH della lunghezza di burst pu? essere uguale a N/(2*P) per tutti gli stadi di calcolo della FFT. Anche come esemplificato nella Tabella II, il valore STRIDE dello stride di burst pu? essere uguale a P nel primo stadio di calcolo (per es., lo Stadio 0), e pu? essere fatto scorrere a destra (?right-shifted?) in ciascuno stadio di calcolo successivo. Per esempio, nel secondo stadio di calcolo (per es., lo Stadio 1) il valore STRIDE pu? essere uguale a P>>1 (cio?, il valore P fatto scorrere a destra di una posizione) e nell?ultimo stadio di calcolo (per es., lo Stadio n-1) il valore STRIDE pu? essere uguale a P>>n-1 (cio?, il valore P fatto scorrere a destra di n-1 posizioni, che restituisce il valore 2*P perch? il valore STRIDE ? memorizzato in un registro a scorrimento a destra circolare di n bit).
Il controllo e la programmazione dei controllori DMA 108 possono essere gestiti dall?unit? di controllo locale 101, per es., usando semplici registri circolari a scorrimento a destra (per es., per controllare lo stride di burst pu? essere usato un registro circolare a scorrimento a destra su n bit) che possono essere inizializzati (soltanto) all?inizio del calcolo della FFT, secondo la lunghezza N selezionata, e che possono quindi essere aggiornati alla fine di ciascuno stadio di calcolo.
Anche la Tabella II annessa alla presente descrizione ? un esempio di come i burst di lettura/scrittura possono essere programmati in ciascuno stadio di FFT per ciascun elemento di elaborazione 100 istanziato (PE #i) quando ? calcolata una trasformata di Fourier veloce di lunghezza N.
In una o pi? forme di attuazione, il fatto di adottare uno schema di elaborazione di dati basato su burst per il calcolo della FFT facilita l?implementazione di un semplice generatore di fattori di twiddle basato su ROM (per es., che gestisce la generazione degli indirizzi dei banchi di ROM e la gestione della ROM) che facilita il fatto di evitare conflitti di accesso in memoria quando ? usato un numero P = 2<p >di elementi di elaborazione o di unit? butterfly radice 2 in parallelo per calcolare una FFT di lunghezza N = 2<n>.
Una o pi? forme di attuazione possono cos? fornire una semplificazione apprezzabile dell?hardware (per es., in termini dello schema di generazione degli indirizzi e di accesso in ROM) rispetto alle soluzioni note. In aggiunta, una o pi? forme di attuazione possono basarsi sull?uso di solo una semplice tabella di ricerca in ROM di N/2 parole ugualmente suddivisa in un numero P di sotto-tabelle.
La domanda di brevetto italiano 102020000009364 depositata dalla stessa Richiedente (e non ancora disponibile al pubblico al momento del deposito della presente domanda) descrive un modo efficiente per estendere dei bus standard per supportare accessi vettoriali ai banchi di memoria locale M con uno schema di accesso in memoria e uno stride programmabile, e come una tale soluzione pu? essere sfruttata per realizzare processori di FFT basati su memoria in parallelo ad alte prestazioni.
Si nota che il fatto di organizzare in singoli burst gli accessi alla memoria di dati per ciascun ingresso/uscita di un elemento di elaborazione radice 2 durante ciascuno stadio di FFT nel modo esemplificato nella Tabella II facilita la definizione di uno schema architetturale semplice ed efficiente per il generatore di fattori di twiddle.
Per esempio, le Tabelle III, IV e V annesse alla presente descrizione sono esempi dei fattori di twiddle W<i >che ciascun elemento di elaborazione 100 recupera dai banchi di memoria ROM 105 nei vari stadi e cicli del calcolo della FFT nel caso in cui uno schema basato su burst, come esemplificato nella Tabella II, sia usato dai controllori DMA 108 per accedere ai dati memorizzati nei banchi di memoria M, in cui:
L?equazione (1) precedente consente di calcolare i valori dei fattori di twiddle Wi da memorizzare nei banchi di memoria ROM 105 (con l?indice i che va da 0 a N/2-1, per es., da 0 a 31 nel caso di esempio di N = 64). L?equazione (2) precedente ? un esempio dell?equazione di trasformata di Fourier discreta (DFT, ?Discrete Fourier Transform?) generale.
Puramente a titolo di esempio non limitativo:
la Tabella III indica i fattori di twiddle Wi che ciascun elemento di elaborazione (PE) recupera dai banchi di memoria ROM 105 nei vari stadi e cicli del calcolo di una FFT nel caso di N=64 e P=8,
la Tabella IV indica i fattori di twiddle Wi che ciascun elemento di elaborazione (PE) recupera dai banchi di memoria ROM 105 nei vari stadi e cicli del calcolo di una FFT nel caso di N=32 e P=8, e
la Tabella V indica i fattori di twiddle W<i >che ciascun elemento di elaborazione (PE) recupera dai banchi di memoria ROM 105 nei vari stadi e cicli del calcolo di una FFT nel caso di N=32 e P=4.
Si nota che i fattori di twiddle elencati in una stessa riga di una qualsiasi delle Tabelle III, IV e V sono recuperati dagli elementi di elaborazione nello stesso ciclo di clock. Perci?, possono essere vantaggiosamente memorizzati in differenti banchi di memoria ROM se il loro indice i ? differente.
In una o pi? forme di attuazione, l?uso di una soluzione di elaborazione di dati basata su burst pu? facilitare la gestione dei conflitti di una memoria ROM.
Una o pi? forme di attuazione possono basarsi sul riconoscimento che il fatto di memorizzare un numero N/2 di fattori di twiddle nei banchi di memoria ROM 105 in un modo che evita conflitti nel primo stadio di calcolo della FFT (per es., lo Stadio 0) pu? avere come risultato che siano evitati conflitti in tutti gli stadi di calcolo seguenti della FFT. In effetti, i fattori di twiddle coinvolti durante i cicli degli stadi di calcolo che seguono il primo stadio di calcolo (cio?, stadi di calcolo che hanno un indice maggiore di 0, per es., dallo Stadio 1 allo Stadio n-1) possono essere selezionati come un sottoinsieme dei fattori di twiddle che sono letti dai banchi di memoria ROM 105 durante i cicli del primo stadio di calcolo (per es., lo Stadio 0), come esemplificato nella Tabella III, nella Tabella IV e nella Tabella V.
In una o pi? forme di attuazione, memorizzare un numero N/2 di fattori di twiddle nei banchi di memoria ROM 105 in un modo che evita conflitti nel primo stadio di calcolo della FFT pu? basarsi su uno schema di intercalazione (?interleaving?) di ordine basso o standard come descritto da G. S. Sohi, "High-bandwidth interleaved memories for vector processors - A simulation study," IEEE Transactions on Computers, vol. 42, n. 1, pagine da 34 a 44, Gen. 1993, doi: 10.1109/12.192212.
Per esempio, la Tabella VI annessa alla presente descrizione ? un esempio di un possibile schema per memorizzare i fattori di twiddle W<i >in un numero P di differenti banchi di memoria ROM 105 in un modo che evita conflitti nel primo stadio di calcolo della FFT. Si nota che ciascun banco di memoria ROM 105i (con l?indice i che va da 0 a P-1) pu? comprendere un numero di righe uguale a N/(2*P). La riga numerata j (con l?indice j che va da 0 a N/(2*P)-1) del banco di memoria ROM numerato i pu? essere configurata per memorizzare il fattore di twiddle avente un indice i+jP. Perci?, in un generico banco di memoria ROM numerato i, la prima riga avente un indice j=0 pu? memorizzare il fattore di twiddle W<i>, una riga intermedia avente un indice j generico pu? memorizzare il fattore di twiddle Wi+jP, e l?ultima riga avente un indice j=N/(2*P)-1 pu? memorizzare il fattore di twiddle W<i+(N/2)-P>.
Perci?, un numero N/2 di fattori di twiddle (etichettati da W0 a W(N/2-1)) possono essere memorizzati senza ripetizione nei banchi di memoria ROM 105, consentendo nel contempo di evitare conflitti di accesso. Secondo lo schema di memorizzazione descritto in precedenza, una singola istanza di ciascun fattore di twiddle Wi pu? essere memorizzata nei banchi di memoria ROM 105 senza compromettere la possibilit? di accedere ai fattori di twiddle senza conflitti, anche nel caso di un calcolo di FFT parallelo, nella misura in cui potrebbe verificarsi un conflitto (soltanto) quando due differenti elementi di elaborazione 100 richiedono un accesso, nello stesso ciclo di clock, a due fattori di twiddle aventi indici differenti memorizzati in uno stesso banco di memoria ROM 105.
Due (o pi?) elementi di elaborazione differenti che tentano di accedere allo stesso fattore di twiddle nello stesso ciclo di clock non generano un conflitto, nella misura in cui il controllore di ROM 104 pu? essere configurato per unire due (o pi?) richieste in arrivo per accedere a uno stesso fattore di twiddle da parte di due (o pi?) elementi di elaborazione differenti in un singolo accesso alla ROM, e per fornire a ritroso il valore letto agli elementi di elaborazione richiedenti.
La Figura 2 ? uno schema a blocchi circuitale esemplificativo di una architettura interna di un controllore di ROM 104 secondo una o pi? forme di attuazione.
Come esemplificato nella Figura 2, il controllore di ROM 104 pu? comprendere un numero P di porte 2000, 2001, ?, 200P-2, 200P-1 (indicate collettivamente con il numero di riferimento 200) configurate per essere accoppiate a un rispettivo numero P di circuiti RAG 110 forniti negli elementi di elaborazione 100. Le porte 200 possono essere accoppiate a rispettivi circuiti smistatori (?dispatcher?) 2020, 2021, ?, 202P-2, 202P-1 (indicati collettivamente con il numero di riferimento 202). Il controllore di ROM 104 pu? comprendere in aggiunta un numero P di stadi di unione (?merging?) 2040, 2041, ?, 204P-2, 204P-1 (indicati collettivamente con il numero di riferimento 204). I circuiti smistatori 202 e gli stadi di unione 204 possono essere completamente connessi, cio?, ciascun circuito smistatore 202 pu? essere connesso a tutti gli stadi di unione 204, come esemplificato nella Figura 2.
In una o pi? forme di attuazione, i circuiti smistatori 202 possono essere configurati per implementare uno schema di intercalazione di ordine basso.
In una o pi? forme di attuazione, gli stadi di unione 204 possono essere configurati per unire due (o pi?) richieste in arrivo per accedere a uno stesso fattore di twiddle da parte di due (o pi?) elementi di elaborazione differenti in un singolo accesso alla memoria ROM.
In una o pi? forme di attuazione, gli indici dei fattori di twiddle recuperati da ciascun elemento di elaborazione 100 durante il calcolo della FFT, nel caso in cui sia adottato uno schema basato su burst come esemplificato nella Tabella II, possono essere calcolati secondo una procedura come esemplificata nella Figura 3. Una tale procedura pu? essere eseguita, per esempio, dall?unit? di controllo locale 101 in cooperazione con i circuiti RAG 110.
In una fase 300, il calcolo degli indici dei fattori di twiddle pu? iniziare.
Una fase 302 seguente pu? comprendere verificare se il valore corrente di una variabile stage (che ? inizializzata a zero e conta fino n-1, dove n = log2N e N ? la lunghezza dell?algoritmo di FFT calcolato) ? inferiore o uguale a un valore p, in cui p = log2P e P ? il numero di elementi di elaborazione 100 nel processore di FFT (per es., con il vincolo di essere una potenza di 2).
Come risultato di un esito positivo (Y) della fase 302, una fase 304 seguente pu? comprendere dividere il numero i (che identifica un elemento di elaborazione 100 considerato attualmente, con i che va da 0 a P-1) per un numero 2<stage >e verificare se il resto di detta divisione ? uguale a zero.
Come risultato di un esito positivo (Y) della fase 304, una fase 306 seguente pu? comprendere calcolare l?indice del fattore di twiddle richiesto attualmente (cio?, in un certo ciclo di un certo stadio del calcolo della FFT) dall?elemento di elaborazione i secondo la formula indexi = i cycle*P, in cui cycle ? una variabile che ? inizializzata a zero all?inizio di ciascuno stadio di FFT e che conta fino a N/(2P)-1.
Come risultato di un esito negativo (N) della fase 304, una fase 308 seguente pu? comprendere calcolare l?indice del fattore di twiddle richiesto attualmente (cio?, in un certo ciclo di un certo stadio del calcolo della FFT) dall?elemento di elaborazione i secondo la formula indexi = indexi-1, cio?, l?elemento di elaborazione numerato i pu? richiedere lo stesso fattore di twiddle richiesto dall?elemento di elaborazione numerato i-1.
Come risultato di un esito negativo (N) della fase 302, una fase 310 seguente pu? comprendere dividere il numero cycle per il numero 2<stage-p >e verificare se il resto di detta divisione ? uguale a zero.
Come risultato di un esito positivo (Y) della fase 310, una fase 312 seguente pu? comprendere calcolare l?indice del fattore di twiddle richiesto attualmente dall?elemento di elaborazione i secondo la formula indexi = cycle*P. In altre parole, tutti gli elementi di elaborazione 100 possono accedere simultaneamente allo stesso fattore di twiddle, con l?indice del fattore di twiddle che dipende (soltanto) dal ciclo corrente e dal numero P di elementi di elaborazione.
Come risultato di un esito negativo (N) della fase 310, una fase 314 seguente pu? comprendere calcolare gli indici dei fattori di twiddle richiesti attualmente da tutti gli elementi di elaborazione conservando gli stessi indici calcolati nel ciclo di calcolo precedente.
In una fase 316, il calcolo degli indici di fattori di twiddle pu? terminare.
La procedura esemplificata nella Figura 3 (blocchi da 300 a 316) pu? essere ripetuta in ciascun ciclo di ciascuno stadio del calcolo della FFT.
In una o pi? forme di attuazione, una procedura come esemplificata nella Figura 3 pu? essere implementata in hardware dai circuiti RAG 110 degli elementi di elaborazione 100, pilotati dai segnali di controllo forniti dall?unit? di controllo locale 101.
La Figura 4 ? uno schema a blocchi circuitale esemplificativo di una possibile implementazione dei circuiti RAG 110 secondo una o pi? forme di attuazione. I circuiti RAG 110 possono essere ordinati idealmente da un primo circuito RAG avente un indice i=0, compreso in un primo elemento di elaborazione 1000, a un ultimo circuito RAG avente un indice i=P-1, compreso in un ultimo elemento di elaborazione 100P-1.
Ciascun circuito RAG 110 pu? comprendere un rispettivo circuito multiplexer 40 e un rispettivo circuito contatore 42 alla potenza di 2 configurabile accoppiato all?uscita del circuito multiplexer. Ciascun circuito contatore 42 pu? essere configurato per fornire in uscita l?indice del fattore di twiddle richiesto dal rispettivo elemento di elaborazione in un certo stadio e ciclo dell?elaborazione di FFT, con tale indice del fattore di twiddle che ? passato a una rispettiva porta 200 del circuito controllore di ROM 104.
Ciascun circuito multiplexer 40 comprende un primo ingresso configurato per ricevere (per es., se il rispettivo segnale di selezione ? uguale a 1) il valore fornito all?uscita del circuito multiplexer precedente nella sequenza ordinata di circuiti multiplexer (per es., per implementare una connessione daisy-chain), e un secondo ingresso configurato per ricevere (per es., se il rispettivo segnale di selezione ? uguale a 0) un valore binario corrispondente alla posizione del circuito multiplexer nella sequenza ordinata (cio?, partendo da 0 per il primo circuito multiplexer 400 a P-1 per l?ultimo circuito multiplexer 40P-1).
Ciascun circuito multiplexer 40 ? controllato da un bit S0, ?, Sp-1 di un segnale di selezione S fornito dall?unit? di controllo locale 101 (per es., con S0 che ? il bit meno significativo e Sp-1 che ? il bit pi? significativo). Il segnale di selezione S pu? cos? essere un segnale comprendente un numero p = log2P di bit.
In particolare, un circuito multiplexer 40 avente un indice i (con i che va da 0 a P-1) pu? essere configurato per ricevere il j-esimo bit Sj del segnale di selezione, a condizione che il resto della divisione i/2<j >sia zero e che j sia il pi? alto intero che soddisfa detta condizione. La Tabella VII e la Tabella VIII annesse alla presente descrizione sono esempi di una possibile associazione dei bit del segnale di selezione S ai rispettivi circuiti multiplexer ordinati 400, 401, ?, 40P-2, 40P-1 nei casi di esempio di P=8 e P=16, rispettivamente.
In una o pi? forme di attuazione, il primo circuito multiplexer 400 pu? essere configurato per ricevere un segnale di selezione fisso (per es., 0), in modo tale che l?ingresso del primo circuito multiplexer 400 sia fissato al valore zero. In alternativa, il primo circuito RAG 1100 pu? non essere provvisto di un rispettivo circuito multiplexer, e il valore zero pu? essere fornito direttamente all?ingresso del rispettivo circuito contatore 420. Si nota che il fatto di fornire un primo circuito multiplexer 400 avente un segnale di selezione fisso pu? essere vantaggioso nella misura in cui i circuiti multiplexer 40 possono essere presenti di default nei circuiti RAG 110 istanziati, e cos? anche nel primo elemento di elaborazione 1000.
Ciascun contatore 42 alla potenza di 2 configurabile pu? ricevere dall?unit? di controllo locale 101 un segnale di abilitazione (?enable?) EN e un segnale di configurazione x che determina l?offset del contatore alla potenza di 2, per es., secondo la formula 2<x>?P. In una o pi? forme di attuazione, quando il segnale di abilitazione EN del contatore ? asserito (per es., uguale a 1), il nuovo valore incrementato ? fornito in uscita dal circuito contatore 42 ed ? memorizzato all?interno del registro di stato al ciclo di clock successivo. Sul fronte attivo del segnale di clock, il rispettivo valore del registro di contatore ? aggiornato secondo il valore precedente e l?offset programmato.
Perci?, i circuiti RAG 110 implementati negli elementi di elaborazione 100 possono essere configurati per generare le richieste di fattori di twiddle alle porte da 2000 a 200P-1 del controllore di ROM 104 secondo la logica esemplificata nelle Tabelle III, IV o V.
Oltre a pilotare i segnali di configurazione per i controllori DMA interni 108, l?unit? di controllo interna 101 del processore di FFT 10 ? configurata per pilotare i bit di selezione S0, ?, Sp-1 per i circuiti multiplexer 40 dei RAG, e il segnale di abilitazione EN e il segnale di configurazione x per i circuiti contatori 42. I valori di tali segnali cambiano da uno stadio a un altro e/o da un ciclo a un altro, al fine di implementare la procedura esemplificata nella Figura 3.
Le regole seguenti possono essere applicate dall?unit? di controllo 101 per generare il segnale di selezione S: i bit S0, ?, Sp-1 del segnale di selezione S possono essere impostati inizialmente a zero (per es., durante il primo stadio di calcolo della FFT), in modo tale che nessuno dei circuiti multiplexer 40 sia in daisy-chain con un altro,
come risultato del fatto che la variabile stage ? inferiore o uguale a p (si vedano, per es., le fasi 304, 306 e 308 nella Figura 3), i bit S0, ?, Sp-1 del segnale di selezione S possono essere aggiornati in ciascuno stadio del calcolo della FFT mettendo in bitwise-OR un valore precedente del segnale di selezione S con un segnale STAGE che ha un 1 nel bit il cui indice ? uguale al valore precedente dello stadio, e
come risultato del fatto che la variabile stage ? superiore a p, i bit S0, ?, Sp-1 del segnale di selezione S possono essere impostati a uno, in modo tale che tutti i circuiti multiplexer 40 siano in daisy-chain.
Puramente a titolo di esempio, considerando un segnale di selezione S di tre bit e un segnale STAGE di tre bit, come risultato del fatto che la variabile stage ? inferiore o uguale a p, il segnale di selezione S pu? essere generato come segue:
se stage = 0 ? S = 000;
se stage = 1 ? STAGE = 001, S = 000 OR 001 = 001;
se stage = 2 ? STAGE = 010, S = 001 OR 010 = 011;
se stage = 3 ? STAGE = 100, S = 011 OR 100 = 111.
Le regole seguenti possono essere applicate dall?unit? di controllo 101 per generare il segnale di abilitazione EN del contatore e il segnale di configurazione x del contatore:
come risultato del fatto che la variabile stage ? inferiore o uguale a p (si vedano, per es., le fasi 304, 306 e 308 nella Figura 3), il segnale di abilitazione EN pu? essere asserito (per es., EN = 1) e il segnale di configurazione x pu? essere uguale a zero,
come risultato del fatto che la variabile stage ? superiore a p e che il resto della divisione cycle/2<stage-p >? uguale a zero (si veda, per es., la fase 312 nella Figura 3), il segnale di abilitazione EN pu? essere asserito (per es., EN = 1) e il segnale di configurazione x pu? essere uguale a stage-p, e
come risultato del fatto che la variabile stage ? superiore a p e che il resto della divisione cycle/2<stage-p >? differente da zero (si veda, per es., la fase 314 nella Figura 3), il segnale di abilitazione EN pu? essere deasserito (per es., EN = 0) e il segnale di configurazione x pu? essere uguale a stage-p.
Una o pi? forme di attuazione possono cos? migliorare la memorizzazione e il recupero di fattori dei twiddle nella memoria ROM 105 di un processore hardware di FFT. In una o pi? forme di attuazione, la memoria ROM pu? avere una profondit? di soltanto N/2 parole ugualmente divise in P banchi per un uso con un processore di FFT basato su memoria in parallelo, e pu? facilitare il fatto di evitare conflitti di dati durante il calcolo della FFT.
Una o pi? forme di attuazione possono supportare lunghezze N di FFT variabili. Per esempio, il processore di FFT hardware 10 pu? essere progettato per supportare una lunghezza di FFT massima determinata (per es., N = 8192 punti), con lunghezze pi? corte che sono selezionabili via software.
Come qui esemplificato, un circuito (per es., 10), per esempio un processore di segnale digitale, pu? comprendere una pluralit? di unit? di elaborazione (per es., 1000, ?, 100P-1) comprendente un numero P di unit? di elaborazione (per es., unit? di elaborazione butterfly radice 2), una pluralit? di banchi di memoria di dati (per es., M0, ?, MQ-
1) configurati per memorizzare dati, e una pluralit? di banchi di memoria di coefficienti (per es., 1050, ?, 105P-1) configurati per memorizzare fattori di twiddle per un?elaborazione di trasformata di Fourier veloce, FFT, (per es., banchi di memoria di sola lettura). La pluralit? di banchi di memoria di coefficienti pu? comprendere un numero P di banchi di memoria di coefficienti uguale al numero P di unit? di elaborazione.
Come qui esemplificato, il circuito pu? essere configurato per applicare un?elaborazione di trasformata di Fourier veloce avente una dimensione N, con la forma N=2<n >con n che ? un intero, ai dati memorizzati in detti banchi di memoria di dati, e applicare detta elaborazione di trasformata di Fourier veloce avente una dimensione N pu? comprendere elaborare detti dati in una pluralit? di stadi di calcolo della FFT comprendenti un numero n di stadi di calcolo della FFT, in cui ciascuno stadio di calcolo della FFT comprende un numero di cicli di calcolo della FFT.
Come qui esemplificato, le unit? di elaborazione possono essere configurate per:
estrarre (per es., 108, 103), in ciascuno di detti stadi di calcolo della FFT, dati di ingresso da detti banchi di memoria di dati con una transazione in memoria di lettura a burst,
estrarre (per es., 110, 104), in ciascuno di detti cicli di calcolo della FFT, un rispettivo insieme di detti fattori di twiddle da detti banchi di memoria di coefficienti,
elaborare detti dati di ingresso e detto insieme di fattori di twiddle per generare dati di uscita, e memorizzare (per es., 108, 103), in ciascuno di detti stadi di calcolo della FFT, detti dati di uscita in detti banchi di memoria di dati con una transazione in memoria di scrittura a burst.
Come qui esemplificato, le unit? di elaborazione possono essere configurate per estrarre, in ciascuno di detti cicli di calcolo della FFT, differenti fattori di twiddle in detto rispettivo insieme di fattori di twiddle da differenti banchi di memoria di coefficienti.
Come qui esemplificato, ciascuna di dette unit? di elaborazione pu? comprendere un rispettivo circuito di generazione di indici di coefficienti (per es., 1100, ?, 110P-1) configurato per generare, in funzione di uno stadio di calcolo corrente della FFT e di un ciclo di calcolo corrente della FFT, un rispettivo indice di un fattore di twiddle per l?uso da parte del rispettivo circuito di elaborazione.
Come qui esemplificato, detto circuito pu? comprendere un controllore della memoria di coefficienti (per es., 104) configurato per interfacciare detti circuiti di generazione di indici di coefficienti a detti banchi di memoria di coefficienti.
Come qui esemplificato, detto controllore della memoria di coefficienti pu? comprendere:
una pluralit? di porte di comunicazione (per es., 2000, ?, 200P-1) comprendenti un numero P di porte di comunicazione accoppiate rispettivamente ai circuiti di generazione di indici di coefficienti delle unit? di elaborazione,
una pluralit? di circuiti smistatori (per es., 2020, ?, 202P-1) comprendenti un numero P di circuiti smistatori uguale a detto numero P di unit? di elaborazione, i circuiti smistatori essendo accoppiati rispettivamente alle porte di comunicazione, e
una pluralit? di circuiti di unione (per es., 2040, ?, 204P-1) comprendenti un numero P di circuiti di unione uguale a detto numero P di unit? di elaborazione, i circuiti di unione essendo accoppiati rispettivamente ai banchi di memoria di coefficienti.
Come qui esemplificato, ciascuno di detti circuiti smistatori pu? essere accoppiato a tutti i detti circuiti di unione in una rete completamente connessa.
Come qui esemplificato, dette unit? di elaborazione possono essere disposte in una sequenza ordinata da una prima unit? di elaborazione (per es., 1000) a un?ultima unit? di elaborazione (per es., 100P-1), ciascuno dei circuiti di generazione di indici di coefficienti nella sequenza ordinata di unit? di elaborazione pu? comprendere un rispettivo circuito multiplexer (per es., 400, ?, 40P-1) e un rispettivo circuito contatore alla potenza di 2 (per es., 420, ?, 42P-1) configurato per generare detto rispettivo indice di un fattore di twiddle per l?uso da parte del rispettivo circuito di elaborazione, e ciascuno dei circuiti multiplexer pu? essere configurato per passare al rispettivo circuito contatore alla potenza di 2 un segnale selezionato (per es., S0, ?, Sp-1) tra un segnale fornito in uscita da un circuito multiplexer precedente nella sequenza ordinata di circuiti multiplexer o un segnale indicativo della posizione del circuito multiplexer nella sequenza ordinata di circuiti multiplexer, in funzione di detto stadio di calcolo corrente della FFT e di detto ciclo di calcolo corrente della FFT.
Come qui esemplificato, detti circuiti multiplexer disposti in una sequenza ordinata sono accoppiabili selettivamente in gruppi di circuiti multiplexer in daisychain, e detti gruppi possono avere una cardinalit? che ? funzione di detto stadio di calcolo corrente della FFT.
Come qui esemplificato, detta cardinalit? di detti gruppi di circuiti multiplexer in daisy-chain pu? essere uguale a 2<stage>, in cui stage ? un numero progressivo indicativo di detto stadio di calcolo corrente della FFT, con il primo stadio di calcolo della FFT che ? identificato dal numero zero. Come qui esemplificato, detta cardinalit? di detti gruppi di circuiti multiplexer in daisy-chain pu? essere limitata a detto numero P di unit? di elaborazione.
Come qui esemplificato, detto rispettivo circuito contatore alla potenza di 2 pu? essere configurato per aggiornare un rispettivo valore di registro di contatore a ciascun ciclo di calcolo della FFT. Aggiornare detto rispettivo valore di registro di contatore pu? comprendere sommare a un valore di registro di contatore memorizzato precedentemente un valore di offset calcolato in funzione di detto ciclo di calcolo corrente della FFT.
Come qui esemplificato, una lunghezza di burst di dette transazioni in memoria di lettura a burst e di dette transazioni in memoria di scrittura a burst pu? essere uguale a N/2P, e uno stride di burst di dette transazioni in memoria di lettura a burst e di dette transazioni in memoria di scrittura a burst pu? essere calcolato in ciascuno stadio di calcolo della FFT in funzione di detto numero P di unit? di elaborazione.
Come qui esemplificato, ciascuno di detti banchi di memoria di coefficienti pu? comprendere un numero N/2P di righe, e un numero N/2 di detti fattori di twiddle possono essere memorizzati senza ripetizione in detta pluralit? di banchi di memoria di coefficienti secondo uno schema di intercalazione di ordine basso o uno schema di intercalazione standard.
Come qui esemplificato, una riga avente un indice j di un banco di memoria di coefficienti avente un indice i pu? avere memorizzato al suo interno un fattore di twiddle avente un indice i+jP.
Come qui esemplificato, detta pluralit? di banchi di memoria di dati pu? comprendere un numero di banchi di memoria di dati uguale al doppio di detto numero P di unit? di elaborazione.
Come qui esemplificato, un procedimento di funzionamento di un circuito secondo una o pi? forme di attuazione pu? comprendere:
memorizzare fattori di twiddle per un?elaborazione di trasformata di Fourier veloce, FFT, in detta pluralit? di banchi di memoria di coefficienti,
applicare un?elaborazione di trasformata di Fourier veloce avente una dimensione N, con la forma N=2<n >con n che ? un intero, a dati memorizzati in detti banchi di memoria di dati, in cui applicare detta elaborazione di trasformata di Fourier veloce avente una dimensione N pu? comprendere elaborare detti dati in una pluralit? di stadi di calcolo della FFT comprendenti un numero n di stadi di calcolo della FFT, in cui ciascuno stadio di calcolo della FFT pu? comprendere un numero di cicli di calcolo della FFT,
estrarre, in ciascuno di detti stadi di calcolo della FFT, dati di ingresso da detti banchi di memoria di dati con una transazione in memoria di lettura a burst,
estrarre, in ciascuno di detti cicli di calcolo della FFT, un rispettivo insieme di detti fattori di twiddle da detti banchi di memoria di coefficienti,
elaborare, in detta pluralit? di unit? di elaborazione, detti dati di ingresso e detto insieme di fattori di twiddle per generare dati di uscita, e
memorizzare, in ciascuno di detti stadi di calcolo della FFT, detti dati di uscita in detti banchi di memoria di dati con una transazione in memoria di scrittura a burst.
Come qui esemplificato, estrarre detti fattori di twiddle pu? comprendere estrarre, in ciascuno di detti cicli di calcolo della FFT, differenti fattori di twiddle in detto rispettivo insieme di fattori di twiddle da differenti banchi di memoria di coefficienti.
Fermi restando i principi di fondo, i dettagli e le forme di attuazione possono variare, anche in modo apprezzabile, rispetto a quanto ? stato descritto, puramente a titolo di esempio, senza uscire dall?ambito di protezione.
L?ambito di protezione ? definito dalle rivendicazioni annesse.
Tabella I
Tabella III N=64 (n=6), P=8 (p=3)
Tabella IV N=32 (n=5), P=8 (p=3)
Tabella V N=32 (n=5), P=4 (p=2)
Tabella VI
Tabella VII P=8 (p=3)
Tabella VIII P=16 (p=4)

Claims (12)

RIVENDICAZIONI
1. Circuito (10) comprendente:
una pluralit? di unit? di elaborazione (1000, ?, 100P-
1) comprendente un numero P di unit? di elaborazione, una pluralit? di banchi di memoria di dati (M0, ?, MQ-
1) configurati per memorizzare dati, e
una pluralit? di banchi di memoria di coefficienti (1050, ?, 105P-1) configurati per memorizzare fattori di twiddle per un?elaborazione di trasformata di Fourier veloce, FFT, la pluralit? di banchi di memoria di coefficienti (1050, ?, 105P-1) comprendendo un numero P di banchi di memoria di coefficienti uguale a detto numero P di unit? di elaborazione (1000, ?, 100P-1),
in cui detto circuito (10) ? configurato per applicare un?elaborazione di trasformata di Fourier veloce avente una dimensione N, con la forma N=2<n >con n che ? un intero, a detti dati memorizzati in detti banchi di memoria di dati (M0, ?, MQ-1), e in cui applicare detta elaborazione di trasformata di Fourier veloce avente una dimensione N comprende elaborare detti dati in una pluralit? di stadi di calcolo della FFT comprendenti un numero n di stadi di calcolo della FFT, in cui ciascuno stadio di calcolo della FFT comprende un numero di cicli di calcolo della FFT, in cui le unit? di elaborazione (1000, ?, 100P-1) sono configurate per:
estrarre (108, 103), in ciascuno di detti stadi di calcolo della FFT, dati di ingresso da detti banchi di memoria di dati (M0, ?, MQ-1) con una transazione in memoria di lettura a burst,
estrarre (110, 104), in ciascuno di detti cicli di calcolo della FFT, un rispettivo insieme di detti fattori di twiddle da detti banchi di memoria di coefficienti (1050, ?, 105P-1),
elaborare detti dati di ingresso e detto insieme di fattori di twiddle per generare dati di uscita, e memorizzare (108, 103), in ciascuno di detti stadi di calcolo della FFT, detti dati di uscita in detti banchi di memoria di dati (M0, ?, MQ-1) con una transazione in memoria di scrittura a burst,
in cui le unit? di elaborazione (1000, ?, 100P-1) sono configurate per estrarre, in ciascuno di detti cicli di calcolo della FFT, differenti fattori di twiddle in detto rispettivo insieme di fattori di twiddle da differenti banchi di memoria di coefficienti (1050, ?, 105P-1).
2. Circuito (10) secondo la rivendicazione 1, in cui: ciascuna di dette unit? di elaborazione (1000, ?, 100P-
1) comprende un rispettivo circuito di generazione di indici dei coefficienti (1100, ?, 110P-1) configurato per generare, in funzione di uno stadio di calcolo corrente della FFT e di un ciclo di calcolo corrente della FFT, un rispettivo indice di un fattore di twiddle per l?uso da parte del rispettivo circuito di elaborazione, e
detto circuito (10) comprende un controllore della memoria di coefficienti (104) configurato per interfacciare detti circuiti di generazione di indici di coefficienti (1100, ?, 110P-1) a detti banchi di memoria di coefficienti (1050, ?, 105P-1).
3. Circuito (10) secondo la rivendicazione 2, in cui detto controllore della memoria di coefficienti (104) comprende:
una pluralit? di porte di comunicazione (2000, ?, 200P-1) comprendenti un numero P di porte di comunicazione accoppiate rispettivamente ai circuiti di generazione di indici di coefficienti (1100, ?, 110P-1) delle unit? di elaborazione (1000, ?, 100P-1),
una pluralit? di circuiti smistatori (2020, ?, 202P-1) comprendenti un numero P di circuiti smistatori uguale a detto numero P di unit? di elaborazione (1000, ?, 100P-1), i circuiti smistatori essendo accoppiati rispettivamente alle porte di comunicazione (2000, ?, 200P-1), e
una pluralit? di circuiti di unione (2040, ?, 204P-1) comprendenti un numero P di circuiti di unione uguale a detto numero P di unit? di elaborazione (1000, ?, 100P-1), i circuiti di unione essendo accoppiati rispettivamente ai banchi di memoria di coefficienti (1050, ?, 105P-1),
in cui ciascuno di detti circuiti smistatori (2020, ?, 202P-1) ? accoppiato a tutti i detti circuiti di unione (2040, ?, 204P-1) in una rete completamente connessa.
4. Circuito (10) secondo una qualsiasi delle rivendicazioni precedenti, in cui:
dette unit? di elaborazione (1000, ?, 100P-1) sono disposte in una sequenza ordinata da una prima unit? di elaborazione (1000) a un?ultima unit? di elaborazione (100P-
1),
ciascuno dei circuiti di generazione di indici dei coefficienti (1100, ?, 110P-1) nella sequenza ordinata di unit? di elaborazione (1000, ?, 100P-1) comprende un rispettivo circuito multiplexer (400, ?, 40P-1) e un rispettivo circuito contatore alla potenza di 2 (420, ?, 42P-1) configurato per generare detto rispettivo indice di un fattore di twiddle per l?uso da parte del rispettivo circuito di elaborazione, e
ciascuno dei circuiti multiplexer (400, ?, 40P-1) ? configurato per passare al rispettivo circuito contatore alla potenza di 2 (420, ?, 42P-1) un segnale selezionato (S0, ?, Sp-1) tra un segnale fornito in uscita da un circuito multiplexer precedente nella sequenza ordinata di circuiti multiplexer (400, ?, 40P-1) o un segnale indicativo della posizione del circuito multiplexer nella sequenza ordinata di circuiti multiplexer (400, ?, 40P-1), in funzione di detto stadio di calcolo corrente della FFT e di detto ciclo di calcolo corrente della FFT.
5. Circuito (10) secondo la rivendicazione 4, in cui detti circuiti multiplexer (400, ?, 40P-1) disposti in una sequenza ordinata sono accoppiabili selettivamente in gruppi di circuiti multiplexer in daisy-chain, detti gruppi avendo una cardinalit? che ? funzione di detto stadio di calcolo corrente della FFT.
6. Circuito (10) secondo la rivendicazione 5, in cui detta cardinalit? di detti gruppi di circuiti multiplexer in daisy-chain (400, ?, 40P-1) ? uguale a 2<stage>, in cui stage ? un numero progressivo indicativo di detto stadio di calcolo corrente della FFT, il primo stadio di calcolo della FFT essendo identificato dal numero zero, detta cardinalit? di detti gruppi di circuiti multiplexer in daisy-chain (400, ?, 40P-1) essendo limitata a detto numero P di unit? di elaborazione (1000, ?, 100P-1).
7. Circuito (10) secondo una qualsiasi delle rivendicazioni da 4 a 6, in cui detto rispettivo circuito contatore alla potenza di 2 (420, ?, 42P-1) ? configurato per aggiornare un rispettivo valore di registro di contatore in ciascun ciclo di calcolo della FFT, in cui aggiornare detto rispettivo valore di registro di contatore comprende sommare a un valore di registro di contatore memorizzato precedentemente un valore di offset calcolato in funzione di detto ciclo di calcolo corrente della FFT.
8. Circuito (10) secondo una qualsiasi delle rivendicazioni precedenti, in cui una lunghezza di burst di dette transazioni in memoria di lettura a burst e di dette transazioni in memoria di scrittura a burst ? uguale a N/2P, e uno stride di burst di dette transazioni in memoria di lettura a burst e di dette transazioni in memoria di scrittura a burst ? calcolato in ciascuno stadio di calcolo della FFT in funzione di detto numero P di unit? di elaborazione (1000, ?, 100P-1).
9. Circuito (10) secondo una qualsiasi delle rivendicazioni precedenti, in cui ciascuno di detti banchi di memoria di coefficienti (1050, ?, 105P-1) comprende un numero N/2P di righe, e in cui un numero N/2 di detti fattori di twiddle sono memorizzati senza ripetizione in detta pluralit? di banchi di memoria di coefficienti (1050, ?, 105P-1) secondo uno schema di intercalazione di ordine basso o uno schema di intercalazione standard.
10. Circuito (10) secondo la rivendicazione 9, in cui una riga avente un indice j di un banco di memoria di coefficienti avente un indice i ha memorizzato al suo interno un fattore di twiddle avente un indice i+jP.
11. Circuito (10) secondo una qualsiasi delle rivendicazioni precedenti, in cui detta pluralit? di banchi di memoria di dati (M0, ?, MQ-1) comprende un numero di banchi di memoria di dati uguale al doppio di detto numero P di unit? di elaborazione (1000, ?, 100P-1).
12. Procedimento di funzionamento di un circuito (10) secondo una qualsiasi delle rivendicazioni precedenti, il procedimento comprendendo:
memorizzare fattori di twiddle per un?elaborazione di trasformata di Fourier veloce, FFT, in detta pluralit? di banchi di memoria di coefficienti (1050, ?, 105P-1), applicare un?elaborazione di trasformata di Fourier veloce avente una dimensione N, con la forma N=2<n >con n che ? un intero, a dati memorizzati in detti banchi di memoria di dati (M0, ?, MQ-1), in cui applicare detta elaborazione di trasformata di Fourier veloce avente una dimensione N comprende elaborare detti dati in una pluralit? di stadi di calcolo della FFT comprendenti un numero n di stadi di calcolo della FFT, in cui ciascuno stadio di calcolo della FFT comprende un numero di cicli di calcolo della FFT, estrarre (108, 103), in ciascuno di detti stadi di calcolo della FFT, dati di ingresso da detti banchi di memoria di dati (M0, ?, MQ-1) con una transazione in memoria di lettura a burst,
estrarre (110, 104), in ciascuno di detti cicli di calcolo della FFT, un rispettivo insieme di detti fattori di twiddle da detti banchi di memoria di coefficienti (1050, ?, 105P-1),
elaborare, in detta pluralit? di unit? di elaborazione (1000, ?, 100P-1), detti dati di ingresso e detto insieme di fattori di twiddle per generare dati di uscita, e memorizzare (108, 103), in ciascuno di detti stadi di calcolo della FFT, detti dati di uscita in detti banchi di memoria di dati (M0, ?, MQ-1) con una transazione in memoria di scrittura a burst,
in cui estrarre detti fattori di twiddle comprende estrarre, in ciascuno di detti cicli di calcolo della FFT, differenti fattori di twiddle in detto rispettivo insieme di fattori di twiddle da differenti banchi di memoria di coefficienti (1050, ?, 105P-1).
IT102020000016393A 2020-07-07 2020-07-07 Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento IT202000016393A1 (it)

Priority Applications (5)

Application Number Priority Date Filing Date Title
IT102020000016393A IT202000016393A1 (it) 2020-07-07 2020-07-07 Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento
US17/339,083 US11461257B2 (en) 2020-07-07 2021-06-04 Digital signal processing circuit and corresponding method of operation
EP21181073.4A EP3937033A1 (en) 2020-07-07 2021-06-23 A digital signal processing circuit and corresponding method of operation
CN202110762708.0A CN113971260A (zh) 2020-07-07 2021-07-06 数字信号处理电路和对应操作方法
US17/811,209 US11675720B2 (en) 2020-07-07 2022-07-07 Digital signal processing circuit and corresponding method of operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102020000016393A IT202000016393A1 (it) 2020-07-07 2020-07-07 Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento

Publications (1)

Publication Number Publication Date
IT202000016393A1 true IT202000016393A1 (it) 2022-01-07

Family

ID=72356439

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102020000016393A IT202000016393A1 (it) 2020-07-07 2020-07-07 Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento

Country Status (4)

Country Link
US (2) US11461257B2 (it)
EP (1) EP3937033A1 (it)
CN (1) CN113971260A (it)
IT (1) IT202000016393A1 (it)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT202000016393A1 (it) * 2020-07-07 2022-01-07 St Microelectronics Srl Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035313A (en) * 1997-03-24 2000-03-07 Motorola, Inc. Memory address generator for an FFT

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100836050B1 (ko) * 2001-05-23 2008-06-09 엘지전자 주식회사 고속 푸리에 변환 연산 장치
US8395985B2 (en) 2011-07-25 2013-03-12 Ofinno Technologies, Llc Time alignment in multicarrier OFDM network
US9525579B2 (en) * 2012-07-18 2016-12-20 Nec Corporation FFT circuit
CN103034621B (zh) * 2012-12-13 2015-08-19 合肥工业大学 基2×k并行fft架构的地址映射方法及系统
US9170985B1 (en) * 2012-12-31 2015-10-27 Altera Corporation Bidirectional fast fourier transform in an integrated circuit device
US9311274B2 (en) * 2013-10-17 2016-04-12 Texas Instruments Incorporated Approach for significant improvement of FFT performance in microcontrollers
US9418047B2 (en) * 2014-02-27 2016-08-16 Tensorcom, Inc. Method and apparatus of a fully-pipelined FFT
US9672192B2 (en) * 2014-11-11 2017-06-06 Texas Instruments Incorporated High performance implementation of the FFT butterfly computation
US9735996B2 (en) * 2015-11-25 2017-08-15 Electronics And Telecommunications Research Institute Fully parallel fast fourier transformer
EP3370161B1 (en) * 2017-03-03 2020-06-24 Nxp B.V. Adapting the processing of decomposed ffts to match the number of data points processed in parallel
FR3083890B1 (fr) * 2018-07-10 2021-09-17 Commissariat Energie Atomique Processeur ntt par flot
FR3083885B1 (fr) * 2018-07-10 2020-10-02 Commissariat Energie Atomique Circuit de generation de facteurs de rotation pour processeur ntt
US11221397B2 (en) * 2019-04-05 2022-01-11 Texas Instruments Incorporated Two-dimensional FFT computation
IT202000016393A1 (it) * 2020-07-07 2022-01-07 St Microelectronics Srl Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035313A (en) * 1997-03-24 2000-03-07 Motorola, Inc. Memory address generator for an FFT

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
G. S. SOHI: "High-bandwidth interleaved memories for vector processors - A simulation study", IEEE TRANSACTIONS ON COMPUTERS, vol. 42, no. 1, January 1993 (1993-01-01), pages 34 - 44, XP000398058, DOI: 10.1109/12.192212
GURINDAR SINGH SOHI: "HIGH-BANDWIDTH INTERLEAVED MEMORIES FOR VECTOR PROCESSORS - A SIMULATION STUDY", IEEE TRANSACTIONS ON COMPUTERS, IEEE, USA, vol. 42, no. 1, 1993, pages 34 - 44, XP000398058, ISSN: 0018-9340, DOI: 10.1109/12.192212 *
JUI PING-CHANG ET AL: "Low-cost parallel FFT processors with conflict-free ROM-based twiddle factor generator for DVB-T2 applications", 2013 IEEE 56TH INTERNATIONAL MIDWEST SYMPOSIUM ON CIRCUITS AND SYSTEMS (MWSCAS), IEEE, 4 August 2013 (2013-08-04), pages 1003 - 1006, XP032525502, ISSN: 1548-3746, ISBN: 978-1-4799-4134-6, [retrieved on 20131124], DOI: 10.1109/MWSCAS.2013.6674821 *
KITSAKIS V ET AL: "Parallel Memory Accessing for FFT Architectures", JOURNAL OF SIGNAL PROCESSING SYSTEMS, SPRINGER, US, vol. 90, no. 11, 12 June 2018 (2018-06-12), pages 1593 - 1607, XP036603947, ISSN: 1939-8018, [retrieved on 20180612], DOI: 10.1007/S11265-018-1387-2 *
P. JUIC. WEYM. SHIUE: "Low-cost parallel FFT processors with conflict-free ROM-based twiddle factor generator for DVB-T2 applications,", 2013 IEEE 56TH INTERNATIONAL MIDWEST SYMPOSIUM ON CIRCUITS AND SYSTEMS (MWSCAS), COLUMBUS, OH, 2013, pages 1003 - 1006, XP032525502, DOI: 10.1109/MWSCAS.2013.6674821
RICHARDSON STEPHEN ET AL: "Building Conflict-Free FFT Schedules", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS I: REGULAR PAPERS, IEEE, US, vol. 62, no. 4, April 2015 (2015-04-01), pages 1146 - 1155, XP011577076, ISSN: 1549-8328, [retrieved on 20150327], DOI: 10.1109/TCSI.2015.2402935 *
XIN XIAO ET AL: "Low-power memory addressing scheme for fast fourier transform processors", CIRCUITS AND SYSTEMS, 2009. MWSCAS '09. 52ND IEEE INTERNATIONAL MIDWEST SYMPOSIUM ON, IEEE, PISCATAWAY, NJ, USA, 2 August 2009 (2009-08-02), pages 653 - 656, XP031528072, ISBN: 978-1-4244-4479-3 *

Also Published As

Publication number Publication date
EP3937033A1 (en) 2022-01-12
US20220350764A1 (en) 2022-11-03
US20220012199A1 (en) 2022-01-13
US11675720B2 (en) 2023-06-13
US11461257B2 (en) 2022-10-04
CN113971260A (zh) 2022-01-25

Similar Documents

Publication Publication Date Title
JP2744526B2 (ja) 準16基数プロセッサおよび方法
CN103955446A (zh) 基于dsp芯片的可变长度fft计算方法
CN102495721A (zh) 一种支持fft加速的simd向量处理器
CN113568851B (zh) 访问存储器的方法及对应电路
US20020178195A1 (en) Memory address generating apparatus and method
CN103034621B (zh) 基2×k并行fft架构的地址映射方法及系统
US20140089369A1 (en) Multi-granularity parallel fft computation device
IT202000016393A1 (it) Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento
CN107111547B (zh) 存储器访问单元
US9164903B2 (en) Memory manager
US9098449B2 (en) FFT accelerator
KR101696987B1 (ko) Fft/dft의 역순 배열 시스템과 방법 및 그 연산 시스템
US9268744B2 (en) Parallel bit reversal devices and methods
CN102411557B (zh) 多粒度并行fft计算装置
US11704535B1 (en) Hardware architecture for a neural network accelerator
CN102957993B (zh) 低功耗wola滤波器组及其分析阶段电路
KR101234183B1 (ko) 캐시 시스템
EP3066583B1 (en) Fft device and method for performing a fast fourier transform
US9582419B2 (en) Data processing device and method for interleaved storage of data elements
WO2017019095A1 (en) Interleaved access of memory
EP4307138A1 (en) Self-ordering fast fourier transform for single instruction multiple data engines
CN104572578B (zh) 用于显著改进微控制器中fft性能的新颖方法
Lee et al. Power-efficient design of memory-based FFT Processor with new addressing scheme
CN100442272C (zh) 数字信号处理装置
CN112487352A (zh) 可重构处理器上快速傅里叶变换运算方法及可重构处理器