8.3. Реконфигурируеми системи
С развитието на FPGA, базирани на SRAM клетки, се появиха нови възможности в електрониката, свързани с динамично преконфигурируема логика. Това се отнася за устройства, които могат да бъдат преконфигурирани в движение по време на работа на системата.
FPGA съдържа голям брой програмируеми логически елементи и регистри, които могат да бъдат свързани по много начини за реализиране на различни функции. По-специално SRAM-базираните компоненти позволяват на системата да изтегля нови конфигурационни данни на устройството. Въпреки че всички логически портове, регистри и SRAM клетки, които съставляват FPGA, са изградени на повърхността на един силициев чип, понякога е полезно да мислим за устройството като състоящо се от две отделни части - логически портали (и регистри) и програмируеми SRAM конфигурационни клетки (Фигура 8.8).

Фиг.8.8. Динамично преконфигурируема логика: FPGA базирана на SRAM клетки
Гъвкавостта на преконфигурируемите устройства разкрива наистина огромни възможности. Например, при включване, FPGA може да бъде конфигуриран за системен тест или самотест. Веднага след като системата завърши тестването, FPGA може отново да бъде преконфигуриран, за да изпълнява основните си функции.
Разбира се, възможността за преконфигуриране на функциите на отделни компоненти на печатна платка осигурява допълнително удобство за инженерите, но понякога те трябва да създават цели системи, които могат да бъдат преконфигурирани на ниво печатна платка, за да изпълняват различни, коренно различни функции.
За да се реши този проблем, е необходимо да се конфигурират връзките между устройствата на ниво PCB. Така наречениятпрограмируеми на място устройства за свързване (или FPID), които са известни също като програмируеми на място чипове за свързване (програмируеми от потребителя чипове за свързване). Тези интегрални схеми, използвани за свързване на логически устройства, могат да бъдат динамично преконфигурирани по същия начин като стандартните FPGA, базирани на SRAM клетки. Тъй като всеки FPID чип може да съдържа повече от 1000 пина, само няколко от тези чипове може да са необходими за свързване на компоненти на PCB (Фигура 8.9).

Фиг.8.9. Динамично преконфигурируеми връзки: FPID базиран на SRAM клетки
Интересното е, че описаният подход не се ограничава до приложения на ниво PCB. Всеки от описаните по-горе подходи може потенциално да се използва в хибридни микросхеми, в многочипови модули и в едночипови устройства.
Един от ограничаващите фактори за повечето FPGA, базирани на SRAM клетки, е необходимостта да отделите известно време за преконфигуриране. Тази характеристика се дължи на факта, че FPGA обикновено се програмират със серийно зареждане на данни (или паралелно зареждане на данни, което е само 8 бита широко). Когато става въпрос за високотехнологични устройства с десетки милиони статични конфигурации на клетки с памет, препрограмирането може да отнеме няколко секунди. Има някои типове FPGA, които решават този проблем, като използват голям брой I/O пинове с общо предназначение, които образуват широка шина за конфигурация (да речем 256 бита) по време на програмиране и след конфигурацията се връщат към изпълнението на основната сифункции.
Друг недостатък на традиционната FPGA архитектура е, че ако трябва да направите най-незначителните промени в конфигурацията, трябва да препрограмирате цялото устройство. Някои FPGA ви позволяват да ги преконфигурирате по колони, но дори и в този случай се предоставя много грубо ниво на структуриране. Освен това обикновено е необходимо да се спре работата на цялата печатна платка по време на конфигурирането. Освен това при програмиране съдържанието на всички FPGA регистри се губи безвъзвратно.
За да разреши тези проблеми, около 1994 г. Atmel Corporation (www.atmel.com) предложи редица интересни FPGA. В допълнение към поддържането на динамично преконфигуриране на избрани вътрешни логически елементи, тези устройства се характеризират с:
работата на входовете и изходите на устройството не е нарушена,
работата на инструментите за синхронизиране на системата не е нарушена,
всички части на устройството, които не подлежат на преконфигуриране, могат да продължат да работят,
информацията от вътрешните регистри не се губи, дори тези, които са в зоната за преконфигуриране.
Последният елемент в този списък е от особен интерес, тъй като позволява едно изпълнение на функция да предава данни на друго. Например, група от регистри може първоначално да бъде програмирана да действа като двоичен брояч. След това, в някакъв момент от време, определен от хост системата, същите регистри могат да бъдат преконфигурирани да работят като линеен регистър за изместване, чиято начална стойност се определя от последното съдържание на брояча преди преконфигурирането.
Въпреки че тези устройства бяха следващата еволюционна стъпка по отношение на технологиите, по отношение на техните потенциални възможности, стъпката се оказа наистина революционна. За да оцените тезиспособностите въведоха нови термини като виртуален софтуер и кеш логика.
Понятието "виртуален софтуер" възниква по аналогия с неговия софтуерен еквивалент - "виртуална памет". И двата термина се използват за представяне на елементи, които всъщност не съществуват. В случай на виртуална памет операционната система на компютъра се преструва, че разполага с повече RAM, отколкото има в действителност. Всеки път, когато програма се опита да получи достъп до места в паметта, които физически не съществуват, операционната система мами и разменя някои от данните в паметта с данните на твърдия диск. Въпреки че тази процедура, известна като "размяна", забавя процеса на обработка на данни, в същото време позволява на програмата да изпълнява задачите си с по-малко физическа памет.
По подобен начин терминът „кеш логика“ идва от свързаната концепция за кеш памет, която е високоскоростна, скъпа статична памет за съхраняване на активни в момента данни, докато по-голямата част от данните се поставят в по-бавна, евтина памет, като например динамична памет (DRAM).
Чрез проследяване на местоположението и достъпа на всяка микрофункция, както и интегриране на функционалност и елиминиране на излишъка, устройствата с виртуален хардуер могат да изпълняват много по-сложни задачи от устройствата, изградени по класическата схема. Например, в сложни функции, които изискват 100 000 еквивалентни порта, само 10 000 от тях могат да бъдат активни във всеки даден момент.Следователно, използвайки намаляване или кеширане, можете да внедрите повече функции за 90 000 порта. Така едно малко и евтино устройство с 10 000 логически елемента може да замениголям и скъп със 100 000 елемента (фиг. 8.10).
По този начин е възможно да се компилират нови варианти на устройства в реално време, които могат да се използват като динамично създадени хардуерни рутинни процедури.

Фиг.8.10. Виртуален софтуер