Використання пліс у сучасних пристроях. Новинний та аналітичний портал "час електроніки" Приклади оформлення великих проектів fpga

Уявіть, що процесор замість того, щоб виконувати певний набір інструкцій, перебудовуватиметься під кожну програму і перетворюватиме алгоритм безпосередньо на «залізо». Саме так і працюють FPG. У сьогоднішній статті я розповім, як взагалі таке можливо, і познайомлю вас із різними методами проектування FPGA.

Для початку необхідно трохи розумітися на цифровій логіці роботи мікросхем ASIC, але починати з них дуже складно і дорого, і замість цього краще почати з FPGA.

Що таке FPGA?

FPGAрозшифровується як field-programmable gate array (програмовані користувачем вентильні матриці, ППВМ). У загальному випадку вони називаються ПЛІС - програмовані логічні інтегральні схеми.

За допомогою FPGA можна в прямому розумінні цього слова, проектувати цифрові мікросхеми, сидячи у себе вдома з доступною платою налагодження на столі і ПО розробника за кілька тисяч зелених рублів. Але є і безкоштовні варіанти. Зверніть увагу: саме проектувати, а не програмувати, тому що на виході ми отримаємо фізичну цифрову схему, яка виконує певний алгоритм на апаратному рівні, а не прогу для праці.

Працює це в такий спосіб. Є готова друкована плата з набором інтерфейсів, які підключені до встановленої на платі мікросхеми FPGA, типу такого крутої плати для дата-центру або цієї налагоджувальної плати для навчання .

Поки ми не налаштуємо FPGA, усередині мікросхеми просто немає логіки для обробки даних з інтерфейсів, і тому працювати, звичайно ж, нічого не буде. Але в результаті проектування буде створено прошивку, яка після завантаження в FPGA створить необхідну цифрову схему. Таким чином можна створити контролер 100G Ethernet, який отримуватиме та оброблятиме мережеві пакети.

Важлива особливість FPGA – можливість переналаштування. Допустимо зараз нам потрібен контролер 100G Ethernet, а через тиждень ця ж плата може використовуватись для реалізації незалежних чотирьох інтерфейсів 25G Ethernet.

На ринку працюють два лідери у виробника FPGA-чіпів: усіма відомі Intel та Xilinx. Вони контролюють 58 та 42% ринку. Перший свій чіп FPGA засновники Xilinx винайшли далекого 1985 року. Intel прийшла на ринок зовсім недавно – у 2015 році, поглинувши компанію Altera, яка була заснована в той же час, що й Xilinx. Технології Altera і Xilinx багато в чому схожі, як середовища розробки. Найчастіше я працював із продуктами компанії Xilinx, тому не дивуйтеся її постійної згадки у статті.

FPGA широко поширені у різних сферах: споживчій електроніці, обладнанні телекому, платах-прискорювачах для застосування у дата-центрах, робототехніці, прототипуванні мікросхем ASIC. Пару прикладів я розберу трохи нижче.

Також розглянемо технологію, що забезпечує апаратну реконфігурацію, познайомимося з процесом проектування та розберемо простий приклад реалізації апаратного лічильника мовою Verilog. Якщо у вас є будь-яка налагоджувальна плата FPGA, ви зможете повторити це самостійно. Якщо плати немає, то все одно можете познайомитися з Verilog, змоделювавши роботу схеми на власному комп'ютері.

Принцип роботи FPGA

Мікросхема FPGA - це та ж замовна мікросхема ASIC, що складається з таких транзисторів, з яких збираються тригери, регістри, мультиплексори та інші логічні елементи для звичайних схем. Змінити порядок з'єднання цих транзисторів, звісно, ​​не можна. Але архітектурно мікросхема побудована таким хитрим чином, що можна змінювати комутацію сигналів між більшими блоками: їх називають CLB - програмовані логічні блоки.

Можна також змінювати логічну функцію, яку виконує CLB. Досягається це завдяки тому, що вся мікросхема пронизана осередками конфігураційної пам'яті Static RAM. Кожен біт цієї пам'яті або управляє якимось ключем комутації сигналів, або є частиною таблиці істинності логічної функції, що її реалізує CLB.

Так як конфігураційна пам'ять побудована за технологією Static RAM, то, по-перше, при включенні живлення FPGA мікросхему обов'язково треба налаштувати, а по-друге, мікросхему можна реконфігурувати практично нескінченну кількість разів.

Дуже спрощена 2D-структура мікросхеми без пам'яті конфігурації

Блоки CLB знаходяться в комутаційній матриці, яка визначає з'єднання входів і виходів блоків CLB.

Схема комутаційної матриці

На кожному перетині провідників знаходиться шість ключів, що перемикають, керованих своїми осередками конфігураційної пам'яті. Відкриваючи одні та закриваючи інші, можна забезпечити різну комутацію сигналів між CLB.

CLB

CLB дуже спрощено складається з блоку, що задає булеву функцію від кількох аргументів (вона називається таблицею відповідності - Look Up Table, LUT) та тригера (flip-flop, FF). У сучасних FPGA LUT має шість входів, але на малюнку для простоти показано три. Вихід LUT подається на вихід CLB або асинхронно (безпосередньо), або синхронно (через тригер FF, що працює на системній тактовій частоті).

Принцип реалізації LUT

Цікаво подивитись на принцип реалізації LUT. Нехай у нас є деяка функція булева y = (a & b) | ~ c. Її схемотехнічне уявлення та таблиця істинності показані на малюнку. У функції три аргументи, тому вона набуває 2^3 = 8 значень. Кожна з них відповідає своїй комбінації вхідних сигналів. Ці значення обчислюються програмою розробки прошивки ПЛИС і записуються в спеціальні комірки конфігураційної пам'яті.

Значення кожної з осередків подається на вхід вихідного мультиплексора LUT, а вхідні аргументи булевої функції використовуються для вибору того чи іншого значення функції. CLB – найважливіший апаратний ресурс FPGA. Кількість CLB у сучасних кристалах FPGA може бути різною і залежить від типу та ємності кристала. Xilinx має кристали з кількістю CLB в межах приблизно від чотирьох тисяч до трьох мільйонів.

Крім CLB, усередині FPGA є ще низка важливих апаратних ресурсів. Наприклад, апаратні блоки множення із накопиченням або блоки DSP. Кожен з них може виконувати операції множення та складання 18-бітних чисел кожен такт. У топових кристалах кількість блоків DSP може перевищувати 6000.

Інший ресурс – це блоки внутрішньої пам'яті(Block RAM, BRAM). Кожен блок може зберігати 2 Кбайт. Повна ємність такої пам'яті залежно від кристала може сягати від 20 Кбайт до 20 Мбайт. Як і CLB, BRAM та DSP-блоки пов'язані комутаційною матрицею і пронизують весь кристал. Зв'язуючи блоки CLB, DSP та BRAM, можна отримувати дуже ефективні схеми обробки даних.

Переваги FPGA

Перший чіп FPGA, створений Xilinx 1985 року, містив лише 64 CLB. На той час інтеграція транзисторів на мікросхемах була набагато нижчою, ніж зараз, і в цифрових пристроях часто використовувалися мікросхеми «розсипної логіки». Були окремо мікросхеми регістрів, лічильників, мультиплексорів, помножувачів. Під конкретний пристрійстворювалася своя друкована плата, де встановлювалися ці мікросхеми низької інтеграції.

