Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

пособие по курсу Процессоры ЦОС Обнинск 2010 УДК 681

Работа добавлена на сайт samzan.net:


ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Федеральное государственное бюджетное образовательное

учреждение высшего профессионального образования

«Национальный исследовательский ядерный университет «МИФИ»

ОБНИНСКИЙ ИНСТИТУТ АТОМНОЙ ЭНЕРГЕТИКИ

ФАКУЛЬТЕТ КИБЕРНЕТИКИ

Р.Г. ПОДВЫСОЦКИЙ, К.С. СПИРИДОНОВ,

Н.А. КАРАЧЕНКОВ

QUARTUS® II. МЕТОДИЧЕСКОЕ ПОСОБИЕ

Учебно-методическое пособие по курсу

«Процессоры ЦОС»

Обнинск 2010


УДК 681.31

Подвысоцкий Р.Г., Спиридонов К. С., Карачёнков Н. А. Quartus II. Методическое пособие. Учебно-методическое пособие по курсу "Процессоры ЦОС". - Обнинск: ИАТЭ, 2010. - 76 с.

Данное пособие предназначено для студентов специальности 220100 «Вычислительные машины, комплексы, системы и сети», изучающих курсы «Теория автоматов» и «Процессоры ЦОС».

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

Илл. 54, табл. 2, библ. 6 назв.

Рецензенты:  ктн., доцент кафедры АКИД, П.А. Белоусов

ведущий инженер-программист ООО

«Иститут Электопитания», И.В. Почитаев

©  Обнинский     государственный     технический     университет

атомной энергетики, 2010 г.

©  Р.Г. Подвысоцкий, К.С. Спиридонов, Н.А. Карачёнков, 2010 г.

Вступление

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

Раздел

Описание

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

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

Компиляция

Научит компилировать проект и использовать настройки компилятора, а также производить назначения соответствующих входов и выходов схемы выводам ПЛИС

Симуляция

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

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

Научит вас использовать программатор для конфигурирования и прошивки ПЛИС Альтера


1. Разработка проекта

В программном пакете Quartus II проект состоит из набора файлов. В данном разделе описываются все необходимые шаги по созданию тестового проекта.

1.1. Создание проекта

Для создания проекта выполните следующие шаги:

В меню File выберете пункт New Project Wizard, появится диалог мастера создания проектов. Если он запускается первый раз, появиться страница вступления, нажмите Next для перехода к первой странице мастера. Заполните поля имени рабочей директории, имени проекта и имени сущности верхнего уровня. По умолчанию имя сущности верхнего уровня проекта такое же, как и имя проекта. Однако можно использовать различные имена.

Рис. .1. Мастер создания проекта

Нажмите Next, откроется вторая страница мастера Add Files. Поскольку это новый проект, то файлов для добавления в него пока нет. Но если есть файлы разработок, которые нужно добавить – это можно сделать, используя кнопку … для выбора файлов, а затем нажать кнопку Add для их добавления в проект.

Рис. 1.. Вкладка добавления файлов в проект

Чтобы принять настройки по умолчанию для остальных страниц мастера, и создать проект, нажмите Finish. Теперь проект создан. Имя сущности верхнего уровня появилось во вкладке Hierarchy окна навигации проекта.

Рис. 1.3. Окно навигатора проекта

1.2. Создание логической схемы

 После создания проекта в него необходимо добавить файлы, описывающие логическую схему. Это можно сделать через меню File, выбрав пункт New. В диалоговом окне необходимо указать тип создаваемого файла. Для нашего проекта выберем Block Diagram/Schematic File.

Рис. 1.. Диалог создания нового файла

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

Рис. 1.. Панель инструментов

Добавление элементов в схему можно осуществить несколькими способами:

  •  посредством двойного нажатия левой кнопки мыши на рабочем поле; 
  •  посредством нажатия правой кнопки мышки на рабочем поле и выбора пункта Insert/Symbol; 
  •  посредством панели инструментов. Необходимо щелкнуть на кнопке  .

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

Рис. 1.. Диалог выбора логических элементов

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

Рис. 1.. Элементы будущей схемы

 Для соединения элементов на панели инструментов выбираем тип их соединения (проводником  шиной  или каналом ). В итоге получится следующая схема:

Рис. 1. Логическая схема

 Для сохранения достигнутых результатов используем меню File пункт Save As. В диалоге сохранения вводим имя будущего файла, содержащего логическую схему.

1.3. Создание сложных схем

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

 Для построения сложных схем в программном пакете Quartus II реализован набор мегафункций, которые представляют собой такие элементы как сумматоры, умножители, АЛУ, делители частоты, устройства памяти и т.д. Их можно добавлять в схему, используя мастер MegaWizard Plug-In Manager, который поможет вам установить нужные опции и параметры, а также порты, которые вы хотите использовать.

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

В меню File выбрать пункт New. В открывшемся диалоговом окне в качестве типа файла выбрать Block Diagram/Schematic File.

На панели инструментов нажать кнопку  и на рабочей области мышкой растянуть прямоугольник.

Рис. 1. Логический блок

 Вход в свойства блока осуществляется кликом правой кнопкой мыши на нем, и выбора пункта Block Properties. Изменение имени блока производится во вкладке General. Описание входов и выходов блока производится во вкладке I/Os.

Рис. 1.. Входы и выходы блока

В итоге получится следующий блок:

Рис. 1.. Готовый блок

 Следующим шагом является создание Design File для этого блока. Это можно сделать, кликнув правой кнопкой мыши по блоку и выбрав пункт Create Design File from Selected Block. В открывшемся окне в поле File Type необходимо выбрать пункт Schematic.

