8-900-374-94-44
[email protected]
Slide Image
Меню

Vivado для чайников: Как начать с ПЛИС Xilinx, для чайников. / ПЛИС / Сообщество EasyElectronics.ru

Содержание

Проектирование на FPGA в Vivado Design Suite #1

Описание курса

Этот курс является вводным тренингом по проектированию в среде Vivado, позволяющим понять маршрут проектирования на FPGA. Он поможет начинающим разработчикам ознакомиться с основами проектирования на FPGA: созданием проекта в Vivado Design Suite с исходными файлами, моделированием, назначением контактов ввода/вывода, наложением базовых временных ограничений, синтезом, реализацией и отладкой проекта и, наконец, созданием и загрузкой файла прошивки в отладочную плату.

Продолжительность

3 дня

Кому будет полезен курс?

Разработчикам цифровой аппаратуры, желающим получить базовые знания по основам разработки на FPGA в среде проектирования Vivado Design Suite.

Что нужно знать заранее?

Иметь базовые знания по языку VHDL или Verilog

Иметь опыт разработки цифровых систем

Программное обеспечение

Vivado Design Suite

Аппаратные ресурсы

Архитектура: UltraScale и 7 серия
Отладочная плата: Kintex UltraScale FPGA KCU105 или Kintex-7 FPGA KC705

По завершении курса вы будете иметь все необходимые навыки для того чтобы:

С помощью мастера создания проекта (Project Wizard) уметь разработать Vivado IDE проект
Описывать поддерживаемые маршруты проектирования Vivado IDE
Создавать отчеты DRC для обнаружения ошибок на раннем этапе проектирования
Использовать Vivado IDE I/O Planning для распределения контактов ввода/вывода
Синтезировать и реализовать HDL проект

Учитывать временные ограничения, накладываемые на тактовый сигнал и контакты ввода/вывода и выполнять временной статический анализ
Уметь описать процесс «baselining», необходимый для достижения требуемых параметров быстродействия
Использовать схемотехнический и иерархический средства просмотра для анализа проекта
Применять логический анализатор Vivado и маршруты отладки для доработки проекта

Структура курса

День 1
Введение в архитектуру FPGA, 3D IC, SoC — Введение в архитектуру FPGA, технологию SSI, и архитектуру SoC (Лекция)
Введение в методологию проектирования UltraFast, — методические рекомендации и контрольный лист UltraFast (Лекция, Демонстрация)
Введение в маршруты проектирования Vivado – Введение в проектный и непроектный режимы (Лекция)

Маршрут проектирования в Vivado Designe Suit в проектном режиме – создание проекта, добавление файлов в проект, обзор графического интерфейса Vivado IDE, моделирование проекта (Лекция, Лабораторная работа)
Введение в правила описания цифровых схем – рассматриваются базовые методические рекомендации по созданию цифровых схем в FPGA (Лекция)
Синтез и реализация – задание временных ограничений в соответствии со сценарием проекта, синтез и реализация. Необязательная опция: Генерация bit-файла и его загрузка в отладочную плату (Лекция, Лабораторная работа)
Введение в конфигурирование FPGA – Описание процесса конфигурирования FPGA
Правила проверки в Vivado корректности проекта – запуск отчета DRC до синтеза для выявления ошибок в проекте на ранней стадии. Устранение нарушений DRC (Лабораторная работа)
Мастер задания временных ограничений – использование мастера задания временных ограничений для определения недостающих временных ограничений в проекте (Лекция, Лабораторная работа)

День 2
Редактор временных ограничений – введение в редактор временных ограничений (Лабораторная работа)
Отчет по тактовым цепям – использование отчета report_clock_networks для просмотра первичных и сгенерированных тактовых сигналов (Лекция, Демонстрация)
Ограничения по тактовым сигналам (основные сведения) – задание ограничений для тактовых сигналов и выполнение временного статического анализа (Лекция, Лабораторная работа, Демонстрация)
Распределение контактов ввода/вывода в Vivado Design Suite – использование инструмента I/O Planning для привязки портов ввода/вывода к контактам микросхемы и определения электрических параметров (Лекция, Лабораторная работа)

Временные ограничения по входам/выходам и виртуальные тактовые сигналы – задание временных ограничений для интерфейсов ввода/вывода и выполнение статического временного анализа (Лекция, Лабораторная работа)
Основные сведения по анализу проекта в Vivado — использование различных средств для анализа проекта в среде разработки Vivado (Лекция, Демонстрация)
Анализ параметров Setup и Hold Time – описание временного анализа по Setup и Hold (Лекция)
Введение во временные отчеты в среде разработки Vivado – генерирование и использование Vivado отчетов для выявления маршрутов, не удовлетворяющих требованиям по временным ограничениям (Лекция, Демонстрация)
Маршрут проектирования с IP – Задание параметров IP, интеграция IP в проект, проверка иерархии проекта (Лекция, Лабораторная работа, Демонстрация)

День 3
Таблица оценки потребляемой мощности для Xilinx – оценка количества логических ресурсов и частоты работы в проекте, оценка потребляемой мощности с помощью Xilinx Power Estimator (Лекция, Лабораторная работа)
Введение в логический анализатор Vivado – Рассмотрение логического анализатора Vivado для отладки проекта (Лекция, Демонстрация)
Интеграция логического анализатора в HDL код – Рассматриваются маршрут интеграции IP VIO (виртуальные входы/выходы) в HDL код и контроль поведения с помощью логического анализатора Vivado (Лекция, Лабораторная работа)
Основные сведения по запуску логического анализатора – рассматриваются базовые возможности по запуску логического анализатора Vivado (Лекция)

Интеграция логического анализатора в Netlist — рассматриваются маршрут интеграции IP ILA (интегрированный логический анализатор) в Netlist проекта и использование средств отладки для устранения типичных проблем (Лекция, Лабораторная работа)
Модули отладки – изучение использования IP Debug Hub для соединения модулей отладки VIO и ILA в проекте (Лекция)
Введение в среду Tcl – основные сведения по Tcl (Лекция, Лабораторная работа)
Использование Tcl команд в режиме проекта в Vivado Design Suite – рассмотрение того, как исполняются Tcl команды в проектном режиме Vivado DS (Лекция, Демонстрация)
Синтаксис и структура Tcl — Изучаются базовый синтаксис и структура Tcl (Лекция)

ЗАПИСАТЬСЯ НА ОБУЧЕНИЕ

от «нуля» до работающего проекта

Собираетесь приступить к изучению продукции Xilinx, но не знаете с чего начать? Посетите вебинар для начинающих пользователей продукции Xilinx и тех, кто только собирается приступить к работе с отладочными средствами Xilinx. В рамках вебинара вы вместе с докладчиком пройдёте путь от «я не знаю, с чего начать» до работающего проекта. В качестве демонстрационной платформы на вебинаре будет использована популярная и доступная по цене отладочная плата ARTY. Вы научитесь интегрировать отладочную плату в среду разработки Vivado и создавать свой первый работающий проект.

На вебинаре вы узнаете:

  • откуда скачивать и как устанавливать средства разработки Xilinx Vivado и SDK;
  • какая документация и пакеты поддержки потребуются для работы с отладочной платой ARTY, и где все это находится;
  • как интегрировать среду разработки Vivado c платой ARTY;
  • как написать простой работающий проект на языке Verilog;
  • как произвести имплементацию проекта, получить файл прошивки и загрузить его в ПЛИС.

Вебинар будет для вас отправной точкой к началу самостоятельной работы с отладочными средствами Xilinx.

Вебинар состоится 29 ноября в 11:00.

Повторение вебинара – 1 декабря в 13:00. Время московское.

Докладчик: Владимир Викулин, инженер по применению Xilinx.

Участие в вебинаре бесплатное, по предварительной записи.

Любые вопросы по продукции Xilinx присылайте нам по адресу [email protected].

Или задайте по телефону 8-800-333-06-05 доб. 267.

По вопросам, связанным с участием в вебинаре, пишите нам по адресу [email protected]

Компания «Макро Групп» является официальным дистрибьютором Xilinx в России.

Как справиться с багами в Vivado (Xilinx)

До недавнего времени моя работа с ПЛИС (FPGA, PLD) касалась лишь работы с микросхемами серии MAX7000 Altera (Intel), на тот момент времени мне казалось, что хуже Altera ничего нет из-за изобилия недостатков их ПО (Quartus), например:

Мое мнение об превосходной отвратительности ПО Altera прожило ровно до того момента, пока я не погрузился в чудесный мир от Xilinx с Vivado. Начал я с последней, на тот момент времени (осень 2016),  версией — 2016.2 Сам перенос проекта на другую версию Vivado сопряжен с рядом проблем, о которых я напишу позднее, поэтому до полной реализации устройства я не решился переносить проект и продолжил работу с 2016.2.

Сказать ужасно значит вовсе не описать качества продуктов Xilinx.

1. Документация по софтовым продуктам, чипам, проектированию и т.п. доступна в разных документах с именами UGXXX, где XXX — номер документа. Документация временами и правда UG, многие вещи необходимо искать в многостраничным pdf, в которых на зерно информации тонна воды, документы не всегда актуальны (созданы для

более ранних версий Vivado).


2. Сам принцип дизайна, у 12-13 версий Quartus проектирование строилось относительно создания топового модуля с использованием HDL, у Xilinx нужно нарисовать блок дизайн, затем на основе него создать топовый модуль,  причем обязательно нужно создавать процессорное IP — ядро и IP-ядро сброса, подцеплять к минимальной системе источники тактового сигнала (клок), подцеплять DDR оперативку и т. п. Хотя это SoC, поэтому тут все сложнее, чем для более простых семейств ПЛИС, но тем не менее Xilinx  не предусмотрела ситуации когда мне нужно только логические ячейки без всех наворотов (без AXI и т.п.).

3. Работа Vivado: сотни предупреждений на собственные IP-ядра (ядра от Xilinx) при синтезе.

4. Дизайн: ориентирован на IP-ядра, а не на модули. Я не думаю, что на легковесные модули типа таблицы преобразований или инвертора нужно создавать IP-ядро, однако Vivado сильно параноит при использовании модулей.

5. Ресурсы. Очень долго выполняется синтез и имплементация проекта занимающего процентов 10-20% всех ресурсов от Zynq-7020. Например на 4-ядерном E2-6110 (слабенький 1,5 ГГц и TDP всего 15 Вт) полный цикл — 1 час. На топовых процессорах летает (на моем i7 — 1-2 минуты). По ощущениям Quartus на слабых машинах работал в разы быстрее. На аппаратной виртуальной машине, созданной на KVM с 4 ядрами и 5 Гб оперативки может упасть с Out Of Memory Exception (даже жирный своп не помогает от этой болезни).

6. Кривые и забагованные Vivado и Xilinx SDK, которые могут вылететь и закончить работу по абсолютно любым причинам с потерей всех результатов работы (на практике я не решился использовать частичный результат работы синтеза или имплементации при вылете на одном из шагов для продолжения с этого шага).

7. Отсутствие средств для инверсии логических сигналов на блок-дизайне (да мне пришлось создать модуль инвертора с телом в 3 строчки verilog кода)

8. Куча других более мелких причин…

Использование СКВ (системы контроля версий) для работы с проектом 

Наиважнейший момент при разработке на ПЛИС. Отдельную функциональность/фичу я реализую в отдельной ветке и потом уже объединяю с основной ветвью (как правило, это master). На мой взгляд, идеальный выбор это git, для ряда своих проектов я использую github. У меня была ситуация когда по непонятным причинам код в двух ветках оказался полностью нерабочим, я не мог ничего сделать несмотря на массу попыток и относительно простых изменений в дизайне, поэтому пришлось откатиться на ветку, от которой я создал ранее обе эти ветви. Если бы у меня не было СКВ или СКВ с неудобной работой с ветками (CVS, Subversion) я бы попал в неприятное положение (получил бы нерабочий дизайн в trunk) и, возможно, мне пришлось бы создать весь дизайн заново.

Для всех своих проектов я использую следующие правила размещения создаваемых мною файлов:

./src — директория с моими HDL — исходниками, если использовать %ProjectName%.srcs/sources_1/…, то, во-первых, это выглядит ужасно, а, во-вторых, мы получим кашу из генерируемых Vivado файлов и собственных HDL-исходников, сама же Vivado любит на каждый чих делать толпу изменений в файлах. Если вы что-то поменяли в одном из модулей и желаете сделать коммит изменений одного конкретного модуля, то такой подходя позволяет быстрее находить измененные модули в списке измененных файлов .
/tests — файлы тестбенчей на HDL-модули
/constraints — директория для сохранения файлов ограничений (как временных, так и физических), здесь ситуация аналогичная с src
/app — рабочее пространство (воркспэйс) С/С++ Xilinx SDK-проектов (софтина, созданная на базе Eclipse, но с бОльшим числом проблем, чем у Eclipse.
/config — файлы аппаратной конфигурация SoC.
/ip — каталог моих IP-ядер.

Чтобы в коммите не было по 1000+ изменений файлов (я не шучу их реально несколько сотен минимум), нужно правильно настроить .gitignore (список не отслеживаемых файлов/директорий с возможностью задания имен по шаблону). Например, в качестве образца можно использовать такой шаблон: https://github.com/OpticalMeasurementsSystems/2DImageProcessing/blob/master/.gitignore

А вот и сами проблемы

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

1. Синтез/имплементация падают с генерацией исключения и демонстрацией мессадж бокса — проблема в кэше, для лучшего эффекта стоит удалить директории %ProjectName%.hw, %ProjectName%.cache, %ProjectName%.runs.

2. Синтез/имплементация зависли на длительное время — некоторые проблемы, когда Vivado падает не отображаются в виде мессадж боксом, но они видны в окне Log. Решение сбросить синтез имплементацию (нажать на кнопку Cancel в правом верхнем углу), прибить директорию %ProjectName%.runs.

3. На блок дизайне не обновляется размер некоторых портов, например, Concat IP-ядро. Для этого можно попробовать сначала сбросить Output Products (Reset Output Products при клике правой кнопкой мыши по экземпляру HDL Wrapper’а в иерархии исходных файлов модулей), а затем сгенерировать их заново (Generate Output Products).


4. При запуске Xilinx SDK появляется Splash Screen, потом пропадает, сам SDK не запускается. Нашел 2 причины с проблемами запуска SDK:
       1) Оказалось, что у меня на компьютере было установлено 2 версии Java Development Kit (x32 и x64 параллельно), удалил x32 и SDK стал запускаться без проблем.
       2) Хардкорное решение: удаление папки .metadata, тогда из воркспэйса пропадают все проекты кроме hardware platform, восстановить проекты легко File->Import->General->Existing Project Into Workspace, выбрать галочками необходимые для импорта проекты, нажать ОК.
Видео рения этой проблемы здесь: https://www.youtube.com/watch?v=R_dwpoqsmX4

      3) [Дополнение]: Заметил, что если удалить файл lock в metadata и директорию  eclipse.cdt.ui из плагинов там же в metadata, то можно избежать повторного муторного добавления проектов в воркспэйс (не знаю, работает ли это во всех случаях или нет).

5. Неожиданно перестал собираться BSP, вероятно, в воркспеэйсе появился доп. хардварный проект, а BSP связан с другим железом, для решения этой проблемы удаляем все лишние hardware проекты и обновляем железный проект через правый клик по проекту -> Change Hardware Description File (выбираем экспортированный hdf) и вуаля, после этого можно собрать BSP и приложение.

6. Не открывается репозиторий одним из гит клиентов (GitKraken и т.п.) — это связано с запущенным SDK, который блокирует доступ к скрытой директории .git, решение — закрыть SDK.

Почему все так ужасно?

Можно сказать, что это болезнь всего ПО, заточенного под Embed-проектирование, оно все, как правило, ужасно и изобилует большим количеством багов, а современные тенденции к генерации HDL-кода из ПО для моделирования типа Matlab + SimuLink приводят к разрастанию самого кода ввиду неоптимальных подходов, плохой поддержке этого кода, к созданию «одноразового (write only)» кода и т. п., уменьшают порог вхождения и увеличивают степень энтропии создаваемого продукта людьми далекими от какого-либо понимания принципов работы цифровой электроники и программирования.

Cхема > плата > ПЛИС

На Хабре есть статьи для начинающих ПЛИСоводов, есть статьи с обзорами средств трассировки печатных плат. На некоторые из них я уже ссылался в своей первой статье о создании печатных плат. Во второй статье про SimBank в комментариях у меня состоялся диалог о сложности разработки ПЛИС и поддержки проектов с ней. Было высказано мнение, что легче собрать несколько простых устройств вместо одного сложного. Иногда так действительно проще. Когда речь идёт о двух, четырёх, восьми устройствах. Ряд можно продолжать с привычной вам кратностью. До преодоления порога комфорта. Два — это куча? А что делать, если есть желающие на 100 или 200 однотипных устройств? Использовать или не использовать ПЛИС в той или другой задаче каждый решает сам (или с коллегами). Сегодня хочу предложить вашему вниманию статью об особенностях создания печатной платы с ПЛИС. За основу возьмём инструмент «IO Designer» от компании Mentor Graphics. Кому-то может материал оказаться полезным, кому-то просто интересным, а кто-то может и не согласиться со мной.Для некоторых САПР, например Altium Designer, периодически выходят обновления с базами новых микросхем. (Если вы являетесь подписчиком на обновления). Для Cadence и OrCAD часто производители компонентов выкладывают библиотечные элементы схемных символов и ячеек для печатных плат. Для ExpeditionPCB от Mentor Graphics такая роскошь скорее исключение, чем правило. Про PADS (ещё один продукт для сквозного проектирования печатных плат от Mentor Graphics) не скажу, мне не приходилось с ним работать. В самой системе проектирования очень удобный менеджер библиотечных компонентов. Для построения посадочных мест компонентов для печатных плат в соответствии с требованиями стандарта IPC-7351 есть очень удачная программа «LP Wizzard». (Land pattern wizzard). Для создания графических схемных символов простых и не очень компонентов есть возможность импорта из файла. А для ПЛИС существует «IO Designer», который объединяет в себе символьную, схемную, платную (от печатной платы) и Verilog (VHDL) части проекта.IO Designer содержит базу знаний о большинстве FPGA и CPLD таких производителей ПЛИС как Xilinx, Altera, Lattice и Acctel. Вместе с выходом новых семейств у производителей ПЛИС MG выпускает обновления к базам ПЛИС. Но новую документацию на семейства микросхем всё равно придётся изучать.Допустим мы выбрали ПЛИС, изучили (ознакомились) её особенности и готовы творить.При создании проекта мы можем выбрать производителя ПЛИС, семейство ПЛИС, тип корпуса, и количество элементов. А так же указать скорость компонентов (для задания точного Part Number).У ПЛИС большинство контактов могут конфигурироваться, как на выход, так и на вход. На первый взгляд подсоединяй — не хочу. Сюда мы выведем контроллер SD карт, сюда RGMII для Ethernet PHY и т. д. Не тут-то было. При таком смелом обходе контактов по удобству мы можем наткнутся на массу подводных камней. Чтение документации позволит большинство из них избежать, но легче назначать контакты от этого не станет. И проект платы может превратится в сплошную кашу.На данном изображении всё не так уж и плохо, потому что оно создано «искусственно» на основе проработанного проекта. Обычно с первого раза всё не так гладко. И на этапе добавления ПЛИС еще не все элементы расставлены на плате. Но специально отмечено, что сигналы с левого нижнего разъёма приходят не на самый нижний угол ПЛИС. В результате они пересекаются с с другими сигналами и при трассировке могут потребовать как дополнительных переходных отверстий, так и дополнительных слоёв платы. Что в итоге увеличит стоимость производства.Возможности настройки контактов также бывают очень ограничены. Хорошо если у нас плата создаётся под одно конкретное изделие. Есть выводы смежных элементов, создаём для них ответные шины/сигналы в ПЛИС. Запустили пробный проект в САПР для ПЛИС. Если всё удалось, то можно отдавать на трассировку.

В качестве отступления: ЕМНИП на Xilinx Spartan-6 были специально назначенные выводы для память DDR которые потом удобно трассировались при правильном взаимном размещении микросхем на плате. И не было необходимости их потом перемещать менять местами.

Часто по ТЗ необходимо завести некую универсальность и наша плата в дальнейшем будет использоваться для нескольких проектов. У нас так проектируется центральная плата с процессором для работы со многими другими устройствами, своеобразная отладочная плата с ПЛИС, процессором и ОС «для своих». И тут нужно многое предусмотреть.Оставить, если нужен на разъёме один контакт для подачи синхронизации, или для вывода сигнала из PLL. Определится с направлениями сигналов на шине: вход, выход или двунаправленные. Если у нас центральная плата всегда мастер, то такие сигналы к шине адреса или управляющие можно сделать только на выход.Если у нас на шине есть ответ от ведомой платы типа WAIT или BUSY, то на мастер плате можно их можно назначить на выводы способные быть только входами. Также можно поступить с выводами определяющими присутствие платы.Такое предназначение, на первый взгляд, ограничивает возможности для последующей трассировки и перетасовки сигналов. Но как показывает практика, лучше такие ограничения знать заранее. А не просто назначать всем сигналам «Inout».