Використання FPGA дозволило відмовитись від такого підходу. Навіть FPGA на 64 CLB значно заощаджує місце на друкованій платі, а доступність реконфігурації додала можливість оновлювати функціональність пристроїв після виготовлення під час експлуатації, як кажуть «in the field» (звідси і назва - field-programmable gate array).

За рахунок того, що всередині FPGA можна створити будь-яку цифрову апаратну схему (головне, щоб вистачило ресурсів), одне з важливих застосувань ПЛІС - це прототипування мікросхем ASIC.

Розробка ASIC дуже складна і затратна, ціна помилки дуже висока, і питання тестування логіки є критичним. Тому одним із етапів розробки ще до початку роботи над фізичною топологією схеми стало її прототипування на одному або кількох кристалах FPGA.

Для розробки ASIC випускають спеціальні плати, що містять багато FPGA, з'єднаних між собою. Прототип мікросхеми працює на значно менших частотах (можливо, десятки мегагерц), але дозволяє заощадити на виявленні проблем та багів.

Однак, на мій погляд, існують цікавіші застосування ПЛІС. Гнучка структура FPGA дозволяє реалізовувати апаратні схеми для високошвидкісної та паралельної обробки даних із можливістю змінити алгоритм.


Порівняння апаратних платформ

Давайте подумаємо, чим принципово відрізняються CPU, GPU, FPGA та ASIC. CPU універсальний, на ньому можна запустити будь-який алгоритм, він найбільш гнучкий, і використовувати його найлегше завдяки величезній кількості мов програмування та середовищ розробки.

При цьому через універсальність та послідовне виконання інструкцій CPU знижується продуктивність і підвищується енергоспоживання схеми. Відбувається це тому, що на кожну корисну арифметичну операцію CPU здійснює багато додаткових операцій, пов'язаних з читанням інструкцій, переміщенням даних між регістрами та кешем, та інші рухи тіла.

З іншого боку знаходиться ASIC. На цій платформі необхідний алгоритм реалізується апаратно за рахунок прямого з'єднання транзисторів, всі операції пов'язані тільки з виконанням алгоритму і немає можливості змінити його. Звідси максимальна продуктивність та найменше енергоспоживання платформи. А ось перепрограмувати ASIC неможливо.

Праворуч від CPU знаходиться GPU. Спочатку ці мікросхеми були розроблені для обробки графіки, але зараз використовуються і для майнінгу обчислень загального призначення. Вони складаються з тисяч невеликих обчислювальних ядер та виконують паралельні операції над масивом даних.

Якщо алгоритм можна розпаралелити, то на GPU вдасться досягти значного прискорення порівняно з CPU. З іншого боку, послідовні алгоритми реалізовуватимуться гірше, тому платформа виявляється менш гнучкою, ніж CPU. Також для розробки під GPU треба мати спеціальні навички, знати OpenCL чи CUDA.

Зрештою, FPGA. Ця платформа поєднує ефективність ASIC із можливістю змінювати програму. ПЛІС не універсальні, але існує клас алгоритмів та завдань, які на них показуватимуть кращу продуктивність, ніж на CPU та навіть GPU. Складність розробки під FPGA є вищою, проте нові засоби розробки роблять цей розрив меншим.

Вирішальна перевага FPGA - це здатність обробляти дані в темпі їх надходження з мінімальною затримкою реакції. Як приклад можете уявити розумний мережевий маршрутизатор з великою кількістюпортів: під час надходження пакета Ethernet однією з його портів необхідно перевірити безліч правил, як вибрати вихідний порт. Можливо, потрібно змінити деякі поля пакета або додати нові.

Використання FPGA дозволяє вирішувати це завдання миттєво: байти пакета ще тільки почали надходити в мікросхему з мережного інтерфейсу, а його заголовок вже аналізується. Використання процесорів тут може значно уповільнити швидкість обробки мережного трафіку. Зрозуміло, що для маршрутизаторів можна зробити рекомендовану мікросхему ASIC, яка працюватиме найбільш ефективно, але що, якщо правила обробки пакетів повинні змінюватися? Досягти необхідної гнучкості у поєднанні з високою продуктивністю допоможе лише FPGA.

Таким чином, FPGA використовуються там, де потрібна висока продуктивність обробки даних, найменший час реакції та низьке енергоспоживання.

FPGA in the cloud

У хмарних обчисленнях FPGA застосовуються для швидкого рахунку, прискорення мережного трафіку та здійснення доступу до масивів даних. Сюди можна віднести використання FPGA для високочастотної торгівлі на біржах. У сервери вставляються плати FPGA з PCI Expressта оптичним мережевим інтерфейсом виробництва Intel (Altera) або Xilinx.

На FPGA відмінно лягають криптографічні алгоритми, порівняння послідовностей ДНК та наукові завдання на кшталт молекулярної динаміки. У Microsoft давно використовують FPGA для прискорення пошукового сервісу Bing, а також для організації Software Defined Networking усередині хмари Azure.

Бум машинного навчання теж не оминув стороною FPGA. Компанії Xilinx та Intel пропонують кошти на основі FPGA для роботи з глибокими нейромережами. Вони дозволяють отримувати прошивки FPGA, які реалізують ту чи іншу мережу безпосередньо з фреймворків на кшталт Caffe та TensorFlow.

Причому це все можна спробувати, не виходячи з дому та використовуючи хмарні сервіси. Наприклад, в Amazon можна орендувати віртуальну машинуз доступом до плати FPGA та будь-яких засобів розробки, у тому числі й machine learning.

FPGA on the edge

Що ще цікаве роблять на FPGA? Та чого тільки не роблять! Робототехніка, безпілотні автомобілі, дрони, наукові прилади, медична техніка, користувальницькі мобільні пристрої, розумні камери відеоспостереження і так далі.

Традиційно FPGA застосовувалися для цифрової обробки одновимірних сигналів (і конкурували з процесорами DSP) у пристроях радіолокації, приймачів радіосигналів. Зі зростанням інтеграції мікросхем та збільшенням продуктивності платформи FPGA стали все більше застосовуватися для високопродуктивних обчислень, наприклад, для обробки двовимірних сигналів «на краю хмари» (edge ​​computing).

Цю концепцію найлегше зрозуміти на прикладі відеокамери для аналізу автомобільного трафіку з функцією розпізнавання номерів машин. Можна взяти камеру з можливістю передачі відео через Ethernet та обробляти потік на віддаленому сервері. Зі зростанням числа камер зростатиме і навантаження на мережу, що може призвести до збоїв системи.

Натомість краще реалізувати розпізнавання номерів на обчислювачі, встановленому прямо в корпус відеокамери, і передавати у хмару номери машин у форматі тексту. Для цього навіть можна взяти порівняно недорогі FPGA з низьким енергоспоживанням, щоб обійтись акумулятором. При цьому залишається можливість змінювати логіку роботи FPGA, наприклад, при зміні стандарту автомобільних номерів.

Щодо робототехніки та дронів, то в цій сфері якраз особливо важливо виконувати дві умови – висока продуктивність та низьке енергоспоживання. Платформа FPGA підходить якнайкраще і може використовуватися, зокрема, для створення польотних контролерів для безпілотників. Вже зараз роблять БПЛА, які можуть ухвалювати рішення на льоту.

