Руководство к практическим занятиям «Проектирование ПЛИС с

advertisement
1
№ 3277
621.382.82(076)
Р 851
КАФЕДРА КОНСТРУИРОВАНИЯ ЭЛЕКТРОННЫХ СРЕДСТВ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
РУКОВОДСТВО
К ПРАКТИЧЕСКИМ ЗАНЯТИЯМ
ПРОЕКТИРОВАНИЕ ПЛИС
С ИСПОЛЬЗОВАНИЕМ САПР
OrCAD 9.1
по курсам
Применение микросхем и микропроцессоров
Курсовое и дипломное проектирование
Для студентов специальностей 2205, 2019
ФЭП
Таганрог 2003
2
УДК 621.382.82.037.33.001.2(076.5)+
681.325.6(076.5)+
658.512.2.011.5(076.5)
Составитель Е.Б.Лукьяненко
Руководство к практическим занятиям «Проектирование ПЛИС с
использованием САПР OrCAD 9.1» по курсам «Применение микросхем и
микропроцессоров», «Курсовое и дипломное проектирование». Таганрог: Издво ТРТУ, 2003. 35 с.
В работе излагаются сведения, необходимые для проектирования ПЛИС
фирмы Altera, простых ПЛИС типа GAL, PAL, PROM с использованием САПР
OrCAD 9.1 и программы MAX+PLUSII. Приводятся примеры описания наиболее
распространенных микросхем на языке высокого уровня VHDL. Описывается
создание условного графического обозначения разработанной ПЛИС с целью ее
дальнейшего моделирования и разработки печатной платы.
Ил. 37. Библиогр.: 5 назв.
Рецензент О.Н.Негоденко, канд. техн. наук, профессор кафедры МЭТ БИС
ТРТУ.
3
ВВЕДЕНИЕ
Привлекательность проектирования ПЛИС (программируемых
логических интегральных схем) с использованием САПР OrCAD 9.1
обусловлена тем, что в этой программе существует единый графический
редактор, применяемый для различных целей. В этом редакторе можно
создать цифровую или аналого-цифровую схему для моделирования ее в
проектах Analog or Mixed – Signal Circuit, PC Board или Programmable Logic,
использовать схему для реализации в виде ПЛИС различных фирм: Altera,
Actel, Lattice, Lucent, Philips, Xilinx, а также подготовить схему для
разработки печатной платы.
Процесс размещения и трассировки ПЛИС выполняется с помощью
специализированных программ типа MAX+PLUSII, XACT Step и др. Таким
образом, отпадает необходимость в изучении графических редакторов
различных фирм и приемов работы с ними, в то же время, САПР OrCAD 9.1
позволяет провести сквозное проектирование электронной аппаратуры с
использованием одного графического редактора.
1. СОЗДАНИЕ ЭЛЕКТРИЧЕСКОЙ СХЕМЫ ПЛИС
1.1. Создание проекта PC Board
В САПР OrCAD 9.1 возможно создание проектов четырех видов:
 Analog or Mixed-Signal Circuit – моделирование аналоговых,
цифровых и цифроаналоговых схем;
 PC Board – создание схем с возможностью моделирования в Pspice
A/D и цифровых схем в Express Plus;
 Programmable Logic – моделирование цифровых схем и синтез
программируемой логики;
 Schematic – создание и документирование схем.
