Знайомство і старт розробки на ПЛІС iCE40 від Lattice Semiconductor

Доброго дня! Сьогодні ми познайомимося з новим сімейством дешевих і малопотребляющих ПЛІС від Lattice Semiconductor сімейств iCE40LP/HX/LM, навчимося працювати з фірмовим компілятором iCEcube2 і редактором коду Sublime Text 3, а також програмувати чіп на налагоджувальної платі Lattice iCEstick з допомогою прошивки, написаної на SystemVerilog.

Все буде супроводжуватися детальними інструкціями і скріншотами.

Буває, для деяких завдань у розробці заліза, особливо пов'язаних з високою паралельністю обробки даних, швидкістю їх обробки або з іншою специфікою завдання не підходять мікроконтролери, а що-небудь потужне з Cortex-A бачиться гарматою по горобцях. Тоді як правило, розробник звертає увагу на ПЛІС, що надають за відносно недорогу ціну йому повну свободу дій на найнижчому рівні цифрових систем окремих логічних елементів і тригерів. Це дозволяє зробити «свою власну мікросхему» всередині ПЛІС, використовуючи її висновки і вже вбудовану всередині периферію. Наприклад, якщо раптом вам знадобилося 50 таймерів з ШІМ, або надшвидка обробка даних, або, скажімо, SPI з 3 лініями MISO і 2 MOSI, передати 5 Гбіт по 2 діфф. ліній – все це цілком реалізована на ПЛІС. Інженер тут обмежений тільки кількістю універсальних логічних осередків та їх часом перемикання.

Серед виробників ПЛІС два вже завоювали популярність серед розробників – це Altera і Xilinx, що випускають як найбільш прості ПЛІС (MAX II, MAX 10, Spartan II, Spartan III), на яких можна побудувати логіку практично будь-якої складності, так і надшвидкодіючі (Stratix 10, Arria 10, Spartan 7, Artix 7), здатні передавати дані зі швидкістю до 56 Гбіт/с, щоб у вас був швидкий інтернет. Однак, далеко не завжди потрібні такі кошмарні швидкості роботи.

Деякі особливості ПЛІС сімейства iCE40 (дані з сайту виробника):

• Серія HX – високопродуктивні ПЛІС, LP – малопотребляющие і LM – малопотребляющие з вбудованою периферією;
• Від 384 до 7680 LUT осередків;
• Низьке енергоспоживання, починаючи з 25 мкВт у деяких чіпів;
• Інтегровані в залозі SPI і інтерфейси I2C, що полегшують конфігурування мікросхеми;
• Можливість реалізації інтерфейсів: Parallel RGB, 7:1 LVDS, MIPI DPI/DBI, HiSPi, subLVDS, LVDS, Parallel LVCMOS;
• До 128 кбіт вбудованого ОЗУ;
• Внутрішньої Flash пам'яті немає, тому доведеться підключити до вбудованому автоматичного SPI інтерфейсу зовнішню пам'ять (відповідні моделі можна дізнатися в прошивателе Diamond Programmer);
• Корпуси BGA з кроком 0.35-0.4 мм, з мінімальними розмірами 1.40x1.48x0.45 мм з кроком 0.35 мм, є і TQFP-144 корпус з кроком 0.4 мм

Якщо Altera і Xilinx мають зручні середовища розробки з великою кількістю уроків з ним, то від Lattice – це компілятор з оболонкою над Synopsys Synplify, і писати код там мені здалося незручним, тому я вирішив просто завантажувати туди готові исходники. Для інших серій – Lattice Diamond не підходить для серії iCE40, тому для редагування коду я поставив відомий редактор Sublime Text 3 і встановив на нього плагін для підтримки мови SystemVerilog. Можна писати і на інших мовах, iCEcube2 автоматично розпізнає мову по розширенню файлу.

Добре, якщо у вас є налагоджувальна плата iCEstick з USB (клікабельні зображення з сайтів виробників):
image
Замість неї можна купити ось цю (терморегулятори і налаштування прошивателя будуть відрізнятися!):

image

Отже, докладні кроки установки, створення і налаштування проекту і прошивателя, тестовий код, прошивка і спостереження результатів:

1. Реєструємося на сайті Lattice Semiconductor і завантажуємо iCEcube2.

2. Натискаємо «Click here to your request license» на тій же сторінці. Після цього потрібно буде ввести в поле свій MAC-адресу.

3. На пошту прийде лист з файлом ліцензії.

4. Встановлюємо iCEcube2, копіюємо файл ліцензії в його папку, і вказуємо до нього шлях, запустивши iCEcube2.

5. Встановлюємо для прошивки ПЛІС — Lattice Diamond Programmer.

6. Встановлюємо Sublime Text 3 і менеджер пакетів для нього.

7. В Sublime Text 3 тиснемо Preferences → Package Control, в списку, що відкрився, тиснемо «Package Control:Install Package».

8. Уводимо «SystemVerilog». Тиснемо на перший (і єдиний) пункт у списку, чекаємо поки встановиться плагін (див. рядок внизу редактора).

9. Створюємо порожній файл і зберігаємо його як top.sv там, де будуть исходники вашого проекту прошивки ПЛІС.

10. В iCEcube2 тиснемо New project (або жовтий листок вгорі), відкриється вікно, де потрібно заповнити параметри як на скріншоті, вказавши шлях до проекту:


11. Тиснемо Next, з'явиться вікно додавання вихідних файлів в проект, шукаємо наш файл top.sv, двічі натискаємо на нього і тиснемо Finish.

12. Проект створений, зліва знаходиться його дерево і кроки синтезу, розміщення та трасування з'єднань між комірками. Пункт Design Files розкривається, там знаходяться всі включені в проект файли. Зараз там тільки top.sv:


13. Напишемо стандартний код для миготіння світлодіодом (добре, якщо у вас є плата iCEStick):


14. Збережемо зміни у файлі і перейдемо в iCEcube2. Натиснемо там на цей файл двічі, і на питання, оновити файл, відповідаємо «Yes».

15. В iCEcube2 тиснемо Tools>Run All і чекаємо, поки проект збереться.

16. Тиснемо на кнопку з 16 зеленими кружальцями, Package View:


17. Відкривається редактор висновків, в якому можна співвіднести входи і виходи вашого модуля на SystemVerilog і висновки корпусу ПЛІС. Схему корпусу можна масштабувати (Ctrl+обертати колесо миші) і рухати (перетягуючи вказівник):



18. Якщо завантажити даташит на налагодження iCEstick, то можна дізнатися, що генератор тактової частоти підключений до 21 висновку, а 5 світлодіодів – до 95(зелений), 96, 97, 98 і 99 (червоні) висновків. В панелі зліва Port потрібно розкрити шину led[4:0], яку ми завели замість одного виходу на тих діодах, якими ми блимати не будемо був залізний 0, інакше вони будуть тьмяно світити. Тепер мишкою перетягніть всі пункти led[0]..led[4] на висновки, до яких підключені світлодіоди, а clk – на 21 висновок.

19. Якщо все зроблено правильно, то ці висновки на схемі забарвляться в зелений колір. Після цього потрібно натиснути на кожен з них правою кнопкою миші і в випадаючому меню натиснути Lock, після чого на них з'являться замочки. Це позбавить вас від скидання розпіновки при перекомпіляції коду. Тепер збережіть її, натиснувши Ctrl-S. У наступних вікнах потрібно натискати ОК і Yes:



20. Знову натисніть на 16 кружечків (Package view). Отримана картина виглядає так:



21. Тиснемо Tools → Run All і чекаємо повної компіляції проекту

22. Вставляємо налагодження iCEstick в USB порт ПК і запускаємо Diamond Programmer, тиснемо там File>New File. Відкриється вікно, в якому можна натиснути Detect Cable, а можна вибрати ці параметри вручну:


23. Натискаємо ОК і чекаємо сканування:


24. Якщо все добре, з'явиться рядок:



Якщо все погано – спробуйте інший USB-порт.

25. Заповнюємо параметри:



26. В стовпці Operation натискаємо на напис Fast programming, відкривається вікно:


В якому потрібно вибрати в списку Access Mode пункт SPI Flash Programming, після чого вікно збільшиться, і тепер потрібно заповнити решту поля як на скріншоті:


27. Натискаємо OK, або Enter, кому як зручніше, а потім збережемо конфігурацію прошивателя, натиснувши Ctrl-S.

28. Тиснемо Program і чекаємо хвилину, поки ПЛІС зітреться і знову запрограммируется:



29. Спостерігаємо результат: червоний світлодіод блимає з помітною частотою:




Висновок
Ми навчилися налаштовувати і збирати проект з кодом ЗА iCEcube2, налаштовувати прошиватель і завантажувати прошивку в чіп ПЛІС. Написали тестовий код миготіння світлодіодом на платі і підтвердили його працездатність.

Для того щоб застосувати ПЛІС сімейства iCE40 у своїх проектах потрібно вивчати даташиты на вибраний чіп і його налагоджувальні плати. Найдешевший чіп сімейства – ICE40UL640-SWG16ITR50 стоїть у Digi-Key 1.53$/шт., має 640 осередків, 55 кб ОЗУ, і корпус WLCSP-16 розміром 1.4x1.48 мм. найдорожчий чіп серії – ICE40HX8K-CT256 стоїть у Digi-Key 12.78$/шт., має 7680 осередків, 128 кб ОЗУ, і корпус BGA-256 розміром 14х14 мм

В подальших статтях буде проведено огляд аналогічних за характеристиками ПЛІС інших виробників і порівняння з iCE40 за ціною, швидкодії, кількості осередків, різноманітності корпусів, доступності в Росії, легкості використання середовища розроблення і т. д.
Джерело: Хабрахабр

0 коментарів

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