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

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

Примечание: Насколько я смог выяснить, в русском языке на сегодняшний день термины ПЛИС и FPGA (Field-Programmable Gate Array, Программируемая Пользователем Вентильная Матрица), принято считать взаимозаменяемыми, что будет использовано далее по тексту. Однако стоит знать о существовании и альтернативной точки зрения, согласно которой FPGA (ППВМ) является одной из разновидностей ПЛИС (PLD, Programmable Logic Device).

Основные сведения об FPGA

Для программирования FPGA используются языки описания аппаратуры (HDL, Hardware Description Language). Среди них наибольшей популярностью пользуются Verilog (и его диалекты, в частности SystemVerilog), а также VHDL . Языки во многом похожи, но имеют разный синтаксис и различаются в некоторых деталях. Если Verilog — это такой C мира описания аппаратуры, то VHDL — соответственно, Pascal. Насколько мне известно, VHDL несколько менее популярен, в частности, из-за его многословности по сравнению с Verilog. Из преимуществ VHDL (или недостатков, кому как) можно назвать строгую статическую типизацию. Verilog же иногда допускает неявное приведение типов. Если продолжать аналогию с C и Pascal, языки различаются не настолько сильно, чтобы не выучить их оба.

На данный момент лидирующими производителями FPGA являются компании Altera (сейчас принадлежит Intel) и Xilinx. По информации из разных источников, вместе они контролируют не менее 80% рынка. Из других игроков стоит отметить Actel (куплена Microsemi), Lattice Semiconductor, Quicklogic и SiliconBlue. С железом от Xilinx можно работать только из среды разработки от Xilinx (называется Vivado), а среда разработки от Altra (называетя Quartus) понимает только железо от Altera. То есть, полный вендор лок, и выбирая конкретную FPGA для своего проекта, вы автоматически выбираете и инструменты разработки соответствующего производителя, их техническую поддержку, документацию, условия лицензирования софта, политику касаемо прекращения поддержки железа, и так далее.

FPGA часто используются в задачах, где некие вычисления хочется существенно ускорить, реализовав их прямо в железе. Например, FPGA нашли широкое применение в области обработки сигналов, скажем, в осциллографах, анализаторах спектра , логических анализаторах , генераторах сигналов, Software Defined Radio и даже некоторых мониторах . В частности, в LimeSDR используется Altera Cyclone IV, а в осциллографе Rigol DS1054Z стоит Xilinx Spartan-6, а также ProASIC 3 от компании Actel. Еще из применений, о которых я слышал, могу назвать компьютерное зрение, распознавание речи и биоинформатику. Есть и другие проекты, в частности по разработке веб-серверов и СУБД, работающих на FPGA . Но, насколько мне известно, это направление все еще остается сильно экспериментальным.

Xilinx или Altera?

Как говорится, лучший Linux тот, который использует ваш знакомый гуру по Linux.

Мой знакомый гуру по FPGA в лице Дмитрия Олексюка посоветовал начать с девборды Arty Artix-7 от компании Digilent. Используемой в ней FPGA является Artix-7 от Xilinx. Сам Digilent не производит доставку в Россию, но устройство доступно и на AliExpress , хотя и с заметной наценкой (официальная цена составляет 99$). Также его продают на eBay. Это довольно мощная плата, которая, тем не менее, стоит вполне адекватных денег.

Fun fact! Если вам просто хочется попрограммировать на Verilog или VHDL, строго говоря, покупать какую-либо плату с FPGA не требуется. Первое время можно ограничиться симулятором, работа с которым будет рассмотрена далее.

Из интересных особенностей платы можно назвать расположение гнезд совместимым с Arduino-шилдами способом. Также в комплекте с платой идет вкладыш, по которому можно получить лицензию на Vivado, открывающую все его возможности. Лицензия действует один год с момента активации, а также привязана к одному компьютеру по типу ОС и MAC-адресу.

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

Установка Vivado

Среда разработки Vivado доступна для скачивания на сайте Xilinx . Будьте морально готовы к тому, что перед скачиванием вам придется пройти регистрацию и заполнить довольно подробную форму о себе. Скачиваем архив под названием «Vivado HLx 2017.2: All OS installer Single-File Download». Не перепутайте случайно с каким-нибудь «Vivado Lab Solutions», это совершенно не то, что нужно. Архив весит более 20 Гб, поэтому запасаемся терпением.

Распаковываем архив, запускаем инсталлятор. Ставим Vivado HL System Edition. Полная его версия займет на диске 47 Гб. Лично я снял галочку напротив Software Development Kit и оставил поддержку только 7 Series устройств, что уменьшило размер до 12 Гб. Забегая немного вперед отмечу, что такой конфигурации оказалось вполне достаточно.

Перед запуском Vivado нужно добавить в него поддержку Arty Artix-7, так как из коробки он ничего об этой плате не знает. Делается это как-то так:

