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

FPGA *

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

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

Самосинхронные схемы. Вычисление логических функций непосредственно по графу событий. Часть 3. Декомпозиция

Время на прочтение7 мин
Количество просмотров2K
Напомню важный вывод из предыдущих частей. Для циклического последовательного поведения, не содержащего кратных сигналов (переключающихся за цикл более двух раз), минимальная логическая функция каждого сигнала может быть представлена в следующем виде (естественно при отсутствии CSC конфликтов):

1)

$x=a*b*...*c+x*f+g+h+...+i,$



где a*b*...*c — это импликанта, состоящая из одной или более переменных. g+h+...+i — это возможно пустое множество импликант, состоящих из одной переменной. x*f — это импликанта из 2 переменных, наличие которой в минимальной форме не обязательно. Все переменные, кроме x, могут входить в формулу как в прямом, так и в инверсном виде, в зависимости от расстановки знаков соответствующих событий. Все переменные входят в формулу в качестве аргументов строго по одному разу.

Прежде чем идти дальше, подробнее рассмотрим такое явление как декомпозиция. Интересует прежде всего декомпозиция, которая сохраняет самосинхронность. При декомпозиции логической функции НЕ-И-ИЛИ в качестве нового элемента можно выделить:

а) одну или более импликант,
б) несколько сигналов (переменных) одной импликанты,
в) один входной инвертор.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии0

Что делают в офисе инженеры в Apple и Intel: профориентационный онлайн-курс современной микроэлектроники для школьников

Время на прочтение6 мин
Количество просмотров12K
Недавно вышел бесплатный онлайн-курс в трех частях под названием «Как работают создатели умных наночипов» (1, 2, 3). Он предназначен для профориентации школьников и отличается максимальной конкретностью: вот так выглядит распределение работы в команде проектирования микросхемы, вот на таких концепциях проектирования на уровне регистровых передач построена разработка, и вот такие алгоритмы используются для определения, на сколько мегагерц будет работать проектируемый процессор для компьютера или автомобильной электроники.

Кроме теоретической профориентации, курс можно использовать для отбора школьников на практические летние школы по ПЛИС-ам и проектированию процессоров. Такая школа планируется в этом году в Зеленограде, ее прототип был опробован на Летней школе юных программистов в Новосибирске и на Неделе электроники для школьников в Киеве в позапрошлом году. Можно также попробовать сделать хакатон по аппаратно-реализуемым нейросетям и аппаратной реализации игр с выводом на VGA дисплей (об этом дальше в посте).


Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии20

Python и FPGA. Тестирование

Время на прочтение7 мин
Количество просмотров16K
В продолжение к первой статье, хочу на примере показать вариант работы с FPGA (ПЛИС) на python. В данной статье затрону подробнее аспект тестирования. Если фреймворк MyHDL позволяет людям, работающим на python, используя знакомый синтаксис и экосистему, заглянуть в мир FPGA, то опытным разработчикам ПЛИС смысл использования python не ясен. Парадигмы описания аппаратуры для MyHDL и Verilog похожи, а выбор в пользу определенного языка вопрос привычки и вкуса. За Verilog/VHDL выступает то, что на этих языках давно пишут прошивки, и по факту они являются стандартными для описания цифровой аппаратуры. Python, как новичок в этой сфере, может конкурировать в области написания тестового окружения. Значительную часть времени у FPGA разработчика занимает тестирование своих дизайнов. Далее я хочу на примере продемонстрировать как это делается в python с MyHDL.

Допустим, есть задача описать на ПЛИС некое устройство, работающее с памятью. Для простоты возьму память, общающуюся с другими устройствами через параллельный интерфейс (а не через последовательный, например I2C). Такие микросхемы не всегда бывают практичны в виду того, что для работы с ними требуется много пинов, с другой стороны обеспечивается более быстрый и упрощенный обмен информации. Например отечественная 1645РУ1У и ее аналоги.


Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии14

Intel PAC N3000 — FPGA для сетевых приложений

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

В полном соответствии с тематикой выставки Mobile World Congress 2019, проходящей в эти дни в Барселоне, компания Intel представила на ней целый ряд новинок, предназначенных для телекоммуникационной отрасли. Хотим обратить внимание на одну из них; она достаточно специфична и не будет использоваться широко, но, с другой стороны, отражает текущие тенденции в области сетевых устройств. Речь идет о Intel PAC N3000 — первом специализированном FPGA ускорителе Intel для задач сетевой виртуализации.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии0

