Видео

Примеры оформления больших проектов fpga. Использование плис в современных устройствах

Введение

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

В последнее время весьма успешно разрабатываются и системы синтеза схем по спецификациям на этом языке. Например, используя САПР Xilinx Foundation Series 2.1i, можно провести моделирование исходного описания схемы на языке VHDL, а затем синтезировать схему и получить файл настройки (конфигурации) микросхемы типа FPGA фирмы Xilinx. Использование САПР MAX+PLUSII позволяет решать аналогичные задачи для программируемых микросхем, выпускаемых фирмой Altera.

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

3 4
Язык VHDL развивается, ему посвящаются международные конференции, выходят научные журналы, в которых изучаются проблемы использования VHDL. Он стал языком разработки международных проектов, в том числе осуществляемых с помощью всемирной компьютерной сети Internet. Знакомство с этим языком необходимо для эффективной работы по созданию самой разнообразной электронной аппаратуры на современной элементной базе сверхбольших интегральных схем.

Лабораторная работа № 1

ОТЛАДЧИК FPGA EXPRESS

1. Общее описание работы

1.1. Цель работы – получение навыков для работы с отладчиком FPGA EXPRESS.

Лабораторная работа состоит из домашнего и лабораторного заданий. Домашнее задание заключается в самостоятельном освоении наиболее простых возможностей отладчика и ознакомлении с его назначением. Лабораторное задание включает ввод вашего варианта примера программы, написанной на VHDL, и освоение на ее примере принципов работы с отладчиком FPGA EXPRESS .

По методическому руководству ознакомиться с назначением и возможностями отладчика моделей цифровых устройств на языке VHDL.

3. Теоретическая часть

FPGA Express транслирует и оптимизирует описания VHDL во внутренний формат, эквивалентный уровню примитивных логических элементов. Этот формат затем компилируется в технологию FPGA.

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

Языки аппаратного описания.

Использование FPGA Express.

Модель процесса проектирования.

Министерство обороны США в 1982 году разработало VHSIC HDL (VHDL) как часть программы развития сверхвысокоскоростных ИС (VHSIC). VHDL описывает поведение, функции, входы и выходы цифровой схемы. VHDL по стилю и синтаксису аналогичен современным языкам программирования, однако, он включает много специфических аппаратных конструкций. FPGA Express читает и анализирует поддерживаемый синтаксис VHDL..

Языки аппаратного описания

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

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

Типичные применения HDL

5 6
HDL обычно поддерживают смешанные описания, в которых структурные конструкции или списки цепей могут соединяться с алгоритмическими описаниями и описаниями поведения. При наличии таких смешанно-уровневых описаний возможно отображать архитектуру системы на высшем уровне абстракции; затем проект детализируется по нарастающей для частного компонентно-уровневого выполнения. В качестве альтернативы используют описание проекта HDL в FPGA Express, а затем заставляют компилятор автоматически синтезировать выполнение на уровне логических примитивов.

Преимущества HDL

Методология проекта, использующего HDL, имеет несколько фундаментальных преимуществ перед традиционной компонентно-уровневой методологией проектирования. Среди этих преимуществ необходимо отметить следующие:

Вы можете очень рано проверить функциональные возможности проекта и немедленно промоделировать его. Моделирование проекта на таком высшем уровне до трансляции в элементарное исполнение позволяет протестировать многие архитектурные и проектные решения.

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

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

VHDL, как и большинство языков высокого уровня, производит жесткую проверку типов . Компоненты, тип которых объявлен четырехбитовым сигналом, не могут соединяться с трех- или пятибитовым сигналом; такое несогласование приведет к ошибке при компиляции. Если диапазон переменных определен от 1 до 15, то ошибка возникнет при назначении им значения 0. Некорректное использование типов является основным источником ошибок при составлении описаний. Проверка типов обнаруживает такие ошибки даже перед генерацией проекта.

Отладка в FPGA Express

Для отладки необходимо осуществить следующие действия:

7 8
Создать описание проектируемого устройства (компонента) на языке VHDL в любом текстовом редакторе. При этом необходимым условием является то, что расширение данного файла должно быть: *.vhd. (Например, для создания файла можно использовать встроенный редактор Norton Commander с помощью сочетания клавиш SHIFT - F4.)

2. Подключить созданный файл к проекту в FPGA Express.

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

Выбрать меню File / New.

Ввести название проекта.

При запросе файлов проекта необходимо найти файл(ы), созданный в 1 пункте с уже готовым описанием устройства (компонента).

При корректном подключении файла(ов) проекта появляется окно, разделенное на две части: Design Sources и Chips (рис. 1). Где Design Sources - окно для работы с файлами проекта, Chips - окно для работы с синтезированными устройствами.


Рис.1. Окно проекта

Для удобства работы с файлом(ами) проекта в окне Design Sources выводятся название(ия), расположение(ия) файла(ов), а также наличие синтаксических и лексических ошибок или неточностей.

При наведении курсор и одновременном нажатии правой кнопки мыши на любое из названий в данном окне появляется следующее контекстное меню (рис. 2):

Update Project - анализ проекта на наличие неточностей или ошибок.

Force Update Project - полный анализ всех фалов проекта на наличие ошибок или неточностей.

Create Implementation - создание модели устройства.

Edit File - редактирование файла.

Identify Sources - подключение файла к проекту.

New library - подключение собственной библиотеки к проекту.

Project Report - отчет проекта (краткое описание в виде внешнего текстового файла).

Remove - удаление файла или библиотеки из проекта.


