Формирование описаний компонентов для внутрикристальной отладки цифровых устройств и встраиваемых микропроцессорных систем на основе параметризированных модулей Xilinx CORE Generator Tool. Часть II

№ 12’2008
PDF версия
В предыдущей публикации цикла, посвященного вопросам аппаратной внутрикристальной отладки цифровых устройств и встраиваемых микропроцессорных систем, проектируемых на базе ПЛИС фирмы Xilinx с архитектурой FPGA (Field Programmable Gate Array), были представлены функциональные возможности и структура комплекса программных средств ChipScope Pro, а также методы его применения. Продолжение обзора, начатого в №11-2008.

Все статьи цикла:

Для захвата и фиксации сигналов, состояние которых необходимо контролировать в процессе аппаратной отладки разрабатываемого устройства или встраиваемой микропроцессорной системы, следует включить в состав проекта описание одного или нескольких конфигурируемых логических анализаторов. Генерация указанного описания выполняется средствами CORE Generator[1] на основе параметризированного модуля Integrated Logic Analyzer (ILA). Последней версией ядра конфигурируемого логического анализатора является модификация Integrated Logic Analyzer (ILA) v1.02a. Данную версию рассматриваемого параметризированного модуля можно применять для подготовки описаний встроенных логических анализаторов, включаемых в состав цифровых устройств и микропроцессорных систем, выполняемых на базе ПЛИС следующих семейств: Spartan–II, Spartan–IIE, Spartan–3, Spartan–3 XA, Spartan–3E, Spartan–3E XA, Spartan–3A, Spartan–3AN, Spartan–3A DSP, Virtex, QPRO Virtex Rad–Hard, QPRO Virtex Hi–Rel, Virtex–E, QPRO Virtex–E Military, Virtex–II, QPRO Virtex–II Rad Tolerant, QPRO Virtex–II Military, Virtex–II Pro, Virtex–4 FX, Virtex–4 LX, Virtex–4 SX, QPRO Virtex–4 Rad Tolerant, QPRO Virtex–4 Hi–Rel, Virtex–5 LX, Virtex–5 LXT, Virtex–5 SXT, Virtex–5 FXT.

Ядро конфигурируемого логического анализатора Integrated Logic Analyzer (ILA) версии v1.02a обладает такими функциональными возможностями, как:

  • поддержка выбора количества портов, предназначенных для подключения сигналов, задаваемая комбинация состояний которых определяет условия запуска логического анализатора, в диапазоне от 1 до 16;
  • возможность индивидуального выбора разрядности для каждого порта сигналов, определяющих условия запуска логического анализатора, в диапазоне от 1 до 1024 бит при использовании ПЛИС семейств Virtex–5 LX, Virtex–5 LXT, Virtex–5 SXT, Virtex–5 FXT и от 1 до 256 бит в случае применения кристаллов других серий FPGA[2];
  • поддержка определения условий запуска логического анализатора в виде последовательности комбинаций состояний сигналов, количество которых задается разработчиком;
  • использование портов сигналов, определяющих условия запуска логического анализатора, в качестве входов регистрируемых данных, по выбору разработчика;
  • возможность выбора информационной емкости внутреннего запоминающего устройства, предназначенного для записи значений контролируемых сигналов, в диапазоне от 256 до 4096 слов при использовании ПЛИС семейств Spartan–II, Spartan–IIE, Virtex, QPRO Virtex Rad–Hard, QPRO Virtex Hi–Rel, Virtex–E, QPRO Virtex–E Military; от 1024 до 131 072 слов в случае применения кристаллов семейств Virtex–5 LX, Virtex–5 LXT, Virtex–5 SXT, Virtex–5 FXT и от 512 до 16 384 слов при реализации отлаживаемых устройств на базе ПЛИС других серий;
  • наличие опции разрешения или запрета использования признаков (квалификаторов), задаваемых разработчиком, для управления записью захватываемых данных во внутреннее запоминающее устройство;
  • возможность захвата и фиксации контролируемых сигналов по фронту или спаду тактового сигнала (по выбору разработчика);
  • поддержка использования формируемых логических анализаторов в процессе отладки встраиваемых микропроцессорных систем, разрабатываемых с помощью комплекса средств проектирования Xilinx Embedded Development Kit (EDK)[5, 6];
  • возможность применения макросов с относительным размещением Relationally Placed Macro (RPM), позволяющих повысить производительность формируемых логических анализаторов;
  • включение в состав интерфейса генерируемого логического анализатора (по выбору разработчика) выхода сигнала, предназначенного для управления дополнительным внешним тестовым оборудованием, используемым в процессе отладки разрабатываемого устройства или встраиваемой микропроцессорной системы.

Для быстрого определения значений параметров генерируемого логического анализатора целесообразно использовать соответствующий «мастер» настройки. Количество диалоговых панелей, входящих в состав «мастера» настройки параметров ядра Integrated Logic Analyzer (ILA) версии v1.02a, зависит от числа портов сигналов, используемых для выбора условий запуска логического анализатора. Значение этого параметра задается в стартовой диалоговой панели, вид которой изображен на рис. 6.

Рис. 6. Вид стартовой диалоговой панели 'мастера' настройки параметров
Рис. 6. Вид стартовой диалоговой панели
«мастера» настройки параметров

В данной диалоговой панели в первую очередь следует в поле редактирования Component Name скорректировать или ввести новое название создаваемого логического анализатора, придерживаясь тех же правил, которые были сформулированы при рассмотрении процесса формирования описания контроллера ICON (см. КиТ № 11, 2008 г.).

Затем нужно указать количество портов сигналов, комбинация состояний которых используется для определения условий запуска формируемого логического анализатора. Значение этого параметра задается с помощью поля выбора Number of Trigger Ports, которое представлено во встроенной панели Trigger Port Settings (рис. 6). Выпадающий список этого поля выбора содержит 16 возможных вариантов, которые позволяют генерировать описания конфигурируемых логических анализаторов, содержащих от 1 до 16 портов сигналов, определяющих условия запуска. Эти порты можно использовать независимо друг от друга. По умолчанию параметр Number of Trigger Ports принимает единичное значение.

Далее следует определить параметры структуры блока формирования условий запуска для создаваемого конфигурируемого логического анализатора. В общем случае структуру этого блока можно представить в виде конечного автомата, который может находиться в одном из нескольких последовательных состояний (уровней), количество которых задается пользователем. Последовательное переключение из одного состояния (уровня) в другое осуществляется при возникновении определенных комбинаций сигналов, определяющих условия запуска логического анализатора. На рис. 7 изображена структурная схема, которая в наглядной форме поясняет функционирование блока формирования условий запуска конфигурируемого логического анализатора, создаваемого на базе параметризированного модуля Integrated Logic Analyzer (ILA) версии v1.02a. Максимальное количество последовательных уровней в структуре блока формирования условий запуска задается с помощью поля выбора Max Sequence Levels, которое также расположено во встроенной панели Trigger Port Settings (рис. 7). В выпадающем списке этого поля выбора представлены числовые значения, находящиеся в диапазоне от 1 до 16. По умолчанию для параметра Max Sequence Levels предлагается единичное значение.

Рис. 7. Структурная схема, поясняющая функционирование блока формирования условий запуска
Рис. 7. Структурная схема, поясняющая функционирование
блока формирования условий запуска

Если формируемое ядро логического анализатора предназначено для отладки устройства, реализуемого на базе кристаллов семейств Spartan–3, Spartan–3 XA, Spartan–3E, Spartan–3E XA, Spartan–3A, Spartan–3AN, Spartan–3A DSP, Virtex–II, QPRO Virtex–II Rad Tolerant, QPRO Virtex–II Military, Virtex–II Pro, Virtex–4 FX, Virtex–4 LX, Virtex–4 SX, QPRO Virtex–4 Rad Tolerant, QPRO Virtex–4 Hi–Rel, Virtex–5 LX, Virtex–5 LXT, Virtex–5 SXT или Virtex–5 FXT, то у разработчика есть возможность использовать макросы с относительным размещением RPM. Для этой цели следует воспользоваться индикатором состояния Use RPMs, расположенным во встроенной панели Trigger Port Settings. По умолчанию для указанных семейств ПЛИС данный индикатор находится в состоянии «Включено», разрешающем применение макросов с относительным размещением. Для повышения производительности генерируемого ядра логического анализатора рекомендуется использовать значение параметра Use RPMs, предлагаемое по умолчанию.

Чтобы добавить в состав интерфейса создаваемого логического анализатора выход сигнала Trigger Output, переключаемого при выполнении заданных условий запуска, нужно установить в состояние «Включено» индикатор Enable Trigger Output Port. Сигнал, формируемый на этом выходе, можно использовать для управления внешними аппаратными средствами контроля и диагностики, применяемыми в процессе отладки разрабатываемого устройства или встраиваемой микропроцессорной системы. Кроме того, данный сигнал можно задействовать в качестве управляющего или сигнала прерывания в составе отлаживаемого устройства или системы. По умолчанию индикатор Enable Trigger Output Port находится в сброшенном состоянии, запрещающем включение выхода сигнала Trigger Output в состав интерфейса генерируемого конфигурируемого логического анализатора.

Следующим шагом в процессе определения параметров формируемого ядра логического анализатора является выбор перепада тактового сигнала, по которому должен осуществляться захват и фиксация значений контролируемых сигналов. Параметризированный модуль Integrated Logic Analyzer (ILA) версии v1.02a позволяет создавать описания логических анализаторов, выполняющих захват и фиксацию или по фронту, или по спаду сигнала синхронизации. Для определения активного перепада тактового сигнала в генерируемом элементе следует воспользоваться полем выбора Sample On, которое находится во встроенной панели Storage Settings (рис. 6). По умолчанию в этом поле выбора представлен вариант Rising, при использовании которого формируется ядро логического анализатора, выполняющего захват и фиксацию значений контролируемых сигналов по фронту тактового сигнала. Чтобы сгенерировать элемент, осуществляющий захват и регистрацию уровней по спаду сигнала синхронизации, необходимо выбрать в выпадающем списке возможных значений параметра Sample On вариант Falling.

Далее нужно указать максимальное количество значений сигналов, записываемых в буферную память, которое определяет информационную емкость внутреннего запоминающего устройства в формируемом ядре логического анализатора. Требуемое значение этого параметра задается с помощью поля выбора Sample Data Depth, расположенного во встроенной панели Storage Settings (рис. 6). Количество возможных вариантов, представленных в выпадающем списке этого поля выбора, зависит от семейства ПЛИС, выбранного для реализации отлаживаемого устройства. Информация о минимальном и максимальном значении параметра Sample Data Depth для различных семейств ПЛИС была приведена при описании функциональных возможностей параметризированного модуля Integrated Logic Analyzer (ILA) версии v1.02a. Значение, предлагаемое по умолчанию для данного параметра, также зависит от семейства ПЛИС, на базе которого реализуется отлаживаемое устройство или микропроцессорная система. Если генерируемое ядро логического анализатора предназначено для применения в кристаллах семейств Spartan–II, Spartan–IIE, Virtex, QPRO Virtex Rad–Hard, QPRO Virtex Hi–Rel, Virtex–E, QPRO Virtex–E Military, то емкость внутреннего запоминающего устройства по умолчанию составляет 256 слов. Для ПЛИС семейств Spartan–3, Spartan–3 XA, Spartan–3E, Spartan–3E XA, Spartan–3A, Spartan–3AN, Spartan–3A DSP, Virtex–II, QPRO Virtex–II Rad Tolerant, QPRO Virtex–II Military, Virtex–II Pro, Virtex–4 FX, Virtex–4 LX, Virtex–4 SX, QPRO Virtex–4 Rad Tolerant, QPRO Virtex–4 Hi–Rel это значение равно 512 словам. При использовании кристаллов семейств Virtex–5 LX, Virtex–5 LXT, Virtex–5 SXT или Virtex–5 FXT информационная емкость внутреннего буфера данных по умолчанию полагается равной 1024 словам.

Для минимизации необходимой емкости внутреннего запоминающего устройства в создаваемых логических анализаторах параметризированный модуль Integrated Logic Analyzer (ILA) версии v1.02a предоставляет возможность использования схемы формирования признаков (квалификаторов) записи значений контролируемых сигналов. Таким образом, во внутреннюю память будут загружаться только те значения сигналов, которые соответствуют признакам, определяемым разработчиком. Разрешение или запрет использования признаков (квалификаторов) записи значений контролируемых сигналов во внутреннее запоминающее устройство осуществляется с помощью индикатора состояния Enable Storage Qualification, который также представлен во встроенной панели Storage Settings (рис. 6). По умолчанию данный индикатор установлен в состояние «Включено», разрешающее использование схемы формирования признаков (квалификаторов) записи значений контролируемых сигналов во внутреннюю память генерируемого логического анализатора.

Завершает процесс установки общих параметров конфигурации ядра логического анализатора выбор способа организации портов, предназначенных для подключения регистрируемых данных, и определение их разрядности. Параметризированный модуль Integrated Logic Analyzer (ILA) версии v1.02a позволяет разработчикам выбрать один из двух вариантов организации входных портов регистрируемых данных. Первый вариант заключается в использовании портов сигналов, определяющих условия запуска логического анализатора, в качестве входов захватываемых и фиксируемых данных. Второй вариант предусматривает включение дополнительных входных портов, предназначенных для регистрации уровней контролируемых сигналов в процессе аппаратной отладки, в состав интерфейса генерируемого ядра логического анализатора. Выбор требуемого варианта осуществляется с помощью индикатора состояния Data Same as Trigger. По умолчанию этот индикатор находится в состоянии «Включено», при котором порты сигналов, определяющих условия запуска логического анализатора, выполняют также функцию входов контролируемых данных.

В случае выбора второго варианта организации входных портов регистрируемых данных необходимо указать разрядность соответствующей шины, включаемой в состав интерфейса формируемого ядра. Требуемое значение разрядности входного порта данных указывается с помощью клавиатуры в поле редактирования Data Port Width. Этот параметр может принимать значения в диапазоне от 1 до 256 разрядов при создании ядра логического анализатора, предназначенного для применения в кристаллах семейств Spartan–3, Spartan–3 XA, Spartan–3E, Spartan–3E XA, Spartan–3A, Spartan–3AN, Spartan–3A DSP, Virtex–II, QPRO Virtex–II Rad Tolerant, QPRO Virtex–II Military, Virtex–II Pro, Virtex–4 FX, Virtex–4 LX, Virtex–4 SX, QPRO Virtex–4 Rad Tolerant и QPRO Virtex–4 Hi–Rel. Если формируемый элемент используется для отладки устройств и встраиваемых микропроцессорных систем, реализуемых на базе ПЛИС семейств Virtex–5 LX, Virtex–5 LXT, Virtex–5 SXT или Virtex–5 FXT, то разрядность входной шины данных можно выбирать в диапазоне от 1 до 1024 бит. По умолчанию в поле редактирования предлагается значение, соответствующее 32–разрядной шине данных.

Следующие диалоговые панели «мастера» настройки ядра конфигурируемого логического анализатора Integrated Logic Analyzer (ILA) версии v1.02a предназначены для установки требуемых параметров каждого порта сигналов, совокупность значений которых определяет условия запуска. Количество этих панелей равно числу портов, указанному в поле выбора Number of Trigger Ports, которое расположено во встроенной панели Trigger Port Settings. Все диалоговые панели, используемые для конфигурирования входных портов сигналов, определяющих условия запуска, имеют сходную структуру. Типовой вид второй диалоговой панели «мастера» настройки параметризированного модуля Integrated Logic Analyzer (ILA) версии v1.02a приведен на рис. 8. Порядковый номер порта, предназначенного для подключения сигналов, комбинация значений которых определяет условия запуска логического анализатора, отображается в заголовке встроенной панели Trigger Port (рис. 8).

Рис. 8. Вид второй диалоговой панели 'мастера' настройки параметров
Рис. 8. Вид второй диалоговой панели
«мастера» настройки параметров

Открывая поочередно диалоговые панели, вид которых соответствует изображению, представленному на рис. 8, следует задать необходимые значения параметров для каждого входного порта. Вначале целесообразно определить с помощью клавиатуры в поле редактирования Trigger Port Width разрядность соответствующего порта. Значение этого параметра можно выбирать в диапазоне от 1 до 256 разрядов. По умолчанию для каждого порта сигналов, определяющих условия запуска логического анализатора, предлагается значение разрядности, равное 8 бит.

Далее нужно указать количество схем сравнения (компараторов), подключаемых к соответствующему порту, используя для этого поле выбора Match Units (рис. 8). С помощью компараторов отслеживаются события (комбинации уровней сигналов) в процессе аппаратной отладки проектируемого устройства или встраиваемой микропроцессорной системы, которые интересуют разработчика. Увеличение количества компараторов, подключаемых к каждому порту логического анализатора, повышает его гибкость, предоставляя больше возможностей для контроля всех необходимых комбинаций значений сигналов в процессе функционирования отлаживаемого устройства или микропроцессорной системы. Но при этом соответственно возрастает объем логических ресурсов кристалла, необходимых для реализации генерируемого ядра логического анализатора. Поэтому не следует без необходимости выбирать большое количество схем сравнения, сопряженных с каждым портом сигналов, определяющих условия запуска. Выпадающий список возможных значений параметра Match Units содержит 16 вариантов. По умолчанию к каждому порту генерируемого логического анализатора подключается один компаратор.

Параметризированный модуль Integrated Logic Analyzer (ILA) позволяет установить на выходе каждого компаратора конфигурируемый счетчик, разрядность которого определяет разработчик. Данный счетчик позволяет отслеживать указанное пользователем количество повторений соответствующего события в процессе работы отлаживаемого устройства. Контроль числа возникновения конкретного события используется, в частности, при отладке устройств и микропроцессорных систем, выполняющих циклические операции. Необходимость установки на выходах компараторов счетчиков, осуществляющих подсчет числа повторений событий, и их разрядность определяется с помощью поля выбора Counter Width (рис. 8). Выпадающий список этого поля выбора позволяет указать разрядность счетчика в диапазоне от 1 до 32 бит. По умолчанию для данного параметра предлагается вариант Disabled, запрещающий применение счетчиков повторений соответствующих событий на выходах компараторов.

Для обнаружения разнообразных событий в процессе аппаратной отладки разрабатываемых устройств и встраиваемых систем в составе ядра конфигурируемого логического анализатора можно применять компараторы (схемы сравнения) различного типа. Параметризированный модуль Integrated Logic Analyzer (ILA) версии v1.02a предоставляет возможность использования одного из шести типов компараторов. Каждый из этих вариантов позволяет отслеживать определенный класс событий в процессе функционирования отлаживаемого устройства или встраиваемой микропроцессорной системы. Требуемый тип компараторов, подключаемых к соответствующему входному порту формируемого логического анализатора, указывается в поле выбора Match Type (рис. 8). В выпадающем списке этого поля выбора представлены шесть вариантов: Basic, Basic w/edges, Extended, Extended w/edges, Range, Range w/edges.

Схемы сравнения, относящиеся к типу Basic, позволяют отслеживать совпадение (‘=’) или несовпадение (») уровней входных сигналов с задаваемыми контрольными значениями. При этом в условных выражениях в качестве контрольных значений сигналов могут задаваться символы «0» (состояние низкого логического уровня, логический ноль), «1» (состояние высокого логического уровня, логическая единица) и «X» — безразличное состояние. Компараторы вида Basic w/edges поддерживают те же функции сравнения данных, что и Basic, но при этом позволяют обнаруживать события, включающие в себя изменения уровней сигналов. В условных выражениях, определяющих выполняемую функцию сравнения, в качестве задаваемых контрольных значений сигналов могут указываться дополнительно символы «R» (переключение сигнала из состояния низкого логического уровня в состояние высокого логического уровня), «F» (переход сигнала из состояния логической единицы в состояние логического нуля) и «B» (любое изменение сигнала). Компараторы, относящиеся к классу Extended, поддерживают расширенный спектр операций сравнения уровней входных сигналов и контрольных значений, определяемых разработчиком: равенство (‘=’), неравенство (»), больше ( ‘>’), больше или равно (‘>=’), меньше (‘Basic. Схемы сравнения вида Extended w/edges выполняют те же функции, что и компараторы Extended, но позволяют при этом отслеживать события изменения уровней входных сигналов. В этом случае в качестве задаваемых контрольных значений сигналов можно использовать те же символы, что и в компараторах Basic w/edges. Компараторы типа Range кроме операций сравнения, поддерживаемых компараторами Extended, позволяют контролировать попадание значений входных сигналов в заданный диапазон (‘in range‘) и выход за пределы этого диапазона (‘not in range‘). Схемы сравнения, относящиеся к виду Range w/edges, отличаются от компараторов Range дополнительной возможностью по обнаружению событий изменения уровней входных сигналов.

По умолчанию в поле выбора Match Type предлагается наиболее простой вариант компаратора — Basic. При использовании более сложной схемы сравнения (с большим числом поддерживаемых операций) следует принимать во внимание увеличение объема логических ресурсов кристалла, необходимых для ее реализации. После выбора требуемого варианта компаратора в строке Bit Values отображается информация о допустимых символах задаваемых значений сигналов, а в строке Function — сведения о поддерживаемых операциях сравнения.

Если в качестве входов регистрируемых данных были выбраны порты сигналов, задаваемая комбинация значений которых определяет условия запуска логического анализатора, то с помощью параметра Exclude Trigger Port from Data Storage можно разрешить исключение неиспользуемых портов. Для этого следует перевести индикатор Exclude Trigger Port from Data Storage в состояние «Включено». По умолчанию данный индикатор находится в сброшенном состоянии, запрещающем удаление портов сигналов, определяющих условия запуска, из общего списка входов фиксируемых данных.

В процессе определения параметров формируемого ядра логического анализатора можно получить предварительную оценку необходимого количества модулей блочной памяти ПЛИС, используемых в его составе. Для этого нужно в заключительной диалоговой панели «мастера» настройки параметров ядра конфигурируемого логического анализатора Integrated Logic Analyzer (ILA) версии v1.02a открыть вкладку с названием Core Details, как показано на рис. 9. На этой же вкладке отображается информация о количестве компараторов, включаемых в состав ядра.

Рис. 9. Вид заключительной диалоговой панели 'мастера' настройки параметров, содержащей сведения о количестве используемых модулей блочной памяти ПЛИС
Рис. 9. Вид заключительной диалоговой панели «мастера» настройки параметров,
содержащей сведения о количестве используемых модулей блочной памяти ПЛИС

Указав все необходимые значения параметров конфигурации логического анализатора, следует активизировать процесс автоматической генерации описания нажатием клавиши Готово (Finish), которая расположена в нижней части заключительной диалоговой панели «мастера» настройки ядра Integrated Logic Analyzer (ILA) версии v1.02a. После успешного завершения этого процесса нужно, используя САПР серии Xilinx ISE[3, 4], включить в состав описания проектируемого устройства один или несколько экземпляров этого ядра. Далее необходимо подключить соответствующие входы и выходы каждого экземпляра логического анализатора к контроллеру ICON и требуемым цепям отлаживаемого устройства в соответствии со схемой, приведенной на рис. 10.

Рис. 10. Схема сопряжения ядра конфигурируемого логического анализатора с контроллером ICON и цепями отлаживаемого устройства
Рис. 10. Схема сопряжения ядра
конфигурируемого логического анализатора с контроллером ICON
и цепями отлаживаемого устройства

В конфигурируемых логических анализаторах, генерируемых на основе параметризированного модуля Integrated Logic Analyzer (ILA) версии v1.02a, применяются следующие условные обозначения входных и выходных портов:

  • CLK — вход сигнала синхронизации;
  • DATA[M:0] — входная шина данных с разрядностью M+1, предназначенная для подключения регистрируемых сигналов отлаживаемого устройства или встраиваемой микропроцессорной системы;
  •  
  • TRIG_OUT — выход сигнала, используемого для генерации прерываний и для управления внешними аппаратными средствами контроля и диагностики, применяемыми в процессе отладки разрабатываемого устройства или микропроцессорной системы;
  • CONTROL[35:0] — двунаправленная шина, предназначенная для сопряжения ядра логического анализатора с контроллером Integrated Controller (ICON);
  • TRIG0 [N:0] — входная шина с разрядностью N+1, соответствующая первому (или единственному) порту сигналов, совокупность значений которого определяет условия запуска логического анализатора;
  • TRIG1 [K:0]–TRIG15 [L:0] — входные шины с разрядностью K+1, …, L+1, соответствующие дополнительным портам сигналов, определяющих условия запуска логического анализатора.

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

Ядра логических анализаторов, формируемых на основе параметризированного модуля Integrated Logic Analyzer (ILA) версии v1.02a, можно также применять в процессе аппаратной отладки встраиваемых систем, проектируемых на основе 32–разрядных микропроцессорных ядер семейств PowerPC и MicroBlaze [6–15]. Для этого следует, используя комплекс средств проектирования Xilinx EDK, включить сгенерированное ядро логического анализатора в состав разрабатываемой системы в соответствии со схемой, изображенной на рис. 11.

Рис. 11. Схема включения ядра конфигурируемого логического анализатора в состав отлаживаемых встраиваемых микропроцессорных систем на базе 32 разрядных ядер семейств PowerPC и MicroBlaze
Рис. 11. Схема включения ядра конфигурируемого логического анализатора
в состав отлаживаемых встраиваемых микропроцессорных систем
на базе 32 разрядных ядер семейств PowerPC и MicroBlaze

Пример описания ядра конфигурируемого логического анализатора, сформированного на основе параметризированного модуля Integrated Logic Analyzer (ILA) версии v1.02a с помощью средств CORE Generator

Примером описания такого конфигурируемого логического анализатора является ядро chipscope_ila_v1_02_a. Сгенерированный логический анализатор предназначен для контроля и регистрации состояния четырех сигналов. В составе ядра chipscope_ila_v1_02_a используется одноуровневая схема формирования условий запуска логического анализатора, которая содержит один компаратор, относящийся к классу Basic. Захват и фиксация значений контролируемых сигналов в этом логическом анализаторе осуществляется по фронту тактового сигнала. В состав интерфейса ядра chipscope_ila_v1_02_a включен выход сигнала, состояние которого переключается при выполнении заданных условий. Сформированный текст описания логического анализатора содержит стандартные разделы исходного модуля проекта на языке VHDL. Его объем значительно превосходит размеры журнальной публикации, поэтому далее основные разделы этого описания приводятся в сокращенном виде, что позволит получить информацию о внутренней структуре логического анализатора, создаваемого на основе параметризированного модуля Integrated Logic Analyzer (ILA) версии v1.02a.

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

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
use UNISIM.VPKG.ALL;
--
entity chipscope_ila_v1_02_a is 
	port ( 
		CLK : in STD_LOGIC := 'X';
		TRIG_OUT : out STD_LOGIC;
		CONTROL : inout STD_LOGIC_VECTOR ( 35 downto 0 );
		TRIG0 : in STD_LOGIC_VECTOR ( 1 downto 0 );
		DATA : in STD_LOGIC_VECTOR ( 3 downto 0 ); 
	)
end chipscope_ila_v1_02_a;

В следующем разделе представлено определение архитектуры конфигурируемого логического анализатора chipscope_ila_v1_02_a, выполненное на структурном уровне. В начале этого раздела приведены выражения декларации внутренних сигналов:

architecture STRUCTURE of chipscope_ila_v1_02_a is
	signal N0 : STD_LOGIC;
	signal NlwRenamedSig_OI_TRIG_OUT : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_CMP_RESET : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_I_SRLT_NE_1_U_CDONE_iCFG_DIN : 
STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_I_SRLT_NE_1_U_WLCMPCE_iCFG_DIN : 
STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_SCNT_CE : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_U_SCNT_CMP_I_SRL16_U_
GAND_SRL16_sel_0_Q : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_RST_HALT : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_RST_U_HALT_XFER_iDOUT_dly_2_Q : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_STAT_ACTRESET_pulse : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_TRIG_U_TC_I_TSEQ_NEQ2_U_TC_EQUATION_I_SRLT_NE_1_
I_NMU_1_TO_4_U_TCL_I_NMU_E Q1_U_iDOUT_iCFG_DIN : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_TRIG_U_TC_I_TSEQ_NEQ2_U_TC_EQUATION_iTRIGGER : 
STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_TRIG_U_TM_G_NMU_0_U_M_U_MU_DOUT_tmp : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_TRIG_U_TM_G_NMU_0_U_M_U_MU_I_MUT_GAND_U_match_I_
SRL16_U_GAND_SRL16_tmpCfgD ata : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_U_TRIG_U_TM_G_NMU_0_U_M_dout_tmp : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_iARM : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_iCAP_DONE : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_iDATA_DOUT : STD_LOGIC;
…
	signal NLW_U0_I_YES_D_U_ILA_U_TRIG_U_TC_I_TSEQ_NEQ2_U_TC_EQUATION_I_SRLT_
NE_1_I_NMU_1_TO_4_U_TCL_I_NM U_EQ1_U_iDOUT_I_NOLUT6_I_SRL_T2_U_SRLC16E_Q15_
UNCONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_STAT_U_DSR_O_UNCONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_U_WCNT_LCMP_I_
SRL16_U_GAND_SRL16_I_TWM OD8_NE0_I_NO_RPM_I_SRLT_EQ_2_U_SRLH_Q_UNCONNECTED : 
STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_I_SRLT_NE_1_U_WHCMPCE_I_NOLUT6_
I_SRL_T2_U_SRLC16E_Q15_UN CONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_G_BRAM_0_
U_BRAM_ram_rt1_s1_s32_if_ram_rt1_s1_s32_i_ADDRB_0_UNCONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_G_BRAM_0_
U_BRAM_ram_rt1_s1_s32_if_ram_rt1_s1_s32_i_DIA_31_UNCONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_G_BRAM_0_
U_BRAM_ram_rt1_s1_s32_if_ram_rt1_s1_s32_i_DIPA_0_UNCONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_G_BRAM_0_
U_BRAM_ram_rt1_s1_s32_if_ram_rt1_s1_s32_i_DOA_31_UNCONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_G_BRAM_0_
U_BRAM_ram_rt1_s1_s32_if_ram_rt1_s1_s32_i_DOB_0_UNCONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_G_BRAM_0_
U_BRAM_ram_rt1_s1_s32_if_ram_rt1_s1_s32_i_DOPA_0_UNCONNECTED : STD_LOGIC;
	signal NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_G_BRAM_0_
U_BRAM_ram_rt1_s1_s32_if_ram_rt1_s1_s32_i_DOPB_0_UNCONNECTED : STD_LOGIC;
	signal U0_I_YES_D_U_ILA_I_DQ_U_DQQ_temp : STD_LOGIC_VECTOR ( 3 downto 0 );
	signal U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_I_RDADDR_U_HC_CI : 
STD_LOGIC_VECTOR ( 13 downto 1 );
	signal U0_I_YES_D_U_ILA_U_CAPSTOR_RD_ADDR : STD_LOGIC_VECTOR 
( 13 downto 0 );
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_I_SRLT_NE_1_U_CDONE_iCFG_DATA :
STD_LOGIC_VECTOR ( 1 downto 1 );
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_I_SRLT_NE_1_U_SCRST_iO : 
STD_LOGIC_VECTOR ( 1 downto 0 );
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_CAP_ADDR_next : 
STD_LOGIC_VECTOR ( 8 downto 0 );
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_U_SCNT_CMP_I_SRL16_U_
GAND_SRL16_cfg_data : STD_LOGIC_VECTOR ( 1 downto 1 );
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_cfg_data : STD_LOGIC_
VECTOR ( 4 downto 0 );
	signal U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_cfg_data : STD_LOGIC_VECTOR 
( 9 downto 0 );
	signal U0_I_YES_D_U_ILA_U_RST_U_ARM_XFER_iDIN : STD_LOGIC_VECTOR 
( 1 downto 0 );
	signal U0_I_YES_D_U_ILA_U_RST_iRESET : STD_LOGIC_VECTOR ( 0 downto 0 );
	signal U0_I_YES_D_U_ILA_U_STAT_NS_dstat : STD_LOGIC_VECTOR ( 8 downto 0 );
	signal U0_I_YES_D_U_ILA_U_STAT_U_DMUX5_T2 : STD_LOGIC_VECTOR ( 1 downto 0 );
	signal U0_I_YES_D_U_ILA_U_STAT_U_DSL1_iDIN : STD_LOGIC_VECTOR ( 1 downto 0 );
ignal U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T5 : STD_LOGIC_VECTOR ( 1 downto 0 );
	signal U0_I_YES_D_U_ILA_U_STAT_iSTAT : STD_LOGIC_VECTOR ( 11 downto 0 );
	signal U0_I_YES_D_U_ILA_U_STAT_iSTAT_11_wg_cy : STD_LOGIC_VECTOR 
( 7 downto 0 );
	signal U0_I_YES_D_U_ILA_U_STAT_iSTAT_CNT : STD_LOGIC_VECTOR ( 9 downto 0 );
	signal U0_I_YES_D_U_ILA_U_TRIG_U_TM_G_NMU_0_U_M_U_MU_I_MUT_GAND_U_match_
I_SRL16_U_GAND_SRL16_sel : STD_LOGIC_VECTOR ( 2 downto 1 );
	signal U0_I_YES_D_U_ILA_iCAP_NUM_SAMPLES : STD_LOGIC_VECTOR ( 8 downto 0 );
	signal U0_I_YES_D_U_ILA_iCAP_STATE : STD_LOGIC_VECTOR ( 1 downto 0 );
	signal U0_I_YES_D_U_ILA_iCAP_WR_ADDR : STD_LOGIC_VECTOR ( 8 downto 0 );
	signal U0_I_YES_D_U_ILA_iDATA : STD_LOGIC_VECTOR ( 3 downto 0 );
	signal U0_I_YES_D_U_ILA_iRESET : STD_LOGIC_VECTOR ( 7 downto 0 );
	signal U0_iDATA : STD_LOGIC_VECTOR ( 3 downto 0 );
	signal U0_iTRIG_IN : STD_LOGIC_VECTOR ( 1 downto 0 );

Завершает этот раздел структурное описание рассматриваемого логического анализатора, основными компонентами которого являются триггеры, мультиплексоры, таблицы преобразования LUT (Look–Up Table) и модули блочной памяти ПЛИС Block RAM:

begin 
	TRIG_OUT  N0 ); 
	XST_VCC : VCC 
		port map ( P => N1); 
	U0_I_YES_D_U_ILA_U_TRIG_OUT_U_TRIGOUT_FDR : FDR 
		generic map( INIT => '0' ) 
		port map ( C => CLK, D => U0_I_YES_D_U_ILA_iTRIG_OUT, 
			R => U0_I_YES_D_U_ILA_iRESET(7), 
			Q => NlwRenamedSig_OI_TRIG_OUT ); 
	U0_I_YES_D_U_ILA_U_TRIG_OUT_U_TRIGOUT_FDRE : FDPE 
		generic map( INIT => '1' ) 
		port map ( C => CLK, 
			CE => U0_I_YES_D_U_ILA_iRESET(7), D => N0, 
			PRE => U0_I_YES_D_U_ILA_iCAP_EXT_TRIGOUT, 
			Q => U0_I_YES_D_U_ILA_iTRIG_OUT_SET );

	U0_I_YES_D_U_ILA_I_DQ_U_DQQ_DLY_9_DLY_9_GEN_3_I_SRL T_NE_0_FF : FD 
		generic map( INIT => '0' ) 
		port map ( C => CLK, D => U0_I_YES_D_U_ILA_I_DQ_U_DQQ_temp(3), 
			Q => U0_I_YES_D_U_ILA_iDATA(3) );
	U0_I_YES_D_U_ILA_U_RST_U_ARM_XFER_U_TFDRE : FDCE 
		generic map( INIT => '0' ) 
		port map ( C => CONTROL(0), CE => CONTROL(12), 
			CLR => U0_I_YES_D_U_ILA_U_RST_U_ARM_XFER_iCLR, D => CONTROL(12), 
			Q => U0_I_YES_D_U_ILA_U_RST_U_ARM_XFER_din_latched );
	U0_I_YES_D_U_ILA_U_RST_U_ARM_XFER_U_GEN_DELAY_1_U_FD : FDE 
		generic map( INIT => '0' ) 
		port map ( C => CLK, CE => N1, 
			D => U0_I_YES_D_U_ILA_U_RST_U_ARM_XFER_iDOUT_dly_0_Q, 
			Q => U0_I_YES_D_U_ILA_U_RST_U_ARM_XFER_iDOUT_dly_1_Q );
	U0_I_YES_D_U_ILA_U_RST_U_POR : FDP 
		generic map( INIT => '1' ) 
		port map ( C => CLK, D => N0, PRE => N0, 
			Q => U0_I_YES_D_U_ILA_U_RST_POR );
	U0_I_YES_D_U_ILA_U_TRIG_U_TM_G_NMU_0_U_M_U_MU_I_OREG_I_YES_OREG_U_OREG : FDPE 
		generic map( INIT => '1' ) 
		port map ( C => CLK, CE => N1, 
			D => U0_I_YES_D_U_ILA_U_TRIG_U_TM_G_NMU_0_U_M_U_MU_DOUT_tmp, 
			PRE => U0_I_YES_D_U_ILA_iRESET(1), 
			Q => U0_I_YES_D_U_ILA_U_TRIG_U_TM_G_NMU_0_U_M_dout_tmp );
…
	U0_I_YES_D_U_ILA_U_DOUT : LUT3 
		generic map( INIT => X«CA») 
		port map ( I0 => U0_I_YES_D_U_ILA_iSTAT_DOUT, 
			I1 => U0_I_YES_D_U_ILA_iDATA_DOUT, I2 => CONTROL(6), O => CONTROL(3) );
	U0_I_YES_D_U_ILA_I_DQ_U_DQQ_DLY_9_DLY_9_GEN_3_I_SRL T_NE_0_DLY9 : SRL16 
		generic map( INIT => X«0000») 
		port map ( A0 => N1, A1 => N1, A2 => N1, A3 => N0, CLK => CLK, 
			D => U0_iDATA(3), Q => U0_I_YES_D_U_ILA_I_DQ_U_DQQ_temp(3) );
…
	U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_I_R DADDR_U_HC_G_0_U_FDRE : FDRE 
		generic map( INIT => '0' ) 
		port map ( C => CONTROL(0), CE => CONTROL(6), 
			D => U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_I_RDADDR_U_HC_D(0), 
			R => CONTROL(14), Q => U0_I_YES_D_U_ILA_U_CAPSTOR_RD_ADDR(0) );
	U0_I_YES_D_U_ILA_U_STAT_U_SMUX_NO_LUT6_I6_FJ_0_U_LU T3 : LUT3 
		generic map( INIT => X«CA») 
		port map ( I0 => U0_I_YES_D_U_ILA_U_STAT_iSTAT(0), 
			I1 => U0_I_YES_D_U_ILA_U_STAT_iSTAT(11), 
			I2 => U0_I_YES_D_U_ILA_U_STAT_iSTAT_CNT(9), 
			O => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T1(0) );
…
	U0_I_YES_D_U_ILA_U_STAT_U_SMUX_NO_LUT6_I6_FK_0_U_M UXF5 : MUXF5 
		port map ( I0 => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T1(0), 
			I1 => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T1(16), 
			S => U0_I_YES_D_U_ILA_U_STAT_iSTAT_CNT(8), 
			O => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T2(0) );
	U0_I_YES_D_U_ILA_U_STAT_U_SMUX_NO_LUT6_I6_FL_0_U_M UXF6 : MUXF6 
		port map ( I0 => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T2(0), 
			I1 => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T2(8), 
			S => U0_I_YES_D_U_ILA_U_STAT_iSTAT_CNT(7), 
			O => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T3(0) );
	U0_I_YES_D_U_ILA_U_STAT_U_SMUX_NO_LUT6_I6_FM_0_I_PT 1_U_MUXF7 : MUXF7 
		port map ( I0 => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T3(0), 
			I1 => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T3(4), 
			S => U0_I_YES_D_U_ILA_U_STAT_iSTAT_CNT(6), 
			O => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T4(0) );
	U0_I_YES_D_U_ILA_U_STAT_U_SMUX_NO_LUT6_I6_FN_0_I_PT 1_U_MUXF8 : MUXF8 
		port map ( I0 => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T4(0), 
			I1 => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T4(2), 
			S => U0_I_YES_D_U_ILA_U_STAT_iSTAT_CNT(5), 
			O => U0_I_YES_D_U_ILA_U_STAT_U_SMUX_T5(0) );
	U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_G_9_U_XORCY : XORCY 
		port map (CI => U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_CI(9), 
			LI => U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_S(9), 
			O => U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_D(9));
	U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_G_8_U_LUT : LUT1 
		generic map( INIT => X«2») 
		port map ( I0 => U0_I_YES_D_U_ILA_U_STAT_iSTAT_CNT(8), 
			O => U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_S(8));
	U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_G_8_GnH_U_MUXCY : MUXCY_L 
		port map ( CI => U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_CI(8), DI => N0, 
			S => U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_S(8), 
			LO => U0_I_YES_D_U_ILA_U_STAT_U_STAT_CNT_CI(9) );
…
	U0_I_YES_D_U_ILA_U_STAT_U_STATCMD_n : INV 
		port map ( I => U0_I_YES_D_U_ILA_U_STAT_iSTATCMD_CE, 
			O => U0_I_YES_D_U_ILA_U_STAT_iSTATCMD_CE_n );
	U0_I_YES_D_U_ILA_U_STAT_U_STATCMD : LUT2 
		generic map( INIT => X«E») 
		port map (I0 => CONTROL(4), I1 => CONTROL(5), 
			O => U0_I_YES_D_U_ILA_U_STAT_iSTATCMD_CE);
…
	U0_I_YES_D_U_ILA_U_STAT_U_DIRTY : FDCP 
		generic map(INIT => '0' ) 
		port map ( C => CONTROL(0), CLR => U0_I_YES_D_U_ILA_iARM, 
			D => U0_I_YES_D_U_ILA_U_STAT_DIRTY_dstat, PRE => CONTROL(13), 
			Q => U0_I_YES_D_U_ILA_U_STAT_DIRTY_dstat );
	U0_I_YES_D_U_ILA_U_STAT_U_ECE : FDRS 
		generic map( INIT => '0') 
		port map ( C => CLK, D => U0_I_YES_D_U_ILA_U_STAT_EXTCAP_ENABLE_dstat, 
			R => U0_I_YES_D_U_ILA_iARM, S => N0, 
			Q => U0_I_YES_D_U_ILA_U_STAT_EXTCAP_ENABLE_dstat );
	U0_I_YES_D_U_ILA_U_STAT_U_STATE0 : FDRE 
		generic map( INIT => '0' ) 
		port map ( C => CLK, CE => U0_I_YES_D_U_ILA_U_STAT_DSTAT_load, 
			D => U0_I_YES_D_U_ILA_iCAP_STATE(0), R => U0_I_YES_D_U_ILA_iARM, 
			Q => U0_I_YES_D_U_ILA_U_STAT_STATE_dstat(0));
…
	U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_I_0_TO_64K_I_SRL_U_SELX : SRL16E 
		generic map( INIT => X«0000») 
		port map ( A0 => N1, A1 => N1, A2 => N1, A3 => N1, CE => CONTROL(9), 
			CLK => CONTROL(0), 
			D => U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_cfg_data_vec(16), 
			Q => U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_cfg_data(0) );
…
	U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_U_WCNT_LCMP_
I_SRL16_U_GAND_SRL16_I_TW_GTE8_F_TW_0_I_NO_RPM_I_SRLT_EQ_2_U_SRLH : SRLC16E 
		generic map( INIT => X«0000») 
		port map ( A0 => U0_I_YES_D_U_ILA_iCAP_NUM_SAMPLES(4), 
			A1 => U0_I_YES_D_U_ILA_iCAP_NUM_SAMPLES(5), 
			A2 => U0_I_YES_D_U_ILA_iCAP_NUM_SAMPLES(6), 
			A3 => U0_I_YES_D_U_ILA_iCAP_NUM_SAMPLES(7), 
			CE => CONTROL(9), CLK => CONTROL(0), 
			D => U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_U_WCNT_LCMP_I_
SRL16_U_GAND_SRL16_cfg_data(1), 
			Q => U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_U_WCNT_LCMP_I_
SRL16_U_GAND_SRL16_sel_1_Q, 
			Q15 => U0_I_YES_D_U_ILA_U_G2_U_CAPCTRL_U_CAP_ADDRGEN_U_WCNT_LCMP_I_
SRL16_U_GAND_SRL16_tm pCfgData );
…
	U0_I_YES_D_U_ILA_U_STAT_iSTAT_11_wg_cy_0_Q : MUXCY 
		port map ( CI => N0, DI => N1, 
			S => U0_I_YES_D_U_ILA_U_STAT_iSTAT_11_wg_lut(0), 
			O => U0_I_YES_D_U_ILA_U_STAT_iSTAT_11_wg_cy(0) );
	U0_I_YES_D_U_ILA_U_STAT_iSTAT_11_wg_lut_1_Q : LUT4 
		generic map( INIT => X«8000») 
		port map (I0 => CONTROL(11), I1 => CONTROL(13), I2 => CONTROL(8), 
			I3 => CONTROL(14), O => U0_I_YES_D_U_ILA_U_STAT_iSTAT_11_wg_lut(1) );
…
	U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_G_BRAM_0_U_BRAM_ram_
rt1_s1_s32_if_ram_rt1_s1_s32_i : RAMB16BWE 
		generic map( INIT_A => X«000000000», 
			INIT_B => X«000000000», 
			INITP_00 => X«0000000000000000000000000000000
000000000000000000000000000000000», 
…
			DATA_WIDTH_B => 36, SRVAL_A => X»000000000», 
			INIT_00 => X«0000000000000000000000000000000
000000000000000000000000000000000», 
…
			SIM_COLLISION_CHECK => «ALL», 
			INITP_06 => X«0000000000000000000000000000000
000000000000000000000000000000000», 
			INITP_07 => X«0000000000000000000000000000000
000000000000000000000000000000000», 
			WRITE_MODE_A => «WRITE_FIRST», 
			WRITE_MODE_B => «WRITE_FIRST», 
			DATA_WIDTH_A => 1, SRVAL_B => X»000000000»
		) 
		port map ( CLKA => CONTROL(0), CLKB => CLK, ENA => CONTROL(6), ENB => N1, 
			SSRA => N0, SSRB => N0, 
			ADDRA(13) => U0_I_YES_D_U_ILA_U_CAPSTOR_RD_ADDR(13), 
…
			ADDRA(0) => U0_I_YES_D_U_ILA_U_CAPSTOR_RD_ADDR(0), 
			ADDRB(13) => U0_I_YES_D_U_ILA_iCAP_WR_ADDR(8), 
…
			ADDRB(0) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_
RAM_G_BRAM_0_U_BRAM_ram_rt1_s1_s32_if_ram_rt1_s1_s32_i_ADDRB_0_UNCONNECTED, 
			DIA(31) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_
RAM_G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DIA_31_UNCONNECTED, 
…
			DIA(0) => N0, DIB(31) => N0, 
…
			DIB(0) => U0_I_YES_D_U_ILA_iCAP_TRIGGER_OUT, 
			DIPA(3) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DIPA_3_UNCONNECTED, 
…
			DIPA(0) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DIPA_0_UNCONNECTED, 
			DIPB(3) => N0, 
…
			DIPB(0) => N0, 
			WEA(3) => N0,
…
			WEB(3) => U0_I_YES_D_U_ILA_iCAP_WR_EN, 
…
			WEB(0) => U0_I_YES_D_U_ILA_iCAP_WR_EN, 
			DOA(31) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DOA_31_UNCONNECTED, 
…
			DOA(0) => U0_I_YES_D_U_ILA_iDATA_DOUT, 
			DOB(31) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DOB_31_UNCONNECTED, 
…
			DOB(0) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DOB_0_UNCONNECTED, 
			DOPA(3) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DOPA_3_UNCONNECTED, 
…
			DOPA(0) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DOPA_0_UNCONNECTED, 
			DOPB(3) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DOPB_3_UNCONNECTED, 
…
			DOPB(0) => NLW_U0_I_YES_D_U_ILA_U_CAPSTOR_I_CASE1_I_NO_TB_I_RT1_U_RAM_
G_BRAM_0_U_BRAM_ram_rt 1_s1_s32_if_ram_rt1_s1_s32_i_DOPB_0_UNCONNECTED );
end STRUCTURE;

Для декларации сформированного ядра конфигурируемого логического анализатора chipscope_ila_v1_02_a в составе VHDL–описания разрабатываемого устройства необходимо включить в соответствующий раздел следующие выражения:

component chipscope_ila_v1_02_a 
	PORT ( 
		CONTROL : INOUTSTD_LOGIC_VECTOR(35 DOWNTO 0);
		CLK : IN STD_LOGIC;
		DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
		TRIG0 : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
		TRIG_OUT : OUT STD_LOGIC 
	);
end component;

Создание экземпляров сгенерированного логического анализатора в составе описания отлаживаемого устройства осуществляется с помощью следующего оператора:

:
 chipscope_ila_v1_02_a 
	port map (
		CONTROL => CONTROL,
		CLK => CLK,
		DATA => DATA,
		TRIG0 => TRIG0,
		TRIG_OUT => TRIG_OUT 
	);

Детализированные сведения о количестве триггеров (Flip Flop), таблиц преобразования (LUT), секций (Slices) и модулей блочной памяти ПЛИС Block RAM, используемых при автономной реализации ядра конфигурируемого логического анализатора chipscope_ila_v1_02_a, отображаются в информационной панели, вид которой приведен на рис. 12.

Рис. 12. Вид информационной панели, содержащей сведения об объеме различных ресурсов кристалла, используемых для автономной реализации ядра конфигурируемого логического анализатора chipscope_ila_v1_02_a
Рис. 12. Вид информационной панели,
содержащей сведения об объеме различных ресурсов кристалла,
используемых для автономной реализации ядра
конфигурируемого логического анализатора chipscope_ila_v1_02_a

Литература

  1. Зотов В. Средства внутрикристальной отладки цифровых устройств и встраиваемых микропроцессорных систем, разрабатываемых на базе ПЛИС с архитектурой FPGA фирмы Xilinx — ChipScope Pro // Компоненты и технологии. 2008. № 10.
  2. Кузелин М. О., Кнышев Д. А., Зотов В. Ю. Современные семейства ПЛИС фирмы Xilinx / Справочное пособие. М.: Горячая линия — Телеком, 2004.
  3. Зотов В. Проектирование цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с использованием средств CORE Generator // Компоненты и технологии. 2006. № 12. 2007. № 1.
  4. Зотов В. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия — Телеком, 2003.
  5. Зотов В. Embedded Development Kit — система проектирования встраиваемых микропроцессорных систем на основе ПЛИС серий FPGA фирмы Xilinx // Компоненты и технологии. 2004. № 4.
  6. Зотов В. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx. М.: Горячая линия — Телеком, 2006.
  7. Зотов В. MicroBlaze — семейство 32–разрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 2003. № 9.
  8. Зотов В. Система команд микропроцессорного ядра MicroBlaze // Компоненты и технологии. 2004. № 1–3.
  9. Зотов В. Организация памяти микропроцессорного ядра MicroBlaze // Компоненты и технологии. 2004. № 5.
  10. Зотов В. Создание проекта микропроцессорной системы на основе ядра MicroBlaze, реализуемой в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2004. № 6.
  11. Зотов В. Формирование спецификации аппаратной платформы микропроцессорной системы на основе ядра MicroBlaze, реализуемой в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2004. № 7–8.
  12. Зотов В. Реализация аппаратной платформы микропроцессорной системы, проектируемой на основе ядра MicroBlaze, в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2004. № 9.
  13. Зотов В. Разработка спецификации программных средств микропроцессорной системы на основе ядра MicroBlaze, реализуемой в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 1.
  14. Зотов В. Разработка программного обеспечения микропроцессорной системы на основе ядра MicroBlaze, реализуемой в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 2.
  15. Зотов В. Разработка встраиваемых микропроцессорных систем на основе ядра MicroBlaze, реализуемых в ПЛИС семейств FPGA фирмы Xilinx, с помощью «мастера» Base System Builder Wizard // Компоненты и технологии. 2005. № 3–4.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *