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 = Registr@10 PG0 SOFT RG1 U1 U5 PD CHIP_PIN_LC = Registr@2 D T[0..3] CHIP_PIN_LC = Registr@11 PG1 U2 SOFT PC CHIP_PIN_LC = Registr@3 G1 U3 SOFT PR SOFT U6 G[0..3] C CHIP_PIN_LC = Registr@12 CHIP_PIN_LC = Registr@4 R SOFT G2 SOFT PG2 RG U7 G3 CHIP_PIN_LC = Registr@13 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