Как и во всех приложениях с дружественным интерфейсом, каждый пункт контекстного меню дублируется простым меню и кнопками на панели.
Рис.3. Часть файла с ошибкой

Редактирование файла происходит аналогично текстовым редакторам, а единственным отличием является то, что удаление символов или строк можно производить только с помощью клавиши Back Space .

После исправления для поиска других существующих ошибок в данном окне необходимо нажать правую клавишу мыши и в активном контекстном меню выбрать пункт Analyze File (поиск неточностей или ошибок). Далее после успешного редактирования желательным является сохранение текущих изменений.

Если ошибки отсутствуют, то соответствующий файл будет иметь свой синтезированный вариант (т.е. модель устройства, описанную во внутреннем формате FPGA Express, как показано на рис. 4).

Рис.4. Знак синтезированного варианта устройства CODER

Синтезированный вариант является промежуточным звеном для успешного создания модели цифрового устройства.

4. Ход работы

4.1 С помощью любого текстового редактора набрать описание цифрового устройства в соответствии с вашим вариантом. Для предупреждения ошибок необходимо, чтобы файл имел расширение *.vhd.

4.2 Создать проект в отладчике FPGA Express и подключить к нему набранный файл.

4.3 После корректного подключения файла описания, создать с помощью FPGA Express отчет по вашему проекту.

Наименование;

Цель работы;

Используемое оборудование;

Теоретическую часть;

Описание последовательности действий при отладке вашего варианта;

Распечатку отчета по проекту;

1. Что собой представляет приложение FPGA Express и каковы его основные функции?

2. Каковы на ваш взгляд достоинства и недостатки языка HDL как языка аппаратного описания?

3. Какова последовательность действий при отладке VHDL описания вашего устройства?

11 12

Лабораторная работа № 2

ОСНОВНЫЕ ВОЗМОЖНОСТИ ОТЛАДЧИКА FPGA EXPRESS

1. Общее описание работы

1.1. Цель работы – изучение возможностей синтеза и оптимизации отладчика FPGA EXPRESS.

Лабораторная работа состоит из домашнего и лабораторного заданий. Домашнее задание заключается в повторении принципов отладки VHDL описаний. Лабораторное задание включает ввод вашего варианта примера программы, написанной на VHDL, и изучение принципов синтеза и оптимизации проектируемого устройства с помощью отладчика FPGA EXPRESS.

1.3. Используемое оборудование

Для выполнения лабораторной работы используется ПЭВМ типа IBM PC, цветной монитор с графическим адаптером VGA и выше, принтер.

2. Домашнее задание и методические указания по его выполнению

По методическому руководству ознакомиться и повторить назначения и возможности отладчика моделей цифровых устройств на языке VHDL.

3. Теоретическая часть

Методология проектирования

На рис. 5 приведена типичная процедура проектирования, которая использует FPGA Express и симулятор VHDL. Каждый шаг такой модели проектирования описан подробно.



Рис. 5. Структурная -схема этапов проектирования

13 14
1. Запись описания проекта на языке VHDL. Это описание может являться комбинацией структурных и функциональных элементов. Данное описание используется симуляторами FPGA Express и Synopsys VHDL.

2. Обеспечение языковых тестовых драйверов VHDL для симулятора. Драйвера обеспечивают тестовые вектора для моделирования и собирают выходные данные.

3. Моделирование проекта с помощью симулятора VHDL. Проверка правильности описания проекта.

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

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

6. Моделирование определенной технологической версии проекта с помощью симулятора VHDL. Допускается использовать оригинальные драйверы моделирования VHDL из пункта 2, поскольку определения модулей и портов сохраняются в процессе трансляции и оптимизации.

7. Сравнение выхода моделирования на элементном уровне (п. 6) с выходом моделирования оригинального описания VHDL (п. 3) для проверки того, что исполнение является корректным.

Иерархия проекта

FPGA Express поддерживает иерархические границы, определяемые при использовании структурных конструкций VHDL. Эти границы приводят к двум основным результатам:

1. Каждый проектный объект, определяемый в описании VHDL, синтезируется отдельно и поддерживается в виде независимого проекта. При этом учитываются проектные ограничения, и каждый объект может быть оптимизирован отдельно в FPGA Express.

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

Примечание. FPGA Express не поддерживает и не создает автоматически иерархию других неструктурных конструкций VHDL, таких, как блоки, процессы, циклы, функции и процедуры. Эти элементы описания VHDL транслируются в контексте своих проектов. После чтения проекта VHDL вы можете сгруппировать вместе логику процесса, функции или процедуры внутри окна выполнения FPGA Express (Implementation Window).

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

Пример иерархической структуры сложного устройства показан на рис. 6

Рис. 6. Иерархическая структура

Типы данных

В VHDL необходимо назначать тип всем портам, сигналам и переменным. Тип данных объекта определяется операцией, которая может быть ему назначена. Например, оператор AND определяется для объектов типа BIT, но не для объектов типа INTEGER . Типы данных важны и при синтезе проекта. Тип данных объекта определяет его размер (ширину в битах) и битовую организацию. Правильный выбор типов данных значительно улучшает качество проекта и помогает минимизировать количество ошибок.

Проектные ограничения

Необходимо описать качественные ограничения модуля проекта внутри FPGA Express Implementation Window.

Выбор регистра

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

1. Реализовать регистры непосредственно в описании VHDL, выбрав любой нужный элемент из библиотеки FPGA. Тактирующие схемы могут быть произвольной сложности. Выбирается архитектура, базирующаяся на триггерах или защелках. Основными недостатками такого подхода являются:

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