Розробка проекту на FPGA

Існують різні рівні проектування: низький, блоковий та високий. Низький рівень передбачає використання мов типу Verilog або VHDL, якими ви керуєте розробкою лише на рівні регістрових передач (RTL - register transfer level). У цьому випадку ви формуєте регістри, як у процесорі, та визначаєте логічні функції, що змінюють дані між ними.

Схеми FPGA завжди працюють на певних тактових частотах (зазвичай 100-300 МГц), і на рівні RTL ви визначаєте поведінку схеми з точністю до такту системної частоти. Ця кропітка робота призводить до створення максимально ефективних схем з погляду продуктивності, споживання ресурсів кристала FPGA та енергоспоживання. Але тут потрібні серйозні скіли у схемотехніці, та й з ними процес нешвидкий.

На блочному рівні ви займаєтеся переважно з'єднанням вже готових великих блоків, які виконують певні функції, для отримання потрібної вам функціональності системи на кристалі (system-on-chip).

На високому рівні проектування ви вже не контролюватимете дані на кожному такті, натомість сконцентруєшся на алгоритмі. Існують компілятори або транслятори з мов C і C++ рівень RTL, наприклад Vivado HLS. Він досить розумний та дозволяє транслювати на апаратний рівень широкий клас алгоритмів.

Головна перевага такого підходу перед мовами RTL - прискорення розробки та особливо тестування алгоритму: код на C++ можна запустити та верифікувати на комп'ютері, і це буде набагато швидше, ніж тестувати зміни алгоритму на рівні RTL. За зручність, звичайно, доведеться заплатити – схема може вийти не такою швидкою і займе більше апаратних ресурсів.

Часто ми готові платити цю ціну: якщо грамотно використовувати транслятор, ефективність не сильно постраждає, а ресурсів у сучасних FPGA достатньо. У світі з критичним показником time to market це виявляється виправданим.

Часто в одному дизайні потрібно поєднати усі три стилі розробки. Припустимо, нам потрібно зробити пристрій, який ми могли б вбудувати в робота та наділити його здатністю розпізнавати об'єкти у відеопотоці – наприклад, дорожні знаки. Візьмемо мікросхему відеосенсора та підключимо її безпосередньо до FPGA. Для налагодження можемо використовувати монітор HDMI, також підключений до FPGA.

Кадри з камери будуть передаватися в FPGA за інтерфейсом, який наперед визначений виробником сенсора (USB тут не котить), оброблятися і виводитися на монітор. Для обробки кадрів знадобиться фреймбуфер, який зазвичай знаходиться у зовнішній пам'яті DDR, встановленій на друкованій платі поряд із мікросхемою FPGA.


Типова блок-схема проекту FPGA

Якщо виробник відеосенсора не надає Interface IP для нашої мікросхеми FPGA, то нам доведеться писати його самостійно мовою RTL, рахуючи такти, біти та байти відповідно до специфікації протоколу передачі даних. Блоки Preprocess, DDR Controller та HDMI IP ми, швидше за все, візьмемо готові та просто з'єднаємо їх інтерфейси. А блок HLS, який виконує пошук і обробку даних, ми можемо написати на C++ і транслювати за допомогою Vivado HLS.

Швидше за все, нам ще буде потрібна якась готова бібліотека детектора та класифікатора дорожніх знаків, адаптована для використання у FPGA. У цьому прикладі я, звичайно, наводжу сильно спрощену блок-схему дизайну, але логіку роботи вона відображає коректно.

Розглянемо шлях проектування від написання коду RTL до отримання конфігураційного файлу для завантаження FPGA.

Шлях проектування

Отже, ви пишете код RTL, який реалізує необхідну вам схему. Перш ніж перевіряти на реальному залозі, треба переконатися, що він вірний і коректно вирішує необхідне завдання. Для цього використовується RTL-моделювання у симуляторі на комп'ютері.

Ви берете свою схему, представлену поки що тільки в коді RTL, і поміщаєте її на віртуальний стенд, де подаєте послідовності цифрових сигналів на входи схеми, реєструєте вихідні діаграми, залежно від часу вихідних сигналів і порівнюєте очікувані результати. Зазвичай ви знаходите помилки та повертаєтеся до написання RTL.

Далі логічно верифікований код подається на вхід до програми-синтезатора. Вона перетворює текстовий опис схеми на пов'язаний список цифрових елементів з бібліотеки, доступної для даного кристала FPGA. У цьому списку будуть відображені такі елементи, як LUT, тригери та зв'язки між ними. На цій стадії елементи поки що ніяк не прив'язані до конкретних апаратних ресурсів. Щоб це зробити, потрібно накласти на схему обмеження (Constraints) – зокрема, вказати, з якими фізичними контактами введення-виведення мікросхеми FPGA пов'язані логічні входи та виходи вашої схеми.

У цих обмеженнях також потрібно вказати, яких тактових частотах має працювати схема. Вихід синтезатора та файл обмежень віддаються процесору Implementation, який, крім іншого, займається розміщенням та трасуванням (Place and Route).

Процес Place кожний доки знеособлений елемент з netlist прив'язує до конкретного елементу всередині мікросхеми FPGA. Далі починає роботу процес Route, який намагається знайти оптимальне з'єднання цих елементів для відповідної конфігурації комутаційної матриці ПЛІС.

Place та Route діють, виходячи з обмежень, накладених нами на схему: контактами вводу-виводу та тактовою частотою. Період тактової частоти дуже сильно впливає на Implementation: він не повинен бути меншим, ніж тимчасова затримка на логічних елементах у критичному ланцюгу між двома послідовними тригерами.

Часто відразу задовольнити цю вимогу не вдається, і тоді треба повернутися на початковий етап і змінити код RTL: наприклад, спробувати скоротити логіку в критичному ланцюзі. Після успішного завершення Implementation ми знаємо, які елементи де знаходяться і як вони пов'язані.

Тільки після цього розпочинається процес створення бінарного файлу прошивки FPGA. Залишається його завантажити в реальне залізо і перевірити, чи воно працює так, як очікувалося. Якщо цьому етапі виникають проблеми, отже, моделювання було неповним і цьому етапі були усунуті всі помилки і недоліки.

Можна повернутися на стадію симуляції та змоделювати позаштатну ситуацію, а якщо і це не спрацює, на крайній випадок передбачений механізм налагодження безпосередньо в залізі, що працює. Ви можете вказати, які сигнали хочете відстежувати в часі, і середовище розробки згенерує додаткову схему логічного аналізатора, яка розміщується на кристалі поряд з вашою розроблюваною схемою, підключається до сигналів, що вас цікавлять, і зберігає їх значення в часі. Збережені часові діаграми потрібних сигналів можна вивантажити на комп'ютер та проаналізувати.

РЕАЛІЗАЦІЯ ПРОЕКТУ НА ПЛІС

Після відпрацювання логічної схеми з використанням функціонального моделювання потрібно помістити її на кристал. Потім виконати моделювання схеми з урахуванням фактичних затримок елементів отриманих після розміщення схеми на кристалі. За потреби відкоригувати отримані рішення. Після чого здійснюється завантаження схеми в ПЛІС та відпрацювання її на стенді.

