FPGA (Field programmable gate array)
Matrici di circuiti elementari numerici (celle) integrati su silicio che è possibile interconnettere (configurare o ‘programmare’) per formare uno specifico circuito scrivendo un’appropriata configurazione di bit in una memoria sottostante, talvolta riscrivibile. In questo modo anche la costruzione di un circuito numerico prende una forma software, e in effetti per le FPGA esistono dei linguaggi di ‘descrizione dell’hardware’ (HDL, Hardware description language) e delle librerie di macrofunzioni (unità aritmetiche intere e in virgola flottante, memorie, registri, fino a intere CPU), anche open source, che è possibile interconnettere mediante appositi sistemi di sviluppo. Questi permettono generalmente la simulazione del funzionamento, la compilazione della matrice di bit, il caricamento della matrice nella memoria della FPGA. Antenate delle odierne FPGA possono essere considerate le PAL (Programmable array logic), matrici di porte logiche di dimensioni ridotte, anch’esse programmabili scrivendo una memoria a fusibile (programmabili una sola volta) o una memoria EPROM (Erasable programmable read only memory) cancellabile otticamente e riscrivibile o una memoria flash cancellabile elettricamente e riscrivibile. Le odierne FPGA rappresentano spesso un mezzo per sviluppare circuiti integrati dedicati (ASIC, Application-specific integrated circuit) in applicazioni di larga scala, abbattendo costi e tempi di sviluppo. Per applicazioni di piccola scala possono rappresentare però anche un’alternativa completa, stante il costo di sviluppo trascurabile rispetto agli ASIC. Nel corso degli anni a cavallo del nuovo millennio le FPGA hanno raggiunto ragguardevoli dimensioni (quasi un milione di celle) e velocità (centinaia di MHz di clock), permettendo così la costruzione di sistemi di calcolo vettoriale ad alto parallelismo che di fatto hanno soppiantato in molte applicazioni esigenti i DSP (Digital signal processor).
→ Musica elettronica ed elettronica musicale