Мы можем выбрать файл откуда черпать список сигналов. Это может быть пробный проект, файл на Verilog или VHDL.Если пробный проект еще не делался, то мы можем не задавать такой файл. А потом просто создать сигналы в окне программы. Типы сигналов по умолчанию. Для одиночных сигналов и для дифференциальных.Далее мы можем назначить место куда мы потом будем выкладывать файл с нашим размещением контактов.Затем нужно определиться как мы хотим работать со схемой, нужны ли нам полноценные символы или достаточно только создания цепей в схемном проекте, а описания всех контактов у нас будут передаваться только в виде обменного фала с САПР ПЛИС.Мне всегда нравился вариант когда не нужно создавать схемных элементов, а все обмены идут через внутренние неведомые пути. Но, работая в коллективе, приходится принимать более приземлённые правила игры. Так, согласно корпоративному стандарту оформления схем мне всегда нужно было делить символ по банкам, выносить отдельно цепи конфигурации, земли, питания и прочие. Есть в таком разделении плюсы, но есть и минусы. Схемный символ приходилось делать мне. Для ПЛИС с 484 контактами не так сложно правильно сделать схемный символ, как может кому-то показаться. А вот для микросхемы с 1172 контактами это занятие весьма утомительно. Большинство названий контактов имеет длинные и похожие имена и в них легко запутаться. Можно генерировать все символы автоматом. Но тогда они не совпадают с «корпоративными» предпочтениями. В IOD легко можно создать символ по базе данных элементов просто перетаскивая мышкой из окна списка контактов в окно символа. Не скажу, что это также просто как играть в «Весёлую ферму», но на этом этапе мы просто можем мышкой назначать сигналы контактам микросхемы. При этом, можно указать как обозначать по названию, по функциональному назначению, по номеру контакта или по-своему. Я обычно выбираю отображение по функциональному назначению. Так как на мой взгляд такое название более информативно и тогда на схеме видно, что за сигнал сюда можно завести.Из наблюдений могу отметить, что последние названия у Xilinx (для семейств 6 и 7 серии) получаются довольно кроткими и информативными.IO_L6N_T0_VREF_13IO — контакт ввода-выводаL6N — обозначение дифференциальной парыT0 — обозначение байта внутри которого можно производить свап сигналов данных для памяти (этот момент нужно уточнить!)VREF — сюда можно подавать внешнее опорное напряжение, если этого требует стандарт выбранного сигнала для банка и нет возможности подключить его внутри ПЛИС. 13 — номер банка.У Altera тоже иногда попадаются нормальные функциональные обозначения, но чаще (моё субъективное мнение) трудновоспроизводимые названия контактов, которые потом не помещаются на лист со схемой. Возможно, если бы я делал схемы с большими объёмами памяти, умножителями или какие-нибудь коллайдеры, то мне бы пригодилось такое название. IO_DIFFIO_T18p__DATA15_DQ3T0_X9__DQ3T9_X18_DQ5T27_X36В этом случае выручает возможность указать Custom Label для имени контакта. И вписать руками необходимое название. Обычно я копирую функциональное назначение и сокращаю его до видаIO_T18p_DATA15_DQВ данном случаеIO — может использоваться для сигналов ввода-выводаT18p — это номер дифференциальной пары в верхнем сегментеDATA15 — этот контакт может быть использован для параллельной загрузки конфигурацииDQ — мне говорит, что это сокращение от функционального предназначения контакта (ещё могут быть DM и DQS)Это один из примеров, как можно назвать контакт на основе его функциональности и для какого-нибудь конкретного проекта, на первое место будет выведен какой-нибудь другой признак.Так, к примеру, у Altera при использовании LVDS сигналов нужно использовать внешнюю нагрузку. Для одних банков это нагрузочный резистор только на приёмной стороне, а для других — необходим еще и на выходе. Это можно отметить на схемном символе в свойстве Custom Label. Тоже касается сигналов PCI типа. Не для всех банков можно назначить стандарт шины 3.3V-PCI. И это тоже можно отметить на символе. Несмотря на всё большее вытеснение его стандартом PCIe в десктопных системах, в индустриальном исполнение он всё еще популярен. И некоторые заказчики ищут устройства именно в таком исполнении.Можно в символе добавить надпись, для всех контактов сразу. Это уменьшит количество текста внутри символа. Так как любая дополнительная информация будет перегружать символ и схему, тут нужен компромисс. Я такое делал для микросхем Xilinx, у которых есть микросхемы совместимые по контактам внутри одного корпуса с разным количеством логических элементов, но в «мелких» микросхемах часть контактов не задействована. Тогда в проекте часть схемы не запаивалась и можно было ставить более «лёгкую» микросхему. Учитывая это при раздаче контактов, потом можно сэкономить и на отсутствующих компонентах и на цене ПЛИС.Для удобства я делаю символы с разделением на банки. Исключение можно сделать для контактов конфигурации. Если проект имеет сложную структуру синхронизации, то в отдельный символ можно собрать входы CLK — локальные, глобальные и прочие. Контакты питания VCCO банков помещаются на символе вместе с банком или на отдельном — по желанию ГЛАВНОГО разработчика.Контакты питания ядра, VCCAUX, земли и прочего, чаще всего, выношу на отдельные символы.Якобы сейчас можно для всех контактов питания создать только цепь на схеме и не загромождать большим количеством однотипных контактов схему. У нас так делать не принято, поэтому я с такими опциями близко не знаком. Об этом можно ознакомится в справочной документации или из вебинаров и обучающих материалов в сети на сайте Mentor Graphics и его представителей.

Созданные символы передаю прямо в проект схемы, указываю тип корпуса, произвожу аннотацию в плату и микросхема привязана к плате, схеме и IODesigner`у.Создание и присвоение сигналовКак было описано выше, мы можем сигналы экспортировать из файла или создать сами.Присваивать сигналы можно как мышкой, так и через импорт/экспорт. Зажимая клавиши SHIFT, CTRL или ALT можно пере-присвоить сигналы на уже назначенные контакты. Или назначить все выбранные сигналы в один банк. Визуально банки отображаются разным цветом. Контакты разного типа отображаются разными значками. Можно включить отображение дифференциальных пар. Со временем занятые сигналы будут закрашены.Обновляем схему и видим на схеме символы уже с сигналами.Смотрим как они подсоединились на плате. Обычно это уже показанная выше «каша».Иногда я сразу делаю просто список сигналов, чтоб они автоматом создались в системе, потом их в схемном редакторе перетаскиваю к другим элементам.Есть вариант импорта списка сигналов из схемы.Синхронизировав проект схемы, платы и IO Designer мы можем вызвать отображение сигналов в окне IO Designer. С идущими цепями от ПЛИС к подсоединённым к ней компонентам.Теперь мы можем расчесать наши сигналы. Причём всё это будет сделано автоматически в соответствии с введёнными нами правилами. Конфигурационные сигналы никуда не денутся. Также мы можем предварительно зафиксировать сигналы для предотвращения смены их расположения. Обратите внимание, что сигнал DRAM3_RESET_B, которому должен быть присвоен стандарт ввода/вывода LVCMOS_1.35V и он не может находится в одном банке с сигналами SSTL стандарта, назначен в банк 17, а все остальные сигналы DRAM3* в банк 12. Так как в системе всего четыре сигнала с LVCMOS_1.35V, то им назначен стандарт LVCMOS1.8V и поставлен преобразователь уровня.Несмотря на кажущуюся запутанность сигналов, они сейчас расправлены в соответствии с назначенными правилами. Для удобства работы с проектом в Quartus.На изображении видны расставленные компоненты, и тянущиеся к ним линии от ПЛИС. Иногда если не все компоненты расставлены не получается с первого раза разложить все контакты для беспроблемной трассировки. Хотя всё зависит от задачи.После такого распределения контактов уже можно отдавать схему на окончательную трассировку или трассировать самому.Также можно сделать экспорт в Verilog / VHDL файл. Можем сделать экспорт в *.ucf, *.pin или другой файл. Отдать его проектировщику ПЛИС для проведения пробного проекта, вдруг чего-то не учли. Но в маленьком коллективе не всегда получается сразу такое провести ввиду большой загруженности другими проектами. (Старые доработки, новые пожелания заказчиков или параллельные проекты).Ограничения.Есть у данного метода ограничения, которые я не всегда знаю как обойти. Но в основном они связаны с необходимостью делать много чего для универсальности и про запас. Приходится изобретать костыли и прочее. Так у Altera по умолчанию нельзя располагать дифференциальный сигнал рядом с дифференциальным. Компилятор выдаст предупреждение. Мы можем его обойти установив в Pin Planner Quartus параметр SLEW_RATE = 0 MHz. После чего компиляция успешно завершится. Даже если на самом деле у нас сигнал будет болтаться с частотой 20 МГц. В IODesigner такого параметра нет. В итоге на схеме эти контакты задействую последними или устанавливаю им такой тип сигнала, чтоб это не вызывало конфликта, например PCB сигнал или конфигурационный.Есть и другие ограничения, которые обычно обходятся. Но в целом, я к ним отношусь положительно, так как они заставляют еще раз заглянуть в документацию на микросхему гораздо раньше чем, приедет готовая плата. Для тех, кто работает в других системах проектирования некоторые вещи могут показаться не очевидными и возможно не нужными. Так, насколько я знаю (слышал), Altium позволяет настраивать компиляцию проекта для ПЛИС прямо в проекте со схемой и платой. Я не в курсе всех его возможностей. И для людей, которые проектируют в нём не нужен импорт в Quartus или ISE. Но у нас проект печатной платы делает один человек, проекты для ПЛИС другие люди. Я отдавая схему на трассировку стараюсь как можно правильнее описать сигналы, при этом предоставляю проектировщику печатной платы некую свободу действий на изменение контактов. Любые предупреждения, которые возникают мы согласовываем по мере их накопления.Напоследок хотелось бы сказать, что «IO Designer» не панацея. Он не превращает проектирование схемы, платы и проекта на ПЛИС в интерактивную игру и не освобождает от изучения документации на микросхемы. Но работать с таким инструментом гораздо приятнее. В статье описаны не все его преимущества. Также не могу судить о полноте библиотек для всех микросхем, так как мне приходилось работать лишь с некоторыми из семейств Altera и Хilinx. C Lattice мне как-то удалось чуть-чуть поработать на отладочном комплекте, но до схемы, а тем более до платы дело не дошло. С Actel я не работал вообще. Из замечаний по Xilinx могу отметить, что в моей версии нет прямой передачи файла ограничений в/из Vivado. Может с обновлениями выйдет. Но так как проект ПЛИС Xilinx веду не я, то в чём точно проблема — не разбирался. Мы обошлись экспортом через *.csv файл.Данная публикация не претендует на звание учебника по «IODesigner», для этого есть немало уроков от Mentor Graphics. Знаю, что на русском языке обучение ведёт компания Мегратек. www.megratec.ru.Также, насколько мне известно, Mentor Graphics готовит к выводу на рынок xPedition — новую версию системы проектирования. Что там добавят конкретно по IODesigner`у покажет время. Из тех презентаций которые я видел на меня произвели впечатление обновления 3D отображения в платах и проектирование устройств с несколькими платами в одном проекте.Также, помимо названных мной САПР, для печатных плат существуют и другие. У каждой найдётся список из преимуществ и список «чего в Y не хватает как в Х». И если я не назвал их преимущества по сравнению с вариантом работы через IOD — не обижайтесь. Можете написать об этом в комментариях. Или статью о том как вы проектируете ПЛИС в вашем САПР.

© Habrahabr.ru

Объедините выход 3 преобразования в Пентахо



Я выполняю 3 преобразования параллельно. o/p трех преобразований содержит одинаковые имена столбцов. Я добавил вывод всех преобразований к общему фиктивному шагу в задании, а также добавил шаг WaitForSql, чтобы дождаться завершения выполнения всех 3 преобразований, а также добавил уникальный шаг в следующем преобразовании, чтобы удалить дубликаты записей.

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

Есть ли у кого-нибудь решение для этой проблемы, пожалуйста, ответьте. ….

pentaho
Поделиться Источник Padmaraj     07 марта 2015 в 11:41

3 ответа


  • Хеширование данных в Пентахо

    Может ли кто-нибудь предложить мне наилучшие возможные варианты, которые я могу использовать в пентахо в соответствии с моими требованиями? Требование состоит в том, что нам нужно преобразовать атрибуты first_name & last_name в hash и загрузить значения hash для этих столбцов в…

  • Миграционные преобразования в Пентахо PDI

    Мы используем два сервера, один как preprod и другие производства. Когда мы переносим задания или преобразования из preprod в Prod, он также копирует свои свойства соединения, и это влияет на выполнение нашего производственного задания. Может ли кто-нибудь дать мне знать, как перенести…



0

Если вы хотите, чтобы выходные данные из трех из них были собраны в один файл, то вы можете запустить те же 3 экземпляра в одном преобразовании с параметром append to target, отмеченным галочкой на вашем шаге вывода

Поделиться ash5stacked     10 марта 2015 в 18:42



0

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

Я не знал, что вы можете использовать фиктивный шаг для объединения результатов потока. Я всегда использовал для этого append streams -шаг.

Поделиться Dirk Trilsbeek     07 марта 2015 в 12:00



0