Рис. 1. Создание файла описания для блока

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

Рис. 1. Файл описания в виде логической схемы

Примечание: Аналогичным образом в блоки могут объединяться не только логические схемы, но и программы, написанные на языках VHDL, AHDL и Verilog HDL, поддерживаемые САПР Quartus II.

 Для добавления мегафункций в схему с помощью MegaWizard Plug-In Manager проделайте следующие действия: двойным щелчком мыши на рабочем поле откройте диалог Symbol, далее в появившемся диалоге нажмите кнопку MegaWizard Plug-In Manager… На экране отобразится первая страница мастера добавления мегафункций.

Рис. 1.. Мастер добавления мегафункций

Выберете пункт Create a new custom megafunction variation и нажмите Next.

На следующей странице мастера, например для добавления умножителя, в списке Which megafunction would you like to customize? раскройте пункт arithmetic и выберете LPM_MULT. В качестве семейства ПЛИС из выпадающего списка Which device family will you be using? выберете Cyclone. В поле Which type of output file? в качестве типа генерируемого файла выберете пункт VHDL, затем нажмите кнопку Browse, и укажите, куда и под каким именем сохранить сгенерированный файл на языке VHDL (например, mult.vhd).

На следующих страницах настраиваются параметры (разрядности входов и выходов для умножителя) выбранной мегафункци. Установите эти параметры в соответствии с вашими требованиями. После установки параметров нажмите Finish.

На появившейся странице можно выбирать файлы, которые нужно сгенерировать помимо *.vhd файла, который мы указали ранее. Можно сгенерировать файл временной диаграммы в формате HTML, заголовочный файл AHDL (*.inc), а также файл шаблона (*.vhd).

Для завершения работы мастера и предварительного просмотра сгенерированного элемента нажмите Finish. Для добавления элемента на схему нажмите OK.

2. Компиляция проекта

 Компилятор Quartus II Compiler состоит из набора интегрированных модулей, которые проверяют схемы на наличие ошибок, синтезируют логику, приспосабливают проект под конкретные плис Altera, генерируют выходные файлы для симуляции, проводят анализ  задержек и программирование устройства. Базовый компилятор состоит из модулей анализа и синтеза (Analysis & Synthesis), компоновщика (Fitter), ассемблера (Assembler) и анализатора задержек (Timing Analyzer). Эти модули можно запускать вместе или по отдельности через интерфейс пользователя. Альтернативным способом является запуск этих модулей независимо друг от друга, выполнив соответствующие команды в командной строке.

 В течение процесса полной компиляции модуль анализа и синтеза сначала извлекает информацию, которая определяет иерархические связи между файлами проекта, и проверяет проект на основные ошибки. Затем он создает организационную карту проекта и совмещает все файлы проекта в базе данных для дальнейшей обработки. Следующим шагом компоновщик выбирает оптимальные пути межсоединений, соответствие пинов, и соответствие логических ячеек, необходимых для помещения в выбранную ПЛИС Altera. Ассемблер завершает обработку проекта путем преобразования ассоциаций сборщика в образ для программирования (прошивку) ПЛИС. Наконец, анализатор временных задержек запускается автоматически и генерирует отчет, содержащий информацию о задержках для логической схемы проекта. Также можно запускать другие модули компилятора, такие как генератор списка цепей (EDA Netlist Writer) и помощник проекта (Design Assistant) как части цикла полной компиляции, чтобы сгенерировать дополнительные файлы для отладки проекта.

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

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

2.1. Установка настроек компилятора

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

Для выбора целевой ПЛИС нужно сделать следующее: 

  •  В меню Assignments выбрать пункт Device.
  •  В списке Family выберете семейство Cyclone.
  •  В поле Target Device выберете пункт Specific device selected in ‘Available device’ list.
  •  В поле Show in ‘Available devices’ list в списке типов корпусов Package выберете TFQP, в списке выбора количества пинов Pin count выберете 144, в списке класса быстродействия Speed Grade выберете 8;
  •  В списке доступных устройств Available devices укажите EP1C3T144C8.

Рис. 2.1. Вкладка выбора ПЛИС

 Настройки Анализа и Синтеза расположены на странице Analysis & Synthesis Settings диалога настроек, они позволяют оптимизировать работу модуля анализа и синтеза для обработки проекта. Для этого в списке Category диалога настроек выбрать пункт Analysis & Synthesis Settings. Появится страница настроек модуля анализа и синтеза;

В поле Optimization Technique выберете опцию Speed. Она указывает компилятору во время стадии анализа и синтеза распределять ресурсы ПЛИС для достижения максимальной производительности логической схемы внутри устройства;

Рис. 2.2. Вкладка настроек модуля анализа и синтеза

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

Для этого в диалоговом окне выберите категорию Fitter Setting. В поле Timing-driven compilation проверьте, чтобы опция Optimize hold timing была включена и выбран пункт I/O Paths and Minimum TPD Path. В поле Filter effort выберите пункт Standard Fit.

Рис. 2.3. Вкладка настроек компоновщика

Далее в списке Category раскройте пункт Fitter Settings и выберете Physical Optimizations. В поле Physical synthesis for register включите опцию Perform register retiming. В поле Physical synthesis effort выберете опцию Extra. 

После всех настроек нажмите OK, чтобы установки компилятора вступили в силу.

Рис. 2.4. Вкладка настроек модуля синтеза