Создание проекта выполняется по команде File / New / Project. В
диалоговом окне (рис. 1) выбирается тип проекта. Вначале создается проект
типа PC Board, так как в нем содержится файл проекта *.dsn и возможно
моделирование как электрических схем, так и схем, описанных на языке
VHDL. Проект типа Programmable Logic сразу создавать нельзя, так как в
нем отсутствует файл проекта *.dsn, и поэтому невозможно вводить
электрические схемы. Далее (рис. 1) в поле Name записывается имя проекта,
в поле Location – путь к каталогу, в котором размещаются файлы проекта.
Рабочий каталог создается после нажатия на кнопку Browse. В заключение
нажимается кнопка ОК. В следующем окне указывается галочкой
разрешение на моделирование в строке Enable project simulation. После чего
выбирается моделирование цифровых устройств в модуле Express Plus, для
4
чего проставляется галочка в строке Add VHDL – based digital simulation
resource (добавить VHDL-описания цифровых сигналов). Нажимается
кнопка «Далее». При таком открытии проекта можно моделировать схемы и
VHDL-описания компонентов.
Рис.1
1.2. Создание проекта Programmable Logic
Для проектирования ПЛИС создается проект Programmable Logic
(рис.2). Предварительно проект PC Board закрывается.
Рис. 2
5
При создании проекта Programmable Logic открывается окно, в
котором выбирается тип и семейство ПЛИС. В OrCAD 9.1 возможно
подготавливать схемы для проектирования ПЛИС следующих фирм:
Фирма-производитель
Altera
Actel
Atmel
Lattice
Lucent
Philips
Simple PLD
Vantis
Xilinx M1
Семейство ПЛИС
MAX 5, MAX 7, MAX 9,
Flex 6, Flex 8, Flex 10
ACT1, ACT2, ACT3,
1200XL, 3200DX, 40MX,
42MX, 54SX
AT40K,AT6K02, AT6K04
IspLSI or pLSI
ORCA 2 or 2A,
ORCA 3C/3T
XPLA
GAL, PAL, PROM
MACH
XC3x00/L,
XC4000E,
XC4000EX, XC4000XL,
XC4000XF, XC5200,
XC9500, Spartan, Spartan
XL, Virtex
Пакет программ для
разработки ПЛИС
MAX+PLUS11
Actel Designer Series
Lattice pDS+
Lucent ORCA Foundry
Philips XPLA
OrCAD Express
XACTStep Series
Затем файл проекта *.dsn, созданный в проекте PC Board, копируется с
помощью Windows Commander в проект Programmable Logic. Для
подключения файла проекта *.dsn к проекту Programmable Logic при
выделенной верхней строчке менеджера проекта Design Resource
вызывается контекстное меню щелчком правой кнопки мыши (ПКМ), и
после щелчка левой кнопкой мыши (ЛКМ) на открывшемся окошке Add File
файл проекта *.dsn находится и присоединяется к проекту. После этого
рекомендуется схему (имя Schematic) переименовать (команда Rename из
контекстного меню).
1.3. Ввод электрической схемы
Электрическая схема ПЛИС может содержать как библиотечные
цифровые элементы, так и блоки с VHDL-описаниями компонентов,
составляемых разработчиком. При проектировании ПЛИС фирмы Altera
компонеты выбираются из библиотек Altera_P, Altera_M. При
проектировании ПЛИС типа SPLD выбирается библиотека SPLD.
Графические обозначения «земли» и источника питания находятся в
6
соответствующих библиотеках. Например, для фирмы Altera источник
питания (VCC) и «земля» (GND) находятся в библиотеке Altera_P.
Для изучения порядка ввода и проверки схемы рекомендуется
воспользоваться литературой [1], подразд. (1.2, 1.3, 2.2).
При создании схем ПЛИС удобно оформлять отдельные фрагменты
схем в виде блоков, которые могут представлять собой как схемы из
электрических компонентов (тип блока Schematic View), так и VHDLописания (тип блока VHDL).
Блоки типа Schematic View создаются следующим образом.
Выполняется команда Place / Hierarchical Block. Открывается диалоговое
окно (рис. 3). В поле Reference вводится позиционное обозначение блока, в
поле Implementation type указывается тип иерархического блока (Schematic
View), в поле Implementation name записывается произвольное имя блока.
Поле Path and Filename не заполняется. В поле Primitive выбирается No, т.е.
блок, имеющий иерархическую структуру. Нажимается ОК.
Рис. 3
Затем рисуется контур блока. Для этого, нажимая и удерживая ЛКМ
перемещением курсора, наносят прямоугольный символ иерархического
блока. Затем по команде Place / Hierarchical Pin, активной при выделенном
блоке, вводятся имена выводов блока. В диалоговом окне команды (рис. 4)
указываются: на панели Name – имя вывода, на панели Type – тип вывода
(вход, выход и т.д.), на панели Width – тип цепи (Scalar – одиночная цепь,
bus – шина). Далее нажимается ОК, и вывод располагается в необходимом
месте внутри контура блока. Его расположение фиксируется нажатием
7
ЛКМ. Обозначение последующих выводов производится по команде
Properties из контекстного меню.
Рис. 4
Затем переходят на нижний уровень иерархии (команда Descend
Hierarchy из контекстного меню. Команда активна при выделенном блоке).
В открывшемся окне (рис. 5) в поле Name записывается имя блока,
предложенное в верхней строчке окна. Нажимается ОК. На нижнем уровне
иерархии рисуется схема блока. Порты перемещаются к соответствующим
точкам схемы и соединяются проводниками. Переход на верхний уровень
иерархии выполняется по команде Ascend Hierarchy из контекстного меню.
Рис. 5
Перед созданием блока типа VHDL предварительно необходимо
создать VHDL-описания по команде Design / New VHDL File. Написанный
VHDL-файл проверяется на наличие синтаксических ошибок по команде
Check Syntax из контекстного меню и может моделироваться до создания
блока. Затем выполняется команда Place / Hierarchical Block и заполняется
диалоговое окно (рис. 6). В отличие от блока Schematic View в поле
Implementation type указывается блок типа VHDL, в поле Implementation
name записывается имя блока, которое должно совпадать с именем
объявленного (entity) в VHDL объекта, а в поле Path and Filename
указывается путь к файлу VHDL (с помощью кнопки Browse). Нажимается
ОК и рисуется контур блока. Выводы блока создаются автоматически и
8
соответствуют объявленным в VHDL-описаниях портам в разделе Entity. На
нижнем уровне иерархии блока находится VHDL-описание.
Рис. 6
1.4. Ввод шин
При большом количестве проводников для удобства графического
изображения их объединяют в шины. Шины вводятся по команде Place /
Bus. На схеме они изображаются более широкими линиями, чем
проводники. Отводы отдельных цепей, наклоненные под углом 45 0 ,
вводятся по команде Place / Bus Entry. Имена шин и входящих в их состав
цепей вводятся по команде Place / Net Alias. Шины могут соединяться друг с
другом. При этом в месте соединения появляется точка. Шины не должны
пересекаться или соединяться в точке отвода цепи. Примеры оформления и
обозначения шин приведены на рис. 7, 8.
1.5. Оформление схемы для проектирования ПЛИС
фирмы Altera
На рис. 7 приведена схема сдвигового регистра, оформленная для
реализации в виде ПЛИС фирмы Altera. Сдвиговый регистр представлен в
виде блока RG. На входах и выходах регистра использованы буферы Soft из
9
библиотеки Altera_P. Подача и считывание сигналов производятся через
порты PD, PC, PR, PG0-PG3.
U4
G0
CHIP_PIN_LC = [email protected]
PG0
SOFT
RG1
U1
U5
PD
CHIP_PIN_LC = [email protected]
D
T[0..3]
CHIP_PIN_LC = [email protected]
PG1
U2
SOFT
PC
CHIP_PIN_LC = [email protected]
G1
U3
SOFT
PR
SOFT
U6
G[0..3]
C
CHIP_PIN_LC = [email protected]
CHIP_PIN_LC = [email protected]
R
SOFT
G2
SOFT
PG2
RG
U7
G3
CHIP_PIN_LC = [email protected]
PG3
SOFT
Рис. 7
T[0..3]
T0
Dtrig1
D
C
R
D
C
R
Dtrig
Q
T[0..3]
T1
T2
T3
Dtrig1_1
Dtrig1_2
Dtrig1_3
D
C
R
D
C
R
D
C
R
Q
Dtrig
Dtrig
Q
Q
Dtrig
Рис. 8
Если выводы схемы должны подсоединяться к определенным номерам
выводов корпуса ПЛИС, цепям присваиваются атрибуты по формату:
CHIP_PIN_LC = <имя проекта>@ <номер вывода>. Атрибуты цепи
создаются двойным щелчком ЛКМ на цепи по команде NEW. Количество
цепей увеличивается путем копирования.
Регистр на нижнем уровне иерархии (рис. 8) состоит из четырех Dтриггеров, имеющих описание на языке VHDL. При большом количестве
буферов Soft их удобно располагать на отдельных страницах схемы и
соединять со схемой соединителями страниц по команде Place / Off-Page
10
Connector. Цепи, расположенные на одной или разных страницах схемы и
имеющие одинаковые имена, считаются электрически соединенными.
При проектировании ПЛИС фирмы Altera атрибуты для входных
(выходных) цепей и буферы Soft можно не использовать.
1.6. Оформление схемы для проектирования ПЛИС
типа SPLD
Схема (рис. 9) представляет собой дешифратор 2х4 . Для входных
цепей ПЛИС типа PAL, GAL, PROM вводятся атрибуты PLDTYPE=IN, для
выходных цепей микросхем типа PAL, GAL вводятся атрибуты
PLDTYPE=IO, для микросхем типа PROM – PLDTYPE=OUT.
Dech1
U3
U1
PA
PLDTY PE = IN
a0
buf 1
U2
PB0
PLDTY PE = IN
PLDTY PE = IO
F0
PF0
buf 1
U4
PLDTY PE = IO
F1
b0
PF1
buf 1
U5
buf 1
PLDTY PE = IO
F2
PF2
buf 1
U6
PLDTY PE = IO
F3
PF3
buf 1
Dech
Рис. 9
Схема дешифратора на нижнем уровне иерархии приведена на рис. 10.
U5
a0
a0
U1
na0
na0
and2
U6
b0
b0
F0
nb0
inv 1
nb0
U2
a0
inv 1
F1
nb0
and2
U3
na0
F2
b0
and2
U4
a0
F3
b0
and2
Рис. 10
11
2. VHDL – ЯЗЫК ОПИСАНИЯ ЦИФРОВЫХ СХЕМ
Успехи микроэлектроники привели к возможности создания
интегральных схем сверхбольшой и ультрабольшой степени интеграции.
Проектирование столь сложных схем немыслимо без применения систем
автоматизированного проектирования. Описание проектов цифровых схем
производится на формальных языках. Среди языков описания проектов
наибольшее распространение получил язык VHDL. Первоначальной целью
разработки языка VHDL было моделирование цифровых схем, однако затем
данный язык был приспособлен к автоматическому синтезу – были
разработаны различные системы автоматического синтеза (синтезаторы),
строящие
логические схемы по исходным алгоритмическим VHDLописаниям. Большую известность приобрел синтезатор Leonardo,
позволяющий проектировать схемы ПЛИС, полузаказные и заказные СБИС.
Описание объекта на языке VHDL состоит из интерфейса (entity) и
архитектуры (architecture) (рис. 11). В entity описывается интерфейс между
объектом проекта и окружением, в котором употребляется объект.
Архитектурное тело (architecture) определяет тело объекта, т.е. раскрывает
внутреннее содержание объекта.
X1
W
"И"
X2
"ИЛИ"
X3
F
architecture
entity
Рис. 11
Описание схемы рис. 11 на языке VHDL имеет вид:
Entity logica is
Port (X1, X2, X3: in std_logic;
F: out std_logic);
End logica;
Architecture Primer of logica is
Signal W: std_logic;
12
Begin
W  X1 and X2;
F  W or X3;
End;
Выделенные в описании слова относятся к ключевым словам стандарта
VHDL’93.
В entity декларируется объект logica и объявляются его входные порты
X1, X2, X3, а также выходной порт F. Объявление объекта заканчивается
ключевым словом End. Далее описывается структура объекта logica как
совокупность элементов системы, связей между ними и выполняемых
функций, которая начинается с ключевого слова architecture. С помощью
ключевого слова Signal объявляется сигнал W и указывается тип сигнала:
std_logic. Начало процесса определяется ключевым словом begin и состоит в
выполнении булевых операций: «И» (and), «ИЛИ» (or), «И-НЕ» (nand),
«ИЛИ-НЕ» (nor), «ИСКЛЮЧАЮЩЕЕ ИЛИ» (xor), «НЕ» (not). Окончание
процесса декларируется ключевым словом End.
При описании цифровых схем применяются различные стили:
 поведенческий (процедурный);
 потоковый (data flow);
 структурный;
 смешанный.