Несколько пунктов:

  1. Вы не можете просто объединить результаты нескольких преобразований на уровне задания. Вам понадобится еще одно преобразование, чтобы прочитать данные с помощью Get rows from result; задания не знают о потоках данных, они знают только о задачах (записях заданий) и состоянии выхода.

  2. Будьте осторожны с «Launch next entries in parallel» на уровне работы. Допустим, у вас есть 2 преобразования, trans1 и trans2, запущенные параллельно, за которыми следует фиктивный шаг. Манекен будет называться TWICE, один раз после завершения trans1 и еще один, когда trans2 завершится. Переход задания-это не поток данных, а рабочий процесс. Если вы хотите выполнять преобразования параллельно, а затем вернуться к одному рабочему процессу, вам понадобится подзадача, которая вызывает преобразования и не имеет успешной записи задания. Таким образом, подзадача завершается только после завершения 2-го преобразования и только после этого переходит к фиктивному шагу в родительском элементе.

  3. Зачем вам нужны эти преобразования, выполняемые внутри работы? Если они имеют одинаковую структуру столбцов, почему бы вам не назвать их субтрансформациями внутри преобразования, а не заданием? Шаги в преобразовании всегда запускаются параллельно, поэтому, если вы распараллеливаете вещи для производительности, преобразование-это способ сделать это, а не работа. Задание предназначено для выполнения нескольких задач в последовательном порядке, одна за другой, с контролем рабочего процесса в зависимости от результата предыдущего шага.

Поделиться nsousa     08 марта 2015 в 11:17


  • Изменение символа валюты в Пентахо

    Я создал отчет anlysis в консоли пользователя pentaho. У меня были некоторые измерения доходов и прибыли в наборе данных. Поэтому мне нужно добавить символ валюты к этим значениям. Но в пентахо я могу добавить только $ mark. Как я могу перейти на другие символы валюты, которые меня интересуют?

  • Настройки преобразования пентахо

    Я хотел бы понять следующие различия в среде пентахо 1) Что такое набор строк. Это просто как сбор записей с шага ввода или каков точный смысл? Я вижу в разделе Настройки преобразования, что нет строк в наборе строк, который по умолчанию равен 10000. Каково оптимальное значение. Например, если мои…


Похожие вопросы:


Можно ли выполнить шаг пентахо последовательно?

У меня есть преобразование пентахо, которое состоит, например, из 10 шагов. Я хочу запустить это задание для N входных параметров, но не параллельно, каждая оценка задания должна начинаться после…


Объедините два списка, чтобы получить желаемый результат в python

List1 = [th,sk,is,bl] List2=[ue,None,y,e] Выход = небо голубое Объедините два заданных списка и объедините их элементы, чтобы получить желаемый результат.


Причина Именования Чайника Пентахо

почему чайник пентахо называют инструментом Pentaho Data Integration? можем ли мы использовать несколько источников данных в одном преобразовании?


Хеширование данных в Пентахо

Может ли кто-нибудь предложить мне наилучшие возможные варианты, которые я могу использовать в пентахо в соответствии с моими требованиями? Требование состоит в том, что нам нужно преобразовать…


Миграционные преобразования в Пентахо PDI

Мы используем два сервера, один как preprod и другие производства. Когда мы переносим задания или преобразования из preprod в Prod, он также копирует свои свойства соединения, и это влияет на…


Изменение символа валюты в Пентахо

Я создал отчет anlysis в консоли пользователя pentaho. У меня были некоторые измерения доходов и прибыли в наборе данных. Поэтому мне нужно добавить символ валюты к этим значениям. Но в пентахо я…


Настройки преобразования пентахо

Я хотел бы понять следующие различия в среде пентахо 1) Что такое набор строк. Это просто как сбор записей с шага ввода или каков точный смысл? Я вижу в разделе Настройки преобразования, что нет…


pentaho: как передать переменную в start-job из самого низкого преобразования

Я новичок в пентахо, и у меня есть некоторые проблемы во время построения моей работы. У меня есть job1, который состоит из job2 и других преобразований. Job2 содержит 3 преобразования: 1, 2 и 3….


Нужно заменить в строке на пентахо

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


Я хочу создать многоквартирный дом в пентахо Би?

как создать многоквартирный дом в пентахо ? Как прикрепить идентификатор арендатора в сеансе pentaho? есть ли какие-либо настройки для включения мульти-аренды в пентахо?

Горячие клавиши (hotkeys) в Android Studio — Fandroid.

info
В таблицах перечислены сочетания клавиш (Key Command) для общих операций Android Studio.

Примечание: Здесь перечислены основные клавиатурные комбинации Android Studio для раскладки клавиатуры по умолчанию. Чтобы изменить раскладку по умолчанию на Windows и Linux, перейдите в File > Settings > Keymap. Если вы используете Mac OS X, обновите вашу раскладку используя раскладку версии Mac OS X 10.5+ в Android Studio > Preferences > Keymap.

Таблица 1. Комбинации клавиш для программирования

ДействиеКомбинация клавиш Android Studio
Завершение основного кода (имя любого класса, метода или переменной)CTRL + Space
Умное завершение кода (фильтрует список методов и переменных по ожидаемому типу)CTRL  + SHIFT  + Space
Оптимизация импортаCTRL + ALT + O
Команда поиска (Автозаполнение имени команды)CTRL + SHIFT + A
Быстрое исправление проекта (подсказки по ошибкам)ALT + ENTER
Форматирование кодаCTRL + ALT + L (Win)
OPTION + CMD + L (Mac)
Показать документацию для выбранных APICTRL + Q (Win)
F1 (Mac)
Показать параметры для выбранного методаCTRL + P
Создать методALT + Insert (Win)
CMD + N (Mac)
Перейти к источникуF4 (Win)
CMD + down-arrow (Mac)
Удалить строкуCTRL + Y (Win)
CMD + Backspace (Mac)
Поиск по символуCTRL + ALT + SHIFT + N (Win)
OPTION + CMD + O (Mac)

Таблица 2.  Комбинации клавиш редактора проекта

ActionAndroid Studio Key Command
Построение проектаCTRL + F9 (Win)
CMD + F9 (Mac)
Построение и запуск проектаSHIFT + F10 (Win)
CTRL + R (Mac)
Переключение видимости окна проектаALT + 1 (Win)
CMD + 1 (Mac)
Переход между открытыми вкладкамиALT + left-arrow; ALT + right-arrow (Win)
CTRL + left-arrow; CTRL + right-arrow (Mac)
Полный перечень горячих клавиш Android Studio для Windows, Linux и MacOS в документации IntelliJ IDEA.

Источник. Полный перечень горячих клавиш Android Studio для Windows, Linux и MacOS в документации IntelliJ IDEA.

tcl — Как создать непрозрачный чайнике TCL

Я пытаюсь понять, как создать непрозрачный локальный репозиторий TCL чайника. Я Googled и Гугле, и кажется, что я ищу ту вещь, так как я не смог найти хороший документ о том, как сделать то, что я хочу сделать.

То, что я пытаюсь сделать, это настроить локальный чайник, что я могу указать и обернуть / скомпилировать мое приложение (для Windows или для Linux). Это также даст мне более жесткий контроль на пакетах и ​​версии, которые используются на определенную версию приложения.

Из того, что я прочитал, репозиторий, непрозрачный чайника не связано с установкой оболочки TCL. Таким образом, вы можете хранить пакеты с других платформ на нем. Регулярное Teapot (связанное с оболочкой TCL, позволяет только пакеты, которые совместимы с архитектурой оболочки TCL). Другими словами, я не могу добавить пакеты Linux в чайнике Windows.

Ниже то, что я знаю, что и делали до сих пор.

1) Для того, чтобы создать непрозрачный (не связанный с TCL Shell) хранилище

  teacup-admin create {.\my_teapot}

2) Для того, чтобы получить пакет из репозитория ActiveState (например)

  teacup get base-tk-thread 8.6.1.1.297611 linux-glibc2.3-x86_64

3) Для того, чтобы добавить файл в непрозрачное хранилище

  teapot-admin add . /my_teapot ./application-base-tk-thread-8.6.1.1.297611-linux-glibc2.3-x86_64

Три шага выше, работает нормально.

Проблема, которую я ударил пыталась выяснить, как добавить свои собственные пакеты или пакеты из ActiveState чайника.

«Чайник-администратор добавить» команда над ним, кажется, что только добавляет файлы. Поэтому я не знаю, как хранилище будет выяснить все файлы, которые принадлежат к одному пакету, и как это позволит избежать столкновений на именах файлов.

Любые указатели на шаг за шагом документации о том, как это сделать, или что-нибудь, что может помочь мне с этим будет greately оценена.

Изучение FPGA и Verilog Руководство для начинающих, часть 1 — Введение


Введение

Изучение электроники иногда может быть немного сложным, но это действительно весело, если у вас есть немного терпения, чтобы читать, понимать и экспериментировать. ПЛИС не должны отличаться. Давайте попробуем и посмотрим, насколько быстро и легко мы сможем немного узнать о ПЛИС и создать простой рабочий тестовый проект с помощью этого простого руководства по ПЛИС. Чтобы извлечь максимальную пользу из этой серии руководств, я настоятельно рекомендую загрузить инструменты, перечисленные в конце этого документа, и пробовать выполнять каждый шаг по мере чтения.

Некоторое время назад я хотел узнать о программировании FPGA. Я начал гуглить только для того, чтобы обнаружить, что в Интернете нет учебника по FPGA (именно так, когда это руководство было изначально написано. Но сейчас должно быть больше учебных пособий по FPGA, доступных в Интернете!), Которые могут помочь вам начать с небольшого изучения HDL и проведет вас через проектирование, моделирование и реализацию. В Интернете есть много учебных пособий, которые помогут вам изучить HDL, некоторые учебники расскажут вам, как выполнять моделирование, некоторые могут рассказать вам о реализации, но нет единого учебного пособия, которое пошагово проведет вас от основ до реализации.

Я решил написать этот учебник в надежде, что он поможет нашим читателям немного изучить Verilog (HDL, который я выбрал для изучения первым из-за его синтаксического сходства с C), смоделировать ваш код и реализовать его на реальном оборудовании. В этом руководстве предполагается, что вы обладаете базовыми знаниями в области цифровой электроники, знакомы с некоторыми языками программирования (желательно C). Это руководство не предназначено для углубленного изучения Verilog или FPGA или чего-то еще, а просто руководство, которое проведет вас через различные базовые вещи, которые вам нужно знать, чтобы спроектировать простую цифровую схему в Verilog, смоделировать ее и реализовать на оборудовании. .

Мы будем использовать Xilinx ISE для моделирования и синтеза. Предпочтительнее ISE Webpack версии 14.7, которая является последней доступной версией (и последней с тех пор, как Xilinx перешел на Vivado). Если во время установки спросят, установите «System Edition», потому что он также будет включать Xilinx EDK. Обратите внимание, что лицензии ISE Webpack и EDK раздельны. Вам понадобится установленная лицензия ISE, чтобы следовать нескольким следующим частям этого руководства. Обратите внимание, что ознакомительная лицензия EDK действительна только в течение 30 дней, но лицензия ISE Webpack является бессрочной. Окончательный дизайн будет запрограммирован на плату разработки Elbert-Spartan 3A FPGA, чтобы убедиться, что наш код работает и на реальном оборудовании.

Вы также можете воспользоваться альтернативной версией этого руководства, используя Mimas A7 — Artix 7 FPGA Board по следующей ссылке.

Что такое ПЛИС?

FPGA означает «Программируемая вентильная матрица». Как вы, возможно, уже знаете, FPGA, по сути, представляет собой огромный набор вентилей, которые можно программировать и реконфигурировать в любое время в любом месте. «Огромный набор вентилей» — это упрощенное описание FPGA.FPGA действительно намного сложнее, чем простой массив вентилей. Некоторые ПЛИС имеют встроенные жесткие блоки, такие как контроллеры памяти, высокоскоростные интерфейсы связи, конечные точки PCIe и т. Д. Но дело в том, что внутри ПЛИС есть много вентилей, которые можно произвольно соединить вместе, чтобы создать схему вашей выбор. Более или менее похоже на соединение отдельных микросхем логических вентилей (опять же упрощенно, но тем не менее, это хорошая ментальная картина). ПЛИС производятся такими компаниями, как Xilinx, Altera, Microsemi и т. Д. ПЛИС принципиально похожи на CPLD, но CPLD очень малы по размеру и возможностям по сравнению с FPGA.