Мал. 82.Етапи проектування цифрового пристрою на ПЛІС

Основні етапи проектування на ПЛІС (з лекцій):

    Розробляється схема пристрою та вводиться в XILINX.

    Виконується IMPLEMENTATION (трансляція, формування схеми шляхом вилучення бібліотечних елементів, оптимізація, розміщення на кристалі).

    Програмування.

  1. Асоціативна пам'ять. Організація, спосіб вибірки, на відміну від адресного зу.

Асоціативний доступреалізує пошук інформації за деякою ознакою, а не за її розташуванням у пам'яті (адресою або місцем у черзі). У найбільш повній версії всі слова, що зберігаються в пам'яті, одночасно перевіряються на відповідність ознакі, наприклад, на збіг певних полів слів (тегів - від англійського слова tag) з ознакою, що задається вхідним словом (теговим адресою). На вихід видаються слова, які відповідають ознакою. Дисципліна видачі слів, якщо тегу задовольняють кілька слів, а також дисципліна запису нових даних можуть бути різними. Основна сфера застосування асоціативної пам'яті в сучасних ЕОМ - кешування даних.

У асоціативних пристроях, що запам'ятовують, пошук інформації проводиться за асоціативною ознакою, записаною в кожну комірку пам'яті.

У регістр маски записується слово, що дозволяє запит за всіма або лише деякими розрядами асоціативної ознаки, застосування маски дозволяє скоротити або розширити область пошуку.

Пошук інформації проводиться паралельно по всіх осередках шляхом порівняння запиту з асоціативною ознакою кожного осередку.

Результат пошуку формує спеціальна комбінаційна схема, що виробляє сигнали, що сповіщають про відсутність слів, що задовольняють умовам пошуку, про наявність лише одного слова, про наявність кількох слів, що мають таку асоціативну ознаку.

Після формування та обробки оповещающих сигналів схемою управління проводиться зчитування необхідної інформації. При запису знаходиться вільна комірка за значенням розряду зайнятості, в першу знайдену вільну комірку записується інформація.

Перевірка розряду зайнятості проводиться у разі встановлення n-го розряду (розряду зайнятості) маски. При використанні додаткових комбінаційних схем в асоціативній пам'яті можна виконувати різні логічні операції, визначаючи максимальне чи мінімальне число, кількість слів, що мають однакову асоціативну ознаку і т.д. Осередки пам'яті асоціативного пристрою повинні бути елементами статичної пам'яті, в асоціативної пам'яті звернення проводиться до всіх осередків одночасно і не повинно перериватися циклами регенерації. Асоціативна пам'ять найбільш швидкодіюча, але дуже дорога, тому що вимагає введення додатково схеми порівняння, що дозволяє здійснити пошук для кожного осередку пам'яті. Тому така пам'ять зазвичай не використовується у чистому вигляді, а швидкодіючі пристрої пам'яті типу Кеш зазвичай виконуються як частково асоціативні.

Уповністю асоціативною кеш-пам'яті (FACM, Fully Associated Cache Memory), кожен осередок зберігає дані, а полі "тег" - повний фізичний адресу інформації, копія якої записана. При будь-яких обмінах фізична адреса інформації, що запитується, порівнюється з полями "тег" всіх осередків і при збігу їх у будь-якому осередку встановлюється сигнал Hit.

При читанні і значенні сигналу Hit = 1 дані видаються на шину даних, якщо ж збігів немає (Hit = 0), то при читанні з основної пам'яті дані разом з адресою поміщаються у вільну або вічко кеш-пам'яті, що давно не використовується.

При записі дані разом з адресою спочатку зазвичай розміщуються в кеш-пам'яті (у виявлену комірку при Hit = 1 і вільну при Hit = 0). Копіювання даних в основну пам'ять виконується під керуванням спеціального контролера, коли немає звернень до пам'яті.

Пам'ять типу FACM є дуже складним пристроєм і використовується лише за малих ємностях, головним чином спеціальних додатках. У той же час цей вид кеш-пам'яті забезпечує найбільшу функціональну гнучкість і безконфліктність адрес, тому що будь-яку одиницю інформації можна завантажити в будь-яку комірку кеш-пам'яті.

З лекцій:

Асоціативні пристрої, що запам'ятовують

Принциповою відмінністю є те, що система вибірки інформації з них здійснюється не за унікальною адресою знаходження інформації, а за якоюсь ознакою, яка є, по суті, частиною інформації, що шукається.

Інформація

Тег - відмітна ознака, за збігом з яким дістається шматок інформації.

Спрощена схема асоціативного ЗП:

Зона зберігання – адресне ЗУ з пронумерованими осередками, зберігає у собі інформацію та теги.

Для звернення до асоціативної пам'яті регістр апиту міститься зразок шуканого тега. Схема порівняння порівнює запит. Встановлюється збіг на регістрі збігів, де відбувся збіг тега з пам'яті із зразком. Можливі реакції (немає збігів; є хоча б один збіг - у цьому випадку знайдена комірка міститься в регістр даних; множинний збіг - КС повинна прийняти рішення, яку з осередків дістати для обробки).

Застосування: БД, бази знань, ПК як кеш.

ВИКОРИСТАННЯ ПЛІС У СУЧАСНИХ ПРИСТРОЯХ

Тупиков Павло Андрійович

студент 5 курсу, кафедра АРТ ОмДТУ, РФ, м. Омськ

На сьогоднішній день програмовані логічні інтегральні схеми (ПЛІС) знаходять все більше застосування в різних сучасних пристроях, це пов'язано з тим, що ПЛІС мають значні переваги, порівняно із звичайними цифровими мікросхемами. До цих переваг можна віднести:

· Поліпшуються часові характеристики виробу.

· Зменшується ціна виробу.

· Зменшуються габарити виробу.

· Збільшується надійність виробу (зменшується кількість дискретних мікросхем)

· Підвищується гнучкість виробу (ПЛІС завжди можна перепрограмувати)

Архітектура ПЛІС має складну структуру (Рис. 1)

Малюнок 1. Внутрішня структура ПЛІС

Як видно з малюнка 1 основна частина ПЛІС складається з програмованих логічних блоків і програмованих внутрішніх зв'язків.

Сам процес програмування (прошивки) ПЛІС полягає у формуванні потрібних зв'язків між входами та виходами пристрою.

На сьогоднішній день у світі є два світові лідери у виробництві ПЛІС. Це американські фірми Xilinx та Altera.

Кожна фірма пропонує свій САПР для роботи з ПЛІС. Компанія Xilinx пропонує Xilinx Software Development Kit (SDK). Фірма Altera пропонує Max+Plus II і Quartus II, а також систему моделювання ModelSim.

Для створення програм прошивки зазвичай використовуються мови опису роботи апаратури, найбільш поширені на сьогоднішній день поширені такі мови:

· Verilog HDL.

Мова VHDL є найбільш складною для навчання, але при цьому має найбільшими можливостямина функціональних та поведінкових рівнях абстракції, проте має менші можливості на структурному рівні абстракції порівняно з Verilog HDL, для розширення можливостей мови VHDL було розроблено бібліотеку VITAL (Мал. 2).


Рисунок 2. Рівні абстракції Verilog і VHDL

Прикладом роботи мови Verilog HDL є програма, реалізована на ПЛІС CYCLONE III EP3C5E1444C8N стенду Mini-DiLab, загальний вигляд якого представлений на рис. 3.


