
VHDL 801а вопросы на экзамен / Матрица
.pdf
Рис. 43. Запуск конфигуратора ПЛИС
В конечном итоге выясняется, что с помощью навигатора вызываем программу iMPACT 10.1, с помощью которой будет осуществляться загрузка конфигурации. И эта программа сразу предлагает определить в автоматическом режиме тип загрузки и тип кабеля загрузчика.
Рис. 44. Инициируем поиск кабеля загрузки
Соглашаемся и сразу указываем на конфигурационный файл – Schema.jed.
31

Рис. 45. Система обнаружила загрузочный кабель и кристалл ПЛИС
В поле операций указываем программирование: Operations - > Program… В итоге, загрузчик переместит jed-файл конфигурации в ПЛИС - в чем сразу можно убедиться по поведению светодиодов, отражающих работу созданного делителя частоты.
Рис. 46. Конфигурационный файл загружен
32

Создание проекта средствами языка VHDL
Если предыдущие версии САПР ориентировались на создание схемотехнических устройств с помощью графического ввода принципиальных схем, то текущие системы проектирования усиливают возможность создания проекта с помощью языков описания аппаратуры (Hardware Description Language, HDL). Эти языки приближены к обычным алгоритмическим языкам.
Превосходство такого способа, прежде всего, в более долгой «жизнеспособности» библиотеки решений. Если устройство было спроектировано в схемотехническом редакторе, то через несколько версий САПР к нему будет сложно вернуться. Например, для модификации. Совместимость схемотехнических редакторов и библиотек элементов не обеспечивается. Иное дело, если проект был создан с помощью HDL. И, главное, схема, которую мы создаем с помощью графического редактора, например, в ISE Xilinx превращается уже на первых ступенях компиляции в файл HDL. То есть, HDL является внутренним языком описания проекта.
Следует отметить, что синтез цифровых электрических схем – лишь одно из направлений использования языка описания аппаратуры. Огромное значение придается компьютерному моделированию. В среде САПР ISE Xilinx в описание HDL переводятся функциональная и временная модели проекта.
Из десятка языков предназначенных для описания аппаратуры наибольшее распространения имеют VHDL и Verilog. Оба этих языка представлены в САПР Xilinx и в САПР Altera.
Рассмотрим практическое создание проекта средствами языка VHDL (Very High-Speed Integrated Hardware Description Language – стандарт IEEE 1076).
Для простоты демонстрации технологического маршрута проектирования средствами языка VHDL создадим 10-разрядный счетчик, тактировать который будем как в предыдущем примере периодическим сигналом 10 kHz, а к старшим 4-м разрядам подсоединим светодиоды.
Создаем новый проект по тому же алгоритму, как и схемотехнический, но сразу указываем, что основным носителем проекта (источником) будет файл структуры HDL.
Рис. 47. Создавая проект укажем, что основной источник файл HDL
33

Уточним особенности проекта: работаем с матрицей CPLD CoolRunner-II
Рис. 48. Укажем, что предпочтение в проекте – языку VHDL
Вместо бланка графики схемотехники укажем, что необходим шаблон модуля VHDL.
Рис. 49. Назовем модуль - FirstHDL
34

После этого, уточняя характер проектируемого модуля, мастер шаблонов попросит описать предполагаемое устройство на уровне функционального блока: какие сигналы принимает (IN) и какие выдает (OUT).
Рис. 50. Заполняем бланк интерфейса
Назовем входной тактовый сигнал как MyCLK, а сигналы, которые полагаем подавать на светодиоды, как LED0,,,,LED3.
Рис. 51. Бланк интерфейса заполнен
35

Нажимая кнопку Finish, завершаем создание шаблона проекта и получаем его листинг для работы в текстовом редакторе.
Рис. 52. Шаблон модуля VHDL для проекта
Рассмотрим подробно особенности шаблона и отредактируем его сообразно нашему проекту:
-------------------------------------------------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FirstHDL is
Port ( MyCLK : in STD_LOGIC; LED0 : out STD_LOGIC; LED1 : out STD_LOGIC; LED2 : out STD_LOGIC; LED3 : out STD_LOGIC);
end FirstHDL;
architecture Behavioral of FirstHDL is
begin
end Behavioral;
-------------------------------------------------------------------------------------------------------------------------
Шаблон начинается с подключения библиотек. Например, библиотека STD_LOGIC_1164.ALL позволяет работать с основными типами определения сигналов и шин – в частности, STD_LOGIC(как это можно обнаружить ниже) и STD_LOGIC_VECTOR – чем воспользуемся позднее, при создании проекта. Подключение библиотеки обеспечивает ключевое слово use. Работоспособность нашего устройства поддержат и библиотеки STD_LOGIC_ARITH.ALL и STD_LOGIC_UNSIGNED.ALL.
После объявления используемых пакетов библиотек идет раздел, называемый интерфейсом объекта. Раздел начинается с ключевого слова entity, после которого следует имя модуля. В этом разделе объект описывается в виде «черного ящика», то есть определяются сигналы, которыми он
36
обменивается с окружающими объектами, их тип и направление. В нашем примере сигнал MyCLK является входным, а сигналы LED0,..,LED3 – выходными. Заканчивается раздел ключевым словом end, за которым следует имя модуля.
Следующий раздел начинается с ключевого слова architecture и называется архитектурным телом, которое содержит функциональное описание объекта. Собственно функционирование объекта описывается в этом разделе между ключевыми словами begin и end.
Между ключевыми словами architecture и begin располагается раздел деклараций архитектуры, в котором определяются константы, сигналы и компоненты объектов. Собственно архитектурное тело содержит набор операторов, которые могут быть простыми или составными. Типичным составным оператором является оператор process. В нашем случае архитектура содержит всего один процесс, который начинается с ключевого слова process и заканчивается end process. Тело любого процесса выполняется каждый раз, когда происходит любое изменение сигналов, перечисленных в его списке чувствительности (в скобках после ключевого слова process), В теле рассматриваемого процесса в списке чувствительности будет сигнал MyCLK:
-------------------------------------------------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FirstHDL is
Port ( MyCLK : in STD_LOGIC; LED0 : out STD_LOGIC; LED1 : out STD_LOGIC; LED2 : out STD_LOGIC; LED3 : out STD_LOGIC);
end FirstHDL;
architecture Behavioral of FirstHDL is
signal CNT: std_logic_vector(9 downto 0):= B"1111111111";
begin
process(MyCLK)
begin
if MyCLK 'event and MyCLK = '1' then CNT <= CNT + 1;
end if;
if CNT(9) = '1' then LED0 <= '1'; else LED0 <= '0'; end if; if CNT(8) = '1' then LED1 <= '1'; else LED1 <= '0'; end if; if CNT(7) = '1' then LED2 <= '1'; else LED2 <= '0'; end if; if CNT(6) = '1' then LED3 <= '1'; else LED3 <= '0'; end if;
37
end process;
end Behavioral;
Втеле процесса происходит проверка условия:
1.Имеем ли дело, например, с передним фронтом сигнала - if MyCLK 'event and MyCLK = '1' ?
2.И если это так, то отрабатываем инкремент счетчика CNT+1.
3.Проверяем состояние старших разрядов счетчика для возможности активизировать светодиоды. И если разряд счетчика имеет единичное значение – включаем соответствующий светодиод.
После редактирования программы записываем ее и попадаем в уже знакомый алгоритм: встраиваем проект в кристалл (Implement Design), редактируем конструкторский файл (Constraints Editor) и создаем модель (Behavioral Simulation). Если результат удовлетворяет нашим функциональным требованиям - загружаем полученную конфигурацию в матрицу (iMPACT). Вся эта часть маршрута проектирования полностью совпадает с последовательностью выполненной ранее для проекта, созданного в схемотехническом редакторе.
Список литературы
1.Зотов В. Ю. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx и САПР WebPACK ISE. – М. Горячая линия – Телеком, 2003 – 624 с.
2.Тарасов И. Е. Разработка цифровых устройств на основе ПЛИС Xilinx с применением языка VHDL. – М. Горячая линия – Телеком, 2005 – 252 с.
3.Бобрешов А. М., Дыбой А. В. Проектирование цифровых устройств с помощью языка описания аппаратуры VHDL. – Воронеж, ВГУ, 2007 – 51 с.
4.Ковригин Б. Н. Введение в инструментальные средства проектирования и отладки цифровых устройств на ПЛИС. – М. МИФИ, 2006 – 192с.
5.Максфилд Клайв. Проектирование на ПЛИС. Архитектура, средства и методы. Курс молодого бойца. – М. Издательский дом «Додэка-XXI», 2007 – 408 с.
6.Parnell Karen, Mehta Nick/ Programmable Logic Design Quick Start Handbook/ - Xilinx Inc/ 2004 – 191 p/
7.David Money Harris & Sarah L. Harris. Digital Design and Computer Architecture, by Elsevier, 2007
– 569 p.
38