Поставляються у складі пакету MIPSfpga документація, і конфігураційні файли припускають застосування Bus Bluster в якості апаратного відладчика. Стаття містить інструкції з використання для цієї мети практично будь-якого USB-UART адаптера, побудованого на мікросхемі FTDI з підтримкою MPSSE (FT232H, FT2232H, FT4232H, FT2232D). Коротко описується інтеграція середовища розробки Visual Studio Code і налагоджувача GNU GDB.
Всі конфігураційні файли, які описуються в статті, а також частина документації доступні на github.
Елементи системи
image
Читати далі →

FPGA для програміста, прості рецепти

Пріоритетна структура коду
У розробці електронних пристроїв грань між розробником-схемотехником і розробником-програмістом дуже розмита. Що вже говорить про те, хто повинен писати RTL під FPGA.
З одного боку, RTL — це територія схем, з іншого боку, ресурси FPGA дешевшають, синтезатори розумнішають. Ціна помилки RTL дизайнера для FPGA не перевищує ціни помилки програміста, а створені схеми також можна оновлювати та нарощувати по функціональності, як звичайну прошивку процесора.
Виробники мікросхем теж не відстають, почали пакувати ПЛІС в один корпус з процесором, навіть Intel випустила процесор для PC з FPGA всередині, купивши для цього відомого виробника ПЛІС Altera.
Думаю всім істинним програмістам Всесвіт шле сигнали, що їм просто необхідно вивчити RTL і почати писати код для FPGA не гірше, ніж під їх звичні процесори.
Колись давно, я проходив цей шлях і дозволю собі дати кілька порад для прискорення.

Читати далі →

MIPSfpga і SDRAM. Частина 1

На цьому тижні я закінчив роботу по додаванню підтримки SDRAM в проект MIPSfpga-plus. Тепер при роботі з MIPSFpga крім блокової пам'яті, обмеженою ресурсами ПЛІС, доступний ще й зовнішнє ОЗП.
Дана стаття складається з 2 частин:
Частина 1. Короткий опис модуля доступу до SDRAM. Приклад використання.
Частина 2. Докладний опис роботи з пам'яттю, достатню для того, щоб у роботі модуля зміг розібратися осіб, раніше не мав справи з мікросхемами ПАМ'ЯТІ. Список літератури.
Передбачається, що читач як мінімум:
  • знайомий з предметною областю в обсязі підручника Харріс-енд-Харріс [1];
  • має досвід програмування на C, асемблері, використання gcc;
  • має мінімальний досвід роботи з MIPSfpga. Не маючи такого досвіду, буде логічним почати з більш простих речей, і лише потім думати про те, як використовувати ОЗП в своїй системі.
Якщо ви вже досвідчений розробник, то Частина 1 варто пробігти очима по діагоналі, Частина 2 — не містить для вас нічого нового. При цьому ви можете принести безперечну користь суспільству, якщо додасте підтримку SDRAM для ще однієї налагоджувальної плати. На поточний момент вона реалізована тільки для Terasic DE10-Lite — однієї з 9 плат, на які в рамках проекту MIPSfpga-plus було портировано ядро MIPSfpga.
Читати далі →

MIPSfpga і SDRAM. Частина 2

Посилання першу частину
Розглянута нами конфігурація складається з наступних елементів:
image
Шина AHB-Lite
Є основним інструментом для спілкування ядра MIPSfpga з зовнішнім світом. З неї в модуль доступу до SDRAM надходять команди на читання і запис інформації, за нею ж передаються зчитуються і записувані дані. Основна особливість: фаза адреси наступної команди збігається за часом з фазою даних поточної команди. Найкраще це видно на наступній діаграмі:
image
Короткий опис зображених сигналів: HCLK — тактовий сигнал; HADDR — адресу, дані по якому ми хочемо записати або прочитати на наступній фазі, задається майстром; HWRITE — при високому рівні на наступній фазі повинна бути проведена операція запису, виставляється майстром; HRDATA — прочитані дані; HREADY — прапор завершення поточної операції; HWDATA — записувані дані, виставляються майстром. Документація на шину, включаючи опис всіх сигналів та їх можливих комбінацій входить до складу пакету MIPSfpga.
Читати далі →

Написання і запуск скрипта для симуляції Verilog-коду в ModelSim

image

Всім привіт! Сподіваюся, все добре провели свята і готові з новими силами підкорювати висоти FPGA розробки.
Сьогодні я хочу написати невеликий гайд по запуску тестбенчей Verilog/SystemVerilog ModelSim без використання GUI.
План буде такий:
  1. Додавання шляху до ModelSim в PATH.
  2. Написання скрипта з поясненням команд.
  3. Запуск ModelSim з виконанням написаного скрипта.
Поїхали!
Читати далі →

Налагоджувальна плата ПЛІС — Франкенштейн. Контролер ялинкових гірлянд

Чергова серія про ПЛІС і налагоджувальну плату Френкі. Попередні серії 1, 2, 3.
Зробити контролер ялинкових гірлянд не просто, а дуже просто! Hello World на ПЛІС — це помигати світлодіодом. А "З новим роком" на ПЛІС — це помигати кількома світлодіодами. Принцип простий, як і в попередніх статтях: створюємо лічильник, який ділить частоту тактового генератора, вибираємо біти з слова лічильника, для отримання потрібної швидкості. Кілька біт цього слова дадуть нам певний крок відображення (в залежності від кількості обраних біт 1, 2, 4, 8 і т. д. кроків). В залежності від номера кроку задаємо значення для N світлодіодів.
Для управління реальної гірляндою, можна взяти який-небудь shield з електромагнітним реле. У мене виявився ось такий, на 8 реле. Схема підключення. Принципова схема.

Читати далі →

Налагоджувальна плата ПЛІС — Франкенштейн. Годинник. Altera EPM7064 VS Lattice LC4064v

Продовження передноворічної серії пригод маленької ПЛІС Altera EPM7064 на налагоджувальної платі — Франкенштейн. попередній серії...
Настала пора порівняти дві ПЛІС з однієї вагової категорії: Altera EPM7064, Lattice LC4064v. Хоча, один у них — тільки вага — це 64 макроячейки. В іншому, судячи з параметрами, у цих ПЛІС зовсім різні призначення. ПЛІС від Altera, судячи з документації 2005 року, є просто не молодий, від цього і володіє низьким кількістю осередків. Так само, володіє популярним по тим часам напругою живлення 5 вольт. Максимальна робоча частота не перевищує 200 МГц. У той же час Lattice може працювати до частот 400 МГц, але при цьому, живиться від напруги — 3.3 вольта. Так, це не так зручно, як 5 вольт, якщо ми хочемо взаємодіяти зі старими схемами (проте, заявлена толерантність до 5В). В документації на Lattice цієї серії зазначено 2014 рік, тому я припускаю, що це сучасні високошвидкісні ПЛІС, але малого обсягу, і судячи з "SuperFAST CPLD" в описі, позиціонуються вони трохи інакше.

Як нам їх порівняти? Спробуємо вирішити на них одну і ту ж задачу. Годинник на Lattice LC4064v ми вже спробували зробити і у нас вийшло. Тепер спробуємо зробити годинник на Altera EPM7064 — на нашому Франкенштейна.

Читати далі →

Налагоджувальна плата ПЛІС — Франкенштейн. Телеграфний передавач

Біжать останні деньки минає. Передноворічна метушня. А для тих, у кого видалася вільна хвилинка на роботі, я пропоную серію статей про саморобну налагоджувальну плату на базі ПЛІС Altera EPM 7064.



Нещодавно мені потрібно було знайти пару 1U корпусів під мій проект. І в якості альтернативи новим, ми вирішили пошукати старі прилади в 1U форматі, нутрощі викинути, а корпус використовувати за призначенням. Але, відкривши корпус, я був приємно здивований! Цілих чотири ПЛІС від Altera, та до того ж 5 вольтів. Я не зміг втриматися, щоб одну з них не спробувати в ділі!

Паяльної станції у мене немає, ЛУТ технологію я не практикую. Тому я взяв будівельний фен на 250 градусів і отковырял мікросхему ПЛІС від плати. Перехідною плати для такого корпусу у мене теж не було, тому я взяв звичайну макетку, впаяв в неї стійки і за допомогою накрутки і пайки, поєднав висновки мікросхеми зі стійками. Вивів роз'єм JTAG і харчування, прикрутив генератор. Це все, що потрібно для початку роботи з мікросхемою

Що можна зробити з такої маленької ПЛІС? Радіоаматори вирішують таку проблему дуже просто: у будь незрозумілої ситуації ми робимо передавачі! З чого? Та з чого завгодно, що під руку потрапило в даний момент! А сьогодні у нас Altera EPM7064.

Читати далі →

Підключення периферійних модулів до MIPSfpga, на прикладі ультразвукових датчиків відстані

Доброго часу доби. У цій статті розповім як інтегрувати модулі, на прикладі двох ультразвукових датчиків HC-SR04 і Pmod MAXSONAR, в систему на кристалі на основі MIPSfpga. Також розповім як написати програму для управління підключених модулів.
Грунтуючись на моєму прикладі ви зможете підключити ваші власні модулі, управляти ними за допомогою програми. Створювати систему зі своїм набором периферії, на основі MIPSfpga.



Читати далі →

Хакатон нового типу випробуваний у Києві, планується повторити цей досвід в Росії

В Київському Політехнічному Інституті пройшов хакатон нового типу, з одночасною розробкою і програмної (Сі, асемблер), і схемотехнічній (Verilog) частин системи, синтезованої для реалізації в мікросхеми реконфігурованої логіки (ПЛІС/FPGA). Хакатон також підтримувався однієї з кафедр Київського Національного Університету і Imagination Technologies, розробником графічного процесора PowerVR всередині Apple iPhone. Результат хакатона перевершив очікування (про це нижче), і зараз розробляються плани повторити його в інших місцях, зокрема в Томську або Новосибірську.



Хакатон в КПІ MIPSfpga був експериментальним в тому сенсі, що зазвичай в хакатонах учасники або просто програмують (наприклад рішення SaaS), або роблять пристрої з готових фіксованих мікросхем і програмують їх (Ардуїнов, STM32 Discovery). Тут же учасники і писали програму, і розробляли схему, інтерфейсний блок на рівні регістрових передач (Register Transfer Level — RTL), після чого вбудовували цей блок синтезируемую систему з процесорним ядром MIPS microAptiv UP і шиною AHB-Lite, і реалізовували цю систему в FPGA.

Ось як це виглядало на екранах їх ноутбуків, на FPGA-платі і концептуально:

Читати далі →