Программа пишется более сложно.

15 16
2. Использовать структуры if и wait , чтобы вывести триггера и защелки из описания. Преимущества такого подхода прямо противоположны недостаткам предыдущего. При использовании логического описания регистра программа VHDL становится технологически независимой и более легкой для написания. Этот метод позволяет FPGA Express выбирать тип описываемого компонента в зависимости от ограничений. Таким образом, если необходим специфический компонент, должна использоваться его реализация. Тем не менее, некоторые типы регистров и защелок не могут быть описаны логически.

Асинхронные проекты

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

Языковые конструкции

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

Лабораторная работа № 3

СИМУЛЯТОР VHDL МОДЕЛЕЙ MODELSIM

1. Общее описание работы

1.1. Цель работы – знакомство с симулятором VHDL моделей ModelSim.

Лабораторная работа состоит из домашнего и лабораторного заданий. Домашнее задание заключается в повторении принципов отладки, синтеза и оптимизации VHDL описаний с помощью отладчика FPGA Express. Лабораторное задание включает ввод варианта примера программы написанной на VHDL и осуществить моделирование и анализ вашего устройства с помощью симулятора ModelSim.

1.3. Используемое оборудование

Для выполнения лабораторной работы используется ПЭВМ типа IBM PC, цветной монитор с графическим адаптером VGA и выше, принтер.

2. Домашнее задание и методические указания по его выполнению

По методическому руководству ознакомиться и повторить назначения и все основные возможности отладчика моделей цифровых устройств на языке VHDL.

3. Теоретическая часть

21 22
ModelSim – это система моделирования, которая позволяет провести моделирование описаний, представленных на языках VHDL и HDL. При этом необходимым условием для простого моделирования является наличие описания активной модели устройства, т.е. в течение определенного периода времени на входе и соответственно на выходе данной модели должны происходить изменения логических состояний. Например: существует описание элементарного элемента Шеффера (рис. 10).

Рис. 10. Схема активного цифрового устройства

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

Моделирования в ModelSim

При отсутствии ошибок на этапах подключения файла с исходным активным устройством для моделирования можно начать сам процесс моделирования.

В зависимости от целей моделирования в системе ModelSim предусмотрены: коноль за временной дискретизацией моделирования, а также возможность непосредственного наблюдения практически за всеми ключевыми процессами, происходящими устройстве (последнее будет рассмотрено в следующей лабораторной работе).

Рассмотрим средства контроля за моделированием. В этом смысле для полноценного контроля за процессом моделирования необходимы: главное меню Run и Options. В меню Run для контроля предназначены все пункты, а в меню Options - пункт Simulate Options (установка частных параметров моделирования).

При активизации пункта Simulate Options появляется панель ввода параметров моделирования(рисунок 14).

В данной панели содержится три вкладки:

VSIM - непосредственно параметры моделирования. Здесь устанавливаются следующие параметры:

Default Run length - установка минимальной временной дискретизации процесса моделирования.

27 28
Iteration Limit - максимальная длительность итерации.

Suppress Warnings - отключение/включение реакции системы на предупреждения, связанные с различного рода неточностями.

Default Force Kind - установка возможности управления процесса моделирования (Freeze (отсутствие контроля)/ Drive (управление)/ Deposit (полностью под контролем)).

Default Radix - вид сигнала по умолчанию (Symbolic (символьный) /binary (двоичный) / octal (восьмеричный) /decimal(десятичный)/hex(шестнадцатеричный)).

Рисунок 14 - панель Simulate Options

Ase ащитный действия системы на различного рода ошибки (рис. 15):

rtion - Break On моделирования. (Note (комментарий) /warning (ошибка)).

Ignore Assertions for - установка границ пренебрежения системой защиты. (Note (комментарий)/ warning (неточность)/ error(- установки параметров вывода исходного файла в окне Source ошибка)/ failure ("провал")).

действий системы


4. Ход работы

5. Указания

Теоретическую часть;

Описание последовательности действий при установкие описания устройства для моделирования;

Выводы по проделанной работе.

5.2. Контрольные вопросы к лабораторной работе

1. В чём заключается необходимость использования систем моделирования подобных ModelSim.

2. Каковы недостатки системы, если таковые присутствуют?

3. Какова на ваш взгляд область применения системы ModelSim?

29 30

Лабораторная работа № 4

СИМУЛЯТОР MODELSIM

1. Общее описание работы

1.1. Цель работы – получение навыков для моделирования проектируемых устройств в системе ModelSim.

Лабораторная работа состоит из домашнего и лабораторного заданий. Домашнее задание заключается в повторении принципов работы с симулятором ModelSim, освоенных в предыдущей лабораторной работе. Лабораторное задание состоит в подключении вашего варианта примера программы, написанной на VHDL, и в проведении полноценного моделирования и анализа проектируемого устройства с помощью ModelSim.

1.3. Используемое оборудование

Для выполнения лабораторной работы используется ПЭВМ типа IBM PC, цветной монитор с графическим адаптером VGA и выше, принтер.

2. Домашнее задание и методические указания по его выполнению

Повторить материал, освоенный на предыдущих занятиях.

3. Теоретическая часть


и вывода) / Internal Signals (внутренние сигналы)).

Для этого в ModelSim была создана система информационных и функционально-информационных окон (главное меню View). Главным условием работы всех окон является корректно подключенный исходный файл с VHDL описанием моделируемого устройства.

Рассмотрим принципы работы с ним:

