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

Пока были праздники, сделал небольшой проект на Verilog, который давно хотел попробовать.

Суть проекта в следующем: к FPGA подключено быстродействующее (относительно, конечно) АЦП с двумя каналами и параллельным интерфейсом (14-16 бит на канал). FPGA читает данные с АЦП и складывает в буфер (свою внутреннюю память BRAM). Когда буфер заполнен, чтение останавливается, и внешнее устройство (микроконтроллер) может считать данные из буфера по интерфейсу SPI. Также можно по SPI конфигурировать некоторые параметры (об этом будет написано в следующем посте).

Тест проекта (картинка кликабельна).

Результат синтеза для Cyclone IVE

Результат я синтезировал в Quartus II, для FPGA семейства Cyclone IVE (EP4CE6E22A7). Это одна из самых простых и недорогих FPGA в корпусе QFP144 на 6272 логических элемента. Микросхема имеет память объёмом 30K * 9 бит. Пользовательских пинов - 92.

микросхема EP4CE6E22A7
логических элементов - 301 (5%)
пинов - 41 (45%)
память - 65536 бит (24%)
частота для наихудшего случая (125 С) - 151 МГц.

Память 8 Кб, это собственно буфер, куда происходит запись данных. При двух каналах по 16 бит получается 32 бита на отсчёт, и 2048 отсчётов. Я решил, что этого вполне хватит, хотя буфер можно расширить хоть на весь объём.

Частота вполне устраивает, я рассчитывал, что будет частота тактирования 50 МГц, и АЦП на 25 МГц. То есть получается трёхкратный запас по частоте.

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

Есть более новое семейство Cyclone 10.

Результат синтеза для Cyclone 10

Выбираем чип 10CL006YE144C8G. Он имеет столько же логических элементов (6272), что и вариант на Cyclone 4, и столько же памяти (30К х 9). Корпус такой же, QFP144, пользовательских пинов даже меньше - 89.

микросхема 10CL006YE144C8G
логических элементов - 289 (5%)
пинов - 41 (46%)
память - 65536 бит (24%)
частота для наихудшего случая (85 С) - 145,5 МГц.

Любопытно то, что проект стал компактнее по логическим элементам. То есть при той же ёмкости логики в Cyclone 10 влезет более сложный проект. Всё остальное примерно на том же уровне.

Возникает резонный вопрос: можно ли сэкономить, поставив другую FPGA или CPLD?

Давайте попробуем FPGA MAX10.

Результат синтеза для MAX 10

Здесь читатель (если он в теме) может воскликнуть: нет, всё не так! Семейство MAX - это CPLD, а не FPGA, а путать эти понятия - вопиющий непрофессионализм!

Однако стараниями маркетологов Intel (все ведь в курсе, что речь про чипы Intel?) семейство MAX10 превратилось в FPGA, хотя и имеет внутреннюю энергонезависимую память конфигурации, как любая CPLD.

Итак, выбираем чип, например, 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), корпус QFP144.

микросхема 10M02SCE144A7G.
логических элементов - 298 (13%)
пинов - 41 (41%)
память - 65536 бит (59%)
частота для наихудшего случая (125 С) - 153 МГц.

Мы видим, что абсолютные показатели остались практически теми же, увеличилась только степень заполнения кристалла, что и понятно - 2304LE против 6272 LE.

Можно ли использовать MAX II?

Теперь вопрос: а можно ли использовать какую-либо совсем дешёвую CPLD, типа MAX II? Здесь всё сложнее. У них нет памяти BRAM, т.е. нужна будет ещё и внешняя быстрая SRAM.

Для подключения SRAM нужна будет дополнительная логика, конечно. Если мы используем память объёмом 4K x 16, то нам будет нужно дополнительно 16 пинов для данных, 12 для адреса и 3 для управления (/cs, /we, /oe), всего 31 дополнительный пин.

Логика также увеличится в размерах. На сколько точно, сложно сказать, но в CPLD на 240 LE она не влезет изначально, а в 570 LE может быть, и влезет.

Выбираем CPLD EPM570 в корпусе QFP100. Нам нужно всего 72 пина, корпус имеет 76 пинов для GPIO, т.е. должно хватить на всё, но для расширения уже совсем мало места.

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

Цена вопроса

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