При поведенческом описании внутренняя архитектура объекта
неизвестна. Известен только принцип функционирования, который может
быть задан, например, в виде табл. 1.
Таблица 1
Входы
Выходы
A0
A1
B0
B1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
Ниже приведена одна из возможных форм описания таблицы
функционирования логического устройства на языке VHDL:
Entity F is
Port (a: in std_logic_vector (1 downto 0)
b1, b2: out std_logic);
end F;
architecture Behavior of F is
13
begin
Process (a)
Begin
If a = “00” then B0<=’0’; B1<=’1’;
Elsif a = “01” then B0<=’0’; B1<=’1’;
Elsif a = “10” then B0<=’0’; B1<=’1’;
Elsif a = “11” then B0<=’1’; B1<=’0’;
End if;
End process;
End behavior;
В этом описании объявлен объект F, имеющий вход a в виде шины,
состоящей из двух цепей, и выходы b1, b2. Поведение объекта F
описывается в архитектурном теле (architecture).
Оператор Process
используется с указанием чувствительности (a). Оператор процесса есть
параллельный оператор, который определяет независимое последовательное
поведение некоторой части проекта. Список чувствительностей (сигналов
запуска) указывает на сигналы, под воздействием которых будут
происходить процессы в цифровой схеме. Далее процесс описывается с
помощью последовательных операторов. Ниже при записи операторов
используются упрощения: фигурные скобки служат для обозначения
повторения выражения в k раз. Квадратные скобки служат для обозначения
необязательного выражения или необязательного слова.
1. Оператор присвоения значения переменной.
2. Оператор присвоения значения сигналу (<=). Например:
X <= not Y – X присваивается значение «не Y».
3. Оператор if (если).
Общий вид оператора if:
If условие then упорядоченное множество последовательных операторов
{elsif условие then упорядоченное множество последовательных
операторов}
[else упорядоченное множество последовательных операторов]
end if;
Пример использования оператора if приведен на с. 13.
4. Оператор case (случай).
Общий вид оператора case:
Case выражение is
When выбор => упорядоченное множество последовательных операторов
[when выбор => упорядоченное множество последовательных операторов]
end case;
Пример
использования
оператора
case
для
описания
функционирования логического устройства (табл. 1):
14
Entity F is
Port (a0, a1: in std_logic;
b1, b2: out std_logic);
End F;
Architecture behavior of F is
Begin
Process (a0, a1)
Begin
Case (a0&a1) is
When “00”|”01”|”10” => b1<=’0’; b2<=’1’;
When “11” => b1<=’1’; b2<=’0’;
End case;
End process;
End behavior;
5. Оператор loop (цикл). Позволяет многократно выполнять
последовательность операторов.
Общий вид оператора loop:
For идентификатор in диапазон дискретного типа loop
упорядоченное множество последовательных операторов
end loop;
Например. Пусть четыре микросхемы выполняют операцию «И»:
Y1<=A1 and B1;
Y2<=A2 and B2;
Y3<=A3 and B3;
Y4<=A4 and B4;
С помощью оператора цикла эту запись можно упростить:
For i in 1 to 4 loop
Y(i)<=A(i) and B(i);
6. Оператор wait (ожидать).
Общий вид оператора wait:
Wait on список чувствительности until условие for тайм-аут;
Оператор ожидания wait приостанавливает процесс до момента, пока
не изменится некоторый сигнал в списке чувствительности процесса. Таймаут устанавливает максимальное время ожидания, после которого процесс
возобновит свое выполнение.
Пример:
Wait on A,B until (C=0) for 50ns;
Этот оператор приостанавливает процесс до момента изменения А или
В, после чего будет проверено выражение С=0, и, если результатом
проверки будет истина, процесс возобновится. Но независимо от этих
условий возобновление процесса произойдет через 50 ns.
Можно записывать не все условия в операторе ожидания:
15
1. Wait on A,B – процесс возобновится, когда изменится А или В.
2. Wait until (C=0) – процесс возобновится, когда С изменит свое
значение из 1 в 0.
3. Wait for 50 ns – процесс возобновится через 50 ns независимо от
любых других условий.
Для оператора процесса (Process) мы можем иметь либо список
чувствительности после ключевого слова process, либо оператор wait, но не
оба вместе.
Потоковое описание (data flow) характеризуется тем, что
функционирование объекта представляется в виде последовательности
булевых функций. Значения сигналов определяются из выражений и
передаются один другому операторами назначения сигналов, при этом
образуется «поток данных». Такой стиль описания наиболее удобен для
последующего автоматического синтеза. Примером стиля data flow является
описание схемы рис. 11 (с. 11).
Структурный стиль характеризуется тем, что архитектурные тела
отражают структуру цифровой схемы, при этом используются
преимущественно операторы конкретизации компонента. В таком стиле
описываются на языке VHDL синтезированные схемы.
Смешанный стиль – это комбинация любых двух (либо трех)
рассмотренных стилей. Язык VHDL допускает смешанный стиль, что
является весьма удобным при проектировании.
Примеры описания микросхем на языке VHDL приведены в
приложении.
3. ЛОГИЧЕСКОЕ МОДЕЛИРОВАНИЕ СХЕМ ПЛИС
Логическое моделирование удобно начинать с отладки VHDL-файлов.
Для этого сначала создаются текстовые VHDL-описания цифровых узлов
проектируемой схемы и проверяется их работоспособность с помощью
моделирования. При отсутствии нарисованной схемы программа
запрашивает, какой VHDL-файл запустить на моделирование. Если же
нарисована хотя бы часть схемы, то для моделирования VHDL-файла его
надо сделать корневым по команде Make Root. После отладки всех VHDLфайлов приступают к созданию электрической схемы устройства. В ней
VHDL-описания оформляются в виде блоков.
Для моделирования схемы выделяется в менеджере проектов файл
проекта *.dsn и выбирается команда Tools / Simulate. Открывается окно (рис.
12), в котором выбирается функциональное моделирование In Design. После
нажатия на кнопку ОК загружается программа моделирования цифровых
схем OrCAD Simulate модуля Express Plus.
16
Рис. 12
После загрузки программы Simulate автоматически генерируется
список соединений схемы на языке VHDL, который используется для
дальнейшего проектирования ПЛИС. Моделирование начинается с задания
входных сигналов по команде Stimulus / New Interactive. В диалоговом окне
этой команды (рис. 13) предоставляется возможность выбрать один из трех
типов сигналов для составления описания сигналов: Basic – основной
сигнал, задаваемый набором моментов времени изменения логических
состояний, Advanced – расширение сигнала типа Basic с возможностью
задания циклов повторения, Clock – периодические сигналы.
Рис. 13
Затем на панели Simulate Signal Named указывается имя сигнала. При
этом вместо явного указания этого имени можно нажать на панель Browse,
затем в окне Signal in Context (рис. 14) выбрать один из входов и нажать ОК.
Созданные сигналы можно сохранить по команде File Save для
последующего использования. Сигналы с расширением *.stm сохраняются в
каталоге In Design рабочего проекта.
17
Рис. 14
После создания входных сигналов выполняется моделирование по
команде Simulate/Run. Результаты моделирования отображаются в
графическом виде в окне [Wave]. Рис. 15 отображает поведение схемы
сдвигового регистра, приведенной на рис. 7.
Рис. 15
Нажатием ЛКМ на графическом окне наносится визирная линия для
считывания данных временных диаграмм. Щелчком ПКМ открывается
контекстное меню со списком команд: Cut, Copy, Paste, Delete, Edit Traces,
Properties и др. Эти команды предназначены для редактирования входных
18
сигналов. Можно, выделив имя сигнала, перетаскивать его график в другое
место на временной диаграмме и т.п.
Если входные сигналы корректируются пользователем, то для
последующего моделирования надо выполнить команды: Simulate / Reload
(перезагрузка проекта) и Simulate / Restart (установка системы в начальное
состояние при t=0).
Результаты моделирования, в том числе и возникающие при
моделировании ошибки, отображаются в окне Window / Session Log.
Результаты моделирования схемы дешифратора (рис. 9) приведены на рис.
16.
Рис. 16
4. СИНТЕЗ СХЕМ ПО ОПИСАНИЯМ НА ЯЗЫКЕ VHDL
В результате моделирования цифровой схемы создается ее описание на
языке VHDL. Затем наступает этап построения логической схемы, функции
которой реализуют поведение, которое заложено в VHDL-коде. Для этого
применяются системы автоматического синтеза, среди которых наиболее
известен синтезатор Leonardo. Синтезаторы, в отличие от систем
моделирования, поддерживают не весь язык VHDL, а только некоторое
подмножество этого языка, которое называют синтезируемым.
Определение синтезируемого подмножества проводится через
перечисление ограничений конструкций языка, которые не входят в
синтезируемое подмножество. Так, например, синтезатором Leonardo не
поддерживаются операции над типом Real, при синтезе игнорируется слово
After и некоторые другие. Процесс синтеза запускается командой Tools/
Compile. При этом абстрактное алгоритмическое описание цифровой схемы
заменяется структурным описанием, которое должно реализовать требуемое
поведение.
19
При компиляции простых ПЛИС (SPLD) рекомендуется выбирать
формат выходного файла Edif 2 0 0 (Flat). Формат Edif является обменным
форматом между различными САПР.
Синтез ПЛИС фирмы Altera осуществляется синтезатором Leonardo
версии v.1998.2. Глобальные параметры оптимизации устанавливаются в
диалоговых окнах (рис. 17 – 21).
Рис. 17
Рис. 18
Рис. 19
20
Рис. 20
Рис. 21
В результате компиляции создается файл в формате Edif,
расположенный в каталоге ..\compiled \*.edf, который используется для
размещения и трассировки ПЛИС программомй MAX+PLUSII.
С целью проверки эквивалентности поведения синтезированной
логической схемы и первоначального алгоритмического описания
производится моделирование синтезированной схемы. Моделирование
может проводиться как в программе MAX+PLUSII (после запуска на
трассировку), так и в САПР OrCAD 9.1. В последнем случае производится
повторный синтез. Схема сохраняется в формате VHDL и переносится в
новый проект.
5. РАЗМЕЩЕНИЕ И ТРАССИРОВКА ПЛИС
Размещение и трассировка ПЛИС производится по команде Tools /
Build. Простые ПЛИС (SPLD) разрабатываются средствами OrCAD Express.
С помощью диалоговых окон вводятся тип реализуемой ПЛИС (GAL, PAL
или PROM), параметры оптимизации структуры и другие параметры. В
результате размещения и трассировки простых ПЛИС (SPLD) создается
21
файл прошивки ..\timed\*.jed и файл, содержащий информацию о созданной
ПЛИС (..\timed\*.lst).
При выполнении команды Build для ПЛИС фирмы Altera в диалоговом
окне выбирается режим запуска программы MAX+PLUSII: Run Max+PlusII
interactively. При запуске MAX+PLUSII открывается ее главное окно, меню
которого охватывает все приложения системы MAX+PLUSII.
Выполнив команду Assign / Device, в диалоговом окне выбираем тип
проектируемой ПЛИС. Большой популярностью
у российских
разработчиков пользуется семейство MAX7000. Это связано с тем, что для
работы с ПЛИС этого семейства не требуется никаких серьезных затрат,
поскольку
пакет
MAX+PLUSII
BASELINE
поддерживает
всех
представителей этого семейства ПЛИС, а для программирования и загрузки
конфигурации устройства опубликована схема кабеля ByteBlaster и
ByteBlasteMV. ПЛИС семейства MAX7000 являются первыми CPLD фирмы
Altera, выполненными по технологии ПЗУ с электрическим стиранием
(EPROM). Выпускаются ПЛИС семейства MAX7000 типов EPM7032,
EPM7064, EPM7096, EPM7128, EPM7192, EPM7256 с числом макроячеек 32,
64, 96, 128, 192, 256 соответственно. Каждые 16 макроячеек объединены в
логические блоки. Таким образом, количество блоков в этих ПЛИС
изменяется от 2 до 16. Основные характеристики семейства MAX7000
приведены в табл. 2.
Таблица 2
Семейство
MAX7000
EPM7032
EPM7064
EPM7096
EPM7128
EPM7192
EPM7256
Число
Количество Количество
пользовательмакроячеек вентилей
ских входоввыходов
32
64
96
128
192
256
600
1250
1800
2500
3750
5000
36
68
76
100
124
164
Частота,
МГц
Стоимость,
руб/шт.
178
178
151
151
125
125
124
385
-
Для назначения глобальных параметров логического синтеза
выполняется команда Assign / Global Project Logic Synthesis (рис. 22). В поле
Optimize выбирается тип оптимизации: Area – минимизируется площадь,
занимаемая ПЛИС, Speed – ПЛИС оптимизируется по максимальному
быстродействию. В поле Max Device Synthesis Options выбирается семейство
ПЛИС, подлежащее синтезу. Кнопка Define Synthesis Style позволяет
выбрать более тонкие параметры стиля синтеза.
22
Рис. 22
По команде Options / User Libraries устанавливается в строчке Directory
Name (рис. 23) имя директории, в которую будут помещены все созданные в
MAX+PLUSII файлы.
Рис. 23
Компиляция проекта выполняется с помощью компилятора Compiler,
вызываемого командой MAX+PLUSII/Compiler. После вызова компилятора
изменяется состав главного меню. Чтобы установить соответствие между
логическими функциями, разработанными в OrCAD 9.1, и функциями
системы MAX+PLUSII, необходимо выполнить команду
Interfaces \ Edif
Netlist Reader Setting. В открывшемся окне нажать кнопку Customize (рис.
24) и в поле Library Mapping File указать пути к библиотекам. Для LMF1:
D:\Cad\max\lmf\exemplar.lmf. ДляLMF2: C:\ProgrammFile\OrCAD\Capture\
Library\Altera\ orc2alt.lmf.
23
Рис. 24
Затем в окне Compiler нажимается кнопка Start. Процесс компиляции
можно наблюдать в окне компилятора. При этом опустошаются и
переворачиваются песочные часы, что указывает на активность
компилятора. По очереди высвечиваются модули компилятора, по мере
того, как компилятор завершает каждый этап обработки. Под модулем
компилятора появляются пиктограммы выходных файлов, сгенерированных
данным модулем. Для открытия соответствующего файла надо дважды
щелкнуть ЛКМ на пиктограмме. Процент завершения компиляции
постепенно увеличивается (до 100%), что отражается растущим
прямоугольником “градусник” (рис. 25).
Рис. 25
24
Компилятор обрабатывает проект, используя ряд модулей. Модуль
экстрактора форматов (Compiler Netlist Extractor) преобразует файлы
проекта в один или несколько двоичных файлов .cnf (compiler netlist file).
Модуль создает также файл иерархических взаимосвязей (*.hif) (hierarchy
interconneconnect file). Встроенные программы чтения форматов Edif, VHDL,
Verilog и XNF автоматически транслируют описание проекта в формат,
совместимый с системой MAX+PLUSII. Программа чтения файлов Edif
обрабатывает входные файлы Edif с помощью библиотечных файлов *.lmf
(library mapping file), которые устанавливают соответствие между
логическими функциями, разработанными в других САПР, и функциями
системы MAX+PLUSII.
Модуль построителя базы данных (Data Base Builder) использует файл
иерархических связей *.hif для компоновки созданных компилятором
файлов *.cnf. Данный модуль копирует каждый файл CNF в одну базу
данных без иерархической структуры.
Модуль логического синтеза (Logic Synthesizer) применяет ряд
алгоритмов, которые уменьшают использование ресурсов и убирают
дублированную логику, обеспечивая тем самым максимально эффективное
использование структуры.
Если проект не помещается при монтаже в один корпус, модуль
Partitioner разделяет базу данных на несколько ПЛИС одного и того же
семейства. Число выводов, используемых для соединения устройств,
минимизируется.
Модуль трассировки Fitter назначает каждой логической функции
расположение реализующего ее логического элемента и выбирает
соответствующие пути взаимных соединений и назначения выводов.
Данный модуль генерирует файл отчета *.rpt , в котором документируется
информация о проекте. Компилятор так же автоматически создает файл
трассировки *.fit, в котором содержится информация о трассировке.
Модуль ассемблера (Assembler) преобразует назначения логических
элементов, выводов и устройств в виде двоичных файлов для программатора
(*.pof) или объектных файлов SRAM (*.sof). Объектные файлы POF и SOF
обрабатываются
программатором
системы
MAX+PLUSII
и
программирующей аппаратурой фирмы Altera.
После успешной компиляции по команде MAX+PLUSII / Floorplan
Editor можно просмотреть в окне поуровнего планировщика результаты
разводки, выполненные компилятором.
Кроме файлов отчетов *.rpt, *.fit, программа MAX+PLUS11 сохраняет
информацию о проекте в файле *.acf, в котором отражаются назначения и
конфигурация проекта (Assignment&Configuration File).
В заключение необходимо закрыть окна и программу MAX+PLUSII.
25
6. СОЗДАНИЕ СИМВОЛА ПЛИС
После завершения компиляции программа MAX+PLUSII закрывается,
а в OrCAD 9.1 можно создать графический символ разработанной ПЛИС по
команде Tools / Generate Part. Диалоговое окно команды показано на рис. 26.
Символ ПЛИС используется для дальнейшего моделирования, если общая
схема, кроме ПЛИС, содержит и другие цифровые компоненты, а также для
проектирования печатной платы.
В диалоговом окне команды Generate Part (см. рис. 26) для создания
символа ПЛИС фирмы Altera вводятся следующие данные:
 Netlist File – имя файла списка соединений ПЛИС;
 Vendor file type – тип файла (Altera Pin File);
 Part name – имя проекта;
 Part library – имя файла библиотеки символов, куда должен быть