1. Source - окно с содержанием исходного VHDL - файла (рис. 16). Позволяет устанавливать точки останова (для этого необходимо двойное нажатие левой кнопкой мыши на номере строки). Для изменения содержимого окна нужно активизировать пункт Select Source File... главного меню File (поменять исходный файл можно только на файл, подключенный к проекту), либо двойное нажатие левой кнопкой мыши в окне по оформлению отчета и Контрольные вопросы

5.1. Отчет по лабораторной работе должен содержать:

Наименование;

Цель работы;

используемое оборудование;Structure на названии необходимого файла. Замечание: окно не позволяет редактировать исходные файлы.


Рис.16. Окно Source

2. Structure - окно содержащее структуру и подчиненность файлов проекта (рис. 17). Несет вспомогательную функцию для окна Source.

Рис. 17. Окно Structure


3. Variables - окно содержит все внутренние переменный конструкции языка VHDL используемые для описания текущей подключенной модели (рис. 18). Несет только информационную функцию.

4. Signals – окно, содержащее список и значения всех портов ввода/вывода и сигналов (рис. 19). Окно фиксирует любые изменения содержимого всех портов ввода/вывода и сигналов. Существует возможность удаления, добавления или установки ограниченного числа сигналов или портов в данном окне в зависимости

Value - текущее значение сигнала.

Рис. 21. Окно Force Signal

Delay - время задержки текущего значения сигнала (масштаб значения указывается справа от поля ввода).

Second Value значение - следующего состояния данного сигнала или порта ввода/вывода.

: для вводить именно тот тип задержки перед изменением текущкомендуется значения, который Примечание предупреждения ошибок, связанных с моделированием устройства, реDelay for second Value - значение предусмотрен для проектируемого устройства.

его состояния на последующее (Second Value). Примечание: значение данного поля должно быть обязательно обоех задержек сигналов.


Repeat Every - данное поле является необязательным параметром для проведения моделирования, т.к. подразумевает период повторений изменений состояния порта ввода/вывода или значения сигнала. Поле является включенным в основные параметры изменений при активизированном напротив него флажке.

Примечание: значение данного поля должно быть обязательно больше значения в поле Delay for second Value, поскольку начальная точка временного отсчета процесса моделирования является общей для всех задержек сигналов.

Kind - установка степени автономности производимых изменений. (Freeze (система автономно управляет изменениями) / Drive (возможность управления) / Deposit (бесконтрольное управление проектировщиком)).

Для подтверждения введенных параметров изменений сигнала или порта ввода/вывода следует нажать кнопку Apply.

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

Есть возможность установки ограниченного списка сигналов с помощью окна Signal, где можно выделить самые необходимые из них, и пункта Add to List (подпункт Selected Signals (осуществляет добавление выделенной группы в окно List)). Кроме этого в список могут быть внесены все сигналы текущего проекта (с помощью подпункта Signals in Design), все активные сигналы в данный момент моделирования (с помощью подпункта Signals in Region) или сигналы, участвующие в каком-либо информационном потоке (с помощью окна Dataflow (выделение необходимого потока) и подпункта Signals from DataFlow...).

Примечание.

Mинимальный шаг регистрации изменений значений сигналов устанавливается в параметрах процесса моделирования (Options.../ Simulate Options...). В окне предусмотрены различные опции связанные с фиксированием изменений сигналов и сохранения полученной таблицы в отдельном файле.

6. Process – окно, содержащее название и состояние VHDL -процессов текущего моделируемого устройства (рис. 23). Имеется возможность ограниченного вывода процессов при использовании пункта Processes в главном меню Options (возможно вывести все активные процессы (View Active Processes) или активные процессы на текущем шаге (итерации) моделирования).

Рис. 23. Окно Process

7. Wave – окно, необходимое для вывода временных диаграмм определенного набора сигналов или портов ввода/вывода (рис. 24).

Рис. 24. Окно Wave

Окно обладает всеми свойствами гибкого средства наблюдения за изменениями сигналов во временных рамках самого процесса моделирования. В совокупности с окном Signals и пунктом Add to Waveform главного меню Signals данное окно имеет возможность определения ограниченного списка сигналов подпункт Selected Signals (установка в рабочий список сигналов, выделенных в окне Signals), подпункт Signals in Region (наблюдение за активными сигналами на текущей итерации моделирования), подпункт Signals in Design (установка всех сигналов проекта), подпункт Signals from DataFlow (установка сигналов, участвующих в выбранном информационном потоке, из окна DataFlow)). Как и все функциональные окна, это окно имеет возможности для работы со списком выводимых сигналов (меню окна Cursor и Edit), позволяет управлять выводом временных диаграмм (меню окна Zoom и Options). Дополнительным вспомогательным средством является бегунок (устанавливается в любой точке на диаграмме с помощью мыши), фиксирующий время моделирования в текущем положении. Кроме этого при изменении положения бегунка, если в следующем положении меняются значения какого-либо из сигналов, соответствующие изменения регистрируются в списке изображаемых сигналов (слева от диаграмм, как это показано на рис. 24).

8. DataFlow – окно, выводящее организацию всех информационных потоков, присутствующих в моделируемом устройстве (рис. 25).

Рис. 25. Окно DataFlow

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

Signals (данное окно позволяет выбрать рассматриваемый(ые) сигнал(ы) для дальнейшей визуализации связанных с ним(ними) информационных потоков в окне DataFlow).

Process (с помощью этого окна можно выбрать процесс для дальнейшей демонстрации его информационных потоков).

4. Ход работы