cd ~/ opt/ xilinx/ Vivado/ 2017.2 / data/ boards/ board_files
wget https:// github.com/ Digilent/ vivado-boards/ archive/ master.zip
unzip master.zip
mv vivado-boards-master/ new/ board_files/* ./
rm -r vivado-boards-master
rm master.zip

Также скачиваем и сохраняем куда-нибудь файл Arty_Master.xdc. Он понадобится нам далее. Файл содержит описание находящихся на плате светодиодов, переключателей и так далее. Без него поморгать светодиодами на Verilog будет непросто.

Первый проект на SystemVerilog

В Vivado говорим File → New Project… В качестве типа проекта выбираем RTL Project, ставим галочку Do not specify sources at this time. В диалоге выбора типа платы находим в списке Arty.

Первым делом добавляем к проекту скачанный ранее XDC файл. Копируем его в каталог с проектом. Затем говорим File → Add Sources… → Add or create constraints → Add Files, находим копию файла, жмем Finish. В дереве файлов проекта (Sources) в группе Constraints появится файл Arty_Master.xdc, или как вы там назвали копию. Открываем его и раскомментируем все строчки в группах Clock signal, Switches и LEDs.

Далее говорим File → Add Sources… → Add or create design sources → Create File. В типе файла выбираем SystemVerilog, в имени файла вводим что-нибудь вроде hello. Говорим Finish. Далее появится диалог Define Module, который предложит накликать интерфейс модуля. Диалог довольно бесполезный, потому что то же самое удобнее сделать прямо в коде, так что жмем Cancel.

В дереве исходников находим новый файл hello.sv, он будет в группе Design Sources. Открываем и пишем следующий код:

`timescale 1ns / 1ps

module hello(
input logic CLK100MHZ,
input logic [ 3 : 0 ] sw,
output logic [ 3 : 0 ] led
) ;

always @ (posedge CLK100MHZ)
begin
if (sw[ 0 ] == 0 )
begin
led <= 4"b0001 ;
end
else
begin
led <= 4"b0000 ;
end
end

endmodule

Если все было сделано правильно, на этом этапе Vivado у вас будет выглядеть как-то так (кликабельно, PNG, 71 Кб):

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

Запустим синтез, сказав Flow → Run Synthesis, или просто нажав F11. В правом верхнем углу вы увидите индикацию того, что процесс идет. Он может занимать довольно много времени, в зависимости от вашего компьютера и сложности программы. На моем ноутбуке синтез приведенной выше программы выполнился где-то секунд за 10. Если теперь сказать Flow → Open Synthesized Design, то можно увидеть красивую картинку вроде такой:

Настало время прошить нашу плату. Говорим Flow → Run Imlementation, затем Flow → Generate Bitstream. Подключаем плату к компьютеру по USB, в Vivado говорим Flow → Open Hardware Manager → Open target → Auto Connect → Program device. Потребуется указать путь к bit-файлу. У меня он был следующим:

./first-project.runs/impl_1/hello.bit

Говорим Program. Теперь на плате горит светодиод LD4, если переключатель SW0 опущен (см приведенную выше фотографию платы). Если же переключатель поднят, светодиод не горит. Простенько, конечно, но это же «hello, world», чего вы ожидали? :)

Симуляция

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

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

ERROR: Failed to compile generated C file [...]xsim_1.c.

Google по этой ошибке находил только всякую ерунду в стиле «попробуйте отключить антивирус». В итоге решить проблему помогло добавление флага -v 2 в скрипт ~/opt/xilinx/Vivado/2017.2/bin/xelab. С его помощью я выяснил, что Clang, бинарник которого Vivado таскает за собой, падает со следующей ошибкой:

/a/long/path/to/clang: error while loading shared libraries:
libncurses.so.5: cannot open shared object file: No such file or
directory

А эта ошибка и ее решение уже описаны на Arch Wiki . Лично я просто скопировал уже существующий файл из каталога Vivado_HLS:

cp ~/opt/xilinx/Vivado_HLS/2017.2/lnx64/tools/gdb_v7_2/libncurses.so.5\
~/opt/xilinx/Vivado/2017.2/lib/lnx64.o/libncurses.so.5

… после чего все заработало. Итак, а теперь, собственно, пример симуляции.

По аналогии с тем, как ранее мы создавали hello.sv, создаем новый файл hello_sim.sv в группе Simulation Sources. В файле пишем следующий код:

`timescale 1ns / 1ps

module hello_sim() ;
logic clck_t;
logic [ 3 : 0 ] sw_t;
logic [ 3 : 0 ] led_t;

Hello hello_t(clck_t, sw_t, led_t) ;

initial begin
clck_t <= 0 ;
sw_t <= 4"b0000 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
assert (led_t === 4"b0001 ) ;

Sw_t <= 4"b0001 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
assert (led_t === 4"b0000 ) ;
end

endmodule

В дереве исходников делаем правый клик по файлу, выбираем Source Node Properties. В секции Used In снимаем галочки Synthesis и Implementation. Мы же не хотим, чтобы какие-то там тесты засоряли нашу далеко не резиновую FPGA?

Теперь говорим Flow → Run Simulation → Run Behavioral Simulation. В итоге вы увидите что-то примерно такого плана:

Можно видеть, что когда sw равен нулю, led равен единице, и наоборот. При этом все изменения происходят по фронту тактового сигнала. Похоже, что программа работает корректно. Ну и на ассертах ничего не свалилось, что как бы намекает.

Заключение

Архив с описанным выше проектом можно скачать . В качестве дополнительных источников информации я бы рекомендовал следующие:

  • Если вас интересуют подробности по железу, обратите внимание на

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, поэтому не удивляйся ее постоянному упоминанию.

Введение

Язык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. Общее описание работы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Из лекций:

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

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

Информация

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

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

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

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

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