Истории

Начинаем FPGA на Python

Время на прочтение5 мин
Количество просмотров35K
Технология FPGA (ПЛИС) в настоящее время обретает большую популярность. Растёт количество сфер применения: помимо обработки цифровых сигналов, FPGA используются для ускорения машинного обучения, в blockchain технологиях, обработке видео и в IoT.

Данная технология имеет один существенный минус: для программирования используются довольно сложные и специфичные языки описания цифровой аппаратуры Verilog и VHDL. Это осложняет вхождение новичка в FPGA и для работодателя найти специалиста с этими специфичными знаниями на рынке труда сложно. С другой стороны популярный высокоуровневый язык программирования Python с фреймворком MyHDL делают программирование FPGA простым и приятным. Тем более людей знающих Python на порядок больше специалистов владеющих Verilog/VHDL. Серией статей я хочу показать как легко и просто войти в область FPGA зная Python и начать делать настоящие сложные FPGA проекты на этом языке. Отмечу, что на ПЛИС python непосредственно не исполняется, а является инструментом для генерации прошивки.
Читать дальше →
Всего голосов 47: ↑45 и ↓2+43
Комментарии56

Etherblade.net — opensource проект по созданию инкапсулятора ethernet-трафика на FPGA (часть первая)

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

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

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

Определим первую часть как вводную. Здесь мы поговорим о хардварном инкапсуляторе ethernet-трафика, созданном на FPGA, обсудим его основные функции, архитектурные особенности и преимущества по сравнению с программными решениями.

Вторая часть, назовем ее «сетевой», будет более интересна для разработчиков железа, желающих ознакомиться с сетевыми технологиями поближе. Она будет посвящена тому, какую роль «Etherblade.net» может занять в сетях операторов связи. Так же разговор пойдет о концепции SDN (software defined networking) и о том, как открытое сетевое железо может дополнять решения больших вендоров, таких как «Cisco» и «Juniper», и даже конкурировать с ними.

И третья часть — «хардварная», которая скорее заинтересует сетевых инженеров, желающих приобщиться к аппаратному дизайну и начать разрабатывать сетевые устройства самостоятельно. В ней мы подробно рассмотрим FPGA-workflow, «союз софта и железа», FPGA-платы, среды разработки и другие моменты, рассказывающие о том, как подключиться к участию в проекте «EtherBlade.net».
Итак, поехали!
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии56

FPGA митап в Санкт-Петербурге

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


Update. Видео выступлений выложены на YouTube:
1) про быстрые платы с FPGA
2) про 10G на Cyclone 10 GX


Более 15 лет мы разрабатываем устройства на FPGA и переносим сложные и разные алгоритмы в FPGA, а площадки для офф-лайн общения в России найти не смогли. Поэтому решили, что надо развивать направление самостоятельно: для начала организуем встречу в Санкт-Петербурге в «митап»-формате для разработчиков FPGA и интересующихся этой тематикой.

Собираемся для неформального общения 29 января в 19:00. Событие называется «Байки FPGA-шников». Будет пара докладов про то, с чем пришлось столкнуться в 2018 году в процессе разработки, разговоры на около-FPGA'шные темы и кофе-плюшки-пицца.

Подробности по ссылке (там же адрес и регистрация).
Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии6

Как мы провели Зимнюю школу «Цифровые встраиваемые системы» в Красноярске

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

С 7 по 9 ноября в Институте космических и информационных технологий Сибирского федерального университета прошла I Зимняя школа «Цифровые встраиваемые системы». Участниками школы были студенты и аспиранты СФУ.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии6

Ещё один простой процессор на verilog

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

В статье описан очередной примитивный процессор и ассемблер для него.
Вместо обычных RISC/СISC, процессор не обладает набором инструкций как таковым, есть только единственная инструкция копирования.


Подобные процессоры есть у Maxim серия MAXQ.


https://github.com/pavel212/cpu

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии14

Десятиклассница из Сибири хочет стать проектировщицей процессоров. Почему бы ей не сделать нейроускоритель на ПЛИС?

