FPGA

 

En af tidens mest hotte kredstyper kaldes Field Programmable Gate Array. Typen er på kort tid blevet absolut dominerende indenfor digital hardware. Specielt sammen med programmeringssproget VHDL giver det mulighed for fleksible og effektive løsninger med høj densitet.

Hvad der især gør typen effektiv og nyskabende, er dens indgangskredsløb. I grupper, ofte 4 og 4, føres indgangssignalerne, som adressebit og via en passende dekoder, til en lille statisk RAM (EPROM-typer er på vej), som er 1 bit bred og med en dybde svarende til antallet af indgange i 2 potens, altså 16, hvis gruppestørrelsen er 4. Dette kaldes for en Look Up Table eller kort LUT. Ved passende programmering af RAM'en kan man nu få alle logiske funktioner (inklusive nogle stykker, som ikke har noget navn) i det samme kredsløb.

Udgangen fra LUT'en (eller rettere LUT'erne, da der gerne er flere) føres til yderligere kredsløb, som er forskellig for de forskellige fabrikater, men der er altid en eller flere flip-flopper. Der er desuden kredsløb, som muliggør sammenkobling af LUT'er på tværs og andre hjælpekredsløb.

Et antal af disse kredsløb sidder i en matrix, der i en lille kreds (Xilinx XC3S200) har 24 rækker og 20 søjler altså i alt 480 positioner. 

Imellem de enkelte positioner er et stort antal ledere af forskellig længde. De korte går fra en position til nabopositionen, de mellemlange rækker over et antal positioner og de lange går fra kant til kant. Hertil kommer, at et sæt går vandret og et andet lodret. I mange af krydsene mellem de vandrette og lodrette ledere sidder switse, som tillader at sammenkoble alle input og output fra de forskellige positioner og man kan således forme små og store kredsløb.

Selve den fysiske kreds er udstyret med et antal I/O-ben, der normalt alle er ens og bidirektionelle. Hvert ben føres til et kredsløb, som supporterer et stort antal (ofte mere end 20) I/O-standarder og derefter ind i det tidligere nævnte ledersystem. Det betyder at enhver fysisk indgang kan kobles til enhver LUT og udgange også frit kan vælges.

Som det fremgår, skal der programmeres et meget stort antal kredsløb (LUT'er, omskiftere, I/O etc.) før kredsen kan virke. Dette gøres med et antal konfigurationsbit. Den tidligere nævnte XC3S200 skal således tilføres godt en megabit.

Denne konfigurering kan ske på forskellig vis. En måde er at anvende en mikroprocessor, en anden er at anvende en speciel programmeringsstyrekreds, men nogle FPGA'er kan selv styre programmeringen og skal blot tilsluttes en (speciel) EPROM. Når strømforsyningen tilsluttes, bliver konfigureringsbittene automatisk indlæst og kredsen er parat til at arbejde.

Nogle kan endda ændre konfiguration, medens de arbejder. På denne måde kan en MP3-afspiller blive til en mobiltelefon og vende tilbage til MP3-afspiller når samtalen er slut.

Alt denne programmering skal selvfølgelig styres og her kommer VHDL lige tilpas. Det er et hardware-nært sprog, som muliggør både at arbejde signal for signal og mere overordnet. Desuden er det nemt at genanvende tidligere udviklede og afprøvede kredsløb, ligesom det er nemt at gå til en større kreds. Sidst, men ikke mindst er der effektive simulationsværktøjer, så hardwaren kan testes "på skrivebordet" og dermed forbedre muligheden for succes hos kunden.

Hvor meget kan der være i en FPGA? Det afhænger selvfølgelig af typen, men også af, hvor effektivt VHDL programmet er skrevet. Som et eksempel kan nævnes, at en komplet Z-80 CPU fylder godt halvdelen af ovennævnte XC3S200. Der er altså rigelig plads til en UART og noget paralleloutput samtidig.

 

Links til FPGA-producenter:

                                                    www.altera.com
  
                                                 www.latticesemi.com
  
                                                 www.xilinx.com