Все потоки
Поиск
Написать публикацию
Обновить
38.37

FPGA *

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

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

Немного о проектировании самосинхронных схем

Время на прочтение4 мин
Количество просмотров10K
На форумах по электронике периодически вспоминают о самосинхронных схемах, но очень мало кто понимает, что это вообще такое, какие полезные свойства есть у самосинхронных схем, и какими недостатками они обладают. Краткий текст ниже позволит читателю ознакомиться с азами синтеза простейших самосинхронных схем, и самому попробовать их проектировать.
Читать дальше →

Семинары по введению во всё: от верилога и цифровой логики до микроархитектуры встроенных процессоров и RTOS-ов

Время на прочтение4 мин
Количество просмотров18K
Господа! Мы с Тимуром Палташевым из AMD в Саннивейл, Калифорния, а также с несколькими соратниками из России, Украины и Казахстана решили спланировать несколько семинаров разных форматов, которые покрывают темы на стыке хардвера и софтвера: цифровая логика, Verilog, правила RTL (Register Transfer Level), введение в микроахитектуру (строение конвейера) процессоров, низкоуровневое программирование на ассемблере, использование микроконтроллеров, особенности чипов для интернета вещей, введение в RTOS-ы, лабы на ПЛИС-ах / FPGA, а также (для части аудитории, которая интересуется производством чипов) физические аспекты проектирования и производства на фабрике (для последнего мы решили привлечь материалы от преподавателя курса в Университете Калифорнии Санта Круз, отделение в Silicon Valley).

Цель этого поста — обсудить кому что нравится на основе детального плана первого из таких семинаров, который будет в Казахстане. Идея данного семинара в том, чтобы пригласить некоторое преподавателей казахстанских вузов и сделать для них обзор, чтобы помочь им сориентироваться, в каких местах можно повысить качество их программ в программировании встроенных систем, электронике, а также затронуть связанные области типа интернета вещей и роботики.

elizabeth_panchul_160702_085714-2
Читать дальше →

Статический временной анализ demystified. Часть 2