размещен символ ПЛИС.
В поле Implementation заполняется только строка Implementation type
(Schematic View).
Рис. 26
При создании символа простых ПЛИС (SPLD) диалоговое окно
команды Generate Part заполняется, как показано на рис. 27.
26
Рис. 27
25
Символ ПЛИС для SPLD необходимо отредактировать, добавив к нему
выводы питания и "земли". Для этого символ раскрывается двойным
щелчком ЛКМ на имени файла библиотеки символа в менеджере проекта и
по команде Place / Pin создаются выводы питания (VCC) и «земли» (GND).
Этот символ может быть использован при проектировании печатной платы.
Созданный символ для дешифратора приведен на рис. 28.
PF0
PF1
PF2
PF3
22
21
20
19
Spld
24
gnd
PA
PB0
VCC
U7
2
23
Рис. 28
7. ЛАБОРАТОРНОЕ ЗАДАНИЕ
Разработать ПЛИС заданного типа. Создать ее символ и разработать
печатную плату. Вариант схемы получить у преподавателя.
27
Контрольные вопросы
1. Как создается проект PC-Board?
2. Как создается проект Programmable Logic?
3. Проектирование ПЛИС каких фирм возможно с использованием
OrCAD 9.1?
4. Как создать блок типа VHDL?
5. Как создать блок типа Schematic View?
6. Как оформляются схемы ПЛИС?
7. Какие стили применяются при описании схем на языкеVHDL?
8. Какие последовательные операторы применяются при описании схем на
VHDL?
9. Для чего и как проводится электрическое моделирование?
10. Как производится синтез схем по описаниям на языке VHDL?
11. Какие установки необходимо сделать в MAX+PLUSII перед
компиляцией?
12. Какие модули MAX+PLUSII используются при компиляции проекта?
13. Как создается символ ПЛИС?
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Лукьяненко Е.Б., Ивченко В.Г., Лещенко А.В. Руководство к
лабораторной работе «Проектирование цифровых и аналого-цифровых
узлов в САПР OrCAD 9.1». Таганрог: Изд-во ТРТУ, 2002. № 3180.
2. Разевиг В.Д. Система проектирования цифровых устройств OrCAD. М.:
Солон – Р, 2000.
3. Стешенко В.Б. ПЛИС фирмы Altera: проектирование устройств
обработки сигналов. – М.: Додэка, 2000.
4. Бибило П.Н. Синтез логических схем с использованием языка VHDL. –
М.: Солон – Р, 2002.
5. Коноплев Б.Г. и др. Руководство к лабораторной работе
«Проектирование специализированных СБИС на основе ПЛИС с
использованием САПР Mentor Graphics». Таганрог: Изд-во ТРТУ, 2000.
№ 2917.
ПРИЛОЖЕНИЕ
Описание на языке VHDL некоторых цифровых схем
1. Мультиплексор.
Четырехвходовой мультиплексор (рис. П1) имеет информационные входы
X0 – X3, адресные входы A0 – A1 и выход F. Функционирование мультиплексора
приведено в табл. П1.
28
X
X
0
X
1
X
2
3
A
0
A
А0,А1–адресные входы
MU
X
X0,X1,X2,X3– двоичные входы
F
F– выход
Рис. П1
Таблица П1
X0
X1
X2
X3
A0
A1
F
X0
х
х
х
0
0
X0
х
X1
х
х
0
1
X1
х
х
X2
х
1
0
X2
х
х
х
X3
1
1
X3
Мультиплексор описывается на VHDL следующим образом:
Lidrary ieee;
Use ieee.std_logic_1164.all;
Entity mux is
Port (A: in std_logic_vector (1 downto 0);
X0, X1, X2, X3: in std_logic;
F: out std_logic);
End mux;
Architecture behavior of mux is
Begin
Process (A, X0, X1, X2, X3)
Begin
If A=”00” then F<=X0;
Elsif A=”01” then F<=X1;
Elsif A=”10” then F<=X2;
Elsif A=”11” then F<=X3;
End if;
End process;
End behavior;
29
2. Дешифратор, преобразующий двоично-десятичный код в десятичный.
Дешифратор имеет информационные входы A[3..0] и выходы B[9..0].
Графическое обозначение дешифратора приведено на рис. П2. В табл. П2
приведено функционирование дешифратора.
A[3..0]
B[9..0]
Decoder
Рис. П2
А3
0
0
0
0
0
0
0
0
1
1
1
А2
0
0
0
0
1
1
1
1
0
0
0
А1
0
0
1
1
0
0
1
1
0
0
1
А0
0
1
0
1
0
1
0
1
0
1
0
B9
0
0
0
0
0
0
0
0
0
0
1
B8
0
0
0
0
0
0
0
0
0
1
0
B7
0
0
0
0
0
0
0
0
1
0
0
B6
0
0
0
0
0
0
0
1
0
0
0
B5
0
0
0
0
0
0
1
0
0
0
0
B4
0
0
0
0
0
1
0
0
0
0
0
Описание дешифратора на языке VHDL имеет вид:
Library ieee;
Use ieee.std_logic_1164.all;
Entity decoder is
Port (A: in std_logic_vector(3 downto 0);
B:out std_logic_vector(9 downto 0));
End decoder;
Architecture beh of decoder is
Begin
Process(A)
Begin
If a="0000" then b<="0000000000";
Elsif a="0001" then b<="0000000001";
Elsif a="0010" then b<="0000000010";
Elsif a="0011" then b<="0000000100";
Elsif a="0100" then b<="0000001000";
Elsif a="0101" then b<="0000010000";
B3
0
0
0
0
1
0
0
0
0
0
0
Таблица П2
B2 B1 B0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
30
Elsif a="0110" then b<="0000100000";
Elsif a="0111" then b<="0001000000";
Elsif a="1000" then b<="0010000000";
Elsif a="1001" then b<="0100000000";
Elsif a="1010" then b<="1000000000";
End if;
End process;
End beh;
3. Восьмиразрядный запоминающий регистр (рис. П3).
A[7..0]
B[7..0]
C
RG
Рис. 31
Передача информации со входов А к выходам В производится по переднему
фронту тактового импульса.
Lidrary ieee;
Use ieee.std_logic_1164.all;
Entity RG is
Port (A: in std_logic_vector (7 downto 0);
C: in std_logic;
B: out std_logic_vector (7 downto 0))
End RG;
Architecture behavior of RG is
Begin
Process (A, C)
Begin
If C=’1’ and C’event then B<=A;
End if;
End process;
End behavior;
4. Триггер D-типа (рис. П4).
D-информационный вход, ck-тактовый вход, q-выход.
Триггер работает по положительному фронту импульса. При этом
происходит запись информации со входа D-триггера на его выход Q.
31
d
q
d
ck
q
d
ck
d
Рис. П4
Library ieee;
Use ieee.std_logic_1164.all;
Entity dtype is
Port (d, ck: in std_logic;
q: out std_logic);
end dtype;
architecture behavior of dtype is
begin
Process (d, ck)
Begin
If ck=’1’ and ck’event then q<=d;
end if;
end process;
end behavior;
5. D – триггер с асинхронным сбросом (рис.П5).
d
q
d
clk
nclk
q
clk
x
x
1
0
nclr
d
0
d
Рис. П5
Library ieee;
Use ieee.std_logic_1164.all;
Entity tr is
32
Port ( d, clk, nclr: in std_logic;
q: out std_logic);
end tr;
architecture beh of tr is
Begin
Process (d, nclr, clk)
Begin
If nclr=’0’ then q<=’0’;
elsif clk=’1’ and clk’event then q<=d;
End if;
End process;
End beh;
6. Т – триггер (рис. П6).
d
d
q
q
c
Рис. П6
Т-триггер – это счетный триггер. Он срабатывает по отрицательному
фронту тактового импульса. Его описание приведено ниже:
Library ieee;
Use ieee.std_logic_1164.all;
Entity T is
Port ( c: in std_logic;
q: out std_logic);
end T;
architecture beh of T is
Signal d: std_logic :=’0’;
Begin
Process (c)
Begin
if c=’0’ and c’event then
d<= not d; q<=d;
End if;
End process;
End beh;
33
7. Четырехразрядный двоичный счетчик (рис. П7).
С
q_n
q
R
Рис. П7
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Entity count is
Port ( R, C: in std_logic;
q: out std_logic_vector (3 downto 0));
end count;
architecture beh of count is
signal q_n: unsigned (3 downto 0);
Begin
Process (R, C)
Begin
If R=’1’ then q_n<=”0000”;
elsif C=’0’ and c’event then q_n<=q_n + “1”;
End if;
End process;
Q<=std_logic_vector(q_n);
End beh;
8. Двоично – десятичный счетчик (рис. П8).
С
q
q_n
R
b
e
a
d
Рис. П8
"И"
y
34
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Entity count is
Port ( R, C: in std_logic;
q: out std_logic_vector (3 downto 0));
end count;
architecture beh of count is
signal q_n: unsigned (3 downto 0);
signal a, b, d, e, y: std_logic;
Begin
Process (R, C)
Begin
If R=’1’ or y=’1’ then q_n<=”0000”;
elsif C=’0’ and c’event then q_n<=q_n + “1”;
End if;
End process;
q<=std_logic_vector(q_n);
a <= not q_n(0);
b <= q_n(1);
d <= not q_n(2);
e <= q_n(3);
y <= A and B and D and E;
End beh;
35
Лукьяненко Евгений Борисович
Руководство к практическим занятиям
Проектирование ПЛИС
с использованием САПР
OrCAD 9.1
по курсам
Применение микросхем и микропроцессоров
Курсовое и дипломное проектирование
Ответственный за выпуск Лукьяненко Е.Б.
Редактор Кочергина Т.Ф.
Корректор Селезнева Н.И.
ЛР 020565 от 23.06.1997 г.
Печать офсетная.
Формат 60 x 841/16.
Усл. п. л. – 2,0
Заказ №
Подписано к печати
Бумага офсетная.
Уч.- изд. л. – 1,9
Тир. 150 экз.
“С”
___________________________________________________________
Издательство Таганрогского государственного
радиотехнического университета
ГСП 17А, Таганрог, 28, Некрасовский, 44
Типография Таганрогского государственного
радиотехнического университета
ГСП 17А, Таганрог, 28, Энгельса, 1
Скачать