4.1. С помощью любого текстового редактора набрать описание цифрового устройства в соответствии с вашим вариантом. Для предупреждения ошибок необходимо, чтобы файл имел расширение *.vhd.

4.2. Создать проект в системе моделирования ModelSim и подключить к нему набранный и отлаженный в FPGA Express файл.

4.3. После корректного подключения файла описания осуществить установку системы для тестирования вашего устройства.

4.4. Провести тестирование и полный анализ вашего цифрового устройства в соответствии с вашим вариантом.

5. Указания по оформлению отчета и Контрольные вопросы

5.1. Отчет по лабораторной работе должен содержать:

Наименование;

Цель работы;

Используемое оборудование;

Теоретическую часть;

Описание последовательности действий при процессе анализа и моделирования вашего варианта;

Распечатку всех состояний, всех сигналов;

Распечатку вашего исходного файла;

Распечатку временных диаграмм и процессов;

Выводы по проделанной работе.

5.2. Контрольные вопросы к лабораторной работе

1. Каковы основные функции окон Signals и Wave ?

2. Насколько важна визуализация структуры информационных потоков в устройстве при проектировании?

37 38
3. Устройства с какими типами сигналов, на ваш взгляд, могут быть протестированы в симуляторе ModelSim ?

Лабораторная работа № 5

ЗНАКОМСТВО С ЯЗЫКОМ VHDL

1. Общее описание работы

Представьте, что процессор вместо того, чтобы выполнять определенный набор инструкций, будет перестраиваться под каждую программу и превращать алгоритм непосредственно в «железо». Именно так и работают FPG. В сегодняшней статье я расскажу, как вообще такое возможно, и познакомлю вас с различными методами проектирования FPGA.

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

Что такое FPGA?

FPGA расшифровывается как field-programmable gate array (программируемые пользователем вентильные матрицы, ППВМ). В более общем случае они называются ПЛИС - программируемые логические интегральные схемы.

С помощью FPGA можно в прямом смысле этого слова, проектировать цифровые микросхемы, сидя у себя дома с доступной отладочной платой на столе и ПО разработчика за несколько тысяч зеленых рублей. Но, есть и бесплатные варианты. Заметьте: именно проектировать, а не программировать, потому что на выходе мы получим физическую цифровую схему, выполняющую определенный алгоритм на аппаратном уровне, а не прогу для проца.

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

Пока мы не настроим FPGA, внутри микросхемы просто нет логики для обработки данных с интерфейсов, и посему работать конечно же ничего не будет. Но в результате проектирования будет создана прошивка, которая после загрузки в FPGA создаст необходимую нам цифровую схему. Таким образом можно создать контроллер 100G Ethernet, который будет получать и обрабатывать сетевые пакеты.

Важная особенность FPGA - возможность перенастройки. Допустим сейчас нам нужен контроллер 100G Ethernet, а через неделю эта же плата может использоваться для реализации независимых четырех интерфейсов 25G Ethernet.

На рынке работают два лидера в производителя FPGA-чипов: всеми известный Intel и Xilinx. Они контролируют 58 и 42% рынка. Первый свой чип FPGA основатели Xilinx изобрели в далеком 1985 году. Intel пришла на рынок совсем недавно - в 2015 году, поглотив компанию Altera, которая была основана в то же время, что и Xilinx. Технологии Altera и Xilinx во многом схожи, как и среды разработки. Чаще я работал с продуктами компании Xilinx, поэтому не удивляйтесь ее постоянному упоминанию в статье.

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

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

Принцип работы FPGA

Микросхема FPGA - это та же заказная микросхема ASIC, состоящая из таких же транзисторов, из которых собираются триггеры, регистры, мультиплексоры и другие логические элементы для обычных схем. Изменить порядок соединения этих транзисторов, конечно, нельзя. Но архитектурно микросхема построена таким хитрым образом, что можно изменять коммутацию сигналов между более крупными блоками: их называют CLB - программируемые логические блоки.

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

Так как конфигурационная память построена по технологии Static RAM, то, во-первых, при включении питания FPGA микросхему обязательно надо сконфигурировать, а во-вторых, микросхему можно реконфигурировать практически бесконечное количество раз.

Очень упрощенная 2D-структура микросхемы без конфигурационной памяти

Блоки CLB находятся в коммутационной матрице, которая задает соединения входов и выходов блоков CLB.

Схема коммутационной матрицы

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

CLB

CLB очень упрощенно состоит из блока, задающего булеву функцию от нескольких аргументов (она называется таблицей соответствия - Look Up Table, LUT) и триггера (flip-flop, FF). В современных FPGA LUT имеет шесть входов, но на рисунке для простоты показаны три. Выход LUT подается на выход CLB либо асинхронно (напрямую), либо синхронно (через триггер FF, работающий на системной тактовой частоте).

Принцип реализации LUT

Интересно посмотреть на принцип реализации LUT. Пусть у нас есть некоторая булева функция y = (a & b) | ~ c . Ее схемотехническое представление и таблица истинности показаны на рисунке. У функции три аргумента, поэтому она принимает 2^3 = 8 значений. Каждое из них соответствует своей комбинации входных сигналов. Эти значения вычисляются программой для разработки прошивки ПЛИС и записываются в специальные ячейки конфигурационной памяти.

Значение каждой из ячеек подается на свой вход выходного мультиплексора LUT, а входные аргументы булевой функции используются для выбора того или иного значения функции. CLB - важнейший аппаратный ресурс FPGA. Количество CLB в современных кристаллах FPGA может быть разным и зависит от типа и емкости кристалла. У Xilinx есть кристаллы с количеством CLB в пределах примерно от четырех тысяч до трех миллионов.

Помимо CLB, внутри FPGA есть еще ряд важных аппаратных ресурсов. Например, аппаратные блоки умножения с накоплением или блоки DSP. Каждый из них может делать операции умножения и сложения 18-битных чисел каждый такт. В топовых кристаллах количество блоков DSP может превышать 6000.

Другой ресурс - это блоки внутренней памяти (Block RAM, BRAM). Каждый блок может хранить 2 Кбайт. Полная емкость такой памяти в зависимости от кристалла может достигать от 20 Кбайт до 20 Мбайт. Как и CLB, BRAM и DSP-блоки связаны коммутационной матрицей и пронизывают весь кристалл. Связывая блоки CLB, DSP и BRAM, можно получать весьма эффективные схемы обработки данных.

Преимущества FPGA

Первый чип FPGA, созданный Xilinx в 1985 году, содержал всего 64 CLB. В то время интеграция транзисторов на микросхемах была намного ниже, чем сейчас, и в цифровых устройствах часто использовались микросхемы «рассыпной логики». Были отдельно микросхемы регистров, счетчиков, мультиплексоров, умножителей. Под конкретное устройство создавалась своя печатная плата, на которой устанавливались эти микросхемы низкой интеграции.

Использование FPGA позволило отказаться от такого подхода. Даже FPGA на 64 CLB значительно экономит место на печатной плате, а доступность реконфигурации добавила возможность обновлять функциональность устройств уже после изготовления во время эксплуатации, как говорят «in the field» (отсюда и название - field-programmable gate array).

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

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

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

Однако, на мой взгляд, существуют более интересные применения ПЛИС. Гибкая структура FPGA позволяет реализовывать аппаратные схемы для высокоскоростной и параллельной обработки данных с возможностью изменить алгоритм.


Сравнение аппаратных платформ

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

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

На другой стороне находится ASIC. На этой платформе требуемый алгоритм реализуется аппаратно за счет прямого соединения транзисторов, все операции связаны только с выполнением алгоритма и нет никакой возможности изменить его. Отсюда максимальная производительность и наименьшее энергопотребление платформы. А вот перепрограммировать ASIC невозможно.

Справа от CPU находится GPU. Изначально эти микросхемы были разработаны для обработки графики, но сейчас используются и для майнинга вычислений общего назначения. Они состоят из тысяч небольших вычислительных ядер и выполняют параллельные операции над массивом данных.

Если алгоритм можно распараллелить, то на GPU получится добиться значительного ускорения по сравнению с CPU. С другой стороны, последовательные алгоритмы будут реализовываться хуже, поэтому платформа оказывается менее гибкой, чем CPU. Также для разработки под GPU надо иметь специальные навыки, знать OpenCL или CUDA.

Наконец, FPGA. Эта платформа сочетает эффективность ASIC с возможностью менять программу. ПЛИС не универсальны, но существует класс алгоритмов и задач, которые на них будут показывать лучшую производительность, чем на CPU и даже GPU. Сложность разработки под FPGA выше, однако новые средства разработки делают этот разрыв меньше.

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

Использование FPGA позволяет решать эту задачу мгновенно: байты пакета еще только начали поступать в микросхему из сетевого интерфейса, а его заголовок уже анализируется. Использование процессоров тут может существенно замедлить скорость обработки сетевого трафика. Ясно, что для маршрутизаторов можно сделать заказную микросхему ASIC, которая будет работать наиболее эффективно, но что, если правила обработки пакетов должны меняться? Достичь требуемой гибкости в сочетании с высокой производительностью поможет только FPGA.

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

FPGA in the cloud

В облачных вычислениях FPGA применяются для быстрого счета, ускорения сетевого трафика и осуществления доступа к массивам данных. Сюда же можно отнести использование FPGA для высокочастотной торговли на биржах. В серверы вставляются платы FPGA с PCI Express и оптическим сетевым интерфейсом производства Intel (Altera) или Xilinx .

На FPGA отлично ложатся криптографические алгоритмы, сравнение последовательностей ДНК и научные задачи вроде молекулярной динамики. В Microsoft давно используют FPGA для ускорения поискового сервиса Bing, а также для организации Software Defined Networking внутри облака Azure.

Бум машинного обучения тоже не обошел стороной FPGA. Компании Xilinx и Intel предлагают средства на основе FPGA для работы с глубокими нейросетями. Они позволяют получать прошивки FPGA, которые реализуют ту или иную сеть напрямую из фреймворков вроде Caffe и TensorFlow.

Причем это все можно попробовать, не выходя из дома и используя облачные сервисы. Например, в Amazon можно арендовать виртуальную машину с доступом к плате FPGA и любым средствам разработки, в том числе и machine learning .

FPGA on the edge

Что еще интересное делают на FPGA? Да чего только не делают! Робототехника, беспилотные автомобили, дроны, научные приборы, медицинская техника, пользовательские мобильные устройства, умные камеры видеонаблюдения и так далее.

Традиционно FPGA применялись для цифровой обработки одномерных сигналов (и конкурировали с процессорами DSP) в устройствах радиолокации, приемопередатчиках радиосигналов. С ростом интеграции микросхем и увеличением производительности платформы FPGA стали все больше применяться для высокопроизводительных вычислений, например для обработки двумерных сигналов «на краю облака» (edge computing).

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

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

Что до робототехники и дронов, то в этой сфере как раз особенно важно выполнять два условия - высокая производительность и низкое энергопотребление. Платформа FPGA подходит как нельзя лучше и может использоваться, в частности, для создания полетных контроллеров для беспилотников . Уже сейчас делают БПЛА, которые могут принимать решения на лету.

Разработка проекта на FPGA

Существуют разные уровни проектирования: низкий, блочный и высокий. Низкий уровень предполагает использование языков типа Verilog или VHDL, на которых вы управляете разработкой на уровне регистровых передач (RTL - register transfer level). В этом случае вы формируете регистры, как в процессоре, и определяете логические функции, изменяющие данные между ними.

Схемы FPGA всегда работают на определенных тактовых частотах (обычно 100–300 МГц), и на уровне RTL вы определяете поведение схемы с точностью до такта системной частоты. Эта кропотливая работа приводит к созданию максимально эффективных схем с точки зрения производительности, потребления ресурсов кристалла FPGA и энергопотребления. Но тут требуются серьезные скиллы в схемотехнике, да и с ними процесс небыстрый.

На блочном уровне вы занимаетесь в основном соединением уже готовых крупных блоков, которые выполняют определенные функции, для получения нужной вам функциональности системы на кристалле (system-on-chip).

На высоком уровне проектирования вы уже не будете контролировать данные на каждом такте, вместо этого сконцентрируешься на алгоритме. Существуют компиляторы или трансляторы с языков C и C++ на уровень RTL, например Vivado HLS. Он довольно умный и позволяет транслировать на аппаратный уровень широкий класс алгоритмов.

Главное преимущество такого подхода перед языками RTL - ускорение разработки и особенно тестирования алгоритма: код на C++ можно запустить и верифицировать на компьютере, и это будет намного быстрее, чем тестировать изменения алгоритма на уровне RTL. За удобство, конечно, придется заплатить - схема может получиться не такой быстрой и займет больше аппаратных ресурсов.

Часто мы готовы платить эту цену: если грамотно использовать транслятор, то эффективность не сильно пострадает, а ресурсов в современных FPGA достаточно. В нашем мире с критичным показателем time to market это оказывается оправданным.

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

Кадры с камеры будут передаваться в FPGA по интерфейсу, который заведомо определен производителем сенсора (USB тут не катит), обрабатываться и выводиться на монитор. Для обработки кадров понадобится фреймбуфер, который обычно находится во внешней памяти DDR, установленной на печатной плате рядом с микросхемой FPGA.


Типичная блок-схема проекта FPGA

Если производитель видеосенсора не предоставляет Interface IP для нашей микросхемы FPGA, то нам придется писать его самостоятельно на языке RTL, считая такты, биты и байты в соответствии со спецификацией протокола передачи данных. Блоки Preprocess, DDR Controller и HDMI IP мы, скорее всего, возьмем готовые и просто соединим их интерфейсы. А блок HLS, который выполняет поиск и обработку поступающих данных, мы можем написать на C++ и транслировать при помощи Vivado HLS.

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

Рассмотрим путь проектирования от написания кода RTL до получения конфигурационного файла для загрузки в FPGA.

Путь проектирования

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

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

Далее логически верифицированный код подается на вход программе-синтезатору. Она преобразует текстовое описание схемы в связанный список цифровых элементов из библиотеки, доступной для данного кристалла FPGA. В этом списке будут отображены такие элементы, как LUT, триггеры, и связи между ними. На этой стадии элементы пока никак не привязаны к конкретным аппаратным ресурсам. Чтобы это сделать, требуется наложить на схему ограничения (Constraints) - в частности, указать, с какими физическими контактами ввода-вывода микросхемы FPGA связаны логические входы и выходы вашей схемы.

В этих ограничениях также требуется указать, на каких тактовых частотах должна работать схема. Выход синтезатора и файл ограничений отдаются процессору Implementation, который, помимо прочего, занимается размещением и трассировкой (Place and Route).

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

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

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

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

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

65 нанометров - следующая цель зеленоградского завода «Ангстрем-Т», которая будет стоить 300-350 миллионов евро. Заявку на получение льготного кредита под модернизацию технологий производства предприятие уже подало во Внешэкономбанк (ВЭБ), сообщили на этой неделе «Ведомости» со ссылкой на председателя совета директоров завода Леонида Реймана. Сейчас «Ангстрем-Т» готовится запустить линию производства микросхем с топологией 90нм. Выплаты по прошлому кредиту ВЭБа, на который она приобреталась, начнутся в середине 2017 года.

Пекин обвалил Уолл-стрит

Ключевые американские индексы отметили первые дни Нового года рекордным падением, миллиардер Джордж Сорос уже предупредил о том, что мир ждет повторение кризиса 2008 года.

Первый российский потребительский процесор Baikal-T1 ценой $60 запускают в массовое производство

Компания «Байкал Электроникс» в начале 2016 года обещает запустить в промышленное производство российский процессор Baikal-T1 стоимостью около $60. Устройства будут пользоваться спросом, если этот спрос создаст государство, говорят участники рынка.

МТС и Ericsson будут вместе разрабатывать и внедрять 5G в России

ПАО "Мобильные ТелеСистемы" и компания Ericsson заключили соглашения о сотрудничестве в области разработки и внедрения технологии 5G в России. В пилотных проектах, в том числе во время ЧМ-2018, МТС намерен протестировать разработки шведского вендора. В начале следующего года оператор начнет диалог с Минкомсвязи по вопросам сформирования технических требований к пятому поколению мобильной связи.

Сергей Чемезов: Ростех уже входит в десятку крупнейших машиностроительных корпораций мира

Глава Ростеха Сергей Чемезов в интервью РБК ответил на острые вопросы: о системе «Платон», проблемах и перспективах АВТОВАЗа, интересах Госкорпорации в фармбизнесе, рассказал о международном сотрудничестве в условиях санкционного давления, импортозамещении, реорганизации, стратегии развития и новых возможностях в сложное время.

Ростех "огражданивается" и покушается на лавры Samsung и General Electric

Набсовет Ростеха утвердил "Стратегию развития до 2025 года". Основные задачи – увеличить долю высокотехнологичной гражданской продукции и догнать General Electric и Samsung по ключевым финансовым показателям.

Представь, что процессор вместо того, чтобы выполнять набор инструкций, будет перестраиваться под каждую программу и превращать алгоритм непосредственно в «железо». Именно так и работают FPGA! В этой статье я расскажу, как такое возможно, и познакомлю тебя с разными способами проектирования FPGA.

Может быть, ты умеешь взламывать устройства на другом конце света или кодить крутые веб-приложения, но понимаешь ли ты, как работает твой компьютер? И речь не о том, что делает операционка, как функционирует garbage collector в Java или как устроен компилятор C++. Я говорю о самом низком, аппаратном уровне, ниже ассемблера: как работает железо.

Что происходит в микросхеме сетевой карты, когда приходит пакет Ethernet? Как этот пакет передается дальше в оперативную память компьютера через шину PCI Express? Как работают самые быстрые системы распознавания изображений на аппаратном уровне?

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

INFO

FPGA расшифровывается как field-programmable gate array, по-русски - программируемые пользователем вентильные матрицы, ППВМ. В более общем случае они называются ПЛИС - программируемые логические интегральные схемы.

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

Работает это примерно так. Есть готовая печатная плата с набором интерфейсов, которые подключены к установленной на плате микросхеме FPGA, вроде крутой платы для дата-центра или отладочной платы для обучения .

Пока мы не сконфигурируем FPGA, внутри микросхемы просто нет логики для обработки данных с интерфейсов, и потому работать ничего, очевидно, не будет. Но в результате проектирования будет создана прошивка, которая после загрузки в FPGA создаст нужную нам цифровую схему. Например, так можно создать контроллер 100G Ethernet, который будет принимать и обрабатывать сетевые пакеты.

Важная особенность FPGA - возможность реконфигурации. Сегодня нам нужен контроллер 100G Ethernet, а завтра эта же плата может быть использована для реализации независимых четырех интерфейсов 25G Ethernet.

Существуют два крупных производителя FPGA-чипов: Xilinx и Intel, которые контролируют 58 и 42% рынка соответственно. Основатели Xilinx изобрели первый чип FPGA в далеком 1985 году. Intel пришла на рынок недавно - в 2015 году, поглотив компанию Altera, которая была основана в то же время, что и Xilinx. Технологии Xilinx и Altera во многом схожи, как и среды разработки. Чаще я работал с продуктами компании Xilinx, поэтому не удивляйся ее постоянному упоминанию.

РЕАЛИЗАЦИЯ ПРОЕКТА НА ПЛИС

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

Рис. 82. Этапы проектирования цифрового устройства на ПЛИС

Основные этапы проектирования на ПЛИС (из лекций):

    Разрабатывается схема устройства и вводится в XILINX.

    Выполняется IMPLEMENTATION (трансляция, формирование схемы путем извлечения библиотечных элементов, оптимизация, размещение на кристалле).

    Программирование.

  1. Ассоциативная память. Организация, способ выборки, отличия от адресного зу.

Ассоциативный доступ реализует поиск информации по некоторому признаку, а не по ее расположению в памяти (адресу или месту в очереди). В наиболее полной версии все хранимые в памяти слова одновременно проверяются на соответствие признаку, например, на совпадение определенных полей слов (тегов - от английского слова tag) с признаком, задаваемым входным словом (теговым адресом). На выход выдаются слова, удовлетворяющие признаку. Дисциплина выдачи слов, если тегу удовлетворяют несколько слов, а также дисциплина записи новых данных могут быть разными. Основная область применения ассоциативной памяти в современных ЭВМ - кэширование данных.

В ассоциативных запоминающих устройствах поиск информации производится по ассоциативному признаку, записанному в каждую ячейку памяти.

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

Поиск информации производится параллельно по всем ячейкам путем сравнения запроса с ассоциативным признаком каждой ячейки.

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

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

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

В полностью ассоциативной кэш-памяти (FACM, Fully Associated Cache Memory), каждая ячейка хранит данные, а в поле "тег" - полный физический адрес информации, копия которой записана. При любых обменах физический адрес запрашиваемой информации сравнивается с полями "тег" всех ячеек и при совпадении их в любой ячейке устанавливается сигнал Hit.

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

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

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

Из лекций:

Ассоциативные запоминающие устройства

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

Информация

Тег – отличительный признак, по совпадению с которым достается кусок информации.

Упрощенная схема ассоциативного ЗУ:

Зона хранения – адресное ЗУ с пронумерованными ячейками, хранит в себе информацию и теги.

Для обращения к ассоциативной памяти на регистр апроса помещается образец искомого тега. Схема сравнения сравнивает запрос. Устанавливается совпадение на регистре совпадений, где произошло совпадение тега из памяти с образцом. Возможны реакции (нет совпадений; есть хотя бы одно совпадение – в этом случае найденная ячейка помещается в регистр данных; множественное совпадение – КС должна принять решение, какую из ячеек достать для обработки).

Применение: БД, базы знаний, ПК в качестве кэша.