Зроби крок до ПЛІС!



Ти чекав знак? Ось він!

Багато років я не наважувався почати програмувати ПЛІС, тому що це складно, дорого і боляче (як мені здавалося). Але добре, коли є друзі, які допомагають зробити перший крок. І тепер я не розумію одного — ЧОМУ Я ТАК ДОВГО ЧЕКАВ?

Зараз я допоможу зробити перший крок і тобі!


А навіщо воно мені?

Ти втомився постійно читати доки за своїм МК або тримати купу інформації в голові. Ти все переписав на asm, але швидкості все одно не вистачає. Ти підключив два зовнішніх пристроїв до свого МК, підключаєш третє, але у тебе скінчилися переривання, перестають працювати ті модулі, що вже працювали. Ти береш інший МК, більш потужний з тієї ж лінійки, але знову мануали, регістри прапорів, біти… пекло. Міняєш платформу: переходиш на інший МК і викидаєш на смітник свої знання з колишньою платформі. Що б ти не робив — воно дається важко. Ти знаходиш популярну платформу, в якій можна легко з компонентів збирати проект, але вище апаратних обмежень даного МК все одно не вдається стрибнути… Десь на краєчку свідомості іноді проскакує думка, що ось на ПЛІС це б точно запрацювало швидко і паралельно, що це «саме та завдання, яку треба вирішувати на пліс», але я старий/дурний/зайнятий/etc щоб зуміти/почати таке робити.



Хочеш нарешті зітхнути вільно? Йдемо далі!

Радість від розробки на ПЛІС

У мене був важкий робочий день. З однієї роботи я приїхав на другу роботу, потім на дачу, ввечері домашні справи, уроки, потім сімейний перегляд кіно і тільки в 23 години я виявився абсолютно вільний! Сказати, що я був втомлений — нічого не сказати. Але в такому стані я сів за ноут з твердою метою: зробити генератор меандру на 440 Гц. Пройшло 20 хвилин і я вже чув його в навушниках. Я не вірив своїм вухам! Ще 15 хвилин мені знадобилося, щоб зробити ШІМ і змінювати гучність. До того часу плата з ПЛІС у мене була всього за тиждень до цього я перегорнув всього пару книг по Verilog.

В той вечір я зрозумів: ОСЬ ВОНО! Ось та платформа, на якій я швидко і легко можу перетворювати свої думки в реально працююче залізо!



Чому так?

Опишу плюси, які є в вивченні та застосуванні ПЛІС, хоча їх і так всі знають:
  • Універсальність знань — при зміні моделі МК потрібно читати доки. При зміні виробника МК потрібно читати доки. Треба постійно читати доки, постійно тримати в голові купу інформації. При розробці на ПЛІС, якщо знаєш Verilog або VHDL, то можна не тільки програмувати будь ПЛІС з лінійки одного виробника, але і при бажанні перейти на іншого (Altera, Xilinx). Хоч і будуть моменти з освоєнням іншого середовища розробки, тонких апаратних моментів, але сама суть підходу проектування пристроїв на HDL від цього не зміниться.
  • Від ідеї до заліза — при розробці проекту, якщо тобі не вистачає одного мк, то доводиться вибирати інший. В принципі можна будувати припущення впорається або не впорається цей МК з проектом. Чи є якийсь конкретний МК і ти намагаєшся туди вмістити проект. Найчастіше саме так. Мені це чимось нагадує підхід мого діда, який робить сходи з того, що є в сарайке. Хоча можна спроектувати сходи, купити дощок, які підійдуть… Від ідеї до залозу, а не навпаки.
  • Простота застосування чужих розробок — можна взяти чужий модуль і застосувати його у своєму проекті. За кодом зможете зрозуміти, як він працює. Навіть, якщо він для xilinx, а ви робите під altera. Іноді це виходить не сарзу, але це простіше, ніж, наприклад, додавати виконавчі бібліотеки до проекту на c++/Qt
  • Незалежність блоків. Блоки в HDL, як чисті фунції в МП. Залежать тільки від вхідних сигналів. Розроблений і налагоджений модуль буде і далі працювати правильно, як би не ріс проект. Ніщо ззовні не вплине на правильність його роботи зсередини. Та й взагалі можна забути, як він працює — це чорний ящик. До того ж, блоки працюють паралельно.


Проблема вибору

Сильно зупиняють питання, що вибрати: Altera/Xilinx, Verilog/VHDL, яку налагоджувальну плату взяти. Але про все по порядку.

Виробник

Я вибрав Altera. Чому? Ну ми ось так із другом вирішили, хоча назва Xilinx мені красивіше. АЛЕ. Якщо ти зараз не можеш вибрати, то я зроблю це за тебе. Тобі потрібен Altera! Чому? Я не знаю. Зараз важливіше зробити крок: зробити вибір. Я вибрав Altera і поки не пошкодував.



Мова

Беремо Verilog потомучто… ну ти зрозумів.


Налагоджувальна плата

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

У сімействі Altera, за розумні гроші ми можемо купити плати з CPLD MAX II на 240, 570 і 1270 елементів, або більш старші мікросхеми FPGA, які Cyclone 1, 2, 3, 4 з кількістю до 10000 і більше клітинок. Як же вибрати?

Навіть на базі 240 осередків, проект Марсохід робить просто величезна кількість проектів. Настійно рекомендую ознайомитися, щоб мати приблизне уявлення про складність проектів, які можна вмістити в 240 осередків. З іншого боку, існують проекти, які повністю програмуються під апаратну копію визначеного ПК, включаючи процесор і всю логіку навколо нього (NES, Speccy, Orion, ЮТ-88, etc). Для цього вже потрібно п'ять, десять і більше тисяч осередків. Плюс ці плати містять додаткові зовнішні пристрої.

Тому я б порадити взяти щось середнє між 240 і 10000 осередками, з перевагою в сторону збільшення залежно від доступних засобів. На налагоджувальної платі зайві клітинки це не страшно, а якщо їх не вистачить — вже нічого не поробиш. Потім, коли пристрій налагоджено, стане ясно, скільки клітинок треба, купити під потрібну кількість, без зайвого «обважування», дешевше і залишити в готовому пристрої.

Те, чим дійсно відрізняються MAX від Cyclone'ів, крім кількості комірок, це:
1) У серії MAX всередині немає PLL. На кожній налагоджувальної платі є генератор, як правило на 50 МГц. Основній масі проектів цього буде достатньо. Всі синхронізації будуть відбуватися шляхом ділення 50 МГц на яке-небудь значення. Або, можна взяти зовнішній генератор і подати на окремий вхід ПЛІС. А що, якщо буде потрібно частота вище 50 МГц? Мені не вдалося з ходу знайти генератори вище 50 МГц. Але тут на допомогу і приходить PLL, який вбудований в Циклони. На ньому можна помножити частоту, наприклад, до 100 МГц.
2) У серії Cyclone вбудовані апаратні блоки множення. Їх кількість залежить від конкретної моделі — тут як раз можна всетаки заглянути в інструкції», щоб дізнатися скільки. Якщо плануєте робити якийсь ЦГЗ, то вони знадобляться: заощадять клітинки, збільшать швидкість. З іншого боку, якщо немає умножителей, їх можна синтезувати, але у маленької ПЛІС на це може не вистачити ресурсів.

У всьому іншому у мене критерій «влізло/не влізло». Налагодження на свідомо більшої, ніж потрібно платі, з подальшою заливкою в мінімально необхідну для цього.

Скільки потрібно грошей?



Програматор
Я вважаю, що у мене немає часу, щоб паяти програматори на рассыпухе.

300 рублів. Я свій брав на ебее, виглядає так:


Налагоджувальна плата
Широкий вибір, у залежності від кількості грошей.

Початковий рівень 350 — 550 рублів. Це плати на MAX II (240 або 570 клітинок). Можуть підійти для початкового ознайомлення і подальшого влаштування в кінцеві пристрої. На платі є генератор, пара кнопок, пара світлодіодів, решта 80 висновків на свій розсуд.


Блок живлення
Обов'язково повинен бути, але не завжди йде в комплекті. Потрібно БП на 5 вольт і струм 2А.

Середній рівень від 900 до 1500 рублів. Це плати Cyclone 1, 2, 3, 4 відрізняються в основному кількістю осередків.
Маркуються приблизно так:
EP2C5T144 — Cyclone 2 приблизно 5к комірок
EP4CE6E22C8N — Cyclone 4 приблизно 6к комірок
EP2C8Q208C8N — Cyclone 2 приблизно 8к комірок

Можна помітити, що Cyclone 3 може мати більше клітинок, ніж Cyclone 4.

Ось кілька варіантів:

835 рублів.
ALTERA FPGA CycloneII EP2C5T144 Minimum System Board for Learn good


880 рублів
Altera CycloneII EP2C5T144 FPGA Mini Development Learn Core Board E081


1265 рублів
EP2C8 EP2C8Q208C8N ALTERA Cyclone II FPGA Evaluation Development Core Board


Плати з розширеними можливостями. Це плати, на яких встановлені додаткові модулі (UTP, USB, AUDIO), роз'єми (SD, VGA), кнопки, перемикачі, світлодіоди, семисегментные індикатори і т.д. Або може йти базова плата, а до неї можуть додаватися плати розширення окремо.

У мене трудиться такий комплект — плата + плата розширення:
Altrea EP4CE10E22 FPGA CORE Board+ Device Board USB/Sound/Ethernet/SD Card/VGA
2760 рублів

Ось основна плата. На ній є 2 світлодіода, 2 кнопки, 4 перемикача, семисегментний интикатор і мікросхема оперативної пам'яті.


Плата розширення. На ній розпаяні SD, VGA, а так само контролери USB(High Speed USB2.0 Chip: CY7C68013A), AUDIO Sound Card up to 96kHz/32bit ADC/DAC: WM8731S), UTP(100M Ethernet interface: DM9000A):


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

Ще варіанти:

Altera Cyclone NIOS II SOPC FPGA Development Learning Board EP2C8Q208C8N+LCD1602 — 2670 рублів


Terasic Altera FPGA DE0-Nano Cyclone IV Development and Education Board — 4600 рублів


Широкий вибір альтеровских плат і розширень до них
Проект Марсохід

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

Замовив, чекаємо

Поки йдуть плати, можна почати себе морально і технічно готувати:
— Встановити Quartus II v.11.1
Почитати:
— Книга: А.К. Поляків Мови VHDL і Verilog в проектуванні цифрової апаратури 2003
— Уроки на марсоході верилогу, архітектура, прості поради по стилю.
VERILOG як спосіб життя
Хороші приклади (EN)

ВСЕ!

Ми чекаємо від тебе цікавих проектів на ПЛІС!

PS. Звертаючись до тебе на «ти», я звертаюсь, як до рівного, особистості, а не частини натовпу. Якщо звернення на «ти» образило, прошу мене вибачити.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.