EP4CE6E22C8N - 456,55 Р (Промэлектроника, Екб, розн.)
10CL006YE144C - 754,71 (Пятый элемент, Спб, опт)
10M02SCE144C8G - 456 Р (Элитан, Екб, опт)
EPM570F100C5N - 368 Р (Хайтек, Спб) + память (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92,51 Р (Промэлектроника, Екб, розн.)

Конечно, можно найти и дешевле, это просто розничные цены в магазине, но соотношение будет примерно тем же.

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

Лично мне больше всего нравится вариант на MAX 10. Он имеет одно преимущество: не нужно загружать конфигурацию FPGA при старте. В варианте на Cyclone 4 нужно будет загружать конфигурацию FPGA, что можно сделать либо с помощью дополнительной микросхемы конфигурационной памяти, либо с помощью микроконтроллера. Есть ещё третий вариант: прошить через JTAG и никогда не снимать питание с чипа. Я слышал, что кто-то так делал, не знаю, шутка это или нет, но я так делать точно не буду.

Впрочем, у варианта с прошивкой Cyclone 4 через микроконтроллер есть преимущество: возможность обновлять прошивку FPGA через пользовательские интерфейсы: USB, Ethernet, etc.

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

Про то, какие функции выполняет эта прошивка, я напишу в следующем посте.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Из лекций:

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

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

Информация

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

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

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

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

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

ИСПОЛЬЗОВАНИЕ ПЛИС В СОВРЕМЕННЫХ УСТРОЙСТВАХ

Тупиков Павел Андреевич

студент 5 курса, кафедра АРТ ОмГТУ, РФ, г. Омск

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

· Улучшаются временные характеристики изделия.

· Уменьшается цена изделия.

· Уменьшаются габариты изделия.

· Увеличивается надежность изделия (уменьшается количество дискретных микросхем)

· Повышается гибкость изделия (ПЛИС всегда можно перепрограммировать)

Архитектура ПЛИС имеет сложную структуру (Рис. 1)

Рисунок 1. Внутренняя структура ПЛИС

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

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

На сегодняшний день в мире есть два мировых лидера в производстве ПЛИС. Это американские фирмы Xilinx и Altera.

Каждая фирма предлагает свой САПР для работы с ПЛИС. Фирма Xilinx предлагает Xilinx Software Development Kit (SDK). Фирма Altera предлагает Max+Plus II и Quartus II, а так же систему моделирования ModelSim.

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

· Verilog HDL.

Язык VHDL является наиболее сложным для обучения, но при этом обладает наибольшими возможностями на функциональных и поведенческих уровнях абстракции, однако имеет меньшие возможности на структурном уровне абстракции по сравнению с Verilog HDL, для расширения возможностей языка VHDL была разработана библиотека VITAL (Рис. 2) .


Рисунок 2. Уровни абстракции Verilog и VHDL

Примером работы языка Verilog HDL является программа, реализованная на ПЛИС CYCLONE III EP3C5E1444C8N стенда Mini-DiLab общий вид которого представлен на рис. 3.


Рисунок 3. Общий вид платы Mini - DiLab

Данная программа реализует последовательное переключение светодиодов led0-led7, с выбором набавления движения «огонька» при помощи кнопок pba и pbb, а так же управлением скоростью переключения при помощи переключателей sw0, sw1.

//Текст программы

module proect(output led, input clk_25mhz, input pba, input pbb,

input sw);

// Назначение внутренних соединений проекта

wire s1;

wire s2;

wire s3;

// Вызов других файлов (подпрограмм), подключаемых к проекту

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

Counter counter_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.out(led), .in(s3));

endmodule // конец программы

Подпрограмма tr

module tr (out, set, res); // Создание программы

// Назначение входов/выводов

output reg out;

input set;

input res;

// Инициализация

initial

begin

Out <= 1"d0;

// Основной код программы

always @(negedge set or negedge res)

begin

if (~(set))

Out <= 1"d1;

else

Out <= 1"d0;

endmodule // Конец программы

Подпрограмма counter

module counter (con, q, clk,up); // Начало программы

output reg con;

output q = con;

input up, clk;

// Основной код программы

always @(posedge clk)

begin

if (clk)

if (up)

Con <= con - 1"d1;

else

Con <= con + 1"d1;

endmodule //Конец программы

Подпрограмма mx(мультиплексор)

module mx (output reg a, input in, input load);

// Основной код программы

always @*

begin

case (load)

2"b00: a = in;

2"b01: a = in;

2"b10: a = in;

2"b11: a = in;

endcase

endmodule // Конец программы

Подпрограмма dc3_8 (мультиплексор)

module dc3_8 (out, in); // Начало программы

// Назначение входов/выходов

output reg out;

input wire in;

// Основной код программы

always @*

begin

case (in)

3"d0: out = 8"b11111110;

3"d1: out = 8"b11111101;

3"d2: out = 8"b11111011;

3"d3: out = 8"b11110111;

3"d4: out = 8"b11101111;

3"d5: out = 8"b11011111;

3"d6: out = 8"b10111111;

3"d7: out = 8"b01111111;

endcase

endmodule // Конец программы

Программа была реализована в САПР Quartus II.

После компиляции программы компилятор не выдал ошибки и замечания в программе, связанные с анализом и синтаксисом программы (рис. 4).


Рисунок 4. Окно сообщений проекта

Замечание, сделанные компилятором, говорят об отсутствии лицензии на Quartus II(была использована бесплатная версия программы, для обучения) и отсутствия файлов, необходимых для моделирования проекта.

RTL Структура данного проекта представлена на рис. 5.


Рисунок 5. Реализация проекта ( RTL структура)

Как показано на рис. 6 в данной программе испозльзуется лишь незначительная часть возможностей данной ПЛИС.

Рисунок 6. Часть ПЛИС, участвующая в работе проекта

Выводы: Программируемые логические интегральными схемы являются могут находить применение во многих устройствах. Для обучения работы с ними следует вводить в образовательную программу специальностей, связанных с проектированием и конструированием радиоэлектронной аппаратуры знакомство с языками описания аппаратуры(Verilog HDL и VHDL).

Список литературы:

1.Грушевицкий Р.И. Проектирование систем на микросхемах программной логики/ Р.И. Грушевицкий, A.X. Мурсаев, Е.П. Угрюмое. СПб.: БХВ Петербург, 2002. - 608 с.

2.Коломов Д.А. Системы автоматизированного проектирования фирмы Altra MAX+plus II и Quartus II. Краткое описание и самоучитель/ Д.А. Коломов, Р.А. Мяльк, А.А. Зобенко, А.С. Филиппов. М.: ИП РадиоСофт, 2002. - 126 с.

3.Максфилд К. Проектирование на ПЛИС. Курс молодого бойца./ К. Максфилд. М.: Издательский дом «Додэка-XXI», 2007. - 408 с. (перевод с английского).

Введение

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