2.2. Создание назначений I/O логической схемы выводам ПЛИС

 Используя Pin Planner можно просматривать и создавать назначения для всех ножек в проекте. После созданий назначений можно проверить их правильность командой I/O Assignment Analysis.

Сначала нужно создать БД проекта, выбрав в меню Processing пункт Start/Start Analysis & Synthesis. Компилятор проверит файл проекта на синтаксические и семантические ошибки и сгенерирует БД проекта.

В меню Assignments выбрать пункт Pins. Появится окно Pin Planner. В колонке Node Name можно увидеть уже установленные I/O логической схемы. В колонке Location указываются ножки ПЛИС.

Рис. 2.5. Окно распределителя контактов

После назначения выводов необходимо снова проверить проект, используя пункт Start Analysis & Synthesis меню Processing.

2.3. Компиляция проекта

Компилятор автоматически обнаруживает и использует файлы, такие как:

  •  заголовочные файлы (*.inc), содержащие прототипы функций AHDL;
  •  файлы инициализации памяти (*.mif) или файлы Hexadecimal Intel-format (.hex), включающие начальное содержание памяти;
  •  файлы проекта Quartus II (*.qpf);
  •  файлы с настройками Quartus II, содержащие информацию о проекте и настройках (*.qsf).

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

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

Рис. 2.6. Окно состояния

В течение компиляции все сообщения компилятора появляются во вкладке Processing окна Messages. Щелкнув два раза левой кнопкой мыши на сообщении можно увидеть источник ошибки или предупреждения.

Отчет о компиляции появляется автоматически в окне Compilation Report. Он предоставляет детальную информацию о процессе компиляции.

Рис. 2.7. Окно отчета

3. Модуль симуляции

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

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

  •  Vector Waveform File (*.vwf);
  •  Compressed Vector Waveform (*.cvwf);
  •  Vector Table Output File (*.tbl);
  •  Power Input File (*.pwf);
  •  генерируемый Max+PLUS II векторный файл (*.vec);
  •  Simulation Channel File (*.scf).

Альтернативным способом является ввод векторных сигналов в окне Tcl консоли. В типичном процессе симуляции создаются наборы входных векторов и проверяются результаты на выходах.

3.1. Создание Waveform файла для симуляции

Для создания новой временной диаграммы нужно в меню File нажмите пункт New, выберете закладку Other Files и укажите пункт Vector Waveform File.

Рис.3.1. Окно WaveForm файла

Чтобы изменить время конца симуляции в меню Edit выберете пункт End Time. В появившемся диалоге в поле Time введите время в наносекундах. Для сохранения файла воспользуетесь пунктом Save As меню File.

Для поиска имен цепей, которые необходимо добавить в меню View укажите пункт Utilities Windows и выберете пункт Node Finder. В появившемся окне в списке Filter установите пункт Pins all, а затем нажмите кнопку List.

Рис. 3.2. Диалог поиска цепей

В списке Node Found выберете нужные цепи и перетащите их мышкой в поле Name Waveform файла.

Рис. 3.3. Добавление выбранных цепей в WaveForm файл

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

Рис. 3.4. Редактирование временной диаграммы

3.2. Симуляция проекта

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

Для этого в меню Assignment выберете пункт Settings. В списке категорий выберете пункт Simulation Settings. Проверьте, что в списке Simulation Node установлен пункт Timing. В поле Simulation Input укажите путь к Waveform файлу, созданному ранее.

В поле Simulation Period должна быть установлена опция Run Simulation until all vector stimuli are used. Проверьте также, что опции Automatically add pins simulation output waveforms и Simulation coverage reporting включены.

Рис. 3.5. Окно настроек симулятора

После всех настроек нажмите OK.

Для запуска симулятора необходимо в меню Processing выбрать пункт Start Simulation. Симулятор начнет работу, используя настройки определенные ранее. Во время процесса обработки входных векторов и симуляции схемы в окне состояния автоматически отображается процесс выполнения симуляции в процентах и время, потраченное на каждую стадию симуляции. Результаты добавляются в окне Simulation Report.

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

Рис. 3.6. Окно отчета симулятора

4. Модуль программирования

Программатор позволяет использовать файлы, сгенерированные компилятором для прошивки ПЛИС Altera, поддерживаемые программным пакетом Quartus II. После успешной компиляции можно загрузить конфигурационные данные устройства через коммуникационные кабели MasterBlaster, ByteBlasterMV, ByteBlaster II, USB Blaster, Ethernet Blaster или через Altera Programming Unit (APU).

Также можно конфигурировать устройство в пассивном последовательном режиме, активном последовательном режиме, режиме JTAG или в режиме In-Socket. В данном разделе описывается, как программировать устройство в пассивном последовательном режиме.

4.1. Программирование устройств Altera

Чтобы прошить устройство, необходимо открыть программатор и создать Chain Description File (*.cdf), в котором храниться название устройства и информация по настройке программатора.

Для этого в меню Tools выберете пункт Programmer. CDF файл добавиться в окно программатора автоматически, как текущий файл прошивки. Через меню File пункт Save As сохраните CDF файл.

Рис. 4.1. Окно программатора

Далее, нужно выбрать пассивный режим конфигурации устройства - в списке Mode окна программатора выберете пункт Passive Serial. После этого щелкните по кнопке Hardware Setup, в появившемся окне нажмите кнопку Add Hardware. В поле Hardware Type установите пункт ByteBlasterMV or ByteBlaster II.

Рис. 4.2. Окно установки типа программатора