Время на прочтение5 мин
Количество просмотров9.2K
Многие начинающие разработчики не до конца понимают значение таких параметров триггера как время установки (Setup) и удержания (Hold). Про метастабильность и природу этих двух параметров написано достаточно много (https://habrahabr.ru/post/254869/), поэтому сосредоточимся на том, как бороться с нарушениями Setup и Hold в процессе проектирования схем.
Читать дальше →

Марсоход Opportunity более чем в 40 раз превысил запланированный срок службы

Время на прочтение2 мин
Количество просмотров8.8K
В этом году марсоход Opportunity отмечает свое 12-летие на красной планете. Марсоход был высажен 24 января 2004 года и до сих пор продолжает функционировать.

Марсоход «Оппортьюнити» совершил посадку в кратере Игл, на плато Меридиана. В настоящее время Opportunity находится в районе кратера Индевор, тем самым пройдя более 40 км от своего первоначального положения:

image
NASA/JPL/Cornell University, Maas Digital LLC — photojournal.jpl.nasa.gov/catalog/PIA04413

Марсоход управляется двумя компьютерами на базе стандарта CompactPCI, спроектированными и построенными инженерами компании BAE Systems.
Когда Opportunity приземлился, команда НАСА думала, что суровый марсианский климат сделает его неработоспособным в течение нескольких месяцев. Запланированный срок работы марсохода был равен примерно 90 суток. Но марсоход, получающий энергию только от солнечных батарей, все еще собирает данные.
Читать дальше →

Выведение изображения с камеры OV7670 на VGA монитор с использованием FPGA

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

Предисловие


Прочитав много увлекательных статей об интересных разработках под FPGA, таких как тетрис, радиопередатчик и другие, я тоже загорелся идеей сделать что-нибудь для души. Для этой цели мной была приобретена камера OV7670 и отладочная плата DE-1 фирмы Terasic с чипом Cyclone II фирмы Altera. Задачу поставил следующую: вывести изображение с камеры на VGA монитор. Для того, чтобы оправдать использование FPGA, я собираюсь сделать это на максимальной для камеры скорости. Должен отметить, что легче понять эту работу помогут знания в области электроники: знания интерфейсов VGA и I2C, представление о SDRAM памяти и т.п.
Читать дальше →

Графический VGA-контроллер на SoC без знаний HDL

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

Всем привет!
В одной из предыдущих статей мой коллега Des333 реализовал фреймбуфер для LCD, работающего на графическом контроллере ILI9341. Однако, его написание потребовало существенного опыта в разработке RTL-кода.

К тому же, не у каждого под рукой есть embedded LCD-дисплей, зато наверняка есть монитор с VGA-входом.Что же делать, если опыта разработки под FPGA мало, но есть SoC, а сделать что-то интересное хочется?

В этой статье мы расскажем, как разработать графический контроллер, имея на руках плату с SoC (Altera Cyclone V), дисплей с VGA и минимальные знания языков HDL (в нашем случае — Verilog).

Для примера будем использовать наши платки, но всё описанное заработает и на других.
Кому интересно, прошу под кат.

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

Игра «Жизнь» в FPGA

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


Игру жизнь — клеточный автомат уже кажется писали на всех возможных языках программирования.

Меня же интересует технология ПЛИС — и поэтому когда-то я сделал реализацию life для ПЛИС Альтера Cyclone III. Правда поместилось в чип тогда очень мало: всего 32x16 клеток. На таком маленьком поле довольно трудно испытать сложные фигуры.

Сейчас у меня в руках другая плата: тут уже стоит Altera MAX10 с 50-ю тысячами логических элементов. Было интересно, смогу ли я расширить поле хотя бы в 4 раза? В общем задумал сделать хотя бы 64x32.

Результат представлен на этом видео, я называю эту картину: «ружье Госпера убивает самоё себя».

Ниже подробности реализации.
Читать дальше →

Процессоры Intel Xeon оснастили FPGA Altera

Время на прочтение2 мин
Количество просмотров26K
Intel начинает поставки двухчиповой платформы для разработки, состоящей из процессора Xeon E5-2600 v4 (Broadwell) и FPGA Altera Arria 10 — такую информацию озвучила вице-президент Intel Diane Bryant в своей речи на конференции IDF 2016 в Китае. Предполагается, что с помощью подобного гибрида удастся получить 70% прирост производительности при том же энергопотреблении и частоте. Плоды сотрудничества Intel и Altera, которое продолжается далеко не первый год, мы уже видели в лице прототипа платформы 5G — там скрещивались FPGA и Intel Core. И вот теперь — новый дуэт. В планах на будущее — полная интеграция обоих компонентов на одном кристалле. Первыми потребителями гибрида станут крупнейшие облачные сервисы и дата-центры. По прогнозам Intel, к 2020 году до 30% серверов в дата-центрах будут иметь процессоры с FPGA.

Тут уместно упомянуть, что в прошлом году стартовал совместный проект компаний Intel и eASIC по созданию платформы Xeon + ASIC для кастомизации процессоров под конкретные предварительно оговоренные нагрузки. Воистину, больше Xeon'ов, хороших и разных!

Под катом — немного информации о FPGA Altera Arria 10.
Читать дальше →

Junior FPGA Design Engineer: как стать?

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

Иногда начинающие разработчики не очень хорошо представляют, какую литературу надо читать для серьезного изучения того или иного языка.

Разработка под FPGA (ПЛИС) — это не просто какой-то язык. Это очень объемная область, с огромным количеством подводных камней и нюансов.

В этой статье вы найдете:
  • список тем, которые должен освоить начинающий разработчик под FPGA
  • рекомендуемую литературу по каждой из тем
  • набор тестовых вопросов и лабораторных работ
  • классические ошибки новичков (и советы по исправлению)

Добро пожаловать под кат!
Читать дальше →

Создание простой игры на базе FPGA

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

Привет Хабр. Изучение FPGA я начал совсем недавно. Одним из моих проектов, который был направлен на изучения интерфейсов PS/2 и VGA, была игра в Пин-Понг на одного человека. Одна из реализаций которой работает на плате DE0-CV, которую мне любезно предоставил замечательный проект Silicon Russia в рамках конкурса (http://www.silicon-russia.com/2015/12/11/board-giveaway-for-mipsfpga/).
Читать дальше →

Реверс-инжиниринг лазерного датчика расстояния

Время на прочтение11 мин
Количество просмотров42K
image
Однажды ко мне попал нерабочий лазерный датчик расстояния Keyence LK-G407. Мало того, что он был нерабочий, так его еще и нельзя было использовать без специального управляющего блока. Но ведь у датчика такие интересные характеристики: измерение расстояния с точностью до единиц микрон, и скорость работы — 50 килоизмерений/с. Так что, чтобы запустить его, придется заметно поковыряться в самом датчике, заодно и ценный опыт получить.
Читать дальше →

Решил написать свой язык аппаратного синтеза, для Minecraft и что из этого вышло

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


Мне всегда было интересно, как люди делают в играх сложные инженерные конструкции, и всегда хотелось попробовать повторить. Очень давно я увидел ролик на YouTube о том, как один человек построил процессор на редстоуне. И решил попробовать: чем я хуже? Тогда я собрал несколько прототипов отдельных элементов и понял, что эта задача мне не по плечу. К этому времени я немного освоил Verilog. Родилась мысль: почему никто не пытался использовать языки аппаратного синтеза для построения сложных логических схем в minecraft? Чуть углубившись в различные форумы, я не нашел ни одной похожей утилиты, а свой процессор на редстоуне очень хотелось. Пришлось взяться за написание компилятора самому. Что из этого получилось, читайте под катом.
Читать дальше →

Custom floating point format on FPGA

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

В данной статье речь пойдет о числах в формате с плавающей точкой и в частности о реализации специализированного формата FP23 на программируемых логических интегральных схемах (ПЛИС). В рамках конкретного проекта у меня родилась мысль реализовать оптимальный для определенных нужд формат данных с плавающей точкой. В итоге эта мысль переросла в реальный проект, который впоследствии нашел применение в некоторых интересных задачах цифровой обработки сигналов. В статье рассмотрены основные сложности при реализации формата данных floating point на ПЛИС Xilinx, рассмотрены базовые математические операции в формате FP23. Также в конце статьи вы можете найти исходный код проекта, которой можно свободно использовать в своих задачах или на его основе реализовать похожие форматы данных.


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

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

Как делать парсинг текста голым хардвером, без процессора и без софтвера

Время на прочтение13 мин
Количество просмотров39K
Кто-то парсирует текстовый файл программой на Питоне, другой пишет скрипт с регулярными выражениями на Перле, Си-программист стыдливо возится с буферами и указателями, иногда применяя Yacc и Lex.

А можно ли парсировать текст голым железом? Вообще без программы?

— А как это?, — спросил меня знакомый, — С помощью Ардуино?

— Внутри Ардуино стоит вполне фон-неймановский процессор и работает программа, — ответил я, — Нет, еще более голое железо.

— А-а-а-а, этот, микрокод?, — догадался мой товарищ и взглянул на меня победно.

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

— Невозможно! — воскликнул мой приятель, — в таком устройстве где-то сбоку должен сидеть процессор и хитро подмигивать!

— Почему это невозможно?, — парировал я, — Вот машину Тьюринга знаешь? Парсирует текст на ленте, а сбоку никакие интелы и ардуино не подмигивают.

— Нуу, машина Тьюринга, — протянул приятель, — это абстракция, типа Демона Максвелла.

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

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

Embedded World 2016: куда катится embedded-мир?

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

Давненько мы ничего не писали. А тем временем...

В тридевятом царстве, в тридесятом государстве, в баварской вотчине, в средневековом городе Нюрнберге проходит выставка под названием Embedded World. Цель выставки — собрать в одном месте производителей, разработчиков, студентов и других заинтересованных граждан. Проходит она три дня — с 23 по 25 февраля.




Сайт выставки: http://www.embedded-world.de

Около 900 участников, примерно 25 тысяч посетителей. Двух дней еле-еле хватает, чтобы понять, что к чему. Поэтому выставка длится три дня :)

Судьба забрасывает меня на это мероприятие уже не в первый раз: мы с коллегами по НТЦ Метротек посещали выставку в 2013, 2014 и 2015 годах. Именно здесь мы впервые увидели Cyclone V SoC (System On Chip c ARM и FPGA на борту), который впоследствии лёг в основу новых девайсов производства НТЦ Метротек (это — Беркут-ЕТ, EthOnd, BlueSoM, ETL-N). Именно здесь мы нашли производителей корпусов EMKO и наладили с ними сотрудничество, теперь все стоечные приборы (свитч Metrotek X10-24, Беркут-МХ) выглядят единообразно. Здесь мы узнаём о новинках и трендах.

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

Как я ошибся при написании хеш-таблицы и какие выводы из этого сделал

Время на прочтение23 мин
Количество просмотров26K
Для ясности теоретического понимания нет лучшего пути, чем учиться на своих собственных ошибках, на собственном горьком опыте. (Фридрих Энгельс)

Всем привет!


Несколько недель назад мне в линкедине написал коллега и сообщил, что в моем проекте на гитхабе не совсем верно работает хеш-таблица.


Мне прислали тесты и фикс, и действительно создавалась ситуация, где система "зависала". При расследовании проблемы я понял, что допустил несколько ошибок при верификации. На Хабре тема верификации RTL-кода не слишком подробна расписана, поэтому я и решил написать статью.


Из статьи вы узнаете:


  • как можно организовать хеш-таблицу на FPGA.
  • на чём была построена верификация.
  • какие ошибки я допустил (они привели к тому, что бага не была замечена раньше).
  • как это всё можно исправить.

Добро пожаловать под кат!

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

Hello, World! На ПЛИС. Мигаем светодиодом

Время на прочтение1 мин
Количество просмотров15K
Мигаем светодиодом, с помощью ПЛИС Altera Cyclone iv, ПО Quartus и языка Verilog.
В этом видео я рассказываю о том, как сделать мигалку светодиодом: создам проект, напишу модуль, назначу выводы ПЛИС и прошью микросхему.

Пожалуйста, прибавьте громкость.



PS. Как выяснилось, Хабр не любит смотреть видео. Статья оставлена, как пример для других хаброписателей.

Часы на ПЛИС Lattice

Время на прочтение19 мин
Количество просмотров35K
Некоторое время назад, хаброжитель DmitrySpb79 написал статьи о создании электронных часов. В них он рассмотрел источники точного времени, а так-же элементную базу для создания электронных часов. Были упомянуты Arduino, STM, Raspberry PI, ESP8266, но совсем забыли про ПЛИС.

Давайте заполним этот небольшой пробел. Узнаем, на сколько просто сделать часы на ПЛИС и какие аппаратные ресурсы для этого потребуются. К тому же, мне подарили микросхему ПЛИС очень малого объема — 64 макроячейки. Это ПЛИС LC4064v фирмы Lattice с которыми я до этого никогда не работал. Я думаю, будет интересно!

Цели:

  • попытаться уместить логику работы часов в ПЛИС малого размера (64 макроячейки);
  • освоить статическую либо динамическую светодиодную индикацию на ПЛИС для вывода времени;
  • собрать кучу граблей, связанных с самостоятельной разработкой схем и получить новый опыт;
  • освоить новую среду разработки и программирования для ПЛИС фирмы Lattice, оценить сложность перехода

Меня ожидает несколько очень приятных вечеров, посвященных разработке на ПЛИС!

Добро пожаловать под кат!

Добавляем инструкции в микропроцессор MIPS, которые работают в конвейере как его собственные

Время на прочтение8 мин
Количество просмотров12K
Можно ли добавить в микропроцессор инструкции (команды)? Если вы используете микросхемы ПЛИС / FPGA с реконфигурируемой логикой и микропроцессорное ядро, которые синтезирутся из описания на языках Verilog и VHDL, то можете. Причем это будет «честное», настоящее расширение системы команд, а не трюк типа программной эмуляции инструкции в обработчике исключения от зарезервированной команды, и не «микрокод», популярный в исторических процессорах 1970-х годов.

Команды, добавленные в современный синтезируемый процессор с помощью модификации его исходников на Verilog или VHDL, могут работать в конвейере и обрабатываться процессором как его собственные, без временных задержек.

Главная проблема с модификацией исходников дизайна процессора на Verilog или VHDL — трудоемкость. Нужно понять, как работает логика различных блоков и избежать нежелательных побочных эффектов. К счастью, существует способ расширения процессора, который превращает семестровый студенческий проект в нечто, что студент может спроектировать за одну лабораторную работу. Этот способ — интерфейс CorExtend / UDI (User Defined Instructions) в микропроцессорном ядре MIPS microAptiv UP, которое используется в пакете для образования MIPSfpga.

В рамках университетской программы MIPSfpga компании Imagination Technologies можно скачать настоящий индустриальный код на Verilog процессора MIPS microAptiv UP.
https://community.imgtec.com/university/resources/

Одним из распространенных применений UDI является манипуляции битами в алгоритмах шифрования. Другой пример — создание специальных инструкций для ускорения алгоритмов ЦОС Accelerating DSP Filter Loops with MIPS® CorExtend® Instructions.

Однако в наборе документации к MIPSfpga интерфейс между ядром и CorExtend описан недостаточно подробно. Подробная документация предоставляется только лицензиатам ядер. В этой статье представлено мое описание данного интерфейса на основе изучения исходного кода. Его можно также скачать в формате pdf MIPS microAptiv UP Processor CorExtend UDI interface protocol guide.

CorExtend занимает следующее место в RTL иерархии ядра m14k microAptiv.

CorExtend RTL Hierarchy
Читать дальше →

Как начать работать с MIPSfpga

Время на прочтение3 мин
Количество просмотров26K
MIPSfpga — это пакет, который содержит процессорное ядро в исходниках на Verilog, которое можно менять, добавлять новые инструкции, строить многопроцессорные системы, менять одновременно софтвер и хардвер, симулировать на симуляторе верилога, синтезировать для ПЛИС/FPGA и т.д. Его можно в целях эксперимента например запускать с частотой 1 такт в секунду и выводить наружу информацию о состоянии кэша, конвейера, и любых структур внутри процессора. При этом ядро MIPS microAptiv UP внутри MIPSfpga — это то же ядро которое например используется в платформе IoT Samsung Artik 1 и Microchip PIC32MZ, т.е. студенты получают возможность работать с тем же кодом, с которым работают инженеры в Samsung и Microchip.

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



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

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