Каковы применения FPGA?

Архитектурно ПЛИС — это, по сути, море ворот, которые можно реконфигурировать для построения практически любой цифровой схемы, которую только можно вообразить. Эта большая гибкость вместе с возможностью перенастроить устройство с различными конструкциями по желанию делает FPGA лучшим выбором по сравнению с ASIC (специализированными интегральными схемами) для многих приложений. Например, глубокое обучение, искусственный интеллект или система ускорения приложений могут перепрограммировать одну FPGA с разными алгоритмами в разное время для достижения наилучшей производительности.В таких ситуациях ASIC не будет столь гибким. В некоторых приложениях количество изготовленных отдельных единиц будет очень небольшим. Разработка и производство ASIC для этих приложений могут быть непомерно дорогими. В таких ситуациях FPGA может предложить очень рентабельные, но надежные решения. Платы модульного форм-фактора, такие как модуль ПЛИС Narvi Spartan 7, упрощают реализацию приложений, не требуя от разработчиков конечных продуктов заботиться о таких сложных деталях, как источники питания ПЛИС, маршрутизация DDR3 и т. Д.Ниже приведены некоторые из потенциальных приложений FPGA в произвольном порядке.

  • Криптография
  • Прототипирование ASIC
  • Промышленные, медицинские и научные инструменты
  • Обработка и передача аудио / видео и изображений
  • Высокопроизводительные вычисления, искусственный интеллект и глубокое обучение
  • Военное и космическое применение
  • Сети, обработка пакетов и другие коммуникации

Что такое программирование FPGA?

Программирование ПЛИС или процесс разработки ПЛИС — это процесс планирования, проектирования и реализации решения на ПЛИС.Объем и тип планирования варьируются от приложения к приложению. Но создание документа требований, который фиксирует все конкретные требования, и создание проектного документа, объясняющего, как будет реализовано предлагаемое решение, может быть очень полезным для перечисления потенциальных проблем и планирования их решения. Немного времени, потраченного на создание качественного проектного документа, сэкономит массу времени на рефакторинге, отладке и исправлении ошибок позже. Реализация решения на ПЛИС включает построение проекта с использованием одного из методов ввода проекта, такого как схемы или HDL-код, например Verilog или VHDL, синтез проекта (синтез, генерация списка соединений, место и маршрут и т. Д.)) в выходные файлы, которые могут понять ПЛИС, и запрограммировать выходной файл на физическое устройство ПЛИС с помощью инструментов программирования. Ввод дизайна с использованием схем больше не используется в отрасли. Поэтому в этой серии статей мы ограничимся обсуждением проекта, использующего HDL (язык описания оборудования), в частности Verilog. Синтез и программирование почти полностью выполняются инструментами поставщика, такими как инструменты настройки ISE, Vivado и Numato Lab. Все необходимые шаги, которые должен предпринять пользователь в рамках ввода дизайна, синтеза и программирования, будут объяснены в следующих разделах.

Что такое RTL?

RTL означает уровень передачи регистров. Вы также можете встретить термины «Логика передачи регистров» или «Язык передачи регистров», все они означают одно и то же в контексте проектирования оборудования. RTL — это абстракция более высокого уровня для проектирования цифрового оборудования, которая находится где-то между строго поведенческим моделированием с одной стороны и чисто структурным моделированием на уровне ворот с другой стороны. Поведенческое моделирование объясняется в следующих статьях этой серии, так что не пугайтесь этого термина.Моделирование вентилей означает описание оборудования с использованием базовых вентилей, что довольно утомительно. RTL также можно рассматривать как аналог термина «псевдокод», используемого в программировании программного обеспечения. Можно описать конструкцию оборудования как последовательность шагов (или потока) данных от одного набора регистров к следующему в каждом тактовом цикле. Поэтому RTL также обычно называют дизайном «потока данных». Когда проект RTL готов, его легче преобразовать в реальный код HDL, используя такие языки, как Verilog, VHDL, SystemVerilog или любой другой язык описания оборудования.HDL и Verilog описаны в следующем разделе. Посетите страницу Википедии на RTL для получения дополнительной информации (https://en.wikipedia.org/wiki/Register-transfer_level)

Что такое Verilog?

В предыдущих абзацах я дважды упомянул слово «чрезмерно упрощенное». Причина в том, что FPGA — это намного больше, чем просто набор вентилей. Хотя можно построить логические схемы любой сложности, просто организовав и подключив логические вентили, это просто непрактично и неэффективно.Итак, нам нужен способ выразить логику в каком-то простом в использовании формате, который в конечном итоге можно преобразовать в массив вентилей. Два популярных способа сделать это — схематический ввод и HDL (язык описания оборудования). До того, как HDL стали популярными, инженеры проектировали все по схемам. Схемы удивительно просты для небольших проектов, но болезненно неуправляемы для больших проектов (подумайте о том, как инженеры Intel рисуют схемы для Pentium, у которого миллионы вентилей! Это недопустимо сложно).Если у вас есть некоторый опыт работы в области электроники, ваша первоначальная тенденция будет заключаться в использовании схем для реализации вашего дизайна вместо изучения нового языка (честно говоря, это случилось со мной). По вышеупомянутым причинам мы будем придерживаться HDL на протяжении всего этого урока.

Verilog — это язык описания оборудования (HDL), который можно использовать для описания цифровых схем в текстовом виде. Мы напишем наш дизайн для FPGA с использованием Verilog (как если бы вы писали программы для микроконтроллеров на C и ассемблере).Изучить Verilog не так уж и сложно, если у вас есть некоторый опыт программирования. VHDL также является еще одним популярным HDL, широко используемым в отрасли. Verilog и VHDL имеют более или менее одинаковую популярность на рынке, но я выбрал Verilog, поскольку он прост в изучении и имеет синтаксическое сходство с языком C. Когда вы освоитесь с Verilog, вы сможете легко изучить и VHDL. Хотите узнать больше о Verilog? Посетите эту страницу вики (http://en.wikipedia.org/wiki/Verilog) или ознакомьтесь с этим руководством (http://www.wikipedia.org/wiki/Verilog).asic-world.com/verilog/index.html).

Какие инструменты нам нужны?

1. Хороший текстовый редактор (использую Notepad ++)

2. Xilinx ISE Webpack (Скачать бесплатно с Xilinx. Требуется регистрация).

3. Хорошая плата для разработки FPGA (в примерах используется Mimas V2 FPGA Development Board. Изображение Mimas V2 показано вверху этой страницы. Если у вас есть плата FPGA Elbert V2 Spartan 3A, она должна работать идеально. Есть некоторые различия при настройке проекта для Mimas V2 и Elbert V2, но я укажу на них, когда это необходимо.)

4. Программное обеспечение загрузчика конфигурации Mimas V2 или Elbert V2 (Требуется, только если используется плата разработки Mimas V2 / Elbert V2 FPGA. Загрузите с соответствующих страниц продукта)

Для работы с расширенными темами этой серии могут потребоваться дополнительные инструменты. Информация о таких инструментах будет передаваться по мере необходимости.

Продолжить к части 2

Xilinx Vivado HLS Учебное пособие для начинающих: интеграция IP-ядра в дизайн Vivado | автор: Chathura Niroshan

Это вторая статья из серии учебников Xilinx Vivado HLS для начинающих.Здесь вы можете найти первую статью, в которой проектируется двумерное сверточное IP-ядро с использованием Vivado HLS. В этой статье будет обсуждаться интеграция сгенерированного IP-ядра в проект на основе Vivado ZYNQ. Я планирую написать следующую статью о разработке простого драйвера Linux для управления IP-ядром со стороны Linux (PS) ZYNQ.

Перед началом работы я хотел бы выделить несколько важных моментов. В этой статье, , я также расскажу о включении / обеспечении когерентности кеша на порту ZYNQ ACP.Мне пришлось обыскать множество мест, прежде чем я нашел правильный способ сделать это. Согласованность кэша является очень важной концепцией в системах с общей памятью, например, на плате ZYNQ ZC702 встроенная оперативная память DDR3 используется совместно системой обработки (PS) и программируемой логикой (PL) ZYNQ SoC. Есть много источников для изучения этой концепции, просто погуглите.

Приступим к делу.

Предварительные требования

  1. Xilinx Vivado установлен, лицензирован и работает
  2. Сгенерированные файлы ядра IP, следуя моей предыдущей статье.

Это все, что вам нужно для этого урока, я использую Vivado 2015.4, процедура должна быть такой же для любой более близкой версии.

Шаг 1: Создайте новый проект в Vivado

Откройте Vivado и создайте новый проект. Я выбрал свою плату как Xilinx ZC702. Для этого урока можно использовать любое устройство с ZYNQ SoC. Оставьте остальные настройки без изменений и завершите создание проекта.

Шаг 2: Добавьте ZYNQ PS в проект и настройте

После создания нового проекта выберите опцию «Create Block Design» в Диспетчере проектов в правой части экрана, как показано на следующем рисунке.Присвойте дизайну любое имя во всплывающем окне и нажмите ОК.

Нажмите кнопку ДОБАВИТЬ IP-адрес в панели инструментов блочного дизайна, введите «zynq processing system» и добавьте его в дизайн, дважды щелкнув по нему. Как только IP будет добавлен, появится запрос помощи Designer для «Run Block Automation». Щелкните по нему, выберите OK во всплывающем окне , он добавит предустановки платы в IP-адрес системы обработки ZYNQ. После запуска автоматизации блока IP будет выглядеть следующим образом.

ZYNQ PS IP После запуска блочной автоматизации

Теперь нам нужно настроить интерфейсы для взаимодействия с нашим индивидуальным IP-адресом, созданным Vivado HLS в предыдущем руководстве. Прежде чем это сделать, давайте напомним несколько вещей о настраиваемом IP-адресе, который мы создали в предыдущем руководстве. Наш настраиваемый IP-адрес имеет следующие интерфейсы:

  • Для ввода и вывода данных: Интерфейс AXI Master (AXI Full)
  • Для настройки IP во время выполнения: Интерфейс AXI Lite (ведомый)

Эти интерфейсы необходимо сохранить Имеется в виду при настройке ZYNQ PS. Поскольку у нас есть полный главный порт AXI и подчиненный порт AXI Lite в нашем IP, нам нужны полные подчиненные устройства AXI и мастер AXI Lite в IP ZYNQ PS для подключения нашего IP.

Теперь приступим к настройке ZYNQ PS IP. Чтобы настроить, дважды щелкните по нему. Во всплывающем окне выберите Конфигурация PS-PL в Навигаторе страниц . Затем разверните ACP Slave AXI Interface и отметьте оба параметра под ним, как показано на следующем рисунке.

Включение порта AXI ACP

Теперь нам нужно сделать что-то особенное для Vivado 2015.4, что можно рассматривать как ошибку в этой версии. Перейдите в General -> Address Editor и отметьте Allow access to High OCM, как показано на рисунке. Эта опция была включена по умолчанию в предыдущей версии, которую я использовал. Если вы этого не сделаете, вы получите сообщение об ошибке, если попытаетесь подтвердить или уточнить.

Затем перейдите к разделу Прерывания в навигаторе страниц и включите прерывания, если вы хотите, чтобы они присутствовали в вашем проекте. На самом деле нам не нужны прерывания для созданного нами IP-адреса, вы можете отключить его, если хотите.Я упомянул это для полноты картины.

Вы также можете изменить тактовую частоту программируемой логики (PL), что означает тактовую частоту вашего настраиваемого IP-адреса. На следующем рисунке показано, где вы можете найти эту опцию. Я пока оставлю настройку часов по умолчанию.

Clock Configuration

Мы закончили настройку, нажмите OK. IP ZYNQ PS после настройки должен выглядеть следующим образом.

Customized ZYNQ PS

Шаг 3: Добавление нашего Custom IP к дизайну

Перейдите к настройкам IP в панели инструментов блочного дизайна, как показано на рисунке.

IP Settings

Во всплывающем окне IP Settings перейдите на вкладку Repository Manager и нажмите + sign . Затем укажите папку проекта Vivado HLS и выберите ОК. Если вы правильно экспортировали свой собственный IP-адрес в проект Vivado HLS, это будет выглядеть примерно так, как показано ниже.

Нажмите OK в этом окне и в окне Repository Manager. Затем снова нажмите «Добавить IP» и введите собственное IP-имя. В моем случае это «conv», затем добавьте его, дважды щелкнув по нему.

После добавления IP-ядра в проект

Шаг 4: Подключение IP-ядер

На этом этапе обычно вам не нужно ничего делать вручную, Designer Assistance выполнит все подключения за вас.Но иногда не удается выполнить все соединения. Щелкните Запустить автоматизацию подключений и отметьте Вся автоматизация во всплывающем окне. Вы можете проверить, что к чему подключается, выбрав каждый из портов по отдельности, подробности подключений можно увидеть в правой части окна. Нажмите OK, после того, как соединения будут выполнены, вы увидите что-то вроде рисунка ниже.

Итак, вы хотите изучить FPGA … — Новости

ПЛИС

повсеместно используются в «традиционной» инженерии, но по-прежнему имеют лишь небольшую долю в культуре DIY.Вот пара проектов, которые это меняют.

Добавлено в избранное Любимый 3

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

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

Перед тем, как продолжить чтение!

Этот пост был написан в 2013 году, и с тех пор разработка с использованием FPGA прошла долгий путь. Тем, кто хочет познакомиться с программируемой логикой на ПЛИС, мы рекомендуем попробовать Alchitry Au. Чтобы упростить начало работы, плата Alchitry Au имеет полную поддержку Lucid, встроенную библиотеку полезных компонентов для использования в вашем проекте, Руководство по началу работы и отладчик! Внизу этого поста представлены предложения продуктов SparkFun для FPGA.

Посмотреть продукты

Узнайте больше о FPGA на этой новой странице ресурсов!

Как инженер в SparkFun, моя работа состоит в том, чтобы предоставить «ярлыки», которые могут понадобиться любителю или студенту для достижения своих целей в электронной сфере. Некоторое время назад я попытался написать руководство, которое предоставило бы базовую информацию и инструменты, необходимые для того, чтобы кто-то начал использовать FPGA. После десяти страниц написания я понял, что обучение концепциям, необходимым для понимания и использования FPGA, является гораздо большей проблемой, чем я ожидал.Фактически, это настолько большая и сложная проблема, что спустя пару лет я так и не нашел полного способа познакомить непосвященных с миром FPGA.

К счастью, в мире DIY есть множество очень талантливых людей, работающих над той же проблемой. В частности, Джек Гассетт, создатель Papilio, и Джастин Раевски, создатель Mojo, проделали огромную работу, создав платы и материалы, чтобы облегчить переход в мир FPGA. У этих компаний есть много вспомогательной информации и руководств, которые делают их идеальным выбором, если у кого-то есть небольшой опыт работы с электроникой и вы хотите начать работать с ПЛИС.У Papilio есть учебные пособия на сайте Papilio, а у Mojo есть учебные пособия на сайте Embedded Micro.

Этот пост призван пролить свет на огромный пробел в сообществе разработчиков ПО с открытым исходным кодом. По сей день (2013 год, на момент публикации этой статьи) FPGA все еще очень и очень трудно изучать и преподавать. Есть люди, которые хотят изучать логику и ПЛИС, но не интересуются этим предметом, потому что входной барьер все еще очень высок. Сообщество открытого исходного кода обязано снизить этот барьер для входа, но пока он все еще достаточно высок, чтобы отпугнуть даже опытных энтузиастов электроники.

Так что же делать? Лично у меня нет хорошего ответа. Такие люди, как Джек Гассетт и Джастин Раевски, мужественно взялись за распространение ПЛИС в массы, но многое еще предстоит сделать. Пройдет еще какое-то время (или никогда), пока ПЛИС не станут такими же дружелюбными, как, скажем, Arduino, но с достаточным количеством талантливых гиков, решающих эту проблему, мы сможем, по крайней мере, сделать программируемую логику менее пугающей.

Так что, по вашему мнению, будет следующим шагом? Что упростит изучение и использование ПЛИС? Если вы уже являетесь разработчиком, что облегчило вам обучение?


Хотите познакомиться с FPGA?

Мы вас прикрыли!

Плата TinyFPGA BX

Нет на складе DEV-14829

TinyFPGA BX — это небольшая плата FPGA со всеми компонентами и схемами, необходимыми для работы FPGA, при условии, что…

7

Плата TinyFPGA AX2

В наличии DEV-14828

Плата TinyFPGA A2 представляет собой простую коммутационную плату для ПЛИС XO2-1200.Несмотря на небольшие размеры, AX2 — невероятно мощный b…

Программист TinyFPGA

Нет на складе DEV-14827

Программатор TinyFPGA — это очень простой мост USB-JTAG, предназначенный для программирования потоков битов на платах TinyFPGA A1 и A2.

и nbsp

и nbsp

Лучшие платы FPGA для начинающих

Опубликовано вторник, окт.22 января 2019 г., 13:30

Присоединяйтесь к более чем 100 000 подписчиков AFP на Facebook

Приобрести подписку на AFP

Подпишитесь на подкасты AFP в iTunes и Spotify

Новости, пресс-релизы, письма в редакцию: [email protected]

По вопросам рекламы: [email protected]

Фото: Wrangler

Технология программируемой логики, такая как программируемые вентильные матрицы, также известные как ПЛИС, является обязательным набором инструментов для любого современного разработчика схем.Благодаря своим широким возможностям эти компоненты совместимы с широким спектром приложений.

ПЛИС

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

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

Выбор подходящей платы FPGA

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

Где купить платы для разработки в Интернете

Существует множество онлайн-платформ, на которых вы можете приобрести плату для разработки.Вы можете проверить сайты Altera или Xilinx, и вы найдете различные для продажи. Они объяснят, что вы можете с ними сделать.

Они могут быть как дешевыми, так и дорогими. Также при выборе учитывайте свою цель. Например, если вы никогда раньше не работали с платами Xilinx или Altera FPGA, вам следует поискать ту, которая ориентирована на новичков.

Если у вас есть небольшой опыт, вы можете выбрать более полные платы Xilinx или Altera FPGA, которые поставляются с руководствами по каждому разделу платы и способам их использования.

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

Digilent Arty S7: Спартан-7

Digilent Arty S & был выпущен в 2017 году. Несмотря на то, что это крошечное устройство, оно имеет множество полезных свойств. FPGA поставляется с четырьмя кнопками, четырьмя переключателями, четырьмя зелеными светодиодами, одной кнопкой сброса FPGA, одной кнопкой сброса платы и двумя светодиодами RGB. Кроме того, на плате разработки есть экран Arduino / chipKIT и разъемы Pmod для различных расширений.

Несмотря на то, что устройство поставляется с USB-портом для подачи питания для различных конструкций, плата позволяет подключать его через разъемы питания на 7 или 15 вольт, если вам нужно дополнительное напряжение. Вы также можете использовать внешний батарейный блок на разъемах Pmod платы. Ядро платы для разработки использует ПЛИС Xilinx.

Когда дело доходит до программного обеспечения, эта плата для разработки имеет лицензию Vivado WEBPACK с MicroBlaxaze, которая позволяет разработчикам создавать проекты процессоров с программным ядром, синтез высокого уровня и логический анализатор, который полезен при логической отладке.Синтез высокого уровня позволяет вам компилировать код C в HDL.

Настольный компьютер Parallella-16

Parallela — это отдельная плата для разработки с 16-ядерными сопроцессорами Epiphany и двухъядерным процессором ARM и FPGA. Программируемая машина предназначена для параллельной обработки.

Среди его примечательных функций — HDMI, USB, последовательные периферийные интерфейсы, Ethernet, 1 ГБ DDR3 SDRAM, 24 порта GPIO и Xilinx Zynq 7Z010.

Плата Xilinx Spartan 6 FPGA

Большинство экспертов советуют студентам и новичкам использовать эту доску, потому что она доступна по цене и проста в использовании.Некоторые из функций платы разработки включают встроенный I2C, UART и порт VGA для последовательной связи, порт клавиатуры PS / 2, переключатели, восемь семисегментных светодиодов, двенадцать одиночных светодиодов и образец кода VHDL.

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

Единственным недостатком платы для разработки Spartan 6 является ее несовместимость с Xilinx ISE, которая позволяет пользователям загружать файлы программирования на плату для разработки.

Несмотря на то, что Xilinx ISE может сгенерировать файл программирования, для загрузки данных в плату разработки потребуется другой загрузчик файлов. К сожалению, загрузчик на этой плате разработки также несовместим с программированием FPGA через кабель USB или JTAG. Таким образом, они используют кабели параллельной загрузки, которые представляют собой старый порт LPT и JTAG. Таким образом, студентам придется искать компьютер с LPT-портом, чтобы загружать файлы в доску для разработки.

Terasic DE10-Nano Development

Ядро разработки Terasic DE10 Nano может похвастаться Intel FCyclone V SoC FPGA, который использует усовершенствованный двухъядерный Cortext-AP, объединенный с лучшей программируемой логикой, позволяющей создавать гибкие конструкции.Плата для разработки также поставляется со встроенным USB-Blaster 2, сетью Gigabit Ethernet, 1 ГБ SDRAM, АЦП с 12-разрядным разрешением и 2 * 40-контактных разъема расширения.

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

HPS также имеет разъем MicroSD для дополнительной памяти. Когда дело доходит до программного обеспечения, плата разработки может похвастаться образцами дизайна и документацией C-Code и Verilog, пакетом поддержки Linux Board, пакетом поддержки OpenCL и служебной программой System Builder.

Basys 3 Плата для разработки Artix-7

Basys Artix 7 FPGA — это устройство начального уровня, специально созданное для Vivado Design Suite. Он включает в себя архитектуру Xilinx Artix-7. Эта модель является последней из серии плат FPGA Basys и идеально подходит для начинающих и студентов, которые только начинают изучать технологию FPGA.

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

Некоторые ключевые особенности этой платы разработки включают: скорость внутренней блокировки, превышающая 450 МГц, пять плиток управления тактовой частотой с петлей фазовой автоподстройки частоты, 1800 Кбит блочной ОЗУ, встроенный аналого-цифровой преобразователь, известный как XADC, последовательная флэш-память, 12-битный выход VGA, мост USB-UART, 16 пользовательских светодиодов , 16 пользовательских переключателей, клавиатуры, USB HID Host для мышей и карт памяти, а также порт USB-JTAG для связи и программирования FPGA.

Плата разработки Digilient Cmod A7 FPGA

Плата для разработки Cmod от Digilent — это компактное, но мощное устройство.Плата для разработки имеет 48-контактный корпус DIP с ПЛИС Xilinx Artix на ядре. Плата для разработки доступна в двух версиях: 35T и 15T. Эти две модели — отличные ученики и новички с ограниченным бюджетом.

Основное различие между 35T и 15T состоит в том, что первый имеет меньше триггеров, таблиц поиска и блочного ОЗУ. Кроме того, 15T меньше 35T. Его размеры 0,7 дюйма на 2,75 дюйма.

Плата для разработки включает мост USB-UART, схему программирования USB-JTAG, флэш-память Quad-SPI, хост-контроллер Pmod, базовые устройства ввода-вывода и SRAM.Кроме того, на платах FPGA есть две кнопки, два светодиода и один светодиод RGB.

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

Тем не менее, убедитесь, что вы хорошо изучили, прежде чем тратить деньги на FPGA, убедитесь, что вы покупаете плату у надежного поставщика — рынок также наводнен платами-клонами.

Связанные

Введение в архитектуру Zynq — Блог — Компания

История системы на кристалле (SoC)

Мы предпочитаем маленькое электронное устройство или большее? Часто ответ будет «меньший». Однако до коммерциализации небольших радиоприемников многие люди были заинтересованы в больших радиоприемниках из соображений экстравагантности. Впоследствии, в начале появления компактных радиоприемников, те, кто предпочитал яркость больших радиоприемников, отказались от использования компактных радиоприемников.Медленно, но верно огромные преимущества владения более компактным радиоприемником привели к распространению устройств меньшего размера. В наши дни развитие технологии позволяет передовым компаниям инкапсулировать различные части системы во все более мелкие устройства, вплоть до одного чипа, что добавило концепции System-on-Chip (SoC) в мир электроники. В качестве примера SoC я объясню полностью программируемую SoC Zynq-7000. Он состоит из двух жестких процессоров, программируемой логики (PL), блоков АЦП и многих других функций в одном кремниевом кристалле.

До изобретения Zynq процессоры были связаны с программируемой вентильной матрицей (FPGA), что усложняло обмен данными между программируемой логикой (PL) и системой обработки (PS). Архитектура Zynq, являющаяся последним поколением полностью программируемых семейств Xilix System-on-Chip (SoC), сочетает в себе двухъядерный ARM Cortex-A9 с традиционным (FPGA). Интерфейс между различными элементами в архитектуре Zynq основан на стандарте Advanced eXtensible Interface (AXI), который обеспечивает соединения с высокой пропускной способностью и низкой задержкой.

До внедрения процессора ARM в устройство Zynq пользователи использовали процессор с программным ядром, такой как Microblaze от Xilinx. Основным преимуществом использования Microblaze была и остается гибкость экземпляров процессора в проекте. С другой стороны, включение жесткого процессора в Zynq обеспечивает значительное улучшение производительности. Кроме того, за счет упрощения системы до одного чипа общая стоимость и физический размер устройства снижаются.

Рисунок 1: Общий вид Zynq

Zynq Design Flow

Процесс проектирования архитектуры Zynq имеет несколько общих шагов с обычной FPGA.Первый этап — определение спецификаций и требований к системе. Затем, на этапе проектирования системы, различные задачи (функции) назначаются для реализации в PL или PS, что называется разделением задач. Этот этап важен, потому что производительность всей системы будет зависеть от задач / функций, назначаемых для реализации в наиболее подходящей технологии: аппаратном или программном обеспечении.

Затем должны быть выполнены разработка и тестирование аппаратного и программного обеспечения.Что касается PL, задача состоит в том, чтобы определить необходимые функциональные блоки для достижения проектных характеристик, а также собрать их как IP и установить между ними соответствующие соединения. Точно так же деятельность программного обеспечения заключается в разработке кода для работы на PS. Следовательно, для завершения проектирования требуются системная интеграция и тестирование. На рис. 2 показан процесс проектирования Zynq SoC.

Рисунок 2: Этапы проектирования Zynq

Внутри Zynq

В этом разделе объясняются части PS и PL Zynq.

Блок обработки приложений (APU)

APU содержит два процессорных блока ARM Cortex-A9, каждый из которых обычно включает в себя блок NEON, блок с плавающей запятой (FPU), блок управления памятью (MMU) и кэш L1. Кроме того, APU также состоит из Snoop Control и кэшей L2. На рис. 3 показана структура ВСУ.

• NEON: это устройство обеспечивает функцию SIMD (Single Instruction Multiple Data), которая обеспечивает значительное ускорение DSP и мультимедийных алгоритмов для основного процессора ARM.
• FPU: Этот модуль обеспечивает ускорение операций с плавающей запятой.
• Кэш-память уровня 1: каждый процессор имеет свои собственные кеши инструкций и данных для хранения инструкций и данных.
• MMU: отвечает за преобразование адресов виртуальной памяти в адреса физической памяти.
• Блок управления Snoop (SCU): задача взаимодействия между процессорами, кэшами L1 и L2 является одной из основных задач SCU.
• Кэш L2: он совместно используется двумя процессорами, что позволяет им получать доступ к последнему обновлению переменной.

Рисунок 3: Структура блока обработки приложений

Программируемая логическая структура

Как и другие FPGA, программируемая логическая часть Zynq SoC состоит из конфигурируемых логических блоков (CLB), которые содержат два слайса. Каждый срез содержит четыре справочные таблицы (LUT), восемь триггеров (FF) и соответствующую матрицу переключения. Кроме того, есть также блочные RAM и DSP-слайсы. Инжир.4 показана структура ЛП.


• Slice: Каждый слайс состоит из ресурсов для реализации комбинаторных и последовательных схем.
• Справочная таблица (LUT): для реализации логической функции до шести входов, RAM, ROM или регистров сдвига используются LUT.
• Триггер (FF): этот последовательный элемент используется для реализации 1-битного регистра с функцией сброса.
• Матрица коммутации: обеспечивает соединения между различными частями внутри и между CLB, а также между другими частями PL.

Рисунок 4: Структура PL

Вышеупомянутое может показаться трудным, если вы новичок в Zynq. Но не волнуйтесь, чтобы упростить процесс обучения, Aldec TySOM EDK предоставляет различные учебные пособия как для начинающих, так и для более продвинутых пользователей Zynq. EDK включает в себя различные справочные материалы, которые помогут вам познакомиться с созданием проектов аппаратного и программного обеспечения как для автономных приложений, так и для приложений на базе Linux. Кроме того, есть несколько расширенных руководств для веб-серверов, шлюзов IoT с облаком Amazon, ADAS и т. Д.Существует также эталонный дизайн, который научит вас разрабатывать проект аппаратного и программного обеспечения от базового до продвинутого. Таким образом, независимо от того, насколько вы знакомы с устройствами Zynq, всегда есть чему поучиться. Ознакомьтесь со списком руководств по TySOM здесь.

Мои любимые уроки, перечисленные здесь:

Создание программно-аппаратного проекта для мигания светодиодами TySOM -1-7Z030

Сборка и настройка ОС Linux с использованием проекта Yocto — TySOM-1-7Z030

Учебное пособие по веб-серверу

— TySOM-1-7Z030

TySOM IoT Gateway с учебником Amazon Cloud — TySOM-1-7Z030

TySOM-1-7Z030 Эталонная конструкция, часть 1 и часть 2

TySOM EDK имеет все инструменты и оборудование, необходимые для начала разработки.От расширенного симулятора RTL Riviera-Pro до пакета проектирования Vivado и SDSoC для синтеза и ускорения проектирования. Встроенные платы разработки TySOM поставляются со всей периферией, необходимой для ваших проектов. Aldec также предоставляет различные типы дочерних плат FMC HPC для таких приложений, как сети, ADAS, IoT, последовательное соединение и т. Д. Итак, я действительно рекомендую вам проверить платы Aldec TySOM, TySOM EDK и дочерние платы для получения дополнительной информации.

Что такое FPGA и почему это важно?

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

Со стандартным чипом, таким как модуль Intel Curie на плате Arduino или процессор в вашем ноутбуке, чип полностью запечен.Его нельзя запрограммировать; вы получаете то, что получаете. С помощью этих микросхем пользователь может писать программное обеспечение, которое загружается на микросхему и выполняет функции. Позже это программное обеспечение можно заменить или удалить, но аппаратный чип не изменится.

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

Вы можете использовать FPGA, когда вам нужно оптимизировать микросхему для конкретной рабочей нагрузки или когда вам, вероятно, потребуется внести изменения на уровне микросхемы позже. ПЛИС используются в широком диапазоне областей — от оборудования для видео и обработки изображений до схем для компьютерных, автомобильных, аэрокосмических и военных приложений, в дополнение к электронике для специализированной обработки и многого другого. ПЛИС особенно полезны для создания прототипов специализированных интегральных схем (ASIC) или процессоров. ПЛИС можно перепрограммировать до тех пор, пока проект ASIC или процессора не станет окончательным и не будет содержать ошибок, и пока не начнется фактическое производство окончательной ASIC.Сама Intel использует FPGA для создания прототипов новых микросхем.

Фактически, Intel недавно приобрела компанию под названием eASIC, чтобы ускорить процесс проектирования и создания прототипов. eASIC производит нечто, называемое «структурированной ASIC», которая опирается на модель, которая находится между ASIC и FPGA. Как объясняется в этой статье AnandTech, со структурированным ASIC:

«Инженеры могут создать проект с использованием FPGA, а затем вместо того, чтобы тратить время на оптимизацию компоновки схемы, они запекают фиксированную компоновку в единую конструкционную маску для производства.Будучи фиксированной конструкцией, такой как ASIC, она работает быстрее, чем переменная конструкция, но без преимуществ, связанных с площадью кристалла, как у ASIC-подобной экономии энергии. Однако он был разработан во время FPGA, а не во времени ASIC (сэкономлено до шести месяцев), и экономит электроэнергию благодаря своей фиксированной конструкции ».

Так что же представляет собой реальный пример использования ПЛИС? В электронной книге FPGAs for Dummies соавторы Эндрю Мур и Рон Уилсон приводят простой пример FPGA камеры заднего вида для автомобиля. В этом примере камере может потребоваться 250 миллисекунд, чтобы захватить и показать изображение водителю.Если правила изменятся и потребуют, чтобы временной интервал составлял всего 100 миллисекунд, автомобиль может потребовать дорогостоящих и практически невозможных переделок, если бы камера полагалась на решение на основе микропроцессора. Однако с помощью FPGA новые правила могут быть выполнены и реализованы без нового оборудования или новых процессоров. Серийные автомобили, непроданные автомобили и уже проданные автомобили можно обновить с помощью простого перепрограммирования ПЛИС.

ПЛИС

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

Сегодня FPGA приобретают все большее значение в другой области: глубокие нейронные сети (DNN), которые используются для искусственного интеллекта (AI). Запуск моделей вывода DNN требует значительных вычислительных мощностей. Графические процессоры (GPU) часто используются для ускорения обработки логических выводов, но в некоторых случаях высокопроизводительные FPGA могут фактически превосходить графические процессоры при анализе больших объемов данных для машинного обучения.(В этой статье описан один из примеров этого, в котором ПЛИС Intel Stratix 10 превзошла графический процессор при тестировании.)

Microsoft уже применяет универсальность Intel FPGA для ускорения ИИ. Microsoft Project Brainwave предоставляет клиентам доступ к ПЛИС Intel Stratix через облачные сервисы Microsoft Azure. Облачные серверы, оснащенные этими ПЛИС, были настроены специально для работы с моделями глубокого обучения. Служба Microsoft позволяет разработчикам использовать возможности микросхем FPGA без приобретения и настройки специального оборудования и программного обеспечения.Вместо этого разработчики могут работать с распространенными инструментами с открытым исходным кодом, такими как Microsoft Cognitive Toolkit или среда разработки TensorFlow AI.

Узнайте больше о ПЛИС и других технических темах

От анализа данных до шифрования и разработки микросхем до моделей логического вывода ИИ — FPGA предлагают уровень производительности и универсальности, который понравится широкому кругу пользователей. Если вы думаете, что у FPGA может быть дом в вашем бизнесе, посетите Intel Acceleration Hub, чтобы узнать больше. А чтобы быть в курсе последней информации о ПЛИС и других актуальных технических темах, подписывайтесь на нас в нашем блоге, LinkedIn и Twitter.

Совместное использование флэш-памяти SPI между микроконтроллером и ПЛИС серии Xilinx 7 с помощью «MultiBoot» | Андреас Швайцер

Многие конструкции оборудования содержат ПЛИС и отдельный микроконтроллер. В нашем случае с камерой, FPGA Xilinx Artix-7 отвечает за настройку и считывание датчика изображения и обработку изображения, в то время как микроконтроллер Cypress FX3 обеспечивает соединение USB3 и функциональность приложения.

Прототип модуля видеокамеры USB3

В этом посте обсуждается вариант с одной общей микросхемой флэш-памяти для микропрограммного обеспечения микроконтроллера и данных конфигурации FPGA, где FPGA считывает поток битов в режиме «Master SPI».

Очевидным решением для хранения микропрограммного обеспечения микропроцессора и потока битов FPGA является использование двух отдельных микросхем флэш-памяти. Одна микросхема флэш-памяти подключена к шине SPI FX3, вторая — к FPGA. После включения питания FPGA использует режим «Master SPI» для чтения потока битов из флэш-памяти.

Вариант 1: отдельные микросхемы флэш-памяти для ПЛИС и микроконтроллера

Приятной особенностью решения с двумя отдельными микросхемами флэш-памяти является быстрый запуск ПЛИС и микроконтроллера после включения питания.Однако у решения есть и несколько недостатков. Отдельная микросхема флэш-памяти требует дополнительных затрат и требует места на печатной плате. Кроме того, для обновления прошивки задействованы как микроконтроллер, так и FPGA.

В своей заметке по применению XAPP583 «Использование микропроцессора для настройки ПЛИС серии 7 через ведомый последовательный или ведомый режим SelectMap» Xilinx описывает альтернативный вариант, в котором только микроконтроллер подключен к микросхеме флэш-памяти.

Вариант 2: одна микросхема флэш-памяти, подключенная к микроконтроллеру, конфигурация ПЛИС в режиме «Slave Serial» или «Slave SelectMAP».

Сначала микроконтроллер загружается с микросхемы флэш-памяти через его шину SPI.Во-вторых, микроконтроллер настраивает FPGA в режим «Slave Serial» или «Slave SelectMAP», считывая блоки данных битового потока и отправляя их в FPGA.

Этот альтернативный вариант позволяет сэкономить на стоимости второй микросхемы флэш-памяти и соответствующего места на плате, а также упрощает процесс обновления прошивки, поскольку только микроконтроллер должен записывать данные во флэш-микросхему. К сожалению, при таком подходе время запуска системы теперь намного меньше (в нашем случае около 5–10 секунд против ~ 1 секунды).Причина в том, что микроконтроллеру необходимо последовательно читать и отправлять блоки данных, а скорость передачи ограничена скоростью шины SPI микроконтроллера (33 МГц для FX3) и его способностью быстро переключать GPIO по битам для интерфейса конфигурации FPGA. .

В следующих разделах мы представляем третий вариант, который сочетает в себе быстрое время настройки варианта 1 с экономией затрат и простотой варианта 2.

Прежде чем мы сможем обсудить детали нашего варианта 3, давайте вернемся к серии Xilinx 7. Функция «MultiBoot», которой мы скоро будем злоупотреблять в собственных целях.

ПЛИС серии Xilinx 7 содержат интересную функцию под названием «MultiBoot». Подробности об этой функции можно найти в их узле приложений XAPP1247 «MultiBoot с ПЛИС 7-й серии и SPI». Вкратце, основная цель «MultiBoot» — предотвратить достижение ПЛИС состояния, при котором она больше не содержит рабочий проект из-за, например, прерывание во время обновления прошивки.

Функция MultiBoot серии Xilinx 7

В сценарии «MultiBoot» микросхема флэш-памяти содержит две версии конструкции FPGA: «золотой образ» и «образ обновления».«Золотой образ», также называемый «резервным образом», — это дизайн, который никогда не перезаписывается в процессе обновления прошивки. Во время запуска ПЛИС считывает это «золотое изображение», которое дает указание ПЛИС вместо этого загрузить «образ обновления». «Образ обновления» — это образ, который обновляется во время обновления прошивки.

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

Чтобы загрузить «обновленный образ», «золотой образ» содержит две специальные инструкции в потоке битов:

  • 30020001 : записать адрес в WBSTAR
  • 30008001 0000000F: записать IPROG в CMD

Первая инструкция загружает адрес в регистр адреса начала горячей загрузки WBSTAR, вторая инструкция запускает горячую перезагрузку путем внутренней генерации импульса PROGRAM, как если бы PROG_B был импульсным извне, но с той разницей, что пара регистров — особенно WBSTAR — сохранить свои ценности.

В нашей конструкции микроконтроллер и FPGA подключены к микросхеме флэш-памяти через SPI. Кроме того, микроконтроллер имеет доступ к интерфейсу настройки FPGA. Микросхема флэш-памяти содержит микропрограмму микроконтроллера по адресу ноль и поток битов FPGA с заданным смещением.

Вариант 3: Совместное использование флеш-чипа с «MultiBoot»

Запуск системы состоит из 3 отдельных этапов:

  • Сначала микроконтроллер загружается, считывая микропрограммное обеспечение с нулевого адреса флеш-памяти.Конфигурация FPGA задерживается на время загрузки микроконтроллера.
  • Во-вторых, микропрограммное обеспечение микроконтроллера обеспечивает «подчиненный последовательный» доступ к ПЛИС через выделенные линии состояния конфигурации и управления, а также подавляя сигналы порта SPI. Он отправляет FPGA (через «Slave Serial») запрос горячей загрузки с флэш-адресом потока битов FPGA в регистре WBSTAR.
  • В-третьих, и наконец, FPGA использует режим «Master SPI» для загрузки своего битового потока с адреса WBSTAR.

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

Давайте сначала посмотрим на упрощенную схему, чтобы обсудить реализацию.

Вариант 3: Упрощенная схема. Все подтягивающие / понижающие резисторы и согласующие резисторы не используются.

Четыре сигнала SPI распределяются между микроконтроллером, FPGA и микросхемой флэш-памяти. В микроконтроллере они подключены к стандартной шине SPI, с которой микроконтроллер может загружаться. В ПЛИС они подключены, так что ПЛИС может выполнять загрузку «Master SPI» с флеш-чипа.

Помимо порта SPI, 4 сигнала GPIO от микроконтроллера подключаются к линиям состояния конфигурации и управления ПЛИС. В частности, это PROG_B для запуска холодной перезагрузки, INIT_B для задержки конфигурации и отслеживания запуска конфигурации и DONE, которые FPGA использует для сигнализации об успешном завершении процесса конфигурации. Подключение к контактам MODE M1 и M2 позволяет переключаться между режимами конфигурации «Slave Serial» и «Master SPI».

Есть несколько моментов, которые необходимо решить или проверить, чтобы этот подход работал.

  • FPGA не должна вмешиваться в последовательность загрузки микроконтроллера.
  • Микроконтроллер должен иметь возможность перенастроить шину SPI, чтобы он мог использовать ее для отправки последовательности горячей загрузки на втором этапе.
  • Режим конфигурации должен быть переключен с «Slave Serial» на «Master SPI» между шагами 2 и 3.
  • Микроконтроллер не должен мешать FPGA, загружающему свой битовый поток на шаге 3.
  • Следует избегать проблем с целостностью сигнала .

Давайте пошагово рассмотрим три этапа настройки и то, что необходимо учитывать на каждом этапе в соответствии со списком пунктов выше.

Загрузка микроконтроллера

Этот шаг довольно прост. ПЛИС вообще не задействована, и микроконтроллер загружается с нулевого адреса флэш-памяти SPI.

Шаг 1. Микроконтроллер загружается с нулевого адреса флэш-памяти SPI

. Чтобы убедиться, что ПЛИС не мешает на этом этапе, его конфигурация задерживается путем заземления INIT_B (см. Запись ответа Xilinx 43174).

Примечание 1: на самом деле мы используем транзистор NPN, который по умолчанию подтягивает INIT_B к земле и может быть открыт через GPIO на микроконтроллере, поскольку мы не можем использовать GPIO во время загрузки микроконтроллера.

Дополнительное примечание 2: Чтобы обеспечить возможность восстановления в случае неудачного обновления прошивки, вы, вероятно, захотите реализовать двухэтапный процесс загрузки с отдельными загрузчиками и образами прошивки для микроконтроллера.

Горячая загрузка ПЛИС через «Slave Serial»

После завершения загрузки микроконтроллера и запуска микропрограммы он отменяет шину SPI, так что MISO теперь является выходом GPIO, а MOSI — входом.

Шаг 2: Микроконтроллер запускает горячую загрузку FPGA через «Slave Serial».

Он освобождает INIT_B и подает импульс PROG для инициации конфигурации. Через D3 он устанавливает контакты режима FPGA на M2: 0 = 111, что соответствует режиму «Slave Serial». FPGA выбирает выводы MODE на переднем фронте INIT_B (см., Например, запись ответа Xilinx 31977).

Затем микроконтроллер синхронизирует следующие 8 слов данных для запуска горячей загрузки по адресу битового потока FPGA:

  • FFFFFFFF AA995566 20000000: фиктивное слово, синхронизирующее слово, NOP
  • 30020001 : записать адрес битового потока в WBSTAR
  • 30008001 0000000F: Запуск горячей загрузки
  • 20000000: NOP

Перед запуском горячей загрузки микроконтроллер переключает контакты MODE на M2: 0 = 001, что является режимом «Master SPI».Вскоре после этого FPGA начинает последовательность горячей загрузки, которая может быть обнаружена как короткий импульс на землю на сигнале INIT_B.

Конфигурация FPGA «Master SPI»

Прошивка микроконтроллера фактически также извлекает INIT_B перед началом «горячей» загрузки, чтобы у него было достаточно времени, чтобы перенастроить свои GPIO. В частности, SCK и MISO заменяются на входы, чтобы они не мешали работе FPGA на следующем этапе.

После обновления конфигурации порта микроконтроллер освобождает INIT_B, чтобы FPGA могла запустить конфигурацию «Master SPI» с адреса в WBSTAR.

Шаг 3: FPGA загружает поток битов в режиме «Master SPI» с адреса в WBSTAR

. После завершения настройки FPGA сигнализирует DONE микроконтроллеру, который затем может продолжить выполнение прикладной программы.

Дополнительное примечание 3: вы, вероятно, захотите реализовать тайм-аут для обработки случая, когда конфигурация FPGA не работает и DONE не получает сигнал по прошествии определенного времени, возможно, с помощью механизма повторной попытки и / или режима восстановления.

Целостность сигнала

Совместное использование сигналов шины SPI между ПЛИС, микроконтроллером и микросхемой флэш-памяти может привести к проблемам с целостностью сигнала.Особенно чувствителен сигнал CCLK от FPGA, поскольку он имеет очень высокую скорость фронта (см. Xilinx UG470 «Конфигурация FPGA 7-й серии», например, стр. 39). Использование коротких дорожек и оконечных резисторов (не показанных на схемах выше) поможет, а схему в идеале следует смоделировать и протестировать. При необходимости вы также можете выделить выводы GPIO микропроцессора для включения оконечной нагрузки или подавать сигналы на землю через последовательный оконечный резистор вместо того, чтобы настраивать их как входы.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *