Администрирование Разное Программирование XC2C64A в среде Xilinx ISE WebPack Wed, November 22 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Программирование XC2C64A в среде Xilinx ISE WebPack Печать
Добавил(а) microsin   

В этой статье описаны базовые шаги для программирования микросхем логики CPLD на примере микросхемы XC2C64A.

1. Запустите ISE Project Navigator.

2. Выберите в меню File -> New Project.

ISE Project Navigator New Project1

Используйте диалог New Project Wizard - Create New Project Page для ввода общей информации для Вашего проекта. Этот диалог содержит следующие опции для настройки.

Name. Задает имя для проекта.

Location. Указывает место для размещения (папку) проекта. Вы можете выбрать на диске нужный каталог или ввести имя для директории. Если Вы введете имя директории, которая не существует, то Project Navigator создаст эту директорию. По умолчанию программное обеспечение автоматически создаст подкаталог на основе введенного имени в поле Name.

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

Working Directory. Задает место размещения рабочей директории. По умолчанию рабочая директория совпадает с директорией проекта (указанной в поле Location). Однако Вы можете указать рабочую директорию, если хотите содержать Ваш файл проекта ISE Design Suite (с расширением .xise) отдельно от рабочей области.

Description. Позволяет добавить произвольное текстовое описание для Вашего проекта. Это поле опционально (его заполнять не обязательно).

Top-Level Source Type. Выпадающий список, который задает тип исходного модуля для верхнего уровня проекта (top-level design).

HDL

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

Schematic

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

Примечание: для новичков вариант Schematic подходит лучше всего.

EDIF

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

NGC/NGO

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

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

ISE Project Navigator New Project2

Используйте диалог свойств проекта для ввода устройства и другой информации.

Evaluation Development Board. Указывает модель платы разработчика, используемой в проекте, если это имеет место. Выбор платы автоматически установит следующие опции: Product Category, Family, Device, Package и Speed. Если Вы хотите установить эти опции вручную, установите тип платы None Specified (не указано).

Product Category. Задает применимую категорию проекта. Этот выбор фильтрует семейства устройств и устройства, которые доступны для выбора в опциях Family и Device.

Family. Задает семейство устройства или архитектуру Xilinx®, в которой реализуется проект.

Device. Задает устройство, в котором будет реализован проект.

Package. Задает тип корпуса устройства. От этого зависит количество доступных выводов для подключения внешних цепей.

Speed. Указывает быстродействие (speed grade) применяемого устройства.

Top-Level Source Type. Задает тип исходного кода для модуля верхнего уровня проекта.

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

Schematic. Выберите эту опцию, если Ваш модуль верхнего уровня проекта это схема. Проект в виде схемы может включать в себя друге модули уровня ниже различных типов, включая файлы HDL, схемы и "черные ящики", такие как ядра интегрированных процессоров (IP cores). Project Navigator автоматически преобразует любые файлы схем в Вашем дизайне в структурированный HDL перед запуском имплементации проекта; таким образом, Вы должны указать инструмент синтеза, когда работаете со схематическими проектами.

EDIF

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

NGC/NGO

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

Synthesis Tool. Задает инструментарий синтеза и язык синтеза для проекта. Для инструментов синтеза, которые поддерживают только один язык дизайна, выберите для проекта подходящий язык - например Synplify (VHDL) или Synplify (Verilog).

XST. Синтез Xilinx Synthesis Technology (XST) предоставляется вместе с ISE® Design Suite. Он поддерживает проекты, которые используют файлы дизайна VHDL, Verilog и схем. Т. е. поддерживается дизайн, состоящий из смеси языков. Для дополнительной информации см. XST Synthesis Overview site:xilinx.com.

Synplify and Synplify Pro. Synplify and Synplify Pro это сторонний интегрированный инструментарий синтеза, который должен быть приобретен отдельно у компании Synopsys, Inc. Программное обеспечение Synplify не поддерживает проекты, которые включают в себя все разновидности языков файлов проекта. Поддерживаются проекты, которые содержат в одном проекте смесь языковых файлов на VHDL и Verilog. Программное обеспечение Synplify и Synplify Pro не поддерживает проекты, которые включают в файлы схем. Для дополнительной информации см. Using Synplify or Synplify Pro Software for Synthesis site:xilinx.com.

Precision. Это сторонний интегрированный инструментарий синтеза, который должен быть приобретен отдельно у компании Mentor Graphics, Inc. Программное обеспечение Precision поддерживает проекты, которые включают файлы схем и проекты, которые включают смесь исходных файлов на языках VHDL и Verilog в одном проекте. Для дополнительной информации см. Using Precision Software for Synthesis site:xilinx.com.

Обратите внимание, что сторонние инструменты синтеза, такие как Synplify и Precision, доступны только как опция, если это ПО установлено на Вашем компьютере. Если инструмент синтеза установлен, но не появляется в качестве опции, то убедитесь, что путь до инструмента правильно установлен на странице Integrated Tools диалога настроек Preferences.

Simulator. Укажите инструмент, используемый для симуляции и язык, используемый для генерации списков сетей симуляции.

ISim. Симулятор ISim поставляется в составе ISE Design Suite. Для дополнительной информации см. ISim User Guide (UG660) site:xilinx.com.

ModelSim SE/ModelSim PE/ModelSim DE. Симулятор ModelSim это сторонний инструмент, используемый вместе с ISE Design Suite. Для дополнительной информации см. Using the ModelSim or Questa Simulator site:xilinx.com.

Имейте в виду, что после приобретения и установки ModelSim укажите перед симуляцией корректный путь до исполняемого файла на странице Integrated Tools диалога настроек Preferences.

Questa. Симулятор Questa это сторонний инструмент, используемый вместе с ISE Design Suite. Для дополнительной информации см. ModelSim or Questa Simulator site:xilinx.com.

Имейте в виду, что при использование симулятора, который не интегрирован с ISE Design Suite, Вы должны указать ISim. Это гарантирует, что все сгенерированные файлы записаны в правильном формате.

Preferred Language. Управляет установкой по умолчанию для обработки свойств, которые генерируют вывод HDL, такие как исходные файлы, промежуточные файлы или структурированные списки цепей симуляции. Если опции Synthesis Tool и Simulator установлены в инструмент на одном языке, то язык по умолчанию для сгенерированных выходных файлов HDL установится автоматически. Если обе опции Synthesis Tool и Simulator установлены на смешанные языки (VHDL/Verilog), то Вы можете использовать свойство Preferred Language для выбора языка, в котором будут создаваться генерируемые выходные файлы HDL.

Verilog. Выберите эту опцию, если в обоих установках Synthesis Tool и Simulator заданы смешанные языки, и если Вы хотите использовать в качестве языка по умолчанию Verilog.

VHDL. Выберите эту опцию, если в обоих установках Synthesis Tool и Simulator заданы смешанные языки, и если Вы хотите использовать в качестве языка по умолчанию VHDL.

N/A. Эта опция появляется, если обе установки Synthesis Tool и Simulator установлены на один язык, потому что генерируемый язык базируется на языке, который выбран в опциях Synthesis Tool и Simulator.

Примечание: альтернативно Вы можете поменять целевой язык для каждого процесса в по отдельности в окне Processes панели Design, для этого выберите Process -> Process Properties, и установите язык в окне диалога. Например, для процесса View HDL Functional Model Вы можете указать язык структурированного списка цепей цели в окне диалога Functional Model Properties.

Property Specification in Project File. Управляет тем, как свойства сохраняются в файле .xise проекта.

Store non-default values only. Выберите эту опцию для сохранения только тех установок, которые не являются установкой свойства по умолчанию.

Store all values. Выберите эту опцию для сохранения всех установок свойств, включая значения свойств по умолчанию. Эта опция полезна, когда ведется работа с системами управления исходным кодом, и когда проекты перемещаются между разными версиями ISE Design Suite, потому что будут явно сохранены все свойства проекта.

Примечание: для получения дополнительной информации по файлу проекта .xise см. Understanding the Project File site:xilinx.com.

Manual Compile Order. По умолчанию порядок компиляции RTL определяется автоматически на основе иерархии дизайна. Эта опция позволяет Вам изменить поведение по умолчанию и установить порядок компиляции вручную. Выбор этой опции запрещает весь иерархический анализ файлов исходного кода HDL, когда они добавляются в проект, и исходные модули дизайна отображаются как плоский список вместо иерархического. Для проектов с большим количеством исходных модулей HDL это может позволить быстрее добавлять файлы в проект. Для дополнительной информации см. Setting a Custom Compile Order site:xilinx.com.

VHDL Source Analysis Standard. Задает стандарт языка VHDL, используемый парсером иерархии проекта. Для дополнительной информации см. Understanding the Front-End Design Parser site:xilinx.com.

VHDL-93. Выберите эту опцию для установки стандарта VHDL-93, который предоставляет продвинутую поддержку всех конструкций VHDL-93.

VHDL-200X. Выберите эту опцию для установки стандарта VHDL-200X, который предоставляет поддержку для выбора дополнительных конструкций, представленных в post-VHDL-93.

Примечание: установка этой опции позволяет Project Navigator анализировать проекты, использующие конструкции VHDL-200X. Из-за того, что XST не поддерживает конструкции VHDL-200X, Вы должны использовать разные инструменты синтеза для своего проекта.

Enable Message Filtering. Показывает количество сообщений, которые Вы отфильтровали. Вы должны разрешить эту опцию, отфильтровать сообщения, и затем запустить программное обеспечение, чтобы показать количество отфильтрованных сообщений. Для дополнительной информации см. Using Message Filters site:xilinx.com.

ISE Project Navigator New Project3

После клика на кнопке Finish откроется окно пустого проекта.

ISE Project Navigator Empty Design

3. Выберите в меню Project -> New Source...

ISE Project Navigator New Source1

Здесь нас интересует тип Schematic. Выберите его, введите в поле "File Name" имя модуля (я ввел имя top), кликните Next и OK.

ISE Project Navigator New Source2

Я не случайно назвал этот модуль "top". Это особый модуль проекта, так называемый модуль верхнего уровня. Если сравнивать с языками программирования C/C++, то это аналог модуля исходного кода, где находится функция main. Известно, что такой модуль исходного кода на C/C++ может быть только один, то же самое и здесь - в проектах, которые содержат одну микросхему CPLD или FPGA, может быть только один модуль верхнего уровня. В простых проектах вся логика может содержаться только в этом модуле, в более сложных к нему в качестве подчиненных могут быть добавлены дополнительные модули.

В нашем случае мы создаем в качестве учебного примера простой логический элемент 2И-НЕ, поэтому будет только один модуль, модуль верхнего уровня, именно поэтому я и назвал его "top" (получится файл top.sch).

4. После создания нового модуля схемы откроется окно редактора схемы (Schematic Editor) с пустой схемой.

ISE Project Navigator Schematic Editor01

Если текущий инструмент редактора Select (кнопка со стрелкой), то закладка Options покажет возможный выбор опций для этого инструмента.

ISE Project Navigator Schematic Editor Select tool

ISE Project Navigator Schematic Editor Select Options Настройка выбора объектов


Когда выполняете клик на ветке:
• выбирается вся ветка
• выбирается её сегмент



Когда перемещаете объект:
• соединения с другими
   объектами сохраняются
• соединения разрываются


Выбор через прямоугольную область:
• выбирается то, что попадает
   внутрь целиком
• выбирается все, что касается
   области

Выбор через прямоугольную область:
• выбираются объекты, включая
   окна атрибутов
• выбираются объекты, исключая
   окна атрибутов
• только окна атрибутов

5. Перейдите на закладку Symbols. Для начала давайте создадим простейший логический элемент, как в старой доброй микросхеме К155ЛА3, т. е. 2И-НЕ. Для этого нам понадобится инструмент Add Symbol.

ISE Project Navigator Schematic Editor Add Symbol tool

Слева в разделе Categories выберите пункт Logic, чуть ниже в разделе Symbols выберите nand2, переведите курсор мыши в правую часть окна - возле курсора появится символ логического элемента, который можно вставить в схему.

ISE Project Navigator Schematic Editor02

Кликните на любое место чертежа, на схему будет добавлен элемент NAND2. Колесиком мыши можно приближать и удалять (zoom) отображаемое поле схемы.

ISE Project Navigator Schematic Editor03

6. Логический элемент создан, теперь нужно его входы и выходы подключить к выводам реального чипа. Для этого сначала нужно к выводам подключить соединительные провода, что делается кнопкой Add Wire.

ISE Project Navigator Schematic Editor Add Wire tool

Если текущий инструмент редактора Add Wire, то закладка Options покажет возможный выбор опций для этого инструмента.

ISE Project Navigator Schematic Editor Add Wire Options Опции добавления соединений



При добавлении соединений:
• использовать автороутер для
   добавления одного или
   большего числа сегментов
   между точками соединения
• вручную рисовать сегменты


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






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

Добавьте проводники, получится примерно так:

ISE Project Navigator Schematic Editor04

7. Подключение буферов ввода-вывода. Снова выберите инструмент Add Symbol, и перейдите в категорию символов IO, и подключите ко входам символ ibuf, а к выходу символ obuf. Получится вот такая схема:

