Как стать автором
Обновить
66.88

FPGA *

Программируемые логические интегральные схемы

Сначала показывать
Период
Уровень сложности

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

Время на прочтение8 мин
Количество просмотров24K

Приоритетная структура кода


В разработке электронных устройств грань между разработчиком-схемотехником и разработчиком-программистом очень размыта. Что уж говорит о том, кто должен писать RTL под FPGA.


С одной стороны, RTL — это территория схем, с другой стороны, ресурсы FPGA дешевеют, синтезаторы умнеют. Цена ошибки RTL дизайнера для FPGA не превышает цены ошибки программиста, а созданные схемы можно также обновлять и наращивать по функциональности, как обычную прошивку процессора.


Производители микросхем тоже не отстают, стали паковать ПЛИС в один корпус с процессором, даже Intel выпустил процессор для PC с FPGA внутри, купив для этого известного производителя ПЛИС Altera.


Думаю всем истинным программистам Вселенная шлет сигналы, что им просто необходимо изучить RTL и начать писать “код” для FPGA не хуже, чем под их привычные процессоры.
Когда-то давно, я проходил этот путь и позволю себе дать несколько советов для ускорения.


Читать дальше →

Функциональный DDS rенератор на ПЛИС

Время на прочтение11 мин
Количество просмотров76K
Недавно я увидел проект генератора сигналов на микроконтроллере AVR. Принцип генерации — DDS, на базе библиотеки Jesper максимальная частота — 65534 Гц (и до 8 МГц HS выход с меандром). И тут я подумал, что генератор — отличная задача, где ПЛИС сможет показать себя в лучшем виде. В качестве спортивного интереса я решил повторить проект на ПЛИС, при этом по срокам уложиться в два выходных дня, а параметры получить не строго определенные, а максимально возможные. Что из этого получилось, можно узнать под катом

Что получилось?

Доступ к SDRAM памяти на FPGA и «множество Мандельброта»

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.8K

Здравствуйте. Меня зовут Дмитрий. Сегодня мы научимся работать с SDRAM памятью и нарисуем множество Мондельброта на экране.

Данная статья является продолжением статьи Создание видеокарты Бена Итера на FPGA чипе. Если вы не читали то очень рекомендую. Ну а мы начинаем.

Читать далее

Прикоснемся к магии или как я вступил в ряды MISTического общества

Время на прочтение5 мин
Количество просмотров7.2K

Ниже предложен рецепт приготовления деликатеса, позволяющего Вам попробовать различные 8 и 16-битные приставки и компьютеры. Основное же блюдо для меня miniMIG — Amiga core с графикой OCS/AGA/RTG и CPU до 68020 в 20 раз быстрее стандартной A600.


В свои студенческие годы после ZX-Spectrum (Пентагон-128 с дисководом) я прикоснулся к волшебному миру Амига, сначала A600, затем A1200, аксели от 030-40MHz до PPC603+040. И вот, совсем недавно я узнал о Apollo Vampire (цена конечно кусачая) решил поискать что-нибудь подобное. Нашел несколько вариантов, но самый интересный, на мой взгляд, проект MIST доделанный Павлом Рябцовым. Проштудировал ветку Сборка, настройка платы MiST v 1.31 , заказал на сайте CHIPkin две печатные платы (как оказалось потом правильное решение, попеременно возникали проблемы то с одним, то с другоим экземпляром) и детали, которые были в наличии. Остальное было куплено на Али и "Чип и Дип", по мере прибытия деталей, начал сборку, о чем и хочу рассказать вам. Если Вы являетесь таким же OLD-фагом старых компьютеров, как и я, пожалуйста, приготовьтесь к прочтению.

Читать дальше →

Управление семисегментным дисплеем с помощью ПЛИС

Время на прочтение8 мин
Количество просмотров9.9K
Привет, Хабр! Хочу внести свою посильную лепту в продвижение ПЛИС. В этой статье я постараюсь объяснить, как на языке VHDL описать устройство, управляющее семисегментным дисплеем. Но перед тем как начать, хочу кратко рассказать о том как я пришел к ПЛИС и почему я выбрал язык VHDL.

Где-то пол года назад решил попробывать свои силы в программировании ПЛИС. До этого со схемотехникой никогда не сталкивался. Был небольшой опыт использования микроконтроллеров (Atmega328p, STM32). Сразу после решения освоиться с ПЛИС, встал вопрос выбора языка, который я буду использовать. Выбор пал на VHDL из-за его строгой типизации. Мне, как новичку, хотелось как можно больше возможных проблем отловить на этапе синтеза, а не на рабочем устройстве.

Почему именно семисегментный дисплей? Мигать светодиодом уже надоело, да и логика мигания им не представляет из себя ничего интересного. Логика управления дисплеем с одной стороны сложнее, чем мигание светодиодом (т. е. писать ее интереснее), а с другой достаточно простая в реализации.
Читать дальше →

Использование произвольных DataFlash 25-й серии вместо дорогих конфигураторов FPGA Altera без дополнительной аппаратуры

Время на прочтение7 мин
Количество просмотров12K
Из любого описания на популярные FPGA известно, что для хранения их конфигураций используются специальные микросхемы – конфигураторы. В комментариях меня поправили, что потихоньку набирают популярность и FPGA, где это не требуется, но пока многие делают разработки именно на классике, где нужен конфигуратор, и с этим надо считаться. Например, для Altera Cyclone используются микросхемы EPCS. Ниже схема от типичной макетной платы с кристаллом семейства Cyclone IV. На ней мы видим конфигуратор EPCS16. Всё бы ничего, но традиционно эти конфигураторы достаточно дороги, поэтому хотелось бы использовать что-нибудь подешевле.

Подробности в длиннющем тексте ниже. Если же очень интересно, но лень читать так много букв, то можно упростить задачу, посмотрев подробное 20-минутное видео.

Читать дальше →

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

Время на прочтение3 мин
Количество просмотров27K

image

Всем привет! Надеюсь, все хорошо провели праздники и готовы с новыми силами покорять высоты FPGA разработки.


Сегодня я хочу написать небольшой гайд по запуску тестбенчей на Verilog/SystemVerilog в ModelSim без использования GUI.


План будет такой:


  1. Добавление пути к ModelSim в PATH.
  2. Написание скрипта с объяснением команд.
  3. Запуск ModelSim с исполнением написанного скрипта.

Поехали!

Читать дальше →

Отладочная плата ПЛИС — Франкенштейн. Телеграфный передатчик

Время на прочтение6 мин
Количество просмотров14K
Бегут последние деньки уходящего года. Предновогодняя суета. А для тех, у кого выдалась свободная минутка на работе, я предлагаю серию статей про самодельную отладочную плату на базе ПЛИС Altera EPM 7064.



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

Паяльной станции у меня нет, ЛУТ технологию я не практикую. Поэтому я взял строительный фен на 250 градусов и отковырял микросхему ПЛИС от платы. Переходной платы для такого корпуса у меня тоже не было, поэтому я взял обычную макетку, впаял в нее стойки и с помощью накрутки и пайки, соединил выводы микросхемы со стойками. Вывел разъем JTAG и питания, прикрутил генератор. Это все, что нужно для начала работы с микросхемой

Что можно сделать из такой маленькой ПЛИС? Радиолюбители решают такую проблему очень просто: в любой непонятной ситуации мы делаем передатчики! Из чего? Да из чего угодно, что под руку попало в данный момент! А сегодня у нас Altera EPM7064.
V - Я люблю трэш!

Altera + OpenCL: вскрываем ядро

Время на прочтение23 мин
Количество просмотров17K


Всем привет!

В прошлой статье я запустил простой OpenCL пример на FPGA фирмы Altera:
// ACL kernel for adding two input vectors
__kernel void vector_add( __global const uint *restrict x,  
                          __global const uint *restrict y,  
                          __global       uint *restrict z )
{
    // get index of the work item
    int index = get_global_id(0);
 
    // add the vector elements
    z[index] = x[index] + y[index];
}

Я намеренно не углублялся в детали и показал верхушку айсберга: процесс разработки, сборку проекта, запуск на системе.

При подготовке первой статьи мне стало дико интересно, во что превращаются (со стороны FPGA) эти строчки. Понимание архитектуры даст возможность что-то соптимизировать и понять на что уходят ресурсы, а так же что хорошо и плохо для этой системы.

В этой статье мы попробуем вскрыть ядро и найти ответы на следующие вопросы:
  • Какая у него архитектура?
  • Как происходит его настройка? Как попадают данные на обработку?
  • На какой частоте он работает? Чем это определяется?
  • Можно ли просимулировать только ядро в RTL-симуляторах?
  • Какие блоки занимают больше всего ресурсов? Можно ли как-то это соптимизировать?

Давайте взглянём на его внутренности! Добро пожаловать под кат!
Читать дальше →

Тестовый стенд для испытания линейной камеры

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.4K

Иногда бывает, что для выполнения какого-то проекта требуется пройти несколько необходимых промежуточных этапов. Если проект исключительно программный, то эти дополнительные этапы не очень заметны. К примеру, при чистом программировании при возникновении проблемы всегда можно под неё попробовать найти готовую библиотеку и двигаться дальше.

Если проект аппаратный, то тут немного сложнее. Я расскажу про наш случай. Мы разрабатываем линейную камеру для контроля качества печати на флексографических машинах. При этом, конечно, мы не имеем возможности во время экспериментов всё время находиться рядом с печатным станком, мы тогда будем там просто мешать людям работать. То есть нам нужен простой испытательный стенд для разработчиков.

Далее расскажу, как делали.

Программирование FPGA Gowin с использованием свободных инструментов

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров3.5K

Краткая инструкция, о том, как запрограммировать чип FPGA Gowin с использованием только свободных программных инструментов и комплекта Sipeed Tang Primer 20K Dock.

Читать далее

Алгоритм межкадровой разности на FPGA стереокамере

Время на прочтение4 мин
Количество просмотров2.4K

В этой статье я расскажу о продолжении работы над своим проектом стереокамеры на базе FPGA Gowin. В последней версии я добавил блок расчета попиксельной межкадровой разницы, используя встроенную в один корпус с FPGA SDR SDRAM память

Читать далее

Из студентов в инженеры: как перестать бояться и полюбить системную верификацию

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров2.9K

Привет, Хабр! На связи Михаил Степанов, инженер в группе функциональной верификации YADRO. Еще в прошлом году мы с моим коллегой Романом Казаченко участвовали в хакатоне по разработке микропроцессоров как студенты, а сейчас — помогаем с задачами для SoC Design Challenge как сотрудники компании-организатора. В статье расскажем, что ждет участников трека «Системная верификация СнК» в этом году и как подготовиться к этому испытанию.

Если вы не планируете участвовать в хакатоне, но вам интересно, как инженеры тестируют системы на кристалле перед запуском в производство, эта статья тоже будет вам полезна. На примере заданий хакатона я кратко объясню, что такое системная верификация, из каких блоков состоят СнК и какие инструменты используются для их тестирования.

Читать далее

Ближайшие события

К звёздам на отечественной БИС 1537ХМ2: смотрим на модуль интегрированной инерциально-астроспутниковой системы

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.5K


Здравствуйте уважаемые друзья!

Мне всегда была интересна отечественная вычислительная техника. А уж когда дело коснулось звездной навигации, то я не смог остаться равнодушным. Следует заметить, что приведенные в репортаже снимки не являются тайной и астронавигационный прибор выставлен на всеобщее обозрение в музее «Космос», находящемся на ВДНХ.

Под катом — фото и видео отечественной, большой интегральной схемы, «Генератора равновероятной случайной последовательности» и ряд электронных компонентов, которые удалось идентифицировать.

Кому не безразличны отечественные разработки, добро пожаловать!
Читать дальше →

Гетерогенные вычисления: проектирование и разработка вычислительной системы для нейросетей

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.3K

Всем привет! Меня зовут Дарья Ильянова, и сегодня я хочу поделиться с вами опытом создания гетерогенной вычислительной системы для нейросетей, над которой мы работали в команде студентов Инженерно-математической школы НИУ ВШЭ и VK. Вместе с Филиппом Баулиным и Артемом Минеевым мы спроектировали прототип аппаратно-программного ускорителя для машинного обучения.

Читать далее

Генератор синуса и коротковолновый радиопередатчик

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров7.5K

В этой статье описан способ генерации синусоидального сигнала на ПЛИС через использование ROM памяти и реальный пример практического применения этого генератора для коротковолнового радиопередатчика RTTY (Radioteletype. - прим. Ред.). Будет описан способ передачи значения частоты из микроконтроллера в ПЛИС через SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI - прим. Ред.). Используются отладочная плата LilyGO T-FPGA, в составе которой ПЛИС GW1NSR-LV4CQN48PC6/I5 и микроконтроллер ESP32-S3, ЦАП на основе DAC904, ide GOWIN FPGA Designer, Visual Studio Code с расширением PlatformIO и matlab 2020.

Читать далее

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: загружаем платформу и верифицируем проект

Уровень сложностиСложный
Время на прочтение26 мин
Количество просмотров3.2K

Здравствуй, Хабр! На связи вновь Павел Панкратов — ведущий инженер-программист дивизиона искусственного интеллекта YADRO. Мы добрались до финала моего повествования о параллельном запуске двух операционных систем на FPGA с процессорной подсистемой.

В этой статье мы запустим подготовленный проект и верифицируем его. А в качестве бонуса посмотрим на один из способов разработки ПО под Soft-CPU, минуя IDE Vitis. Плюс загрузим ОС Soft-CPU с помощью QEMU.

Читать далее

Разработка цифровой аппаратуры нетрадиционным методом: Yosys, SpinalHDL, VexRiscv (ч. 2)

Уровень сложностиСложный
Время на прочтение118 мин
Количество просмотров4.7K

Это вторая и заключительная часть большой статьи. Ознакомиться с первой частью можно по ссылке.

Основная прелесть использования ПЛИС, на мой взгляд, состоит в том, что разработка аппаратуры превращается в программирование со всеми его свойствами: написание и отладка кода как текста на специализированных языках описания аппаратуры (HDL); код распространяется в виде параметризованных модулей (IP-блоков), что позволяет его легко переиспользовать в других проектах; распределенная разработка обширным коллективом разработчиков с системой контроля версий, такой же, как у программистов (Git); и, как и в программировании, ничтожно низкая стоимость ошибки.

Последнее очень важно, так как если при разработке устройства классическим методом разработчик несет вполне существенные затраты на сборку и производство изделия, и любая схемотехническая ошибка или ошибка трассировки печатной платы — это всегда выход на очередную итерацию и попадание на деньги, то при работе с ПЛИС ошибки ничтожны по своей стоимости и легко устранимы. И даже если в серийном изделии обнаруживается ошибка, то её во многих случаях можно устранить очередным апгрейдом прошивки «в поле» без замены изделия. Короче, с приходом ПЛИС разработка цифровой аппаратуры все больше и больше выглядит как программирование, а это, помимо всего прочего, существенно понижает порог вхождения в тему, и все больше программистов становятся разработчиками «железа». А новые люди, в свою очередь, приносят с собой в индустрию новые подходы и принципы.

В этой статье я хочу поделиться своим небольшим опытом «программирования» микросхем ПЛИС и тем, как я постепенно погружался в тему ПЛИСоводства. Изначально я собирался написать небольшую заметку про открытый тулчейн для синтеза Yosys. Потом — про язык SpinalHDL и синтезируемое микропроцессорное ядро VexRiscv, на нём написанное. Потом — про замену микроконтроллеров микросхемами ПЛИС на примере моей отладочной платы «Карно». Но в процессе я погрузился в историю появления Hardware Description Languages (HDL), и когда я начал писать, Остапа, как это часто бывает, понесло... В общем, получилось то, что получилось.

Продолжить погружение

Третий вопрос на интервью в электронные компании

Время на прочтение10 мин
Количество просмотров10K

У разных электронных компаний вопросы на интервью немного отличаются. В одной интервьюер на скрининге (первом интервью) спросит кандидата на RTL позицию про конечный автомат, в другой про арбитр, кэш или конвейер, в третьей про упорядочение неупорядоченных транзакций. Но на большом интервью вопрос про очередь FIFO появится практически всегда - не первым/вторым, но третьим.

Это может быть элементарный вопрос "напишите на доске (физической, ха-ха, без доступа к интернету и ChatGPT) код для FIFO на D-триггерах". Или это может быть обсуждение микроархитектуры какого-нибудь извращенного FIFO, например FIFO с отменой вталкиваний, или с возможностью втолкнуть и вытолкнуть переменное количество кусков данных за такт, или с конвейером и кредитным счетчиком, или работающее на памяти с высокой латентностью, или асинхронное FIFO из статьи Клиффа Каммингса про пересечение тактового домена.

Эта заметка является сиквелом заметки "FIFO для самых маленьких", а также приквелом занятия в Школе синтеза цифровых схем в ближайшую субботу. Главное нововведение - все примеры и упражнения теперь делаются не только в симуляторе, но и на плате ПЛИС.

Читать далее

Как прошла ПЛИСовая конференция в Питере?

Время на прочтение1 мин
Количество просмотров2.9K

Прошло всё отлично, 35 человек собралось, 7 докладов выслушано, 12 человек осталось на афтерпати.

Следующее мероприятие пройдет в Москве, Минске, Томске и Санкт-Петербурге в апреле-мае, подробности тут.

Все материалы собраны в отдельные плейлисты - встреча в Москве // слёт в Санкт-Петербурге, под каждым из видео ссылка на презентацию докладчика.

Под катом ссылки на видео и презентации

Читать далее

Вклад авторов