Время на прочтение5 мин
Количество просмотров30K
Вчера мне пришло письмо от десятиклассницы из Сибири, которая хочет стать разработчицей микропроцессоров. Она уже получила некоторый результат в этой области — добавила инструкцию умножения в простейший процессор schoolMIPS, синтезировала его для ПЛИС Intel FPGA MAX10, определила максимальную частоту и повышение производительности простых программ. Все это она сначала делала в деревне Бурмистрово Новосибирской Области, а потом на конференции в Томске.

Теперь Даша Криворучко (так зовут десятиклассницу) переехала жить в московский интернат и спрашивает у меня, чего бы ей еще спроектировать. Я думаю, что на этом этапе карьеры ей стоит спроектировать аппаратный ускоритель нейросетей на основе систолического массива для умножения матриц. Использовать язык описания аппаратуры Verilog и ПЛИС Intel FPGA, но не дешевенький MAX10, а что-нибудь подороже, чтобы вместить большой систолический массив.

После этого сравнить производительность аппаратного решения с программой, работающей на процессоре schoolMIPS, а также с программой на Питоне, работающей на десктопном компьютере. В качестве тестового примера использовать распознавание цифр с небольшой матрицы.


Всего голосов 54: ↑45 и ↓9+36
Комментарии73

RAM with Simple direct-mapped cache simulation on FPGA in Verilog

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

Simple direct-mapped cache simulation on FPGA




This article is a part of a course work for first year bachelor students of Innopolis University. All work is done in a team. The purpose of this article is to show an understanding of the topic, or to help to understand it using simulation.




Git repository link




Principle of work but from the user side should look like:


  • To write any data in memory, you need to access the RAM with data and address in which we want to write.
  • To access the data, we have to adress to cache. If the cache cannot find the necessary data, then it accesses the RAM by copying data from there.

When working with Verilog, it should be understood that each individual block of the program is represented as a module. As you know, the cache is not an independent part of fast memory, and for its proper operation it needs to take data from another memory block — RAM. Therefore, in order to simulate the work of the cache at the FPGA, we have to simulate whole RAM module which includes cache as well, but the main point is cache simulation.


The implementation consists of such modules:


  • ram.v — RAM memory module
  • cache.v — Cache memory module
  • cache_and_ram.v — module that operates with data and memory.
  • testbench.v and testbench2.v — module to show that main modules work perfectly.
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии14

Integer Cube Root in Verilog

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

Introduction


We have created a synthesizable verilog code for calculating an integer cube root of an integer number via binary search algorithm. This code had been tested on Cyclone IV FPGA board. Here you can read about implementation and understand how things works.

Github link: Cube root
Читать дальше →
Всего голосов 34: ↑29 и ↓5+24
Комментарии5

Musical box and rotary encoder on FPGA board

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

Introduction


We are the first year students studying Computer Science in Innopolis University and we would like to share our experience in developing a Verilog program to create the coolest (well, at least, the loudest) rotary encoder ever on an FPGA board.

In this article, you will find a wonderful story about our project, the hardware, software we used and some background theory regarding rotary encoder and creating sounds in FPGA’s buzzer. Finally, we will provide a link to a github repository where a reader can access the source code. We hope you will like the project and it will inspire you to make something similar.
So, let’s start!

Hardware and Software


Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии1

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

The Snake game for FPGA Cyclone IV (with VGA & SPI joystick)

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

Introduction


Do you remember the snake game from childhood, where a snake runs on the screen trying to eat an apple? This article describes our implementation of the game on an FPGA1.


Gameplay.gif
Figure 1. Gameplay

Читать дальше →
Всего голосов 45: ↑39 и ↓6+33
Комментарии32

Написание простого процессора и окружения для него

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

Здравствуйте! В этой статье я расскажу какие шаги нужно пройти для создания простого процессора и окружения для него.

Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии19

Модель разработки на примере Stack-based CPU

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

Возникал ли у вас когда-нибудь вопрос "как работает процессор?". Да-да, именно тот, который находится в вашем в ПК/ноутбуке/смартфоне. В этой статье я хочу привести пример самостоятельно придуманного процессора с дизайном на языке Verilog. Verilog — это не совсем тот язык программирования, на который он похож. Это — Hardware Description Language. Написанный код не выполняется чем-либо (если вы не запускаете его в симуляторе, конечно), а превращается в дизайн физической схемы, либо в вид, воспринимаемый FPGA (Field Programmable Gate Array).

Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии3

Особенности оконной фильтрации на ПЛИС

Время на прочтение11 мин
Количество просмотров18K
Всем привет! В этой статье речь пойдет об одной важной части цифровой обработки сигналов — оконной фильтрации сигналов, в частности на ПЛИС. В статье будут показаны способы проектирования классических окон стандартной длины и «длинных» окон от 64K до 16M+ отсчетов. Основной язык разработки — VHDL, элементная база — современные кристаллы FPGA Xilinx последних семейств: это Ultrascale, Ultrascale+, 7-series. В статье будет показана реализация CORDIC — базового ядра для конфигурации оконных функций любой длительности, а также основных оконных функций. В статье рассмотрен метод проектирования с помощью языков высокого уровня С/C++ в Vivado HLS. Как обычно, в конце статьи вы найдете ссылку на исходные коды проекта.

КДПВ: типичная схема прохождения сигнала через узлы ЦОС для задач анализа спектра.


Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии12

Школа по основам цифровой схемотехники: Новосибирск — Ок, Красноярск — приготовиться

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


Со 2 по 5 октября в Новосибирске прошла школа по основам цифровой схемотехники, архитектуры и использования Verilog. Формальное название мероприятия: школа для магистрантов и аспирантов, проходившая в Новосибирском государственном техническом университет в рамках XIV Международной научно-технической конференции «Актуальные проблемы электронного приборостроения» АПЭП-2018, проводимой под эгидой IEEE.


Данное мероприятие было в первую очередь ориентировано на тех, кто:


  • прочитал книгу Цифровая схемотехника и архитектура компьютера, Д.Харрис, С.Харрис (также известная как H&H или Харрис-и-Харрис);
  • хочет применить свои знания на практике, но не понимает, какое оборудование и ПО для этого необходимо и не умеет его использовать;
  • является студентом старших курсов или аспирантом и, как предполагается, будет распространять полученные знания (вести в ВУЗе практикумы, лабораторные работы и т.д.).

Анонс: аналогичная школа запланирована с 6 по 9 ноября на базе Института космических и информационных технологий Сибирского федерального университета (ИКИТ СФУ). Вести школу будут Алина Лесковская — аспирант, инженер-конструктор АО ИСС им.М.Ф.Решетнева, а также ее коллеги: Дмитрий Власов и Борис Дудкин. Контакт для регистрации: leskovskayaav@yandex.ru


Если ваша должность звучит как минимум «Junior FPGA Developer», то с высокой вероятностью вы не узнаете в этом посте ничего для себя нового. Для всех остальных – добро пожаловать под кат.

Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии4

Мой «Hello World!» на FPGA или очередная версия UART

Время на прочтение15 мин
Количество просмотров23K
Мой Hello World! на FPGA или очередная версия UART

Наконец-то у меня дошли руки до изучения ПЛИС. А то как-то неправильно получается: драйвера на железо под Linux пишу, микроконтроллеры программирую, схемы читаю (и немного проектирую), надо расти дальше.

Так как мигать светодиодами мне показалось не интересно, то решил сделать простенькую вещь. А именно написать модули приемника и передатчика для UART, объединить их внутри FPGA (заодно понять как использовать IP Core), ну и протестировать это все на реальном железе.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии36

Загрузка конфигурации в ПЛИС через USB или разбираем FTDI MPSSE

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


В жизни каждого плисовода наступает момент, когда требуется написать собственный загрузчик файла конфигурации в ПЛИС. Пришлось мне участвовать в разработке учебного стенда для кафедры одного технического вуза. Стенд предназначен для изучения цифровой обработки сигналов, хотя в рамках этой статьи это не имеет особого значения. А значение имеет то, что в основе стенда стоит ПЛИС (Altera Cyclone IV), на которой по задумке автора стенда студенты собирают всякие схемы ЦОС. Стенд подключается к компьютеру через USB. Требуется выполнить загрузку ПЛИС с компьютера через USB.

Принято решение для подключения к ПК использовать FTDI в ее двухканальной ипостаси — FT2232H. Один канал будет использован для конфигурации ПЛИС, другой может быть использован для высокоскоростного обмена в режиме FIFO.

Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии2

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