В меню Assignments выберете пункт Device. В появившемся окне нажмите кнопку Device & Pin Option… в появившемся диалоге выбрать вкладку Configuration и в разделе Configuration scheme установить опцию Passive Serial. Во вкладке Unused Pins в списке Reserve all unused pins выбрать пункт As input tri-stated.

Во вкладке Programming Files можно выбирать другие форматы генерируемых файлов. По умолчанию Quartus будет генерировать файлы SRAM Object File (*.sof) и Partial SRAM Object File (*.psof) или Programmer Object File (*.pof) в зависимости от конфигурируемого устройства которое выбрано. По завершению настроек нажать кнопку OK.

После того как устройство будет подключено к LPT порту в окне Programmer станет активна кнопка Start. Чтобы прошить ПЛИС нажмите на эту кнопку.

5. Дополнительные сведения

5.1. Cправочная система Quartus II

В программном пакете Quartus II существует развитая справочная система (MAX+PLUS II Quick Start Guide), а также самоучитель (Tuturial), которые можно вызвать из меню Help. Также в этом меню находятся ссылки на сайт Altera.

5.2. Получение лицензии

Altera предоставляет бесплатные лицензии  на Quartus II сроком на 6 месяцев. Лицензию можно получить на сайте Altera по адресу: http://www.altera.com/support/licensing/lic-choose.html. В открывшейся странице в разделе Quartus II Web Edition Software Licenses Free щелкните по ссылке Quartus® II Web Edition software and the ModelSim®-Altera® Web Edition software. Далее необходимо заполнить анкету, в которой нужно правильно указать адрес электронной почты, куда будет прислан файл с лицензией. После заполнения анкеты нажмите кнопку Sign In, откроется следующая страница, где в поле Enter your network interface card (NIC) number необходимо ввести MAC адрес сетевой карты (его можно узнать через команду ipconfig /all в командной строке). Нажмите кнопку Continue. Остальная информация предназначена для сбора статистики и вводится по вашему усмотрению.
6. Лабораторные работы

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

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

Для изучения выбрана ПЛИС EP1C3T144С8 фирмы Altera семейства Cyclon. Это было сделано по следующим причинам:

  •  Большое количество логических элементов 2 910;
  •  Отсутствие ограничений по количеству циклов перезаписи;
  •  Поддержка ядер intellectual property (IP), включая Altera MegaCore функции и AMPP мегафункции.

Настоящее пособие содержит описание восьми лабораторных работ. Из них первая работа посвящена изучению САПР Quartus II и возможностей стенда, три последующих – разработке и отладке логических схем, проверки их на стенде, а остальные – использованию дополнительных возможностей стенда, таких как ЖК экран, RS232, SPI, I2C интерфейсы для обмена данными с компьютером, для работы с термодатчиком  и MMC картой.

6.1. Изучение возможностей стенда и САПР Quartus II

Теоретические основы лабораторной работы

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

Главной особенностью ПЛИС является их внутренняя структура, которая преимущественно состоит из большого количества простых программируемых логических блоков в «пространстве» программируемых внутренних связей.

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

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

Существуют два основных способа реализации программируемых логических блоков на основе мультиплексоров (MUX — от multiplexer) и на основе таблиц соответствия (LUT — от lookup table).

В качестве примера реализации устройств на основе мультиплексоров рассмотрим 3-входовую функцию

реализованную с помощью блока, содержащего только мультиплексоры.

Рис. 6.2. Логический блок на мультиплексорах

Устройство может быть запрограммировано таким образом, что на каждый его вход может подаваться логический «0» либо логическая «1», либо истинное, либо инверсное значение входного сигнала (в нашем случае a, b или с), приходящего с другого блока или с входа микросхемы. Такой подход позволяет для каждого блока создавать огромнейшее количество вариантов конфигурирования для выполнения разнообразнейших функций (х на входе центрального мультиплексора на Рис. 6.2 обозначает, что на вход можно подавать любой сигнал — 0 или 1).

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

Рис. 6.3. Требуемая функция и соответствующая ей таблица истинности

Если взять группу логических вентилей глубиной в несколько слоев, таблица соответствия может быть весьма эффективной с точки зрения использования ресурсов и задержки распространения сигнала. Здесь под «глубиной» подразумевается количество логических элементов между входом и выходом цепочки, так на Рис. 6.3 глубина составляет два слоя. Однако недостатком архитектуры на таблицах соответствия является то, что если с их помощью реализовать небольшую функцию, например 2-входовый логический элемент «И», для этого придется использовать всю таблицу. Результирующая задержка для такой простой функции окажется весьма большой.

Для этого надо загрузить 3-входовую таблицу соответствующими значениями. А теперь допустим, что таблица соответствий формируется из ячеек памяти статического ОЗУ. Она может также быть сформирована наращиваемыми перемычками или Flash-ячейками памяти. Для выбора требуемой ячейки ОЗУ с помощью каскада передаточных вентилей используются входные сигналы, как показано на Рис. 6.4. При этом ячейки памяти статического ОЗУ для загрузки конфигурационных данных должны быть соединены в длинную цепочку, но эти цепи на Рис. 6.4 не показаны с целью его упрощения.

Рис. 6.4. Таблица соответствия на основе передаточных вентилей

На схеме открытый, или активный, передаточный вентиль пропускает сигнал с входа на выход. Закрытый вентиль электрически отключает свой выход от проводника, к которому он подсоединен.

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

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

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

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

Результаты исследований проектировщиков ПЛИС показали, что оптимальным вариантом реализации отвечают 4-входовые таблицы соответствия.

Ядро таблицы соответствия в устройстве на статическом ОЗУ использует для своей работы несколько ячеек памяти. Это позволяет использовать некоторые интересные возможности. Помимо основного назначения, т. е. формирования таблицы соответствия, устройства некоторых поставщиков позволяют использовать ячейки, формирующие таблицу, в качестве небольших блоков оперативной памяти. Например, 16 ячеек памяти, формирующих 4-входовую таблицу, могут выступать в роли блока ОЗУ 16x1. Такие участки памяти называются распределенным ОЗУ, так как, во-первых, таблицы соответствия разбросаны (распределены) по всей поверхности кристалла, а во-вторых, это название отличает их от больших блоков ОЗУ.

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

Рис. 6.5. Конфигурационные ячейки, связанные в цепочку

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

Рис. 6.6. Многофункциональная таблица соответствия

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

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

Поднимаясь по иерархической лестнице, мы достигаем уровня, который компания Altera называет блоком логических массивов или LAB (LAB – logic array block).

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

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

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

Рис. 6.7. Вид на кристалл со столбцами встроенных блоков ОЗУ

В зависимости от устройства размер блоков ОЗУ может меняться от нескольких тысяч до нескольких десятков тысяч бит. Каждая микросхема может содержать от нескольких десятков до нескольких сотен таких блоков. Таким образом, полная емкость простирается от нескольких сотен тысяч бит до нескольких миллионов бит.

Каждый блок ОЗУ может использоваться либо как независимое запоминающее устройство, либо находиться в связке с несколькими блоками для реализации массивов памяти большого объема. Блоки могут использоваться для различных целях - стандартные одно- и двух-портовые блоки ОЗУ, очереди FIFO, конечные автоматы и так далее.

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

Чип EP1C3T144C8 фирмы Altera семейства Cyclone, на основе которого построен стенд, является FPGA программируемой микросхемой, выполненной по 0.13 мкм SRAM технологии с медной металлизацией и напряжением питания ядра 1.5В. Микросхемы семейства Cyclone имеют логическую емкость до 20,060 логических элемента (LE) и до 288 Кбит RAM, PLL для управления тактовыми сигналами и интерфейс для работы с DDR SDRAM и FCRAM. Данное семейство поддерживает различные стандарты Ввода/Вывода. Архитектура Cyclone поддерживает MultiVolt I/O интерфейс, который позволяет микросхемам в любых корпусах взаимодействовать с системами с различным напряжением питания. Микросхемы имеют наборы контактов питания для внутреннего ядра и входных буферов (VCCINT) и для выходных драйверов (VCCIO).

Особенности микросхемы EP1C3T144C8:

  •  Количество логических ячеек: 2 910;
  •  Количество блоков RAM в 4К(128 x 63 бит): 13;
  •  Количество бит RAM: 59 904
  •  Количество программируемых контактов: 104;
  •  Количество PLL: 1;
  •  Поддержка стандартов Ввода/Вывода LVTTL, LVCMOS, SSTL-2 и SSTL-3.
  •  Поддержка ядер intellectual property (IP), включая Altera MegaCore функции и AMPP мегафункции.
  •  Корпус: 144-Pin TQFP

В качестве примера рассмотрим схему RS-триггера на двух ИЛИ-НЕ элементах. Для реализации проекта воспользуемся методом схемного ввода.

Рис. 6.8. схема RS-триггера на двух элементах ИЛИ-НЕ

Запустив процесс полной компиляции, убедимся, что проект не содержит ошибок. Для симуляции работы проекта создадим WaveForm File и нарисуем временную диаграмму:

Рис. 6.9. временная диаграмма в среде Quartus

Запустим процесс симуляции, в результате получим:

Рис. 6.10. временная диаграмма RS триггера  в среде Quartus

Данная временная диаграмма полностью отвечает всем требованиям к работе асинхронного RS триггера.

Задание на самостоятельную работу

  •  Изучить особенности архитектуры ПЛИС семейства Cyclone;
  •  Изучить основные возможности среды Quartus II;
  •  По заданию преподавателя построить и промоделировать логическую схему;

Содержание отчета

Отчет должен содержать:

  •  Постановку задачи на лабораторную работу;
  •  Логическую схему созданную в САПР Quartus II;
  •  Временную диаграмму работы схемы;
  •  Описание процесса построения логических схем в САПР Quartus II;
  •  Ответы на контрольные вопросы и вывод;

Контрольные вопросы

  •  Что такое ПЛИС?
  •  Основные типы программируемых логических матриц?
  •  Сферы применения ПЛИС?
  •  Возможности САПР Quartus?

6.2. Конфигурирование и программирование ПЛИС

Теоретические основы лабораторной работы

Основная концепция программирования ПЛИС заключается в загрузке в устройство конфигурационного файла. Все возможности программируемых устройств реализуются с помощью специальных конфигурационных ячеек. Большинство ПЛИС используют ячейки статического ОЗУ, другие используют ячейки Flash-памяти, третьи основываются на наращиваемых перемычках.

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

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

  •  выступать в роли триггера (как показано на Рис. 6.11) или в роли защелки;
  •  переключаться по фронту или по спаду синхроимпульса либо переключаться высоким или низким уровнем сигнала (в режиме защелки);
  •  инициализироваться логическим 0 или логической 1.

В свою очередь, 4-входовая таблица соответствия содержит 16 конфигурационных ячеек.

Рис. 6.11. Очень простой программируемый блок

Рассмотрим ПЛИС-структуру на основе ячеек статического ОЗУ. Напомню, что эти устройства являются энергозависимыми. Это значит, что они программируются внутрисистемно, т. е. на печатной плате, причем каждый раз после включения системы.

Все конфигурационные ячейки статического ОЗУ можно представить в виде одного длинного сдвигового регистра. Рассмотрим простой рисунок поверхности кристалла, на котором изображены только контакты ввода/вывода и конфигурационные ячейки статического ОЗУ (Рис. 6.12).

Рис. 6.12. Представление ячеек статического ОЗУ в форме большого сдвигового регистра

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

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

Как показано на Рис. 6.12, самый простой способ понять внутреннюю структуру программируемых ячеек статического ОЗУ заключается в представлении их в виде длинного сдвигового регистра. Так было бы в том случае, когда каждая ячейка была бы реализована в виде триггера, все триггеры были бы соединены в цепочку и управлялись общим синхросигналом.

Проблема заключается в том, что ПЛИС может содержать огромное количество конфигурационных ячеек. Уже к 2003-му году высокотехнологичные устройства могли запросто содержать 25 миллионов таких ячеек! Здесь необходимо заметить, что для реализации триггера требуется восемь транзисторов, а для защелки всего лишь четыре. Поэтому конфигурационные ячейки в устройствах на статическом ОЗУ выполняются на защелках. Так, в устройстве с 25 миллионами конфигурационных ячеек такой подход позволяет сэкономить 100 миллионов транзисторов, что тоже немало.

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

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

Программирование ПЛИС может занимать значительное время. Если рассматривать высокотехнологичную микросхему, содержащую 25 миллионов ячеек статического ОЗУ, конфигурирование такого устройства в последовательном режиме с тактовой частотой 25 МГц займет одну секунду. Это не очень плохой результат в случае, когда программирование производится при включении питания, но вряд ли пользователь захочет воспользоваться возможностью такой реконфигурации в процессе работы системы.

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

Каждая 4-входовая таблица соответствия может конфигурироваться для работы в качестве собственно таблицы соответствия либо в качестве небольшого блока (16x1) распределенного ОЗУ, либо в качестве 16-битного сдвигового регистра. Все эти конфигурации используют для своей работы группу из 16 защелок на основе статического ОЗУ, причем каждая защелка является конфигурационной ячейкой из состава рассмотренной нами регистровой цепочки.

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

Регистры программируемых логических блоков соединены с конфигурационными ячейками, в которых содержится его исходное значение: логический «0» или логическая «1». Каждое семейство ПЛИС обычно поддерживает некоторый механизм, например, вывод инициализации, который при активации дает команду регистрам вернуться к исходным значениям. Такой механизм не инициализирует встроенные блоки памяти или распределенное ОЗУ.

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

  •  Последовательная загрузка, ПЛИС в режиме ведущий;
  •  Последовательная загрузка, ПЛИС в режиме ведомый;
  •  Параллельная загрузка, ПЛИС в режиме ведущий;
  •  Параллельная загрузка, ПЛИС в режиме ведомый;
  •  Использования только JTAG-порта;

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

Рис. 6.13. Последовательная загрузка, ПЛИС в режиме ведущий

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

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

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

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

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

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

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

Рис. 6.14. Параллельная загрузка, ПЛИС в режиме ведущий

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

Рис. 6.15. Параллельная загрузка, ПЛИС в режиме ведущий (современная реализация)

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

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

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

Рис. 6.16. Параллельная загрузка, ПЛИС в режиме ведомый

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

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

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

Многие современные устройства, в том числе и ПЛИС, оборудованы специальным интерфейсом, который называется JTAG-портом. Этот порт, поддерживаемый Объединенной рабочей группой по автоматизации тестирования (Joint Test Automation Group, JTAG) и известный как стандарт IEEE 1149.1, изначально разрабатывался для реализации метода периферийного сканирования, который применялся для тестирования печатных плат и цифровых микросхем.

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

Рис. 6.17. JTAG-регистры последовательного сканирования

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

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

Для конфигурирования и программирования ПЛИС фирмы Altera семейства Cyclone предлагает использовать устройство ByteBlasterMV. Оно позволяет загружать конфигурацию в ПЛИС через параллельный порт персонального компьютера.

Устройство ByteBlasterMV обеспечивает конфигурирование ПЛИС с различным напряжением питания (VCC 3.3 В или 5.0 В), на что указывают буквы MV – Multi Volt.

Данное устройство обеспечивает следующие режимы загрузки конфигурации:

  •  PS-режим (пассивный последовательный режим [PS – Passive Serial]);
  •  JTAG-режим (от Joint Test Action Group – объединенная группа по вопросам тестирования цифровых схем);

Наш лабораторный стенд поддерживает пассивный режим последовательной загрузки конфигурации (passive serial).

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

Рис. 6.18. Логическая схема управления светодиодами

На данной схеме присутствуют два счетчика и один триггер: счетчик Altpll – является делителем входной тактовой частоты стенда на , т. е. получение частоты около 3 Гц, Счетчик Counter работает в режиме прямого счета, JK – триггер работает здесь в счетном режиме. После удачного завершения процесса полной компиляции необходимо в редакторе Pin Planner выставить соответствие входа и выходам схемы пины ПЛИС. Для лабораторного стенда это соответствие представлено в таблице 6.1.

Таблица 6.1

. Соответствие входов и выходов схемы выводам ПЛИС

Входы и выходы схемы

Пины ПЛИС стенда

Примечание

CLK

PIN_16

Вход синхросигнала частотой в 25МГц

