Är det något att göra med den franska Professional Golfers 'Association?

Ej! Akronyn står för Field Programmable Gate Arrays - det vill säga en mycket intressant klass av hackbara digitala integrerade kretsar (ICs).

Jag är bara upp till kapitel tre i min datorvetenskapliga lärobok, så du måste påminna mig vad en portmatris är ...

I samband med denna konversation är en grindmatris en rektangel av kisel innehållande många kopior av samma få elementära logiska grindar, som alla är upptagna i rader och kolumner. I sin enklaste form är en logisk grind en grundläggande Boolean-funktion (OR, OCH, inverterare ...) som erhålls genom att kombinera några transistorer.

Vad sägs om den "fältprogrammerbara" delen?

En enda logisk grind är alltid densamma, oavsett vilken integrerad krets den bor i. Vad gör din CPU en CPU och din grafikkretsar en grafisk chipset, och båda kan inte göra vad den andra chipen gör, det är sättet att de miljontals logiska grindar inuti dem är permanent kopplade till varandra i kiselgjuteriet. Portarna och mikrodraden som förbinder dem, kallas nät, ritas på speciella masker som direkt skrivs ut på kisel. Varje möjlig mask motsvarar en enda elektrisk kretsdesign, som inte kan ändras när chipet har skrivits ut - om du inte använder en FPGA.

Så du kan ändra sminken av en krets själv ...

Exakt. Endast de ej anslutna arraysna av trådar och basblock skrivs ut på kisel i gjuteriet. Alla anslutningar görs senare på ditt köksbord, efter att du har köpt en tom FPGA och monterat den på din PCB bord! De grundläggande, tomma FPGA-erna kan produceras i stora volymer till relativt låga enhetspriser, eftersom maskerna alltid är desamma, men chipsen kan säljas som enstaka enheter eller i mycket små mängder, till den som vill programmera dem som han eller hon trivs . Detta har stora konsekvenser för många människor, från mikroelektronikindustrin till hobbyister och utbildare.

Men säkert kan chips programmeras ändå - varför är det här nya?

Visst, samma mikroprocessor (t.ex. x86) kan köra program så olika som Windows, hundratals Linux-distributioner, OpenOffice.org, Apache, Photoshop och vad som inte är. Men oavsett vilken mjukvara den körs, är den fortfarande samma mikroprocessor: en integrerad krets som bara kan utföra en begränsad, fast uppsättning av grundläggande instruktioner på samma maskinspråk. Och det har alltid samma databuss med fast bredd, eller samma antal hjälpstift. En FPGA kan bli en unik digital krets som du vill att den ska vara (inom rimliga gränser). Det kan dessutom vara en helt annan krets varje gång du sätter på brädet på vilket det är monterat.

Hur kan det vara såhär?

Programmeringen, eller "bränna" i FPGA lingo, händer genom att FPGA läser en fil så snart den är uppladdad. Dess innehåll beskriver vilka grundläggande block (BBs) måste kopplas till vilka andra och genom vilka interna sökvägar, samt hur varje BB måste konfigureras. Varje gång värdkortet slås av, raderas alla anslutningar och konfigurationsinformation helt. Medan bränningsförfarandet måste upprepas varje gång finns det ingen inbyggd gräns som tvingar den brinnande filen att vara densamma varje gång.

Vad finns inne i dessa BBs?

Generellt sett innehåller en FPGA BB både kombinatoriska och registerelement. Alla blocken placeras i ett rektangulärt rutnät. kombinatoriska kretsar uppdaterar sina utgångar så snart som möjligt när någon av deras ingångar ändras, medan sekventiella kretsar omberäknar sina utgångar endast på kanten av någon klocka eller aktiveringssignal, varvid konstant det senaste beräknade värdet hålls under tiden. Saker som elementära tillsatser eller dekoder är kombinatoriska, flip-flops och andra minneselement är sekventiella.