Кафедра "Вычислительная техника"
КУРСОВАЯ РАБОТА
На тему: Проектирование устройств на языке VHDL САПР MAX+PLUS II
Москва, 2009
Содержание
1.1 Введение и Общие сведения о САПР MAX+PLUS II
1.2 Ввод проекта и компиляция
1.3 Моделирование
1.4 Размещение проекта в ПЛИС
1.5 Разработка пересчетных схем
1.6 Создание символа
Литература
1.1 Введение. Общие сведения о САПР MAX+PLUS II
В настоящее время для проектирования ПЛИС фирмы Altera в основном используются два типа САПР: MAX+PLUS II и Quartus. В настоящей главе рассматривается САПР MAX+PLUS, которая включает в себя полный пакет программных средств для проектирования ПЛИС фирмы Altera, в том числе синтез схем с использованием языка VHDL.
В систему MAX PLUS II входят средство для отображения иерархической структуры проекта (Hierarhy Display); графический редактор Graphic Editor; текстовый редактор (Text Editor) для создания и редактирования проектов на языках описания схем, в том числе VHDL; средство для создания и редактирования новых символов (Symbol Editor); графический редактор для ввода тестовых сигналов при моделировании (Waveform Editor); программа для компиляции проектов Compiler; средство для просмотра и редактирования результатов размещения и трассировки (Floorplan Editor); программа моделирования Simulator и другие модули.
Для ввода проекта сначала создаются необходимые каталоги, в которых будут располагаться проекты, например, в каталоге VHDL_curs создается подкаталог grup_fio (группа_ФИО-латинскими символами), а в нем подкаталог первого проекта, например count_e. Затем необходимо открыть новый файл, для чего из основного окна надо выполнить следующую последовательность команд: File Þ New, после чего в открывшемся окне надо выбрать пункт «Text Editor File». Эта последовательность показана на рис. 3.1. Данный файл необходимо сохранить, при этом надо задать расширение VHD.
Рис. 3.1. Открытие текстового файла.
После этого необходимо зарегистрировать проект. Регистрация проекта с именем, совпадающим с именем текстового файла, осуществляется последовательным выбором пунктов меню: File Þ Project Þ Set Project to Current File. После этого проводится ввод текста проекта и выбор микросхемы (см. рис. 3.2). В приведенном на рис. 3.2 примере выбирается микросхема EPF8282ALC84.
Пусть в исходном файле введено следующее описание:
library IEEE;
use IEEE.std_logic_1164.all;
entity count_e is
port( clk, enable : in STD_LOGIC;
q : out INTEGER range 0 to 63);
end count_e;
architecture e of count_e is
begin
process (clk)
variable cnt: INTEGER range 0 to 63;
begin
if (clk'event and clk = '1') then
if enable = ‘1’ then
cnt := cnt+1;
end if;
end if;
q <= cnt;
end process;
end e;
Рис. 3.2. Выбор микросхемы
В приведенной программе описан шестиразрядный счетчик, срабатывающий по переднему фронту синхросигнала, то есть по изменению тактового сигнала с “0” на “1” (clk'event and clk = '1’'). Входной сигнал enable является сигналом разрешения, причем “1” соответствует разрешению счета, выходной сигнал счетчика q задается как целое (integer) в диапазоне от 0 до 63 (range 0 to 63). В приведенном описании используется переменная cnt, значение которой присваивается выходному сигналу q. Схема разрабатываемого счетчика приведена на рис. 3.3.
Рис. 3.3. Шестиразрядный счетчик
Рис. 3.4. Регистрация графического файла
При моделировании схем используется графический редактор Waveform Editor. Сначала должен быть создан и зарегистрирован графический файл, процесс регистрации фала с именем count_e.scf показан на рис. 3.4.
После регистрации необходимо указать, на каких контактах желательно просмотреть сигналы. Процесс выбора тестируемых сигналов показан на рис. 3.5. Когда откроется окно Enter Node from SNF, то необходимо нажатием кнопки List открыть список всех входов-выходов (контактов).
Рис. 3.5. Выбор тестируемых контактов.
Средства редактора Waveform Editor позволяют формировать произвольные последовательности воздействий, масштабировать их во времени; сигналы на шинах представлять в виде векторов двоичных сигналов или в виде чисел (двоичных, восьмеричных, шестнадцатиричных, десятичных); копировать и вставлять фрагменты, менять местами поля, занимаемые сигналами и т.п. На рис. 3.6 показан результат формирования входных сигналов clk и enable.
Следующим этапом является установка параметров моделирования, в том числе времени окончания (End Time), для чего необходимо выполнить действия, показанные на рис. 3.7.
Запуск процесса моделирования производится нажатием кнопки Start.
Нажатием кнопки Open SCF процесс моделирования завершается и на экране возникает форма редактора, на которой отображены не только воздействия, но и результаты работы устройства (см. рис. 3.8).
Рис. 3.8. Результаты моделирования
1.4 Размещение проекта в ПЛИС
После ввода проекта проводится компиляция, во время которой на экран выдается окно (см. рис. 3.9), в котором отражаются все этапы компиляции и размещения проекта в микросхему. Во время компиляции происходит размещение проекта в ПЛИС, при этом формируется отчет, в котором отражены результаты размещения, временные характеристики и другие данные.
Результаты использования ресурсов микросхемы отражены в следующих строках:
Chip/ Input Output Bidir LCs
POF Device Pins Pins Pins LCs % Utilized
EPF8282ALC84-2 2 6 0 8 3%
User Pins: 2 6 0
Из приведенного фрагмента видно, что используется ПЛИС EPF8282ALC84‑2, в схеме задействованы два входных контакта (Input Pins), 6 выходных контактов (Output Pins) и восемь логических ячеек (LCs). В отчете также приводится распределение занятых ячеек по столбцам и строкам. В нижеприведенном фрагменте показано, что все занятые ячейки расположены в первом столбце в строке В.
Logic Cell Counts
Column: 01 02 03 04 . . . 11 12 13 Total
A: 0 0 0 0 . . . 0 0 0 0
B: 8 0 0 0 . . . 0 0 0 8
Total: 8 0 0 0 . . . 0 0 0 8
Информация о распределении сигналов по контактам выглядит следующим образом:
Pin Primitive Code INP FBK OUT FBK Name
12 INPUT G 0 0 0 0 clk
73 INPUT 0 0 0 6 enable
22 OUTPUT 0 1 0 0 q0
27 OUTPUT 0 1 0 0 q1
62 OUTPUT 0 1 0 0 q2
61 OUTPUT 0 1 0 0 q3
56 OUTPUT 0 1 0 0 q4
58 OUTPUT 0 1 0 0 q5
Из приведенного фрагмента видно, что синхросигнал является глобальным сигналом и поступает на контакт с номером 12, разрешающий сигнал enable подается на контакт с номером 12, выходные сигналы q5 . . . q0 вырабатываются на контактах 22, 27. 62, 61, 56, 58. В отчете приводится также и другая информация, в том числе об использовании связей в ПЛИС.
Распределение внешних сигналов по контактам может быть задано проектировщиком до начала компиляции. Для этого из основного окна САПР MAX+PLUS II надо выполнить следующую последовательность команд: Assign Þ Pin/Location/Chip.
Информация о временных задержках может быть получена с помощью программы Timing Analyzer. Для просмотра плана микросхемы можно использовать программу Floorplan Editor.
Разрабатываемый счетчик (см. рис. 4.1) срабатывает по переднему фронту синхросигнала clk, также, как и в предыдущей схеме. Входной сигнал load задается как обычный управляющий сигнал, причем “0” соответствует загрузке, выходной сигнал счетчика q[5/0] и загружаемое значение d[5/0] задаются как целые (integer) в диапазоне от 0 до 63 (range 0 to 63).
Рис. 3.10. Шестиразрядный счетчик синхронной загрузкой
Описание схемы на языке VHDL задается следующим образом:
library IEEE;
use IEEE.std_logic_1164.all;
entity count_l is
port( clk, ld : in STD_LOGIC;
d : in INTEGER range 0 to 63;
q : out INTEGER range 0 to 63);
end count_l;
architecture l of count_l is
begin
process (clk)
variable cnt: INTEGER range 0 to 63;
begin
if (clk'event and clk = '1') then
if ld = '0' then
cnt := d;
else cnt := cnt+1;
end if;
end if;
q <= cnt;
end process;
end l;
Ввод схемы и регистрация проекта производятся также, как описано выше в предыдущих разделах. В отличие от предыдущей схемы в данном проекте внешние контакты задаются до начала компиляции. Для этого последовательно выбираются пункты меню Assign Þ Pin/Location/Chip, в результате появляется следующее окно (см. рис. 3.11).
Рис. 3.11. Окно Pin/Location/Chip
В открывшемся окне надо нажать клавишу Search, чтобы открыть окно Search Node Database, котором нажимается клавиша List. В результате в окне Names in Database появится список внешних контактов, которые были описаны в интерфейсе entity count_l в исходном тексте. Если теперь нажать на нужный контакт, а потом на OK, то имя этого контакта появится в пункте Node Name окна Pin/Location/Chip, показанного на рис. 3.11. После этого в строке Pin вводится номер контакта микросхемы и нажимается клавиша Add, и в результате в окне Existing Pin/Location/Assignments появляется соответствующая запись. Имя сигнала в окне Node Name и номер контакта в окне Pin можно задавать вручную, не используя средства поиска.
Зададим входные сигналы d0 … d5 на контакты 13, 15, 16, 18, 19 и 20 соответственно. Синхросигнал clk пусть будет поступать контакт 12, сигнал управления ld – на контакт 21. Контакты 9, 8, 7, 6, 4 и 3 закрепим за выходными сигналами q0 … q5. Система САПР должна обеспечить указанное распределение, а в случае невозможности исполнения будут выдаваться соответствующие сообщения и предлагаться возможные варианты исправления.