Рисунок 3. Загальний вид плати Mini - DiLab

Дана програма реалізує послідовне перемикання світлодіодів led0-led7, з вибором збільшення руху «вогника» за допомогою кнопок pba і pbb, а також керуванням швидкістю перемикання за допомогою перемикачів sw0, sw1.

//Текст програми

module proect( output led, input clk_25mhz, input pba, input pbb,

input sw);

// Призначення внутрішніх з'єднань проекту

wire s1;

wire s2;

wire s3;

// Виклик інших файлів (підпрограм), що підключаються до проекту

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

Counter counter_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

DC3_8 DC3_8_1 (.out(led), .in(s3));

endmodule// кінець програми

Підпрограма tr

module tr (out, set, res); // Створення програми

// Призначення входів/висновків

outputreg out;

input set;

input res;

// Ініціалізація

initial

begin

Out<= 1"d0;

// Основний код програми

always @(negedge set or negedge res)

begin

if(~(set))

Out<= 1"d1;

else

Out<= 1"d0;

endmodule //Кінець програми

Підпрограма counter

module counter (con, q, clk, up); // Початок програми

outputreg con;

output q = con;

input up, clk;

// Основний код програми

always @(posedge clk)

begin

if(clk)

if(up)

Con<= con - 1"d1;

else

Con<= con + 1"d1;

endmodule//Кінець програми

Підпрограма mx (мультиплексор)

module mx ( output reg a, input in, input load);

// Основний код програми

always @*

begin

case(load)

2"b00: a = in;

2"b01: a = in;

2"b10: a = in;

2"b11: a = in;

endcase

endmodule // Кінець програми

Підпрограма dc3_8 (мультиплексор)

module dc3_8 (out, in); // Початок програми

// Призначення входів/виходів

output reg out;

input wire in;

// Основний код програми

always @*

begin

case(in)

3"d0: out = 8"b11111110;

3"d1: out = 8"b11111101;

3"d2: out = 8"b11111011;

3"d3: out = 8"b11110111;

3"d4: out = 8"b11101111;

3"d5: out = 8"b11011111;

3"d6: out = 8"b10111111;

3"d7: out = 8"b01111111;

endcase

endmodule // Кінець програми

Програма була реалізована у САПР Quartus II.

Після компіляції програми компілятор не видав помилки та зауваження у програмі, пов'язані з аналізом та синтаксисом програми (рис. 4).


Малюнок 4. Вікно повідомлень проекту

Зауваження, зроблені компілятором, говорять про відсутність ліцензії на Quartus II (була використана безкоштовна версія програми для навчання) та відсутність файлів, необхідних для моделювання проекту.

Структура даного проекту представлена ​​на рис. 5.


Рисунок 5. Реалізація проекту ( RTL структура)

Як показано на рис. 6 у цій програмі використовується лише незначна частина можливостей даної ПЛІС.

Малюнок 6. Частина ПЛІС, яка бере участь у роботі проекту

Висновки:Програмовані логічні інтегральні схеми можуть знаходити застосування в багатьох пристроях. Для навчання роботи з ними слід вводити в освітню програму спеціальностей, пов'язаних із проектуванням та конструюванням радіоелектронної апаратури знайомство з мовами опису апаратури (Verilog HDL та VHDL).

Список літератури:

1. Грушевицький Р.І. Проектування систем на мікросхемах програмної логіки/Р.І. Грушевицький, A.X. Мурсаєв, Є.П. Похмуре. СПб.: БХВ Петербург, 2002. – 608 с.

2.Коломов Д.А. Системи автоматизованого проектування фірми Altra MAX+plus II та Quartus II. Короткий опис та самовчитель/Д.А. Коломов, Р.А. Мяльк, А.А. Зобенко, О.С. Пилипів. М: ІП РадіоСофт, 2002. - 126 с.

3.Максфілд К. Проектування на ПЛІС. Курс молодого бійця. / К. Максфілд. М.: Видавничий дім «Додека-XXI», 2007. – 408 с. (Переклад з англійської).

Поки були свята, зробив невеликий проект на Verilog, який давно хотів спробувати.

Суть проекту в наступному: до FPGA підключено швидкодіючу (відносно, звичайно) АЦП з двома каналами та паралельним інтерфейсом (14-16 біт на канал). FPGA читає дані з АЦП і складає буфер (свою внутрішню пам'ять BRAM). Коли буфер заповнено, читання зупиняється, і зовнішній пристрій (мікроконтролер) може рахувати дані з буфера за інтерфейсом SPI. Також можна SPI конфігурувати деякі параметри (про це буде написано в наступному пості).

Тест проекту (картинка клікабельна).

Результат синтезу для Cyclone IVE

Результат я синтезував у Quartus II, для FPGA сімейства Cyclone IVE (EP4CE6E22A7). Це одна з найпростіших і недорогих FPGA у корпусі QFP144 на 6272 логічних елементах. Мікросхема має пам'ять об'ємом 30K*9 біт. Користувальницьких пінів - 92.

мікросхема EP4CE6E22A7
логічних елементів – 301 (5%)
пінів - 41 (45%)
пам'ять - 65 536 біт (24%)
частота для найгіршого випадку (125 С) – 151 МГц.

Пам'ять 8 Кб, це буфер, куди відбувається запис даних. При двох каналах по 16 біт виходить 32 біти на відлік, і 2048 відліків. Я вирішив, що цього досить, хоча буфер можна розширити хоч на весь обсяг.

Частота цілком влаштовує, я розраховував, що частота тактування 50 МГц, і АЦП на 25 МГц. Тобто виходить триразовий запас за частотою.

Кількість логічних елементів зовсім трохи для такої FPGA, тобто. можна за бажання багато чого ще туди приробити, тим більше, що і пінів залишається цілих 51.

Є новіша родина Cyclone 10.

Результат синтезу для Cyclone 10

Вибираємо чіп 10CL006YE144C8G. Він має стільки ж логічних елементів (6272), що і варіант Cyclone 4, і стільки ж пам'яті (30К х 9). Корпус такий же, QFP144, користувальницьких пінів навіть менший - 89.

мікросхема 10CL006YE144C8G
логічних елементів – 289 (5%)
пінів - 41 (46%)
пам'ять - 65 536 біт (24%)
частота для найгіршого випадку (85 С) – 145,5 МГц.

Цікаво те, що проект став компактнішим за логічними елементами. Тобто за тієї ж ємності логіки в Cyclone 10 влізе складніший проект. Решта приблизно на тому ж рівні.

Виникає резонне питання: чи можна заощадити, поставивши іншу FPGA чи CPLD?

Спробуємо FPGA MAX10.

Результат синтезу для MAX 10

Тут читач (якщо він у темі) може вигукнути: ні, все негаразд! Сімейство MAX - це CPLD, а не FPGA, а плутати ці поняття - кричущий непрофесіоналізм!

Однак стараннями маркетологів Intel (все ж таки в курсі, що мова про чіпи Intel?) сімейство MAX10 перетворилося на FPGA, хоча і має внутрішню незалежну пам'ять конфігурації, як будь-яка CPLD.

Отже, вибираємо чіп, наприклад, 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), корпус QFP144.

мікросхеми 10M02SCE144A7G.
логічних елементів – 298 (13%)
пінів - 41 (41%)
пам'ять - 65 536 біт (59%)
частота для найгіршого випадку (125 С) – 153 МГц.

Ми бачимо, що абсолютні показники залишилися практично тими самими, збільшився лише ступінь заповнення кристала, що й зрозуміло - 2304LE проти 6272 LE.

Чи можна використати MAX II?

Тепер питання: а чи можна використовувати якусь дешеву CPLD, типу MAX II? Тут все складніше. Вони немає пам'яті BRAM, тобто. потрібна буде ще й зовнішня швидка SRAM.

Для підключення SRAM потрібна буде додаткова логіка, звісно. Якщо ми використовуємо пам'ять об'ємом 4K x 16, то нам буде потрібно додатково 16 пінів для даних, 12 для адреси та 3 для керування (/cs, /we, /oe), всього 31 додатковий пін.

Логіка також збільшиться у розмірах. На скільки точно, важко сказати, але в CPLD на 240 LE вона не влізе спочатку, а в 570 LE може бути, і влізе.

Вибираємо CPLD EPM570 у корпусі QFP100. Нам потрібно лише 72 піна, корпус має 76 пінів для GPIO, тобто. має вистачити на все, але для розширення вже зовсім мало місця.

Плюси такого рішення: можливо, нижча ціна (навіть з урахуванням додаткової мікросхеми SRAM), мінуси: велика складність схеми та площа плати.

Ціна запитання

Ось що я знайшов за допомогою efind. Мікросхеми трохи інші, але цифра і буква наприкінці - це індекс швидкодії та температурний діапазон (комерційний). Так як у нас триразовий запас за частотою, ці цифри нам абсолютно не важливі.

EP4CE6E22C8N - 456,55 Р (Промелектроніка, Екб, розн.)
10CL006YE144C - 754,71 (П'ятий елемент, Спб, опт)
10M02SCE144C8G - 456 Р (Елітан, Екб, опт)
EPM570F100C5N - 368 Р (Хайтек, Спб) + пам'ять (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92,51 Р (Промелектроніка, Екб, розн.)

Звичайно, можна знайти і дешевше, це просто роздрібні ціни в магазині, але співвідношення буде приблизно тим самим.

Видно, що варіант з CPLD не виграє за ціною, при цьому маючи безліч недоліків. Інші варіанти приблизно рівноцінні, хіба що Cyclone 10 поки що трохи дорожче і мало у кого є. Однак це зовсім нова родина, поки всі дистриб'ютори його не привезли.

Особисто мені найбільше подобається варіант на MAX 10. Він має одну перевагу: не потрібно завантажувати конфігурацію FPGA під час старту. У варіанті Cyclone 4 потрібно буде завантажувати конфігурацію FPGA, що можна зробити або за допомогою додаткової мікросхеми конфігураційної пам'яті, або за допомогою мікроконтролера. Існує ще третій варіант: прошити через JTAG і ніколи не знімати харчування з чіпа. Я чув, що хтось так робив, не знаю, жарт це чи ні, але я так робити точно не буду.

Втім, у варіанта з прошивкою Cyclone 4 через мікроконтролер є перевага: можливість оновлювати прошивку FPGA через інтерфейси користувача: USB, Ethernet, etc.

Можливий ще один нетривіальний варіант: взагалі не ставити мікроконтролер, а прошити в FPGA будь-який процесор, що вбудовується. Але це дуже хороший варіант, можливо, т.к. при цьому однозначно знадобиться зовнішнє ПЗУ та ОЗУ, а також, як мінімум, міст USB. Свідомо відмовлятися від цього варіанту не потрібно, звичайно, але він мені здається складнішим у реалізації, ніж з мікроконтролером.

Про те, які функції виконує ця прошивка, я напишу наступного посту.

У статті дано спробу визначити склад супровідної документації на розроблені цифрові модулі для програмованих логічних інтегральних мікросхем (ПЛІС). Цю супровідну документацію повинні надати розробники споживачеві/замовнику для успішного подальшого використання розробленого цифрового модуля у своїх проектах на етапі проектування цифрових пристроїв на ПЛІС.

Вступ

Отже, яку конструкторську документацію слід запитувати у розробника, якщо фірма чи підприємство-замовник чи інший розробник використовуватимуть надалі «чужий» розроблений пристрій у проектах? Ця стаття може послужити «шпаргалкою», щоб спочатку правильно видати технічне завдання на розробку цифрового пристрою для ПЛІС, а потім запитувати розробника конструкторську документацію для вже розробленого цифрового пристрою. Виходячи з попереднього досвіду роботи з конструкторською документацією, зазвичай підприємство чи фірма користуються такими стандартами та нормативними документами:

  • ГОСТ 2.102-68 ЕСКД. Види та комплектність конструкторських документів.
  • ГОСТ 15.101-98. Система розробки та постановки продукції на виробництво. Порядок виконання науково-дослідних робіт.
  • ДЕРЖСТАНДАРТ Р 15.201-20-00. Система розробки та постановки продукції на виробництво. Продукція виробничо-технічного призначення Порядок розробки та постановки продукції на виробництво.

Як правило, це були файл-прошивки та програма (опис цифрового пристрою на VHDL/Verilog або набір цифрових схем, розроблених у схемотехнічному редакторі з використанням бібліотечних елементів цифрової логіки, такі як тригери, регістри, лічильники, дешифратори тощо) CD або DVD та інструкція з програмування. І все.

Автор, наприклад, зіштовхнувся із наступною проблемою. Один із співробітників розробив складний багатомодульний цифровий пристрій. Усі модулі описував мовою VHDL, а циклограми роботи цих модулів та цифрового пристрою в цілому дивився на гарному та дорогому осцилографі. Про Test Bench файли та про можливість проведення моделювання він не знав чи не вмів їх писати, до речі, коментарі до проекту та до описів модулів також були відсутні. Ситуація може бути ще гіршою, якщо модулі будуть представлені цифровими схемами, розробленими в схемотехнічному редакторі з використанням бібліотечних елементів. Тут і укладено один із головних недоліків: крім самого розробника, навряд чи хтось інший розбиратиметься в цьому цифровому пристрої, особливо якщо проект багатомодульний, а опис кожного модуля складає більше 100 рядків або більше екрана монітора. А значить, за бажання іншого розробника впровадити в нову розробку або проект такий, вже розроблений цифровий пристрій для ПЛІС, йому необхідно витратити час на розробку цього цифрового пристрою.

Історія питання проектування для ПЛІС

В даний час ринок ПЛІС - один з тих, що найбільш динамічно розвиваються. ПЛІС застосовують у багатьох галузях техніки. На даний момент немає однозначної, що задовольняє всіх розробників апаратури методології отримання конфігурації ПЛІС за функціональною моделлю пристрою на системному рівні. Найбільш популярний підхід щодо вирішення цієї проблеми – застосування технології ІР-ядер (Intellectual Property Cores). IP-ядра - це готові компоненти, що дозволяють легко вмикати їх у власний проект для створення більш складної системи. Цей підхід має один істотний недолік - прихильність ІР-ядер до елементного базису. Кожне IP-ядро оптимізовано під конкретну серію мікросхем конкретного виробника, що погіршує можливість перенесення вже створених пристроїв з одного елементного базису до іншого. Закритість архітектур комерційних САПР унеможливлює додавання власних функціональних моделей пристроїв на системному рівні для отримання на їх основі моделей пристрою на рівні регістрових передач (RTL). Розробка цифрового модуля здійснюється у вигляді цифрової схеми, намальованої в схемному редакторі за допомогою вбудованої в САПР виробника бібліотеки базових схемних елементів, таких як тригери, дешифратори, лічильники, суматори і т.д.

Інший популярний підхід, що дозволяє здійснити перехід від функціональної моделі на системному рівні до моделі пристрою на рівні реєстрових передач - застосування мов опису апаратури на системному рівні (system-level design languages, SLDLs). До таких мов відносяться SystemC, Handel-C, VHDL, Verilog, System Verilog. Основним плюсом є незалежність від апаратного базису, в якому буде реалізовано пристрій.

Таким чином, з одного боку, при застосуванні технології IP-ядер розробник апаратури отримує якісне рішення, але прив'язане жорстко до апаратного базису, в якому реалізується пристрій. З іншого боку, при застосуванні мов опису апаратури на системному рівні, реалізація пристрою є апаратно незалежною. З вищесказаного випливає, що в даний час актуальним є спільне використання для прискорення процесу проектування цифрових модулів мовою опису апаратури та ІР-ядер виробника (Xilinx, Altera, Actel та ін.) та сторонніх фірм-розробників. При використанні цифрових модулів сторонніх виробників іноді виникає нестача інформативності супровідної документації.

Надання інформації про розроблений цифровий модуль для ПЛІС

Залежно від методології отримання конфігурації ПЛІС за функціональною моделлю пристрою на системному рівні розробником можна виділити такі види цифрового модуля для ПЛІС:

  • Software - розроблений цифровий модуль, що передається споживачеві у вигляді опису мовою опису апаратури (VHDL, Verilog) або/і розроблений у схемотехнічному редакторі Schematic Editor для подальшого використання у програмах автоматизованого синтезу логічних схем та оптимізований за функціональними параметрами.
  • Firmware - розроблений сторонньою фірмою-розробником цифровий модуль, який називається IР-ядром, що передається споживачеві у вигляді логічної схеми (списку ланцюгів - netlist) у базисі бібліотеки логічних елементів виробника ПЛІС та оптимізований за функціональними та електричними параметрами.

На етапі розробки документації, виходячи з особистого досвіду, необхідно оформити на додаток до звичайних КД і ТУ, що виконуються відповідно до ГОСТ 15.101, ГОСТ 15.201, ГОСТ 2.102, ГОСТ 2.114, документацію на всі види моделей (системних, логічних, схемотехнічних) на етапах проектування цифрових пристроїв на ПЛІС.

Іншими словами, до комплекту конструкторської документації цифрового пристрою для ПЛІС, крім файлу-прошивки, інструкції з програмування та записаного проекту на CD/DVD, має входити також супровідна документація.

Таблиця.Список розділів супровідної документації

Назва розділу Вид
Software Firmware
Загальні відомості
Призначення та сфера застосування Про Р
Технічні характеристики Про Про
Опис сигналів скидання Про Про
Опис сигналів синхронізації Про Про
Опис інтерфейсів Про Р
Тимчасові діаграми Р Про
Опис регістрів управління Про Про
Структурна (функціональна) схема Р Р
Посібник з програмування Про Про
Модель або сімейство ПЛІС,
фірма виробник
Р Про
Подання цифрового модуля
для логічного проектування на ПЛІС
RTL-модель Про Ні
Логічна модель Ні Про
Проектні обмеження Про Про

Наведемо список розділів (таблиця), які мають входити до супровідної документації проекту цифрового модуля для ПЛІС. Для кожного розділу показано ознаки необхідності включення розділу до комплекту документів:

  • «О» - обов'язково поставляється розділ;
  • "Р" - рекомендований для постачання розділ.

Рекомендовані формати файлів передачі супровідної документації - MS Word, PDF (найкращий формат), HTML. Файли опису мовою опису апаратури (VHDL, Verilog) або/і розроблені у схемотехнічному редакторі Schematic Editor надаються у такому вигляді, як вимагає програмне забезпечення САПР для розробки. Винятком може бути додаткове надання у графічному форматі (JPEG, BMP) файлів цифрових схем, розроблених у схемотехнічному редакторі Schematic Editor.

Загальні відомості

У цьому розділі описуються загальні відомості про розроблений цифровий модуль у вигляді опису:

  • функціональної схеми та її складових блоків/частин;
  • сигналів скидання, синхронізації;
  • застосовуваних інтерфейсів;
  • регістрів управління;
  • тимчасової діаграми;
  • програмування.

Призначення та сфера застосування

Визначається призначення цифрового модуля, сфери його застосування.

Технічні характеристики

Наводиться опис його основних технічних характеристик, таких як продуктивність, споживана потужність для конкретного кристала ПЛІС, кількість займаних вентилів, тип застосовуваного кристала ПЛІС. Додатково вказується використовуване під час розробки цифрового модуля САПР виробника ПЛІС та програмне забезпечення, що використовується для моделювання та верифікування. Для всіх програм, що використовуються, вказується версія та встановлені оновлення. Наводиться графічне представлення цифрового модуля у вигляді «чорної скриньки» з позначенням зовнішніх входів/виходів і надається короткий опис їх призначення.

Опис сигналів скидання

Наводиться докладна інформація про сигнали скидання:

  • Перелік зовнішніх та внутрішніх сигналів скидання.
  • Часові параметри та часові діаграми сигналів скидання.
  • Схеми формування внутрішніх сигналів скидання, якщо входять до складу цифрового модуля.
  • Співвідношення з іншими сигналами (особливо із сигналами синхронізації).

Опис сигналів синхронізації

Наводиться докладна інформація про сигнали синхронізації:

  • опис зовнішніх сигналів синхронізації;
  • часові параметри сигналів синхронізації;
  • опис внутрішніх сигналів синхронізації та схеми їх формування;
  • тимчасові співвідношення між сигналами синхронізації із різних джерел;

Опис інтерфейсів

Наводяться особливості використання всіх інтерфейсів, що входять до складу розробленого цифрового модуля, бажано уніфікованого для взаємодії з іншими вузлами системи на кристалі. Додатково наводиться Інтернет-посилання на повний опис стандартного інтерфейсу або надається саме опис інтерфейсу. На даний момент як уніфіковані інтерфейси цифрових модулів прийняті інтерфейси до шини AMBA, PLB, Wishbone.

Тимчасові діаграми

Наводиться необхідна інформація для організації обміну даними через інтерфейси та інші входи/виходи цифрового модуля: графічне подання часових діаграм, опис протоколів передачі даних, вимоги до зовнішніх сигналів, що подаються на цифровий модуль (тривалість, періодичність тощо), та інша інформація .

Опис регістрів управління

Наводиться опис усіх регістрів керування цифрового модуля. Типовий опис регістру управління містить ім'я регістра, адресу регістра у внутрішньому адресному просторі, початкове значення після зняття сигналу скидання, тип доступу (читання/запис), опис внутрішніх полів.

Структурна (функціональна) схема

Наводиться зображення внутрішньої структури з'єднань основних внутрішніх вузлів/блоків цифрового модуля, а також короткий текстовий опис. Додатково надається опис основних внутрішніх блоків цифрового модуля. Призначення цього документа - у наданні споживачеві інформації, яка потрібна на розуміння принципів роботи цифрового модуля.

Кількість описуваних блоків та обсяг опису визначає розробник цифрового модуля. Переважно відповідність мінімальної кількості описуваних модулів кількості елементів структурної (функціональної) схеми цифрового модуля.

Типовий опис внутрішнього блоку містить:

  • призначення блоку;
  • структурну (функціональну) схему блоку (за потреби);
  • режими та алгоритми роботи;
  • часові діаграми роботи;
  • організацію керування блоком;
  • організацію зв'язку з іншими блоками;
  • будь-яку іншу інформацію.

Посібник з програмування

Надає всю необхідну інформацію про процес програмування за допомогою САПР виробника цифрового модуля в ПЛІС, необхідних інструментах для розробки та налагодження програмного забезпечення, програмних бібліотек.

Модель або сімейство ПЛІС, фірма-виробник

Для Firmware цифрового модуля вказується фірма-виробник ПЛІС, модель чи сімейство ПЛІС та її швидкісні характеристики. Для Software цифрового модуля наводиться інформація про кількість займаних ресурсів, вимоги до ПЛІС.

Подання цифрового модуля для логічного проектування

У статті було розглянуто труднощі у використанні «чужого» проекту на VHDL - брак відповідних вказівок щодо іменування та правил написання програм. Також було дано загальні вказівки за іменами, правилами «доброго тону» для написання програм та керівництва для синтезу. Ці питання якомога детальніше варто обговорювати з розробником, якщо надалі ви плануєте продовжити розробку або модернізацію своїми силами, перш ніж він розпочне розробку RTL-моделі цифрового модуля на ПЛІС. Особливо це стосується виду Software цифрового модуля на ПЛІС. У цій частині статті описуються загальні вимоги до проекту розробленого цифрового модуля на ПЛИС. Тут наведені питання, на які слід звернути увагу при складанні технічного завдання на розробку цифрового модуля на ПЛІС, особливо це стосується передачі результатів роботи.

RTL-модель

Цифровий модуль, описаний на синтезованому підмножині мови Verilog або VHDL або розроблений у схемотехнічному редакторі Schematic Editor, призначений для використання на етапі логічного синтезу ПЛІС. Поставляється для Software у вигляді зібраного проекту цифрового модуля САПР виробника ПЛІС. Для цифрового модуля Firmware RTL модель надається за окремою угодою.

Крім файлів RTL-моделі, передаються:

  • Інструкція щодо використання моделі.
  • Опис блоків пам'яті, що входять до складу моделі, що включає тип пам'яті, розмір, число пам'яті, ієрархічне ім'я блоку пам'яті.
  • Опис процесу створення готових ядер під час використання програм їх створення (наприклад, CoreGenerator для Xilinx ISE). За відсутності описів можуть виникнути обмеження для повторного проектування та застосування через залежність від технології та виробника.
  • У разі використання мікропроцесора від виробника (наприклад, від фірми Altera – процесор Nios; від фірми Xilinx – мікропроцесори Microblaze, PowerPC) потрібен опис процесу конфігурування ядра процесора та його периферії.
  • Набір тестів (Test Bench файлів) для проведення верифікації та моделювання цифрового модуля, написаних мовою Verilog або на VHDL, або на System Verilog.
  • Будь-яка інша додаткова інформація.

Логічна модель

Модель є списком ланцюгів, описаним за допомогою мов Verilog або VHDL у базисі бібліотеки виробника ПЛІС, і постачається для Firmware цифрового модуля.

Крім файлів логічної моделі передаються:

  • Інструкція щодо використання цієї моделі.
  • Набір тестів (Test Bench файлів) для проведення верифікації та моделювання цифрового модуля, написаних мовою Verilog або на VHDL, або на System Verilog.
  • Посібник з роботи з набором тестів для проведення моделювання та верифікації цифрового модуля.
  • Будь-яка інша додаткова інформація.

Проектні обмеження

Проектні обмеження надаються у вигляді файлу з описом набору обмежень, що накладаються на цифровий модуль під час його включення до логічної моделі системи на кристалі. Цей набір включає обмеження для сигналів синхронізації (clock constrains), тимчасові обмеження (timing constrains), обмеження на взаємодію цифрового модуля з іншими модулями та умови роботи цифрового модуля. Переважний формат опису проектних обмежень Synopsis Design Constraints (SDC) або формат для САПР виробника ПЛІС.

Зразковий список обмежень для сигналів синхронізації:

  • тимчасова діаграма (Clock waveform);
  • нестабільність тактової частоти (Jitter);
  • зміна фази тактової частоти;
  • тривалість часів перемикання (Transition times);
  • тимчасові діаграми похідних синхросигналів (Generated clock waveforms);
  • будь-яка інша додаткова інформація.

Набір обмежень для сигналів синхронізації є обов'язковим для Software і Firmware цифрових модулів.

Зразковий список тимчасових обмежень:

  • час появи сигналів на входах (Arrival times at inputs);
  • час появи сигналів на виходах (Required times at outputs);
  • багатотактові шляхи (Multi-cycle paths);
  • хибні шляхи (False paths);
  • тривалість часів перемикання сигналів даних (Data signal transition times);
  • будь-яка інша додаткова інформація.

Висновок

Наведений склад супровідної документації на розроблені цифрові модулі для ПЛІС надається за домовленістю між споживачем та розробником. Найчастіше розробник надає просто цифровий модуль, описаний мовою VHDL, Verilog, System Verilog та/або розроблений у схемотехнічному редакторі. З приводу додаткової документації відповідь у розробника найчастіше буває такою: «Цифровий модуль працює, то беріть і користуйтеся. В описі схеми мовою апаратури нічого складного немає: розберетеся самі».

На думку автора, розібратися можна в будь-чому, все залежить від бажання і витраченого часу, а час, витрачений на те, щоб розібратися в «чужому» проекті на вже розроблений цифровий модуль, прямо пропорційний досвіду опису апаратури мовами VHDL, Verilog та знанням цифрової та мікропроцесорної схемотехніки. Цього можна уникнути, якщо спочатку домовитися з розробником склад супровідної документації, тоді використання цифрового модуля у своєму проекті стає простіше, і швидше відбудеться його впровадження.

Підсумовуючи, автор хотів би відзначити, що при формулюванні завдання на розробку цифрового пристрою на ПЛІС слід дотримуватися наведених у статті рекомендацій, тоді проблем при повторному використанні або модернізації раніше розробленого цифрового пристрою не виникне.

Література

  1. Денисов А. Декілька порад із проектування цифрових пристроїв на VHDL для ПЛІС // Компоненти та технології. 2009. № 12.
  2. ГОСТ 2.102-68 ЕСКД. Види та комплектність конструкторських документів.
  3. ГОСТ 2.114-95 ЕСКД. Технічні умови.
  4. ГОСТ 15.101-98. Система розробки та постановки продукції на виробництво. Порядок виконання науково-дослідних робіт.
  5. ДЕРЖСТАНДАРТ Р 15.201-20-00. Система розробки та постановки продукції на виробництво. Продукція виробничо-технічного призначення Порядок розробки та постановки продукції на виробництво.