Програмируеми логически матрици
Начало > Електроника > Статии > Сп. Инженеринг ревю - брой 6, 2008








Принцип на действие, основни характеристики, съвременни разновидности, програмиране, развойни системи, характерни приложения
Стефан Куцаров
Създадените през 1984 г. програмируеми логически матрици (Field Programmable Gate Array) FPGA се считат за нов етап в развитието на цифровите интегрални схеми (ИС), тъй като връзките между елементите им не са еднозначно определяни в процеса на производство, а могат да се програмират. Това означава възможност чрез дадена FPGA да се реализират различни устройства, лесно да се променя тяхната конфигурация и съответно начин на действие в процеса на разработка и дори по време на експлоатацията. Степента на сложност и богатите възможности на съвременните FPGA реално ги превърна в системи върху чип (System on Chip, SoC), които са дотолкова сложни, че каталозите на някои от тях надхвърлят 1000 страници. Сред последните новости са процесори на основата на FPGA, наричани виртуални (Virtual Processor), които по време на работа променят схемата си в зависимост от изпълняваните задачи. Независимо от голямата сложност на FPGA те не са скъпи (цената на едро достига под 1 USD). Съществуват и други ИС с подобни на FPGA свойства – комплексните програмируеми логически устройства (Complex Programmable Logic Devices, CPLD) и ИС със специфично приложение (Application Specific Integrated Circuit, ASIC), които могат да се използват заедно с FPGA и в някои случаи да ги заместват. Предимството на FPGA спрямо тях са по-бързата и евтина разработка на устройства и споменатата възможност на препрограмиране. Процесорите на основата на FPGA изпълняват множество операции няколко десетки пъти по-бързо от класическите процесори и имат постояннотокова консумация до 10% от тяхната.
В статията се изяснява принципът на действие и основните характеристики на FPGA, дават се сведения за съвременните им разновидности и за тяхното програмиране. Накратко са разгледани развойните платки, а накрая има характерни примери за многобройните приложения.
Принцип на действие
Всяка FPGA съдържа голямо количество еднотипни логически клетки (Logic Cell) LC с основна структура на фиг. 1. С LUT (от Look-Up Table) е означен n-входов логически блок, като n е 4 (по-често) или 6, а обикновено използваните означения са съответно LUT4 и LUT6. Блокът може да реализира всяка от 2n-те възможни логически функции на входните променливи, което се осигурява чрез програмирането на FPGA. Логическото ниво на неговия изход може да бъде запомнено в D-тригера при наличие на съответното разрешение на управляващата шина С. Чрез двувходовия мултиплексор MUX на изхода OUT на клетката в зависимост от програмирането се получава текущото или запомненото ниво на LUT. Изходът CL за пренос (от Carry Logic) се използва за работата на други блокове. Всяка LC използва определен брой логически елементи (Logic Element) LE, които са не по-малко от 50-60, но начинът на свързването им обикновено е фирмена тайна. Съвкупността на определен брой клетки (обикновено 8) образува програмируем логически блок (Programmable Logic Bloc) PLB, който се приема като основен градивен възел на FPGA.
Схемата на фиг. 1 и наименованието PLB не са единствените основни възли. Съществуват и други с цел получаването на повече функции при определена площ за тяхната физическа реализация. Например в серията Virtex-5 на Xilinx се използват адаптивни логически модули (Adaptive Logic Module, ALM), които са в 8 входа и освен LUT съдържат регистри, суматори и мултиплексори. Допълнително принципно предимство на използването на по-сложни основни възли е намаляване на броя на свързващите пътечки, което означава спестяване на площ и е предпоставка за повишаване на бързодействието.
Вторият тип възли са входно-изходните, всеки от които чрез програмиране осигурява желания режим на работа на своите изводи Programmable Input/Output (PIO) Pin. Така те могат да имат две или повече от следните състояния – вход, изход, изход с трето състояние, изход с отворен дрейн, изход с отворен сорс. Практически винаги броят на PIO е над 100, например в FPGA от серията AT40KAL на Atmel те са между 128 и 384. Някои FPGA са само с едно логическо ниво на PIO (например CMOS ниво в AT40KAL) или има възможност за програмирането му (8 нива в серията Stratix на Altera, между които LVCMOS и LVTTL и 40 нива в серията Stratix III). В много FPGA е възможно комбиниране на изводи по двойки за получаване на диференциални PIO. Максималната скорост на обмен на данни по PIO в някои FPGA вече надхвърля 1 Gbps. Входните и изходните данни на PIO са в сериен вид, докато в рамките на ИС се обменят в паралелен вид. Поради това на всеки извод има преобразувател на последователен в паралелен код при работа като приемник и преобразувател на паралелен в последователен код при работа като предавател. Всички преобразуватели образуват специфичен възел, често наричан SERDES (от SERialiser/DESerialiser).
Трети тип възли са паметите, които по принцип са повече от една, а видът, обемът и организацията им зависят от конкретната FPGA. Практически задължителни са паметите с произволен достъп (RAM) с аналогично предназначение както в компютрите, но с възможност за осъществяване на запис по време на програмирането. В някои FPGA част от паметта е разпределена (Distributed RAM) на различни места от подложката на ИС, а други съдържат и независими от останалите им възли статични памети SRAM, които разширяват приложенията. Пример за последното са паметите FreeRAM в серията AT40KAL с обем между 2 Kbit и 18 Kbit. Когато FPGA е предназначена за еднократно конфигуриране в процеса на създаване на устройството, в нея може да има памети със запазване на съдържанието при изключване на захранването (Non-Volatile Configuration Memory) NVCM, където се съхранява необходимата програма за работа. Реално това са най-евтините FPGA за сметка на невъзможността от препрограмиране.
Въвеждането на данните за програмиране се прави посредством специален блок, работещ в съответствие с някой от стандартните серийни интерфейси. Самото програмиране означава осъществяване на необходимите връзки между блоковете, което се прави чрез многобройните шини в FPGA и ключовете към тях. Обикновено всички шини са с еднакъв брой разреди, а един пример за връзките между перпендикулярно разположени шини е даден на фиг. 2. За свързване на шини А и В се затварят ключовете S1, за свързване на В и D – ключовете S3 и т.н.
Идея за структурата на FPGA е дадена на фиг. 3, (iCE6504 на SiliconBlue) и съдържа само описаните възли. Програмирането, освен чрез възела SPI посредством серийния интерфейс със същото име, може да се извършва и чрез 5-проводния интерфейс JTAG. Матрицата съдържа 440 възела PLB, 4 групи с по 44 PIO (всяка с независимо постояннотоково захранване), като 20 от тях може да са диференциални с логически нива LVDS и 20 възела RAM, всеки с организация 256x16 bit.
Както при всяка сложна цифрова схема, така и за нормалната работа на FPGA са необходими тактови импулси с много стабилни параметри. За целта на специални изводи се подават импулси от много стабилен външен генератор, границите на чиято честота (Input Frequency) IF са дадени в каталога. Например в споменатата серия Virtex-5 те са от 1 до 715 MHz. Чрез специален блок в FPGA, съдържащ схеми с фазова донастройка на честотата (PLL) или подобни на тях се създава група от импулси (обикновено между 8 и 48) за различните възли, предавани по специална тактова шина. Все повече са FPGA с две части на шината – за импулси с висока честота, използвани при необходимост от голямо бързодействие и за импулси с ниска честота за работа на FPGA в режим на малка постояннотокова консумация. Например при използване на последните във FPGA на фиг. 3, тя консумира ток до 25 mA при честота до 32 768 Hz.
Нараства броят на FPGA с вградени цифрови сигнални процесори (DSP), необходими в приложения като обработка на изображения, мултимедийни устройства, IP телефония и много други. Пример е серията Stratix на Altera, в различните FPGA на която DSP са между 6 и 22, а структурата на всеки от тях е на фиг. 4. Чрез програмиране може да се използва желана група или групи от регистри, а умножителите могат да се конфигурират като 9x9bit, 18x18bit и 36x36bit заедно със съответстващата разредност на събираните и изважданите числа в 52-разредните акумулатори. За увеличаване на бързодействието последните позволяват по време на всеки тактов импулс да се извършват до 4 действия. Тактовата честота на DSP е 333 MHz и всеки от тях може да извършва 2,7.109 операции в секунда, което съчетано със значителния им брой позволява обработка до 10 пъти повече данни в сравнение с най-добрите съвременни ИС на DSP.
Даденото дотук кратко описание на принципа на действие на FPGA показва, че те представляват сложна и с много възможности система, която може да бъде един от най-важните блокове на различни устройства. Сигурността на данните в последните е пряко свързана с тази в самата FPGA. Това е причината все повече FPGA да се произвеждат със записан в тях ключ под формата на двоично число (в серията Stratix III то е 128-разредно) и да се използва популярното AES кодиране. Чрез програмния продукт към FPGA се конфигурира външна ИС (фиг. 5), през която постъпват кодираните данни и се декодират в самата FPGA.
В много приложения на FPGA се налага обменът на данни да се извършва по някаква жична мрежа в съответствие с нейния протокол. За улеснение на това съществуват FPGA с вградени блокове на приемопредаватели, чийто брой достига няколко десетки. Обикновено те могат да работят в пълен дуплексен режим с максимална скорост от няколко стотици Mbps до десетина Gbps. Същевременно използват различни протоколи за сериен обмен, най-популярните от които са двете поколения (Gen1 и Gen2) на PCI Express, Gigabit Ethernet, Serial RapidIO и SONET/SDH.
Както е добре известно, при обмен на данни между устройствата техните съпротивления трябва да са съгласувани с това на линията, което е особено важно при големи скорости. За улеснение в някои FPGA са вградени резистори като товар, а понякога (например в серията Stratix IV на Altera) дори има програмируема предварителна обработка на предаваните данни (pre-emphasis) и програмируем еквалайзер на приемника, с което се компенсират честотно зависимите загуби по комуникационния канал.
Големият брой сложни възли в FPGA е сериозна предпоставка за значителна постояннотокова консумация и затова непрекъснато се търсят начини за намаляването й. Един от ефективните е след програмирането неизползваните блокове да се поставят в режим на минимална консумация. Например това е направено в серията Stratix III чрез т. нар. Programmable Power Technology. При нея по време на програмирането автоматично се установява необходимото захранващо напрежение на блоковете. Неизползваните реално се изключват, работещите с малка тактова честота се захранват с по-малко напрежение, а само на тези с висока честота се подава достатъчно голямо напрежение. Друг начин е технологията Flash*Freeze в серията IGLOO на Actel, която позволява изключване на неработеща FPGA чрез управляващ сигнал на специален неин вход, при което данните в паметите се запазват, а постояннотоковата консумация e между 5 и 53 mW. Възстановяване на работата става за 1 ms след подаване на друг управляващ сигнал.
Идея за разположението на възлите върху полупроводниковата пластина на ИС е дадена на фиг. 6, (серията Stratix IVGX). В средата са всички PLB, DSP, паметите и основните схеми за тактови импулси, а по периферията са разположени PIO, необходимите за работата им PLL схеми и осемте блока Transceiver Block, всеки с по 4 приемопредавателя.
Основни характеристики
Функционирането на FPGA като система се определя от нейните характеристики, докато смисълът на параметрите е както на всички други видове ИС. Представа за сложността на FPGA се добива от броя на еквивалентните LE, наричани обикновено System Gates (SG), но едновременно с тях обикновено се дава и броят на LC. Възможностите за връзка на FPGA с други устройства се оценяват чрез броя на PIO и максималната скорост на обменяните по тях данни. Също характеристики представляват броят на вградените блокове за работа с интерфейси, видът на вградените памети и техният обем. Организацията на паметите често не е фиксирана, а може да се променя при програмирането. Например в серията IGLOO на Actel тя може да е x1b, x2b, x4b, x9b и x18b. Същото се отнася и за вгражданите в някои FPGA памети тип FIFO, които най-често се използват като буфери. Основните характеристики на DSP, които също не са задължителни възли, са разредността на умножаваните в тях числа (обикновено с 3 до 5 програмируеми стойности) и максималната работна честота.
Освен тези основни характеристики, всяка серия FPGA има и множество други специфични характеристики. Всички те са основният критерий при избор на FPGA за реализация на конкретно устройство. За избора съществено значение имат електрическите, топлинните и механичните параметри на FPGA, сред най-съществените от които са захранващите напрежения (обикновено те са от 2 до 6) и консумираният постоянен ток, който нараства с увеличаване на работната честота подобно на другите CMOS цифрови ИС. Като параметри се дават и логическите нива на всички изводи за данни и тези за програмиране, както и продължителностите на фронтовете на импулсите на тях. Сред основните електрически параметри са и допустимите граници на честотата IF. При сравнително сложните FPGA обемът на данните за електрическите параметри в каталога може да надхвърли 50 страници.
В типа на механичните параметри на FPGA няма никакви особености в сравнение с другите цифрови ИС. Съществено е да се има предвид много големият брой изводи, вече достигащ до 1900. Когато FPGA трябва да има до около 300 извода се използват корпуси, в които те са по четирите им страни, например типове CS, QFN и VQFP. При повече е почти задължително използването на корпуси със сачмени изводи (BGA), включително разновидността с малко разстояние между тях (FBGA). Реално обаче използването на BGA започва от 144 извода.
Работният температурен обхват на FPGA е аналогичен на този на другите цифрови ИС, като най-често използвани са обхватът за битови апаратури (температура на околния въздух 0-70°С) и индустриалният (от -40 до +85°С).
Програмни продукти
Всеки производител на FPGA предлага към тях безплатен продукт, позволяващ пълноценното им използване за реализация на устройства с желана конфигурация. Същевременно съществуват езици за хардуерно описание (Hardware Description Language, HDL), предназначени за симулиране на всякакви електронни схеми, които могат да се използват и за FPGA. Опитът е показал, че от тях най-подходящи за FPGA са JHDL, VHDL и Verilog. И трите се предлагат от много производители на FPGA за постоянно или едногодишно безплатно ползване. Освен тях специализирани фирми също предлагат програмни продукти, например PICO Express на Synfora.
Видове FPGA
Един от възприетите принципи е, че не се произвежда една FPGA, а серия от 3-4 до около 20 ИС. Всички FPGA в серията са с едно и също действие, еднакви захранващи напрежения, логически нива на PIO, начин на програмиране и защита на данните, както и технология на производство. Последната като правило е CMOS при дължина на канала засега в границите от 40 до 130 nm. Различията между FPGA в серията са в броя на SG (които често са част от означението), на PIO, на умножителите и обема на паметта.
В ред 2 на табл. 1 са основните характеристики на една от седемте FPGA на серията IGLOO на Actel. Серията се реализира с технология 130 nm, има SG между 15k и 1000k и до 300 PIO. Обменяните данни са кодирани със 128-разредно число в съответствие с AES. Серията IGLOOPLUS е със същата технология и защита на данните, предназначена е за устройства със строги изисквания към малката постояннотокова консумация и съдържа 3 FPGA, една от които е на ред 3 в табл. 1. Всички FPGA от двете серии използват фирмения програмен продукт FlashPro3.
На ред 4 са характеристиките на ЕР3С16 от серията Cyclon III на Altera, реализирана с технология 65 nm и съдържаща 8 FPGA с брой на LC между 5k и 120k, на PIO от 82 до 531 и на умножителите между 23 и 288. Серията Stratix III на същия производител и със същата технология има две групи FPGA. Основната (Stratix III Logic Family) e с 6 FPGA с брой на LC между 47,5k и 337,5k, на PIO между 296 и1120 и на умножителите между 216 и 576, като последните са 18b x 18b. Другата група (Stratix III Enhanced Family) e от 4 FPGA с брой на LC между 47,5k и 255k, на PIO между 296 и 976 и на умножителите (18b x 18b) между 384 и 768. Дадената в ред 5 на табл. 1 ЕР3SЕ80 е от тази група. Серията е сред малкото FPGA, защитени с 256-разреден AES. Следващият ред 6 на таблицата е за FPGA от серията Stratix IV отново на Altera, която серия също има 2 групи. Едната е Stratix IV GX с приемопредаватели, съдържаща 6 ИС с брой на LC между 29k и 2120k, на PIO (вкл. LVDC) от 368 до 904 и на умножителите (18b x 18b) между 384 и 1288. Характерна особеност е наличието между 8 и 32 приемопредавателя със скорости от 600 Mbps и 8,5 Gbps. Втората група Stratix IV Е има също 6 FPGА, но с повече основни възли и без приемопредаватели. Всички FPGA на Altera се програмират с фирмения продукт Quartus II.
На редове 7 и 8 са две FPGA на Atmel. Първата е част от серията AT40KAL, съдържаща 4 FPGA с LC между 5k и 50k и PIO от 128 до 384. Характерно за нея е наличието на споменатата независима от останалите блокове FreeRAMФ. Втората FPGA е от серията АТ40К, също съдържаща 4 ИС със същите LC и PIO. Има разновидност AT40KLV със захранващо напрежение 3,3 V. Всички тези FPGA се програмират с фирмения продукт IDS, но това може да се прави и с такива с общо предназначение като споменатия Verilog, с OrCAD, Mentor и др.
На редове 9-11 са FPGA на Lattice Semiconductor. Първата от тях SC25 е част от серията LatticeSC/M, съдържаща 5 FPGA с LC между 15k и 115k и PIO от 192 до 942. Към това се прибавят вградените 1 или 2 контролера за обмен на данни с външни памети, например DDR и DDR2. На ред 10 е FPGA от серията ЕСР2 от 6 ИС, характерна с ниската си цена. Те имат LC между 6k и 95k, PIO от 192 до 583 и 3 of 42 умножителя 36b x 36b. Тези FPGA са с вграден генератор, чиято честота може да се програмира на 18 стойности между 2,5 и 130 MHz. Подобна е серията ЕСР2М от 5 FPGA, която съдържа повече умножители. На ред 11 са характеристиките на една от FPGA на серията ХР, съдържаща 5 ИС с вградена NVCM, брой на LC между 3k и 19,7k и PIO от 62 до 340, както и програмируем вграден генератор.
Последните три реда на таблицата са за FPGA на Xilinx. Първата от тях (ред 14) е от серията Spartan-3AN, съдържаща 5 FPGA с LC между 50k и 1400k, от 108 до 502 PIO и между 3 и 32 умножителя. Тя се програмира с фирмените продукти ISE и WebPACK. Възможен е обмен на данни с външни памети DDR и DDR със скорост до 400 Mbps. Дадената на ред 13 FPGA е от серията Virtex-4, произвеждана по технология 90 nm и съдържаща 17 ИС. Тя е с LC от 13k до 200k, PIO между 320 и 960 и от 32 of 512 умножителя. Данните могат да се защитят чрез използван по желание 256-разреден AES. В последния ред е FPGA от серията Virtex-5 с 24 ИС, произвеждани по технология
65 nm. Количеството на LC е между 30k и 330k, на PIO от 172 до 1200 и на умножителите между 32 и 1056.
Развойни средства (китове)
Независимо от различните наименования (Development Kit, Evaluation Kit, Development Board, Evaluation Board, Evaluation Platform) основната им цел е запознаване с възможностите на използваната в тях FPGA. Значителна част от китовете, обикновено наричани FPGA Module, са оформени конструктивно така, че след подходящо програмиране да могат да се вграждат в устройства. Като правило китовете са за конкретна FPGA или серия от FPGA и са придружени от подробно документация на хартия или CD, в която се описва структурата им, свързването към други устройства и начина на програмиране на FPGA. В много случаи документацията е оформена подобно на учебник, за да може китът да се използва и като средство за обучение. Китовете се предлагат както от производителите на FPGA, така и от специализирани фирми.
За изясняване на структурата и действието на китовете на фиг. 7 е дадена опростената блокова схема на MORPH-IC на Future Technology Devices Int., предназначен за FPGA на Altera. Захранването му е с външно напрежение +5 V, постъпващо на USB порта (USB Connector), което чрез единия от вградените стабилизатори се превръща в необходимото +2,5 V за работа на FPGA. Втори стабилизатор осигурява +3,3 V и ток до 250 mA през 40-изводните куплунзи J1 и J2 за външни устройства. Програмирането на FPGA се извършва през USB порта посредством управляващата ИС FT2232С, за чието действие се използва програма, записана в паметта EEPROМ по време на производството на кита. Времето за програмиране не надхвърля 200 ms. Протоколът за обмен на данни между FT2232C и FPGA изисква 6-разредна шина между двете ИС, а самите данни използват 8-разредна шина със скорост до 1 Mbps. Самият кит се свързва към компютър, като за целта към кита има CD с драйвери за Windows. Втори CD съдържа продукта за програмиране на FPGA. Освен чрез USB порта, програмирането може да се извършва и през J1 и J2. Почти задължителен за всички китове е MOS ключът MOSFET POWER SWITCH, чрез който управляващата ИС прекъсва захранването на FPGA, когато китът не се използва.
Съществуват китове с две FPGA и още повече възможности. Пример е 2-FPGA-Board на Gleichmann Electronics Research с FPGA на Altera (фиг. 8). Връзката му с външни устройства се извършва през 64 диференциални I/O със скорост 1 Cbps на всеки от тях, а нормалните условия на работа се осигуряват от вентилатор с автоматично регулируеми обороти в зависимост от температурата.
Приложения
Универсалната структура на FPGA определя многобройни приложения, които обикновено се характеризират със значително по-малка постояннотокова консумация и по-малки размери. Една от областите на приложение е управлението на течнокристални дисплеи, например реализацията на контролери и регулиране на задното осветление. Блоковата схема на контролер с една FPGA, външна памет (необходима само за големи дисплеи) и захранване е дадена на фиг. 9. Друга голяма област е обработката на изображения, например компресиране и декомпресиране и изпълняване на функциите на DSP в индустриални, телевизионни и медицински апаратури, например корекция на изображенията от видеокамери. Също замяна на DSP може да се постигне в базовите станции на безжични мрежи. Друго приложение в изграждането на комуникационни мрежи е дадено на фиг. 10 – чрез FPGA се реализира предаване с голяма скорост на данни от процесор с паралелен изход по локална мрежа. Големият обем и гъвкавата структура на паметта на много FPGA позволява използването им в най-различни цифрови устройства. Работата на микропроцесорите също може да се ускори с помощта на FPGA. Характерен пример е серията модули XD2000i на фирмата Xtreme Data, които съдържат три FPGA от серия Stratix III и са предназначени за работа със сървъри, базирани на процесора Xeon. Ускоряването на изчисленията е между 4 и 16 пъти в зависимост от използвания алгоритъм, а основните приложения се очаква да бъдат в сферата на научните изследвания и финансите.
Вижте още от Електроника
Новият брой 9/2024