| "Descrizione" by RS232 (2002 pt) | 2026-Jan-29 15:57 |
AMD Am29540
Definizione
AMD Am29540, FFT address sequencer (sequenziatore di indirizzi per FFT) è un circuito dedicato che genera, in hardware, la sequenza completa di indirizzi dati (RAM) e indirizzi coefficienti (ROM) necessaria per eseguire le operazioni ripetitive di butterfly in una trasformata di Fourier veloce. L’obiettivo è togliere al microcodice (o alla CPU di controllo) il compito più “costoso”: calcolare ad ogni ciclo quali campioni leggere/scrivere e quale coefficiente (twiddle) usare, mantenendo il flusso deterministico e ad alta velocità.

Funzioni
Fornisce un bus di indirizzi che punta, ciclo dopo ciclo, alle coppie di campioni da leggere per la butterfly e alle locazioni dove riscrivere i risultati.
Fornisce (o coordina) gli indirizzi per i coefficienti (tipicamente in ROM o in generatori sin/cos) in sincronia con i dati.
Supporta più varianti di algoritmo, selezionabili via pin/controlli: DIT/DIF, radix-2/radix-4, in-place / non-in-place, e gestione del bit-reverse (pre-scramble o output bit-reversed a seconda del caso).
Architettura FFT
In un processore FFT microcodificato (o “bit-slice”), l’unità aritmetica può fare le somme/moltipliche della butterfly molto velocemente, ma senza un generatore di indirizzi dedicato si rischia di sprecare cicli (o ROM di microcodice) solo per calcolare indici, stride, bit-reverse e alternanza lettura/scrittura. Un sequenziatore come l’Am29540 riduce drasticamente questa complessità: gli dai il tipo di FFT e la lunghezza e lui emette la sequenza di indirizzi per l’intera trasformata.
Dati di identificazione e specifiche (tabella)
| Caratteristica | Valore indicativo (classe Am29540) | Nota |
|---|---|---|
| Funzione | Generazione indirizzi dati/coeff per FFT | Sequenze per butterfly |
| Lunghezza trasformata programmabile | Da 2 a 65.536 punti (radix-2); da 4 a 65.536 (radix-4) | In potenze di 2 o di 4 |
| Algoritmi | DIT o DIF | Selezione via controllo |
| Radice | Radix-2 o radix-4 | Selezione via controllo |
| In-place / non-in-place | Supportato | Opzioni di sequenza |
| Alimentazione | 5 V singola | Tipico per la famiglia |
| Package | 40-pin DIP | Indicativo |
| Linee di stato | Iteration complete, FFT complete, even/odd (o KNZ/KZ in RVI) | Per controllo memoria/scaling |
Interfacce logiche principali (come si “pilota”)
Dal punto di vista del sistema, è utile pensarlo come 3 blocchi: (1) selezione modalità FFT, (2) contatore/istruzioni di avanzamento, (3) uscita indirizzi + segnali di stato.
Selezione modalità: controlli per radix-4/2, DIT/DIF, e scelta della sequenza compatibile con dati pre-bit-reversed o meno (controllo tipo PSD nel materiale AMD).
Lunghezza trasformata: un set di bit (indicati come TL3–TL0 nel diagramma logico) che definisce la lunghezza, latched all’avvio della procedura.
Butterfly counter e istruzioni: il contatore di butterfly lavora sul fronte positivo di clock e risponde a 4 “istruzioni” funzionali: COUNT (avanza), RESET (inizializza), RESET/LOAD (inizializza e carica un offset), HOLD (pausa).
Porta indirizzi bidirezionale con 3-state: usata anche per caricare un offset durante RESET/LOAD; l’offset viene combinato con i bit alti non usati dalla lunghezza selezionata (effetto tipo OR sui bit di maggior peso “liberi”).
Segnali di stato:
EVEN/ODD: aiuta l’alternanza tra memorie di lettura/scrittura in non-in-place; in modalità RVI assume anche il ruolo KNZ/KZ (legato alla struttura della butterfly).
IT COMP: fine iterazione (fondo “colonna” di butterfly), utile anche per schemi di block floating (scaling per prevenire overflow).
FFT COMP: ultima butterfly della trasformata.
Schizzo dei collegamenti più importanti
┌──────────────────────────────┐ │ Controller / microcodice │ │ (o FSM / sequencer esterno) │ └──────────────┬───────────────┘ │ Modalità FFT │ Avanzamento / init RADIX4/2, DIT/DIF, PSD, TL[3:0] │ COUNT / RESET / LOAD / HOLD ▼ ┌─────────────────────────┐ │ FFT address sequencer │ │ (Am29540) │ │ │ │ ADDRESS[ ] ────────────┼──► RAM addr (data) │ │ │ (coeff addr) ──────────┼──► ROM / sin-cos / twiddle │ │ │ EVEN/ODD ──────────────┼──► banca RAM / R/W swap │ IT COMP ──────────────┼──► fine iterazione (scaling) │ FFT COMP ──────────────┼──► fine trasformata └──────────────┬──────────┘ │ ▼ ┌────────────────────────┐ │ Butterfly datapath │ │ (ALU/MAC/complex mul) │ └────────────────────────┘
Come leggerlo: il controller imposta modalità e lunghezza; poi ad ogni ciclo comanda l’avanzamento. Il sequenziatore produce gli indirizzi per pescare i campioni e i coefficienti nel punto giusto, mentre i segnali di stato permettono al sistema di alternare le banche di memoria e di sapere quando cambiare “fase” o terminare.
Modalità di indirizzamento e scelte architetturali (tabella)
| Esigenza di sistema | Impostazione tipica | Effetto pratico |
|---|---|---|
| FFT standard complessa | Radix-2 o radix-4 + DIT/DIF | Sequenza indirizzi per butterfly coerente con l’algoritmo |
| Dati già bit-reversed in ingresso | PSD selezionato per “pre-scramble” | Output in ordine più “comodo” (dipende dalla modalità) |
| In-place con input non pre-scrambled | In-place attivo | Output inevitabilmente bit-reversed |
| Evitare output bit-reversed | Non-in-place + sequenza alternativa | Scrittura su area diversa e ordine più lineare |
| Gestione overflow/word-growth | Uso di IT COMP | Trigger per block floating/scaling |
| Memorie ping-pong | Uso di EVEN/ODD | Alternanza automatica banca lettura/scrittura |
| Evaluate |