LED_1

PIN_84

Выход на светодиод 1

LED_2

PIN_83

Выход на светодиод 2

LED_3

PIN_82

Выход на светодиод 3

LED_4

PIN_79

Выход на светодиод 4

LED_5

PIN_78

Выход на светодиод 5

LED_6

PIN_77

Выход на светодиод 6

Схема подключения светодиода к ножке ПЛИС представлена на Рис. 6.19

Рис. 6.19. Схема подключения светодиода к ПЛИС

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

Задание на самостоятельную работу

  •  Изучить режимы конфигурирования ПЛИС семейства Cyclone;
  •  Изучить механизмы конфигурирования ПЛИС предоставляемые САПР Quartus II;
  •  По заданию преподавателя построить логическую схему, которая зажигает светодиоды в определенной последовательности;

Содержание отчета

Отчет должен содержать:

  •  Постановку задачи на лабораторную работу;
  •  Логическую схему созданную в САПР Quartus II;
  •  Временную диаграмму работы схемы;
  •  Описания режимов конфигурирования ПЛИС;
  •  Ответы на контрольные вопросы;
  •  Выводы;

Контрольные вопросы

  •  Что такое конфигурирование ПЛИС?
  •  Режимы загрузки конфигурации в ПЛИС?
  •  Какие устройства применяют для загрузки конфигурации в ПЛИС?
  •  Режимы работы устройств для программирования ПЛИС?

6.3. Построение блоков управления на логических элементах

Теоретические основы лабораторной работы

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

Рис. 6.20. Схема подключения переключателя

Резистор "подтягивает" порт ввода к единице. Это делается для того, чтобы избежать т.н. третьего состояния (состояние "Z" или просто "обрыв") на входе. При Z на входах возникают помехи - очень короткие импульсы тока, которые могут свести систему с ума. Помехи возникают от статического электричества, от прикосновения пальцами к проводникам, от работающих поблизости приборов. Подтяжка работает так: в ненажатом состоянии сопротивление между нулем и входом очень велико, и через резистор на входе создается потенциал, воспринимаемый МК как «1». При нажатии картина меняется - теперь резистор - относительно бесконечное сопротивление, а на пине - потенциал нуля.

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

Рис. 6.21. Схема подключения матрицы клавиатуры.

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

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

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

Рис. 6.22. Временная диаграмма переходных процессов при «дребезге» контактов

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

Игнорирование явления дребезга контактов может привести к тому, что будет зафиксировано ложное нажатие (отпускание) клавиши и система начнет «несанкционированную» реакцию на это нажатие.

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

Для наглядности рассмотрим следующую схему, на которой порядок загорания светодиодов определяется нажатием кнопок.

Рис. 6.23. Логическая схема управления светодиодными индикаторами с помощью кнопок

В данном примере антидребезг реализован на сдвиговом регистре, тактируемый сигналом clk и элементе И, который осуществляет сравнение разрядов регистра.

На лабораторном стенде кнопка подключается к ножке ПЛИС по следующей схеме (Рис. 6.24)

Рис. 6.24. Схема подключения кнопки к ПЛИС

Номера контактов ПЛИС, к которым подсоединены кнопки, показаны в таблице 6.2.

Таблица 6.2.

Соответствие выводов схемы пинам ПЛИС

Входы и выходы схемы

Пины ПЛИС стенда

Примечание

CLK

PIN_16

Вход синхросигнала частотой в 25МГц

BTN_1

PIN_100

Вход с кнопки 1

BTN_2

PIN_99

Вход с кнопки 2

BTN_3

PIN_98

Вход с кнопки 3

BTN_4

PIN_97

Вход с кнопки 4

Задание на самостоятельную работу

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

Содержание отчета

Отчет должен содержать:

  •  Постановку задачи на лабораторную работу;
  •  Логическую схему созданную в САПР Quartus II;
  •  Временную диаграмму работы схемы;
  •  Принципы построения блоков управления на ПЛИС;
  •  Ответы на контрольные вопросы;
  •  Выводы;

Контрольные вопросы

  •  Принципы построения устройств управления на логических элементах?
  •  Примеры использования кнопочных переключателей в цифровых схемах?
  •  Что такое дребезг?
  •  Программные и аппаратные методы борьбы с дребездгом?

6.4. Использование блоков интеллектуальной собственности IP предоставляемых САПР Quartus II

Теоретические основы лабораторной работы

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

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

Блоки интеллектуальной собственности могут создаваться и распространяться по-разному. Один из вариантов заключается в том, что поставщик IP может создавать их вручную и распространять в виде RTL-описания. В этом случае существует несколько способов, с помощью которых конечный пользователь может купить и использовать эти блоки (Рис. 6.25). Как будет показано, поставщик этих блоков также может использовать специальные приложения, генерирующие блоки или ядра интеллектуальной собственности.

В некоторых случаях разработчики устройств на основе ПЛИС могут купить блоки интеллектуальной собственности в виде блоков незашифрованного исходного кода уровня регистровых передач (исходного RTL-кода). Эти блоки впоследствии могут быть интегрированы в RTL-код разрабатываемого устройства (Рис. 6.25, а). Перед тем как продать исходные коды своих блоков IP поставщик IP производит их моделирование, синтез и верификацию.

Рис. 6.25. Варианты приобретения блоков интеллектуальной собственности

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

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

Часто разработчики ПЛИС-устройств покупают средства интеллектуальной собственности в виде таблиц соединений КЛБ/таблиц соответствия, выполненных до этапа размещения и разводки элементов (Рис. 6.25, б). Такие таблицы обычно поставляются в зашифрованном виде в EDIF-формате (electronic data interchange format — формат электронного обмена данными) либо в формате поставщика ПЛИС.

В этом случае поставщик IP может также предоставлять своим пользователям откомпилированные потактные (cycle-accurate) C/C++ модели для функциональной верификации, так как их моделирование будет выполняться намного быстрее, чем это делают их аналоги, выполненные на уровне таблиц соединений КЛБ/таблиц соответствия.

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

В некоторых случаях разработчики ПЛИС-устройств могут приобрести блоки интеллектуальной собственности в виде таблиц соединений КЛБ/таблиц соответствия, прошедшие процедуру размещения и разводки (Рис. 6.25, в). Такие таблицы обычно поставляются в зашифрованном виде в EDIF-формате либо в формате поставщика ПЛИС.

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

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

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

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

Рис. 6.26. Генератор блоков IP

Фирма Altera предоставляет набор настраиваемых блоков мегафункций от простых арифметических блоков до таких модулей как сумматоры, счетчики, PLL блоки, умножители и модули памяти.

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

Библиотека параметризуемых функций (LPM) - технологически-независимая библиотека логических функций, параметризуемая для достижения масштабируемости и адаптируемости. Altera реализовала параметризуемые модули (называемые также параметризуемые функции) из LPM в версии 2.1.0, которые предлагают архитектурно-независимый ввод проекта для всех, поддерживаемых Quartus II устройств. Компилятор включает встроенную поддержку компиляции LPM для функций, используемых во входных файлах (схемном, AHDL, VHDL, Verilog HDL). Параметризуемая функция – логическая функция, использующая параметры для достижения масштабируемости, адаптируемости и эффективной реализации в кремнии.

Quartus II Web Edition предлагает большое разнообразие мегафункций, включая параметризуемые LPM функции.  Добавление мегафукций в проект осуществляется с помощью MegaWizard Plug-In Manager. В нем можно выбрать и установить настройки для требуемой мегафункции. MegaWizard Plug-In Manager автоматически сгенерирует файлы, которые содержат код мегафункций, на языке VHDL или Verilog, файл блока для редактора схем и добавит их в проект. Сгенерированный HDL код оптимизирован под устройства программируемой логики фирмы Altera.

Задание на самостоятельную работу

  •  Изучить набор мегафункций предоставляемый САПР Quartus II Web Edition фирмы Altera для семейства Cyclone;
  •  По заданию преподавателя построить и протестировать логическую схему, в которой арифметические операции реализуются с помощью мегафункций;

Содержание отчета

Отчет должен содержать:

  •  Постановку задачи на лабораторную работу;
  •  Логическую схему созданную в САПР Quartus II;
  •  Временную диаграмму работы схемы;
  •  Основные сведения о библиотеках мегафункций фирмы Altera;
  •  Ответы на контрольные вопросы;
  •  Выводы;

Контрольные вопросы

  •  Что такое IP ядра?
  •  Способы создания и распространения IP ядер?
  •  Что такое мегафункция?
  •  Основные типы мегафункций и их назначение?

Литература

  1.  Клайф Максфилд.  Проектирование на ПЛИС. Архитектура, средства и методы. - Москва: «Додека ХХI», 2007. - 278 с.
    1.  Стешенко В.Б. ПЛИС фирмы ALTERA. Проектирование устройств обработки сигналов. - Москва: «Додека», 2000. - 306 с.
    2.  Бородин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики. - М.: Издательство ЭКОМ, 2002. - 400 с: илл.
    3.  Quartus II. Handbook - www.altera.com.
    4.  Официальный сайт фирмы Altera www.altera.com.
    5.  Сайт дистрибьютора Altera – фирма ЭФО www.altera.ru

Оглавление

[1] Вступление

[2]
1. Разработка проекта

[2.1] 1.1. Создание проекта

[2.2] 1.2. Создание логической схемы

[2.3] 2.3. Компиляция проекта




1. І Склад і будова молекули нітратної кислоти- зв~язок 5 2 зв~язок HNO3 м
2. СЭИ Щербатов В
3. Биотехнология и биоиндустрия на современном этапе
4. Естественно-правовая теория
5. інілер мен апалысі~ілілерді~ а~а~арындастарды~ асырап алушылар мен асырап алын~андарды~ арасында неке
6. Технология возделывания фацелии рябинколистной
7. тематика 11 класс Вариант 1
8. Как улучшить инвестиционный климат в России
9. і. Ал оларды~ ойда~ыдай алынуы мен орындалуы мемлекеттік ж~не ~о~амды~ дамуды~ ~ар~ынын са~тап ~ана ~оймай о
10.  Теоретические основы описания жаргона северодвинских рокмузыкантов
11. ОБЪЕДИНЕНИЕ ПОДРОСТКОВЫХ КЛУБОВ ЛЕНИНГРАДСКОЕ ПРИКАЗ от 2013 г
12. Об Общественной палате Российской Федерации от 4 апреля 2005 года 32
13. Упит Андрей.html
14. История Российской экономической академии им
15. Курсовая работа- Полномочия органов местного самоуправления.html
16. мемлекет белгілеген жалпы~а міндетті белгілі бір ~зін~зі ~стау м~нері ережелеріні~ ж~йесі оны~ к~мегі ар
17. Тема 6 Первая мировая война
18. Эволюция системы образования
19. Оштукатуривание оконных и дверных откосов
20. комн. квре полн. меблир