ISE Project Navigator Schematic Editor05

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

8. Размещение маркеров ввода/вывода. Для этого служит инструмент Add IO Marker.

ISE Project Navigator Schematic Editor Add IO Marker tool

Если текущий инструмент редактора Add IO Marker, то закладка Options покажет возможный выбор опций для этого инструмента.

ISE Project Navigator Schematic Editor Add IO Marker Options Опции добавления маркера порта
ввода/вывода


При клике на конце ветви:
• автоматически определять тип
   добавляемого маркера
• добавлять маркер входа
• добавлять маркер выхода
• добавлять маркер двунаправленного
   сигнала
• удалять маркер



Когда добавляете маркер, то
ориентация направления:
• маркер ориентируется автоматически
• маркер ориентируется вниз
• маркер ориентируется влево
• маркер ориентируется вправо
• маркер ориентируется вверх


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

Получится примерно следующая схема:

ISE Project Navigator Schematic Editor06

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

ISE Project Navigator Schematic Editor Net Attributes

Внешний вид завершенной схемы:

ISE Project Navigator Schematic Editor07

10. Для того, чтобы маркеры IO соответствовали именно тем ножкам чипа, которые нам нужны, следует добавить в проект новый файл, так называемый файл ограничений реализации (Implementations Constraints File). Выберите в меню Project -> New Source..., и в качестве типа файла укажите Implementations Constraints File. Дайте имя для файла, для простоты я назвал его pins.

ISE Project Navigator New Source Add Constraints1

ISE Project Navigator New Source Add Constraints2

Примечание: термин "файл ограничений пользователя" (User Comstraints File, UCF) поначалу вводит начинающего пользователя в заблуждение, поскольку для него трудно ожидать, что этот файл задает привязку создаваемой логики к выводам корпуса микросхемы. Но на самом деле это действительно ограничения, потому что требует от системы синтеза и разводки определенным образом прокладывать на кристалле логические связи. При отсутствии таких ограничений разводка может быть сделана более оптимально - либо с минимальными задержками, либо с минимальной тратой ресурсов микросхемы. Кроме того, файл UCF также может вводить ограничения на интервалы времени (в этом обзоре такие ограничения не рассматриваются).

Файл получит расширение *.ucf (сокращение от User Constraints File), и он будет размещен в дереве иерархии проекта (Design Hierarchy) как дочерний по отношению к файлу top.

ISE Project Navigator Design Hierarchy1

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

Имя сигнала Банк_НомерIO XC2C64A, корпус VQ44
IN1 BANK2_0 выв. 38
IN2 BANK2_1 выв. 37
OUT1 BANK2_9 выв. 28

Тогда файл ограничений (у нас это pins.ucf) будет такой:

NET "IN1" LOC = "P38";
NET "IN2" LOC = "P37";
NET "OUT1" LOC = "P28";

Здесь команда NET задает имя цепи схемы, а команда LOC задает номер ножки выбранного корпуса микросхемы (P28 соответствует выводу 28 корпуса, P38 выводу 38, и т. д.).

1. На закладке Sources (Design -> Hierarchy), выберите вариант просмотра Implementation.

2. Выберите корневой элемент проекта (на рисунке это xc2c64a-7VQ44).

3. На закладке Processes раскройте раздел User Constraints.

ISE Project Navigator run PACE1

4. Сделайте двойной клик курсором мыши на пункт Floorplan IO - Pre-Synthesis. Откроется окно запроса "Этот процесс требует добавления файла UCF к проекту и привязки его к выбранному модулю проекта. Хотите ли Вы, чтобы Project Navigator автоматически создал UCF и добавил его к проекту? Если выберете 'No', то Вам нужно будет создать или добавить существующий файл UCF к проекту перед тем, как запустить этот процесс."

ISE Project Navigator run PACE2

Выберите Yes, будет автоматически создан файл UCF (для нашего примера это top.ucf) и добавлен к проекту. Также запустится окно редактора Xilinx PACE.

ISE Project Navigator run PACE3

5. С помощью этого редактора можно очень удобно создавать файл ограничений реализации UCF. В окошке Design Object List показана таблица с сигналами нашей схемы (IN1, IN2, OUT1), где можно редактировать привязку этих сигналов к внешним выводам корпуса и их атрибуты, а справа окно Package Pins дает подсказку по именам выводов (P1..P44).

Через меню View -> Toolbars -> Legend (Ctrl+L) можно открыть легенду обозначения выводов выбранной микросхемы (Package Pin Legend).

ISE Project Navigator PACE Package Pin Legend

6. Редактированием столбца Loc таблицы Design Object List делается привязка сигналов к выводам:

ISE Project Navigator PACE edit Design Object List1

Обратите внимание, что после редактирования поменялась картинка Package Pins, на ней синим цветом закрашиваются выбранные выводы корпуса. Косой черной штриховкой обозначен текущий редактируемый сигнал в таблице (OUT1/P28).

ISE Project Navigator PACE edit Design Object List2

7. Белые ячейки в таблице можно редактировать, задавая различные атрибуты для сигналов на выводах микросхемы. Для нашего примера можно отредактировать:

Slew. Этот атрибут можно отредактировать для выхода OUT1, установив его в значение FAST или SLOW. Этот параметр задает скорость переключения выхода микросхемы. Вариант SLOW будет переключать выход медленнее, но снизит энергопотребление.

I/O Std. Задает уровни логики, с которыми работает этот сигнал можно выбрать один из вариантов: LVCMOS15, LVCMOS18, LVCMOS25, LVCMOS33 или LVTTL. Цифры обозначают уровни 1.5V, 1.8V, 2.5 и 3.3V. Если Ваша схема питается от 3.3V, то можно выбрать вариант LVCMOS33.

Termination. Задает наличие подтяжки к лог. 1 (PULLUP), отсутствие подтяжки (FLOAT) и терминирование по внешней цепи (KEEPER). Подробнее про эти варианты терминирования см. руководство Constraints Guide (папка doc\cgd.pdf [3]).

Schmitt. Если выбрать ON, то к сигналу будет подключен триггер Шмидта.

Globals. Позволяет выбрать варианты CLK, COOL_CLK, OE или SR (подробнее см. руководство Constraints Guide, папка doc\cgd.pdf [3]).

В результате редактирования у меня получилась такая таблица:

ISE Project Navigator PACE edit Design Object List3

8. Сохраните UCF выбором в меню File -> Save. Откроется оно запроса Bus Delimiter, оставьте там все по умолчанию и кликните OK.

ISE Project Navigator PACE Bus Delimiter

На диске в корневой папке проекта обновится файл ограничений. У меня получился следующий файл:

#PACE: Start of Constraints generated by PACE
 
#PACE: Start of PACE I/O Pin Assignments
NET "IN1"  LOC = "P38" | IOSTANDARD = LVCMOS33  | PULLUP ;
NET "IN2"  LOC = "P37" | IOSTANDARD = LVCMOS33  | PULLUP ;
NET "OUT1"  LOC = "P28" | SLEW = SLOW  | IOSTANDARD = LVCMOS33  | FLOAT ;
 
#PACE: Start of PACE Area Constraints
 
#PACE: Start of PACE Prohibit Constraints
 
#PACE: End of Constraints generated by PACE

11. Все готово к генерации прошивки для микросхемы. Кликните на кнопку с зеленым треугольником Implament Top Module. Друг за другом запустятся процессы Implement Design: Synthesize - XST, Translate, Fit, Generate Programming File.

ISE Project Navigator Design Implement

Зеленые кружки с галочками показывают, что все соответствующие процессы завершены успешно.

[Запись полученной программы в микросхему]

Осталось теперь запрограммировать нашу микросхему XC2C64A.

12. Подключите адаптер Xilinx Program Cable USB к компьютеру и к программируемому устройству через JTAG. На адаптере светодиод должен загореться красным, сигнализируя об успешном подключении к порту USB. Подайте питание 3.3V на программируемую микросхему (у нас это CPLD XC2C64A. На адаптере светодиод поменяет цвет на зеленый, показывая тем самым, что питание на микросхему подано, и железо готово к работе.

13. Выберите в меню Tools -> iMPACT..., запустится окно утилиты программатора. При первом запуске утилиты iMPACT откроется предупреждение, что пока что не существует файл проекта.

ISE iMPACT no project file warning

14. Выберите в меню Edit -> Launch Wizard..., откроется окно Welcome to iMPACT.

ISE iMPACT Wizard1

 

Оставьте выбранным первый вариант "Configure devices using Boundary-Scan chain -> Automatically connect to a cable and identify Boundary-Scan chain", кликните OK.

15. Через несколько секунд автоматически будет обнаружена JTAG-цепь подключенной микросхемы XC2C64A, и будет выведено сообщение "Identify Succeeded". Окно утилиты iMPACT поменяется, справа символически будет показана детектированная цепочка JTAG, состоящая из одной нашей микросхемы.

ISE iMPACT main window

Примечание: при наличии проблем с подключением выберите Output -> Cable Setup..., откроется диалог настройки подключения к адаптеру Xilinx Program Cable (программатор JTAG). Радиокнопками Communication Mode выберите тип кабеля (мой кабель, купленный на aliexpress, соответствует варианту Platform Cable USB/II) и кликните OK.

ISE iMPACT Cable Communication Setup

16. После детектирования цепочки JTAG мастер отобразит окно запроса "Auto Assign Configuration Files Query Dialog" (Вы хотите продолжить и назначить файл (файлы) конфигурации?):

ISE iMPACT Wizard2

Кликните Yes, откроется окно выбора файла, выберите файл top.jed, находящийся в корневой папке проекта, он добавится в проект iMPACT, и откроется окно Device Programming Properties для настройки цепочки JTAG.

ISE iMPACT Device Programming Properties

Ничего менять в этом окне не надо, просто нажмите OK.

17. Кликните на микросхему, слева будет показан список возможных операций над ней. Кликните на Program. Через несколько секунд микросхема запрограммируется, и будет готова к работе.

ISE iMPACT Program DONE

Сохраните файл проекта iMPACT (файл с расширением *.ipf).

[Проверка результата]

Для проверки, как работает мой логический элемент 2И-НЕ, я собрал вот такой стенд:

XC2C64A maket

Для подачи логических сигналов на входы использовались DIP-переключатели, и состояние уровня показывал зеленый светодиод. Схема для одного входа:

logic levels generator

Для оценки выходного сигнала использовался красный светодиод, включенный вот по такой схеме:

logic levels indicator

После программирования созданный элемент 2И-НЕ работает как полагается:

XC2C64A nand2 00 XC2C64A nand2 01 XC2C64A nand2 10 XC2C64A nand2 11
На входах 00, красный светодиод горит, показывая на выходе 1 На входах 01, красный светодиод горит, показывая на выходе 1 На входах 10, красный светодиод горит, показывая на выходе 1 На входах 11, красный светодиод погас, показывая на выходе 0

RC-генератор можно сделать по классической схеме, с помощью двух инверторов (категория Logic, символ inv), одного входного буфера, двух выходных буферов (категория Buffer, символы ibuf и obuf соответственно), и подключенных снаружи резистора и конденсатора.

ISE Project Navigator generator sch

Пример таблицы настроек портов в программе ISE PACE и соответствующий файл UCF:

ISE Project Navigator PACE constraints table for generator

NET "XTALIN"  LOC = "P12" | IOSTANDARD = LVTTL ; 
NET "XTALOUT1"  LOC = "P18" | SLEW = FAST  | IOSTANDARD = LVTTL ; 
NET "XTALOUT2"  LOC = "P14" | SLEW = FAST  | IOSTANDARD = LVTTL ;

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

XC2C64A quartz generaror

Соответствующий автоматически сгенерированный код на языке VHDL (файл top.vhd):

library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.ALL;
library UNISIM;
use UNISIM.Vcomponents.ALL;
 
entity top is
   port ( XTALIN   : in    std_logic; 
          XTALOUT1 : out   std_logic; 
          XTALOUT2 : out   std_logic);
end top;
 
architecture BEHAVIORAL of top is
   attribute BOX_TYPE   : string ;
   signal XLXN_25  : std_logic;
   signal XLXN_58  : std_logic;
   signal XLXN_61  : std_logic;
   component IBUF
      port ( I : in    std_logic; 
             O : out   std_logic);
   end component;
   attribute BOX_TYPE of IBUF : component is "BLACK_BOX";
   
   component OBUF
      port ( I : in    std_logic; 
             O : out   std_logic);
   end component;
   attribute BOX_TYPE of OBUF : component is "BLACK_BOX";
   
   component INV
      port ( I : in    std_logic; 
             O : out   std_logic);
   end component;
   attribute BOX_TYPE of INV : component is "BLACK_BOX";
 
begin
   XLXI_29 : IBUF
      port map (I=>XTALIN,
                O=>XLXN_25);
   
   XLXI_31 : OBUF
      port map (I=>XLXN_61,
                O=>XTALOUT1);
   
   XLXI_32 : INV
      port map (I=>XLXN_25,
                O=>XLXN_61);
   
   XLXI_33 : INV
      port map (I=>XLXN_61,
                O=>XLXN_58);
   
   XLXI_59 : OBUF
      port map (I=>XLXN_58,
                O=>XTALOUT2);
end BEHAVIORAL;

Сокращенный отчет (файл top.rpt):

Device Used: XC2C64A-7-VQ44
Fitting Status: Successful

************************* Mapped Resource Summary ************************** Macrocells Product Terms Function Block Registers Pins Used/Tot Used/Tot Inps Used/Tot Used/Tot Used/Tot 2 /64 ( 3%) 2 /224 ( 1%) 2 /160 ( 1%) 0 /64 ( 0%) 3 /33 ( 9%)
** Function Block Resources ** Function Mcells FB Inps Pterms IO CTC CTR CTS CTE Block Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot FB1 0/16 0/40 0/56 0/ 8 0/1 0/1 0/1 0/1 FB2 0/16 0/40 0/56 0/ 9 0/1 0/1 0/1 0/1 FB3 1/16 1/40 1/56 1/ 9 0/1 0/1 0/1 0/1 FB4 1/16 1/40 1/56 1/ 7 0/1 0/1 0/1 0/1 ----- ------- ------- ----- --- --- --- --- Total 2/64 2/160 2/224 2/33 0/4 0/4 0/4 0/4 CTC - Control Term Clock CTR - Control Term Reset CTS - Control Term Set CTE - Control Term Output Enable
** 2 Outputs ** Signal Total Total Bank Loc Pin Pin Pin I/O I/O Slew Reg Reg Init Name Pts Inps No. Type Use STD Style Rate Use State XTALOUT1 1 1 2 FB3_15 18 I/O O LVTTL FAST XTALOUT2 1 1 1 FB4_14 14 I/O O LVTTL FAST
** 1 Inputs ** Signal Bank Loc Pin Pin Pin I/O I/O Name No. Type Use STD Style XTALIN 1 FB4_11 12 I/O I LVTTL KPR
****************************** Device Pin Out ***************************** Device : XC2C64A-7-VQ44 -------------------------------- /44 43 42 41 40 39 38 37 36 35 34 \ | 1 33 | | 2 32 | | 3 31 | | 4 30 | | 5 XC2C64A-7-VQ44 29 | | 6 28 | | 7 27 | | 8 26 | | 9 25 | | 10 24 | | 11 23 | \ 12 13 14 15 16 17 18 19 20 21 22 / --------------------------------
Pin Signal Pin Signal No. Name No. Name 1 KPR 23 KPR 2 KPR 24 TDO 3 KPR 25 GND 4 GND 26 VCCIO-3.3 5 KPR 27 KPR 6 KPR 28 KPR 7 VCCIO-3.3 29 KPR 8 KPR 30 KPR 9 TDI 31 KPR 10 TMS 32 KPR 11 TCK 33 KPR 12 XTALIN 34 KPR 13 KPR 35 VCCAUX 14 XTALOUT2 36 KPR 15 VCC 37 KPR 16 KPR 38 KPR 17 GND 39 KPR 18 XTALOUT1 40 KPR 19 KPR 41 KPR 20 KPR 42 KPR 21 KPR 43 KPR 22 KPR 44 KPR
Legend : NC = Not Connected, unbonded pin PGND = Unused I/O configured as additional Ground pin KPR = Unused I/O with weak keeper (leave unconnected) WPU = Unused I/O with weak pull up (leave unconnected) TIE = Unused I/O floating -- must tie to VCC, GND or other signal VCC = Dedicated Power Pin VCCAUX = Power supply for JTAG pins VCCIO-3.3 = I/O supply voltage for LVTTL, LVCMOS33, SSTL3_I VCCIO-2.5 = I/O supply voltage for LVCMOS25, SSTL2_I VCCIO-1.8 = I/O supply voltage for LVCMOS18 VCCIO-1.5 = I/O supply voltage for LVCMOS15, HSTL_I VREF = Reference voltage for indicated input standard *VREF = Reference voltage pin selected by software GND = Dedicated Ground Pin TDI = Test Data In, JTAG pin TDO = Test Data Out, JTAG pin TCK = Test Clock, JTAG pin TMS = Test Mode Select, JTAG pin PROHIBITED = User reserved pin

XC2C64A PWM simple

Автоматически сгенерированный код на языке VHDL (файл top.vhd):

library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.ALL;
library UNISIM;
use UNISIM.Vcomponents.ALL;
 
entity COMPM8_MXILINX_top is
   port ( A  : in    std_logic_vector (7 downto 0); 
          B  : in    std_logic_vector (7 downto 0); 
          GT : out   std_logic; 
          LT : out   std_logic);
end COMPM8_MXILINX_top;
 
architecture BEHAVIORAL of COMPM8_MXILINX_top is
   attribute BOX_TYPE   : string ;
   signal EQ_1  : std_logic;
   signal EQ_3  : std_logic;
   signal EQ_5  : std_logic;
   signal EQ_7  : std_logic;
   signal EQ2_3 : std_logic;
   signal EQ4_5 : std_logic;
   signal EQ6_7 : std_logic;
   signal GE0_1 : std_logic;
   signal GE2_3 : std_logic;
   signal GE4_5 : std_logic;
   signal GE6_7 : std_logic;
   signal GTA   : std_logic;
   signal GTB   : std_logic;
   signal GTC   : std_logic;
   signal GTD   : std_logic;
   signal GT_1  : std_logic;
   signal GT_3  : std_logic;
   signal GT_5  : std_logic;
   signal GT_7  : std_logic;
   signal GT0_1 : std_logic;
   signal GT2_3 : std_logic;
   signal GT4_5 : std_logic;
   signal LE0_1 : std_logic;
   signal LE2_3 : std_logic;
   signal LE4_5 : std_logic;
   signal LE6_7 : std_logic;
   signal LTA   : std_logic;
   signal LTB   : std_logic;
   signal LTC   : std_logic;
   signal LTD   : std_logic;
   signal LT_1  : std_logic;
   signal LT_3  : std_logic;
   signal LT_5  : std_logic;
   signal LT_7  : std_logic;
   signal LT0_1 : std_logic;
   signal LT2_3 : std_logic;
   signal LT4_5 : std_logic;
   component AND2B1
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of AND2B1 : component is "BLACK_BOX";
   
   component OR4
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             I2 : in    std_logic; 
             I3 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of OR4 : component is "BLACK_BOX";
   
   component NOR2
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of NOR2 : component is "BLACK_BOX";
   
   component AND3
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             I2 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of AND3 : component is "BLACK_BOX";
   
   component OR2
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of OR2 : component is "BLACK_BOX";
   
   component AND3B1
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             I2 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of AND3B1 : component is "BLACK_BOX";
   
   component XNOR2
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of XNOR2 : component is "BLACK_BOX";
   
   component AND2
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of AND2 : component is "BLACK_BOX";
   
   component AND4
      port ( I0 : in    std_logic; 
             I1 : in    std_logic; 
             I2 : in    std_logic; 
             I3 : in    std_logic; 
             O  : out   std_logic);
   end component;
   attribute BOX_TYPE of AND4 : component is "BLACK_BOX";
   
begin
   I_36_1 : AND2B1
      port map (I0=>A(7),
                I1=>B(7),
                O=>LT_7);
   
   I_36_3 : OR4
      port map (I0=>LTD,
                I1=>LTC,
                I2=>LTB,
                I3=>LTA,
                O=>LT);
   
   I_36_4 : NOR2
      port map (I0=>GT4_5,
                I1=>LT4_5,
                O=>EQ4_5);
   
   I_36_5 : AND3
      port map (I0=>EQ6_7,
                I1=>EQ4_5,
                I2=>LT2_3,
                O=>LTB);
   
   I_36_6 : OR2
      port map (I0=>LT_3,
                I1=>LE2_3,
                O=>LT2_3);
   
   I_36_7 : OR2
      port map (I0=>GT_3,
                I1=>GE2_3,
                O=>GT2_3);
   
   I_36_8 : OR2
      port map (I0=>GT_1,
                I1=>GE0_1,
                O=>GT0_1);
   
   I_36_9 : AND3B1
      port map (I0=>A(0),
                I1=>EQ_1,
                I2=>B(0),
                O=>LE0_1);
   
   I_36_10 : AND3B1
      port map (I0=>B(0),
                I1=>EQ_1,
                I2=>A(0),
                O=>GE0_1);
   
   I_36_11 : AND3B1
      port map (I0=>A(2),
                I1=>EQ_3,
                I2=>B(2),
                O=>LE2_3);
   
   I_36_12 : AND3B1
      port map (I0=>B(2),
                I1=>EQ_3,
                I2=>A(2),
                O=>GE2_3);
   
   I_36_13 : XNOR2
      port map (I0=>A(1),
                I1=>B(1),
                O=>EQ_1);
   
   I_36_14 : AND2B1
      port map (I0=>B(1),
                I1=>A(1),
                O=>GT_1);
   
   I_36_15 : XNOR2
      port map (I0=>A(3),
                I1=>B(3),
                O=>EQ_3);
   
   I_36_16 : AND2B1
      port map (I0=>A(1),
                I1=>B(1),
                O=>LT_1);
   
   I_36_17 : AND2B1
      port map (I0=>B(3),
                I1=>A(3),
                O=>GT_3);
   
   I_36_18 : OR2
      port map (I0=>LT_1,
                I1=>LE0_1,
                O=>LT0_1);
   
   I_36_19 : AND2B1
      port map (I0=>A(3),
                I1=>B(3),
                O=>LT_3);
   
   I_36_20 : AND2
      port map (I0=>GT4_5,
                I1=>EQ6_7,
                O=>GTC);
   
   I_36_21 : AND2
      port map (I0=>EQ6_7,
                I1=>LT4_5,
                O=>LTC);
   
   I_36_22 : NOR2
      port map (I0=>GTD,
                I1=>LTD,
                O=>EQ6_7);
   
   I_36_23 : OR2
      port map (I0=>LT_5,
                I1=>LE4_5,
                O=>LT4_5);
   
   I_36_24 : AND2B1
      port map (I0=>B(7),
                I1=>A(7),
                O=>GT_7);
   
   I_36_25 : AND2B1
      port map (I0=>A(5),
                I1=>B(5),
                O=>LT_5);
   
   I_36_26 : XNOR2
      port map (I0=>A(7),
                I1=>B(7),
                O=>EQ_7);
   
   I_36_27 : AND2B1
      port map (I0=>B(5),
                I1=>A(5),
                O=>GT_5);
   
   I_36_28 : XNOR2
      port map (I0=>A(5),
                I1=>B(5),
                O=>EQ_5);
   
   I_36_29 : AND3B1
      port map (I0=>B(6),
                I1=>EQ_7,
                I2=>A(6),
                O=>GE6_7);
   
   I_36_30 : AND3B1
      port map (I0=>A(6),
                I1=>EQ_7,
                I2=>B(6),
                O=>LE6_7);
   
   I_36_31 : AND3B1
      port map (I0=>B(4),
                I1=>EQ_5,
                I2=>A(4),
                O=>GE4_5);
   
   I_36_32 : AND3B1
      port map (I0=>A(4),
                I1=>EQ_5,
                I2=>B(4),
                O=>LE4_5);
   
   I_36_33 : OR2
      port map (I0=>GT_5,
                I1=>GE4_5,
                O=>GT4_5);
   
   I_36_34 : OR2
      port map (I0=>GT_7,
                I1=>GE6_7,
                O=>GTD);
   
   I_36_35 : OR2
      port map (I0=>LT_7,
                I1=>LE6_7,
                O=>LTD);
   
   I_36_36 : AND4
      port map (I0=>EQ6_7,
                I1=>EQ4_5,
                I2=>EQ2_3,
                I3=>LT0_1,
                O=>LTA);
   
   I_36_37 : AND4
      port map (I0=>GT0_1,
                I1=>EQ2_3,
                I2=>EQ4_5,
                I3=>EQ6_7,
                O=>GTA);
   
   I_36_38 : AND3
      port map (I0=>GT2_3,
                I1=>EQ4_5,
                I2=>EQ6_7,
                O=>GTB);
   
   I_36_39 : NOR2
      port map (I0=>GT2_3,
                I1=>LT2_3,
                O=>EQ2_3);
   
   I_36_40 : OR4
      port map (I0=>GTD,
                I1=>GTC,
                I2=>GTB,
                I3=>GTA,
                O=>GT);
end BEHAVIORAL;
 
library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.ALL;
library UNISIM;
use UNISIM.Vcomponents.ALL;
 
entity CJD8CE_MXILINX_top is
   port ( C   : in    std_logic; 
          CE  : in    std_logic; 
          CLR : in    std_logic; 
          Q   : out   std_logic_vector (7 downto 0));
end CJD8CE_MXILINX_top;
 
architecture BEHAVIORAL of CJD8CE_MXILINX_top is
   attribute BOX_TYPE   : string ;
   signal Q7B     : std_logic;
   signal Q_DUMMY : std_logic_vector (7 downto 0);
   component INV
      port ( I : in    std_logic; 
             O : out   std_logic);
   end component;
   attribute BOX_TYPE of INV : component is "BLACK_BOX";
   
   component FDDCE
      generic( INIT : bit :=  '0');
      port ( C   : in    std_logic; 
             CE  : in    std_logic; 
             CLR : in    std_logic; 
             D   : in    std_logic; 
             Q   : out   std_logic);
   end component;
   attribute BOX_TYPE of FDDCE : component is "BLACK_BOX";
   
begin
   Q(7 downto 0) <= Q_DUMMY(7 downto 0);
   I_36_61 : INV
      port map (I=>Q_DUMMY(7),
                O=>Q7B);
   
   XLXI_1 : FDDCE
      port map (C=>C,
                CE=>CE,
                CLR=>CLR,
                D=>Q_DUMMY(2),
                Q=>Q_DUMMY(3));
   
   XLXI_2 : FDDCE
      port map (C=>C,
                CE=>CE,
                CLR=>CLR,
                D=>Q_DUMMY(1),
                Q=>Q_DUMMY(2));
   
   XLXI_3 : FDDCE
      port map (C=>C,
                CE=>CE,
                CLR=>CLR,
                D=>Q_DUMMY(0),
                Q=>Q_DUMMY(1));
   
   XLXI_4 : FDDCE
      port map (C=>C,
                CE=>CE,
                CLR=>CLR,
                D=>Q7B,
                Q=>Q_DUMMY(0));
   
   XLXI_5 : FDDCE
      port map (C=>C,
                CE=>CE,
                CLR=>CLR,
                D=>Q_DUMMY(3),
                Q=>Q_DUMMY(4));
   
   XLXI_6 : FDDCE
      port map (C=>C,
                CE=>CE,
                CLR=>CLR,
                D=>Q_DUMMY(4),
                Q=>Q_DUMMY(5));
   
   XLXI_7 : FDDCE
      port map (C=>C,
                CE=>CE,
                CLR=>CLR,
                D=>Q_DUMMY(5),
                Q=>Q_DUMMY(6));
   
   XLXI_8 : FDDCE
      port map (C=>C,
                CE=>CE,
                CLR=>CLR,
                D=>Q_DUMMY(6),
                Q=>Q_DUMMY(7));   
end BEHAVIORAL;
 
library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.ALL;
library UNISIM;
use UNISIM.Vcomponents.ALL;
 
entity top is
   port ( D0       : in    std_logic; 
          D1       : in    std_logic; 
          D2       : in    std_logic; 
          D3       : in    std_logic; 
          D4       : in    std_logic; 
          D5       : in    std_logic; 
          XTALIN   : in    std_logic; 
          PWMN     : out   std_logic; 
          PWMP     : out   std_logic; 
          XTALOUT1 : out   std_logic; 
          XTALOUT2 : out   std_logic);
end top;
 
architecture BEHAVIORAL of top is
   attribute BOX_TYPE   : string ;
   attribute HU_SET     : string ;
   signal A        : std_logic_vector (7 downto 0);
   signal B        : std_logic_vector (7 downto 0);
   signal Q        : std_logic_vector (7 downto 0);
   signal XLXN_25  : std_logic;
   signal XLXN_58  : std_logic;
   signal XLXN_61  : std_logic;
   signal XLXN_176 : std_logic;
   signal XLXN_177 : std_logic;
   signal XLXN_179 : std_logic;
   signal XLXN_180 : std_logic;
   component IBUF
      port ( I : in    std_logic; 
             O : out   std_logic);
   end component;
   attribute BOX_TYPE of IBUF : component is "BLACK_BOX";
   
   component OBUF
      port ( I : in    std_logic; 
             O : out   std_logic);
   end component;
   attribute BOX_TYPE of OBUF : component is "BLACK_BOX";
   
   component INV
      port ( I : in    std_logic; 
             O : out   std_logic);
   end component;
   attribute BOX_TYPE of INV : component is "BLACK_BOX";
   
   component CJD8CE_MXILINX_top
      port ( C   : in    std_logic; 
             CE  : in    std_logic; 
             CLR : in    std_logic; 
             Q   : out   std_logic_vector (7 downto 0));
   end component;
   
   component PULLUP
      port ( O : out   std_logic);
   end component;
   attribute BOX_TYPE of PULLUP : component is "BLACK_BOX";
   
   component GND
      port ( G : out   std_logic);
   end component;
   attribute BOX_TYPE of GND : component is "BLACK_BOX";
   
   component COMPM8_MXILINX_top
      port ( A  : in    std_logic_vector (7 downto 0); 
             B  : in    std_logic_vector (7 downto 0); 
             GT : out   std_logic; 
             LT : out   std_logic);
   end component;
   
   component BUF
      port ( I : in    std_logic; 
             O : out   std_logic);
   end component;
   attribute BOX_TYPE of BUF : component is "BLACK_BOX";
   
   attribute HU_SET of XLXI_134 : label is "XLXI_134_0";
   attribute HU_SET of XLXI_137 : label is "XLXI_137_1";
begin
   XLXI_29 : IBUF
      port map (I=>XTALIN,
                O=>XLXN_25);
   
   XLXI_31 : OBUF
      port map (I=>XLXN_61,
                O=>XTALOUT1);
   
   XLXI_32 : INV
      port map (I=>XLXN_25,
                O=>XLXN_61);
   
   XLXI_33 : INV
      port map (I=>XLXN_61,
                O=>XLXN_58);
   
   XLXI_59 : OBUF
      port map (I=>XLXN_58,
                O=>XTALOUT2);
   
   XLXI_134 : CJD8CE_MXILINX_top
      port map (C=>XLXN_61,
                CE=>XLXN_176,
                CLR=>XLXN_177,
                Q(7 downto 0)=>Q(7 downto 0));
   
   XLXI_135 : PULLUP
      port map (O=>XLXN_176);
   
   XLXI_136 : GND
      port map (G=>XLXN_177);
   
   XLXI_137 : COMPM8_MXILINX_top
      port map (A(7 downto 0)=>A(7 downto 0),
                B(7 downto 0)=>B(7 downto 0),
                GT=>XLXN_179,
                LT=>XLXN_180);
   
   XLXI_138 : OBUF
      port map (I=>XLXN_179,
                O=>PWMP);
   
   XLXI_139 : OBUF
      port map (I=>XLXN_180,
                O=>PWMN);
   
   XLXI_143 : BUF
      port map (I=>Q(5),
                O=>A(5));
   
   XLXI_144 : BUF
      port map (I=>Q(4),
                O=>A(4));
   
   XLXI_145 : BUF
      port map (I=>Q(3),
                O=>A(3));
   
   XLXI_146 : BUF
      port map (I=>Q(2),
                O=>A(2));
   
   XLXI_148 : BUF
      port map (I=>Q(1),
                O=>A(1));
   
   XLXI_149 : BUF
      port map (I=>Q(0),
                O=>A(0));
   
   XLXI_175 : IBUF
      port map (I=>D5,
                O=>B(5));
   
   XLXI_176 : IBUF
      port map (I=>D4,
                O=>B(4));
   
   XLXI_177 : IBUF
      port map (I=>D3,
                O=>B(3));
   
   XLXI_178 : IBUF
      port map (I=>D2,
                O=>B(2));
   
   XLXI_179 : IBUF
      port map (I=>D1,
                O=>B(1));
   
   XLXI_180 : IBUF
      port map (I=>D0,
                O=>B(0));
end BEHAVIORAL;

Сокращенный отчет (файл top.rpt):

Device Used: XC2C64A-7-VQ44
Fitting Status: Successful

************************* Mapped Resource Summary ************************** Macrocells Product Terms Function Block Registers Pins Used/Tot Used/Tot Inps Used/Tot Used/Tot Used/Tot 14 /64 ( 22%) 42 /224 ( 19%) 28 /160 ( 17%) 8 /64 ( 12%) 11 /33 ( 33%)
** Function Block Resources ** Function Mcells FB Inps Pterms IO CTC CTR CTS CTE Block Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot FB1 10/16 12/40 21/56 0/ 8 1/1* 0/1 0/1 0/1 FB2 0/16 0/40 0/56 0/ 9 0/1 0/1 0/1 0/1 FB3 3/16 15/40 20/56 3/ 9 0/1 0/1 0/1 0/1 FB4 1/16 1/40 1/56 1/ 7 0/1 0/1 0/1 0/1 ----- ------- ------- ----- --- --- --- --- Total 14/64 28/160 42/224 4/33 1/4 0/4 0/4 0/4 CTC - Control Term Clock CTR - Control Term Reset CTS - Control Term Set CTE - Control Term Output Enable * - Resource is exhausted
** 4 Outputs ** Signal Total Total Bank Loc Pin Pin Pin I/O I/O Slew Reg Reg Init Name Pts Inps No. Type Use STD Style Rate Use State PWMN 14 14 2 FB3_1 29 I/O O LVTTL FAST PWMP 10 14 2 FB3_2 28 I/O O LVTTL FAST XTALOUT1 1 1 2 FB3_15 18 I/O O LVTTL FAST XTALOUT2 1 1 1 FB4_14 14 I/O O LVTTL FAST
** 7 Inputs ** Signal Bank Loc Pin Pin Pin I/O I/O Name No. Type Use STD Style D0 2 FB1_1 38 I/O I LVTTL KPR D1 2 FB1_2 37 I/O I LVTTL KPR D2 2 FB1_3 36 I/O I LVTTL KPR D3 2 FB1_9 34 GTS/I/O I LVTTL KPR D4 2 FB1_10 33 GTS/I/O I LVTTL KPR D5 2 FB1_11 32 GTS/I/O I LVTTL KPR XTALIN 1 FB4_11 12 I/O I LVTTL KPR
****************************** Device Pin Out ***************************** Device : XC2C64A-7-VQ44 -------------------------------- /44 43 42 41 40 39 38 37 36 35 34 \ | 1 33 | | 2 32 | | 3 31 | | 4 30 | | 5 XC2C64A-7-VQ44 29 | | 6 28 | | 7 27 | | 8 26 | | 9 25 | | 10 24 | | 11 23 | \ 12 13 14 15 16 17 18 19 20 21 22 / --------------------------------
Pin Signal Pin Signal No. Name No. Name 1 KPR 23 KPR 2 KPR 24 TDO 3 KPR 25 GND 4 GND 26 VCCIO-3.3 5 KPR 27 KPR 6 KPR 28 PWMP 7 VCCIO-3.3 29 PWMN 8 KPR 30 KPR 9 TDI 31 KPR 10 TMS 32 D5 11 TCK 33 D4 12 XTALIN 34 D3 13 KPR 35 VCCAUX 14 XTALOUT2 36 D2 15 VCC 37 D1 16 KPR 38 D0 17 GND 39 KPR 18 XTALOUT1 40 KPR 19 KPR 41 KPR 20 KPR 42 KPR 21 KPR 43 KPR 22 KPR 44 KPR
Legend : NC = Not Connected, unbonded pin PGND = Unused I/O configured as additional Ground pin KPR = Unused I/O with weak keeper (leave unconnected) WPU = Unused I/O with weak pull up (leave unconnected) TIE = Unused I/O floating -- must tie to VCC, GND or other signal VCC = Dedicated Power Pin VCCAUX = Power supply for JTAG pins VCCIO-3.3 = I/O supply voltage for LVTTL, LVCMOS33, SSTL3_I VCCIO-2.5 = I/O supply voltage for LVCMOS25, SSTL2_I VCCIO-1.8 = I/O supply voltage for LVCMOS18 VCCIO-1.5 = I/O supply voltage for LVCMOS15, HSTL_I VREF = Reference voltage for indicated input standard *VREF = Reference voltage pin selected by software GND = Dedicated Ground Pin TDI = Test Data In, JTAG pin TDO = Test Data Out, JTAG pin TCK = Test Clock, JTAG pin TMS = Test Mode Select, JTAG pin PROHIBITED = User reserved pin
**************************** Compiler Options **************************** Following is a list of all global compiler options used by the fitter run. Device(s) Specified : xc2c64a-7-VQ44 Optimization Method : DENSITY Multi-Level Logic Optimization : ON Ignore Timing Specifications : OFF Default Register Power Up Value : LOW Keep User Location Constraints : ON What-You-See-Is-What-You-Get : OFF Exhaustive Fitting : OFF Keep Unused Inputs : OFF Slew Rate : FAST Set Unused I/O Pin Termination : KEEPER Global Clock Optimization : ON Global Set/Reset Optimization : ON Global Ouput Enable Optimization : ON Enable Input Registers : ON Function Block Fan-in Limit : 38 Use DATA_GATE Attribute : ON Set Tristate Outputs to Termination Mode : KEEPER Default Voltage Standard for All Outputs : LVCMOS18 Input Limit : 32 Pterm Limit : 28

[Ссылки]

1. Как установить Xilinx ISE Design Tools.
2. Разработка цифровых устройств на основе ПЛИС Xilinx с применением языка VHDL. И. Е. Тарасов, 2-е издание, 2016 г.
3. 171111hello-world.zip - исходный код (проект ISE WebPack 14.1), документация.

 

Добавить комментарий


Защитный код
Обновить

Top of Page