Проектирование встраиваемых микропроцессорных систем на базе расширяемых процессорных платформ семейства Zynq 7000 AP SoC в САПР Xilinx ISE Design Suite. Часть 2
В этой части статьи рассмотрены следующие этапы проектирования ВМПС:
- Включение IP-компонентов периферийных устройств, конфигурируемых на базе ресурсов программируемой логики PL, в спецификацию аппаратной платформы MHS
- Настройка параметров конфигурирования периферийного ядра AXI General Purpose IO
- Проверка и редактирование шинных соединений экземпляров IP-ядер в формируемой спецификации аппаратной платформы разрабатываемой микропроцессорной системы
- Определение диапазонов адресного пространства, выделяемых для компонентов спецификации MHS
- Подготовка описания подключения внешних портов разрабатываемой микропроцессорной системы и компонентов, входящих в ее состав
- Проверка сформированной спецификации аппаратной платформы проектируемой системы
Включение IP-компонентов периферийных устройств, конфигурируемых на базе ресурсов программируемой логики PL, в спецификацию аппаратной платформы MHS
В дальнейшем весь ход процесса формирования спецификации аппаратной платформы MHS поясняется на примере проекта простейшей системы сбора и обработки данных. Разрабатываемая система предназначена для приема данных, поступающих на входы параллельных портов ввода/вывода общего назначения, их обработки и дальнейшей передачи полученных результатов через последовательный интерфейс RS‑232 в центральный компьютер. В рассматриваемом варианте этой системы используется один канал входных данных, представленных в виде параллельного 8‑разрядного двоичного кода, но предлагаемая архитектура поддерживает возможность ее масштабирования до требуемого количества каналов приема и обработки данных с различной разрядностью. При этом следует учитывать, что максимальное количество каналов и разрядность входных данных ограничивается, в первую очередь, числом доступных пользовательских выводов применяемого кристалла расширяемой процессорной платформы.
Для реализации функций проектируемой системы сбора и обработки данных достаточно одноядерного варианта конфигурации процессорного блока PS кристаллов расширяемых вычислительных платформ семейства Zynq‑7000 AP SoC. Структурное представление архитектуры разрабатываемой системы показано на рис. 18. В состав этой архитектуры, кроме процессорного блока PS, входит блок портов ввода/вывода общего назначения с модулем интерфейса AXI, который конфигурируется на базе ресурсов программируемой логики PL кристаллов этого семейства. Расширение архитектуры до необходимого количества каналов приема и обработки данных с различной разрядностью осуществляется путем подключения дополнительных портов ввода/вывода общего назначения. Для организации передачи результатов обработки входных данных в центральный компьютер в составе процессорного блока PS задействован один из двух контроллеров интерфейса UART [1]. Порты ввода/вывода общего назначения GPIO, входящие в состав периферии процессорного блока PS, зарезервированы для подключения элементов индикации.
Аппаратная реализация разрабатываемой системы сбора и обработки данных выполняется на базе отладочной платы ZedBoard [12]. Поэтому при формировании спецификации аппаратной платформы этой системы используется шаблон конфигурации процессорной системы ZedBoard Development Board Template, предоставляемый средствами Xilinx Platform Studio, который был рассмотрен в предыдущей части статьи. При этом неиспользуемые периферийные устройства процессорного блока PS, задействованные в этом варианте конфигурации (в частности, контроллеры интерфейсов Ethernet (Enet0), SD/SDIO (SD0), USB (USB0) и таймер/счетчик TTC0), могут быть отключены. Функции имитатора входных данных выполняет блок DIP-переключателей, установленных на плате инструментального модуля ZedBoard, которые сопряжены с пользовательскими выводами программируемой логики кристалла семейства Zynq‑7000 AP SoC. Для аппаратной реализации проектируемой системы можно применять и другие отладочные модули, представленные в [14, 15]. В этом случае при подготовке спецификации аппаратной платформы MHS нужно указать шаблон конфигурации процессорного блока PS, соответствующий типу используемой платы.
После включения процессорного блока PS в спецификацию аппаратной платформы разрабатываемой системы и последующей настройки его конфигурации рекомендуется открыть вкладку Bus Interfaces страницы System Assembly View основного окна средств проектирования Xilinx Platform Studio, на которой отображается информация об IP-ядрах, добавленных в состав нового проекта. Эта информация представлена в форме таблицы, содержащей семь колонок — Name, IP Version, IP Classification, Bus Name, Bus Standard, IP Type и Type. Следует обратить внимание на то, что некоторые из перечисленных столбцов таблицы могут отсутствовать на экране. Для определения состава отображаемых колонок следует воспользоваться контекстно-зависимым всплывающим меню, которое открывается щелчком правой кнопки мыши при расположении курсора в строке, содержащей названия столбцов таблицы. Это меню содержит список названий всех колонок таблицы, указанных выше, в котором видимые столбцы отмечены маркером на поле соответствующего индикатора состояния. Включение/выключение требуемой колонки таблицы осуществляется щелчком левой кнопки мыши при расположении курсора в строке с ее названием.
В ячейках, образующих столбец Name, приводятся идентификаторы экземпляров IP-ядер, включенных в состав создаваемой спецификации MHS.
Ячейки, входящие в состав колонки IP Version, содержат сведения о версии используемого IP-компонента.
В ячейках, составляющих столбец IP Classification, представлена информация о классификационных категориях IP-ядер, к которым относятся применяемые компоненты. В составе спецификации аппаратной платформы проектируемых встраиваемых систем могут употребляться, в частности, компоненты следующих классов: процессорные ядра (Processor), периферийные устройства (Peripheral), шинные интерфейсы (AXI Bus).
В ячейках, образующих колонку Bus Name, отображаются идентификаторы шин, которые используются для сопряжения экземпляров IP-компонентов. Каждая ячейка этой колонки представляет собой поле выбора, выпадающий список которого содержит идентификаторы доступных шин.
Ячейки, входящие в состав столбца Bus Standard, содержат названия стандартных интерфейсов, к которым относятся соответствующие шины.
В ячейках, составляющих колонку IP Type, представлены идентификаторы IP-ядер, экземпляры которых применяются в составе формируемой спецификации MHS.
В ячейках столбца Type приводится информация о режиме подключения соответствующих компонентов к используемому интерфейсу — ведущем (Master) или подчиненном (Slave).
Первоначально в таблице, расположенной на вкладке Bus Interfaces страницы System Assembly View, должна быть представлена только информация об экземпляре ядра процессорного блока processing_system7, как показано на рис. 19.
Чтобы добавить в спецификацию аппаратной платформы проектируемой системы IP-компоненты периферийных устройств, конфигурируемых на базе ресурсов программируемой логики PL кристаллов семейства Zynq‑7000 AP SoC, следует воспользоваться вкладкой IP Catalog рабочей области проекта, расположенной в левой части основного окна средств разработки Xilinx Platform Studio. Эта вкладка открывает доступ к депозитарию IP-ядер, предоставляемых комплексом средств автоматизированного проектирования встраиваемых микропроцессорных систем Xilinx Embedded Development Kit, а также к IP-компонентам, созданным разработчиком. Для удобства работы с депозитарием IP-ядер рекомендуется развернуть вкладку IP Catalog таким образом, чтобы в ней отображалась полная информация о предоставляемых IP-компонентах, как показано на рис. 20.
Вся необходимая информация о доступных IP-ядрах представлена в форме таблицы, включающей в себя шесть колонок — Description, IP Version, IP Type, Status, Processor Support и IP Classification. IP-компоненты, предоставляемые комплексом Xilinx Embedded Development Kit, распределены по группам в соответствии с их функциональным назначением. Первоначально в колонке Description отображаются только названия этих групп. Для получения доступа к IP-ядрам, входящим в состав требуемой группы, следует поместить курсор на знак +, расположенный слева от ее названия, и щелкнуть левой кнопкой мыши. После этого в колонке Description появится интерактивный список названий IP-компонентов, относящихся к выбранной функциональной группе. Информация о версиях IP-ядер содержится в колонке IP Version. Сведения о типе и статусе предоставляемых IP-компонентов приводятся в колонках IP Type и Status соответственно. В колонке Processor Support перечислены названия микропроцессорных ядер, которые поддерживают эти IP-компоненты. Информация о классификационной категории, к которой относятся IP-ядра, отображается в колонке IP Classification.
Для включения одного экземпляра требуемого IP-компонента в состав формируемой спецификации аппаратной платформы разрабатываемой микропроцессорной системы достаточно расположить курсор на строке с его названием и дважды щелкнуть левой кнопкой мыши. Вслед за этим на экран выводится диалоговая панель Add IP Instance to Design, вид которой приведен на рис. 21. Эта диалоговая панель содержит запрос подтверждения, разрешающего включение экземпляра выбранного IP-ядра в состав создаваемой спецификации MHS. После утвердительного ответа на этот запрос (нажатия кнопки Yes) активизируется «мастер» настройки параметров конфигурации выбранного ядра. Этот «мастер» представляет собой диалоговую панель, которая, как правило, содержит несколько вкладок. На каждой из них находится соответствующая группа параметров настройки используемого IP-ядра.
В качестве примера добавим в состав спецификации MHS микропроцессорной системы, архитектура которой изображена на рис. 18, необходимую периферию, конфигурируемую на базе ресурсов программируемой логики PL кристаллов семейства Zynq‑7000 AP SoC. Для включения портов ввода/вывода общего назначения, сопряженных с интерфейсом AXI, в состав спецификации аппаратной платформы следует выбрать в таблице, расположенной на вкладке IP Catalog, IP-ядро AXI General Purpose IO, которое входит в состав группы General Purpose IO (рис. 20). После подтверждения необходимости добавления экземпляра этого IP-компонента в состав формируемой спецификации MHS на экране появляется диалоговая панель «мастера» настройки параметров конфигурации ядра AXI General Purpose IO, первоначальный вид которой показан на рис. 22.
Открывшаяся диалоговая панель XPS Core Config содержит три вкладки: User, System, Interconnect Settings for BUSIF.
Настройка параметров конфигурирования периферийного ядра AXI General Purpose IO
В диалоговой панели XPS Core Config рекомендуется, в первую очередь, обратить внимание на идентификатор экземпляра IP-ядра, который отображается в поле редактирования значения параметра Component Instance Name. По умолчанию средства проектирования Xilinx Platform Studio предлагают для создаваемого экземпляра выбранного IP-ядра идентификатор в следующем формате:
<условное_обозначение_IP-ядра>_<порядковый_номер_экземпляра>
Например, первому экземпляру ядра AXI General Purpose IO по умолчанию присваивается идентификатор axi_gpio_0. При необходимости можно изменить предлагаемый идентификатор, воспользовавшись клавиатурой. В этом случае следует соблюдать те же правила, что и при определении названия проекта.
Затем нужно установить требуемые значения пользовательских параметров добавляемого экземпляра рассматриваемого IP-ядра, которые представлены на вкладке User диалоговой панели XPS Core Config. Параметр GPIO Support Interrupt предоставляет возможность использования модуля прерываний, который входит в состав структуры ядра AXI General Purpose IO, изображенной на рис. 23. Чтобы задействовать механизм прерываний в формируемом экземпляре этого ядра, необходимо установить индикатор состояния этого параметра в положение «включено».
Параметр Enable Channel 2 позволяет выбрать вариант конфигурирования добавляемого экземпляра ядра AXI General Purpose IO — одноканальный или двухканальный. Рассматриваемое IP-ядро поддерживает возможность генерации двухканальной структуры портов ввода/вывода общего назначения, схема реализации которой приведена на рис. 24.
Для создания экземпляра двухканального варианта конфигурирования ядра AXI General Purpose IO необходимо установить индикатор состояния параметра Enable Channel 2 в положение «включено». По умолчанию этот индикатор находится в сброшенном состоянии, при котором формируется экземпляр интерфейса портов ввода/вывода общего назначения с одноканальной структурой. Это позволяет существенно сократить объем ресурсов программируемой логики, необходимых для его реализации.
С помощью параметров GPIO Data Channel Width определяется разрядность каждого канала формируемого экземпляра ядра AXI General Purpose IO, которую можно выбирать в диапазоне от 1 до 32 двоичных разрядов. По умолчанию в полях редактирования значений параметров GPIO Data Channel Width предлагается максимальная поддерживаемая разрядность портов ввода/вывода общего назначения, равная 32.
Параметры Channel 1 Data OUT Default Value и Channel 2 Data OUT Default Value позволяют указать значения выходных данных, устанавливаемые по умолчанию на выходах соответствующих каналов. По умолчанию для этих параметров предлагаются нулевые значения. При необходимости изменения этих значений следует активизировать соответствующее поле редактирования и воспользоваться клавиатурой. Требуемые значения выходных данных указываются в шестнадцатеричном формате. При этом количество разрядов задаваемого значения должно соответствовать выбранной разрядности соответствующего канала.
Параметры Channel 1 3‑state Default Value и Channel 2 3‑state Default Value определяют содержимое регистров управления тристабильными выходами, устанавливаемое по умолчанию.
С помощью параметров Channel 1 is Input Only и Channel 2 is Input Only можно осуществлять конфигурирование портов ввода/вывода первого и второго каналов соответственно для выполнения функции только входных портов. Для этого следует установить индикатор состояния соответствующего параметра в положение «включено». Тем самым минимизируется объем ресурсов программируемой логики, используемых для реализации формируемого экземпляра IP-ядра AXI General Purpose IO.
Далее целесообразно проконтролировать и при необходимости изменить значения системных параметров интерфейса AXI создаваемого экземпляра рассматриваемого IP-ядра, представленных на вкладке System (рис. 25) диалоговой панели XPS Core Config.
В поле редактирования значения параметра AXI Base Address отображается адрес, определяющий нижнюю границу диапазона адресного пространства, который выделяется для добавляемого экземпляра IP-компонента. Поле редактирования значения параметра AXI High Address содержит адрес, соответствующий верхней границе диапазона адресного пространства, который предоставляется для создаваемого экземпляра IP-ядра. По умолчанию в этих полях редактирования приводятся недопустимые значения адресов (0xFFFFFFFF и 0x00000000 соответственно), которые нужно изменить с помощью клавиатуры. Значения адресов задаются в шестнадцатеричном представлении. При этом необходимо учитывать, что размер диапазона адресного пространства (разность значений, указываемых в полях редактирования AXI High Address и AXI Base Address), выделяемого для одного экземпляра ядра AXI General Purpose IO, должен быть не менее значения 0xFFF. Если разработчик не указывает требуемые границы используемого диапазона адресного пространства для IP-ядра, включаемого в состав спецификации аппаратной платформы разрабатываемой системы, то средства Xilinx Platform Studio автоматически устанавливают значения параметров AXI High Address и AXI Base Address. С этими значениями можно впоследствии ознакомиться на вкладке Addresses страницы System Assembly View основного окна средств XPS.
Параметр AXI Data Bus Width предоставляет возможность выбора необходимой разрядности для шины данных используемого интерфейса AXI. По умолчанию в поле редактирования значения этого параметра предлагается 32‑разрядный вариант шины данных. С помощью параметра AXI Address Bus Width указывается разрядность шины адреса интерфейса AXI, применяемого для подключения портов ввода/вывода общего назначения. Параметр AXI Protocol позволяет выбрать протокол интерфейса AXI, используемый для подключения создаваемого экземпляра ядра AXI General Purpose IO. По умолчанию в поле выбора значения этого параметра отображается вариант AXI4LITE, который соответствует одноименному протоколу. Как правило, для перечисленных системных параметров рассматриваемого IP-ядра рекомендуется оставить значения, предлагаемые по умолчанию.
После установки необходимых значений системных параметров интерфейса AXI создаваемого экземпляра ядра AXI General Purpose IO следует открыть вкладку Interconnect Settings for BUSIF диалоговой панели XPS Core Config, вид которой изображен на рис. 26. На этой вкладке представлены параметры подключения компонента, добавляемого в формируемую спецификацию MHS, к шине интерфейса AXI в подчиненном режиме (Slave).
С помощью параметра Is ACLK Asynchronous to Interconnect_ACLK устанавливается наличие или отсутствие синхронизации тактовых сигналов подчиненного порта интерфейса AXI и межсоединений Interconnect AXI. По умолчанию для этого параметра предлагается значение Auto, при котором выбор режима синхронизации указанных тактовых сигналов осуществляется автоматически.
Значение параметра ACLK Frequency Ratio определяет соотношение частот тактовых сигналов подчиненного порта интерфейса AXI и межсоединений Interconnect AXI при наличии их синхронизации. По умолчанию этот параметр принимает единичное значение.
Параметр Require TrustZone Secure on all accesses предоставляет возможность применения защищенного режима доступа к интерфейсу AXI. По умолчанию индикатор состояния этого параметра находится в сброшенном положении, соответствующем обычному (незащищенному) режиму доступа к интерфейсу AXI.
Параметры Use Register Slice on AW Channel, Use Register Slice on AR Channel, Use Register Slice on W Channel, Use Register Slice on R Channel и Use Register Slice on B Channel позволяют задействовать буферные регистры в каналах адресов записи и чтения, записываемых, считываемых и ответных данных соответственно. По умолчанию для перечисленных параметров установлено значение Bypass, блокирующее применение буферных регистров в соответствующих каналах интерфейса AXI.
Значения параметров Write Data FIFO Depth и Read Data FIFO Depth определяют размер FIFO-буфера записываемых и считываемых данных соответственно. По умолчанию для этих параметров предлагается нулевое значение, указывающее на то, что FIFO-буферы в каналах записи и чтения данных не используются.
Параметры Write Transaction Acceptance Limit и Read Transaction Acceptance Limit предназначены для ограничения количества транзакций записи и чтения данных. По умолчанию для этих параметров предлагается значение Auto, при котором ограничение количества соответствующих транзакций устанавливается автоматически.
Без необходимости не рекомендуется изменять значения параметров, представленных на вкладке Interconnect Settings for BUSIF, которые установлены по умолчанию. Для того чтобы все модифицированные значения параметров настройки конфигурации IP-ядра AXI General Purpose IO вступили в силу, необходимо нажать кнопку OK, расположенную в нижней части диалоговой панели XPS Core Config (рис. 21, 25, 26).
В качестве примера в состав формируемой спецификации MHS системы сбора и обработки данных включен экземпляр IP-ядра AXI General Purpose IO, в котором используется одноканальный вариант конфигурирования с 8‑разрядным портом ввода/вывода общего назначения.
Проверка и редактирование шинных соединений экземпляров IP-ядер в формируемой спецификации аппаратной платформы разрабатываемой микропроцессорной системы
После закрытия «мастера» настройки добавляемого в спецификацию MHS IP-ядра XPS Core Config на экран выводится диалоговая панель Instantiate and Connect IP (рис. 27).
Открывшаяся диалоговая панель предназначена для выбора способа подключения добавляемого экземпляра периферийного IP-ядра к микропроцессорному блоку. В этой диалоговой панели есть две кнопки с зависимой фиксацией — Select processor instance to connect to и User will make necessary connections and settings, которые позволяют выбрать соответственно автоматический или «ручной» способ формирования соединений включаемого экземпляра IP-ядра и микропроцессорного блока. По умолчанию в нажатом состоянии зафиксирована кнопка Select processor instance to connect to, которая предоставляет возможность не только автоматически сформировать описание взаимосвязей сконфигурированного экземпляра IP-ядра и микропроцессорного блока, но и добавить при этом дополнительные компоненты, необходимые для их сопряжения. В частности, при включении в состав спецификации MHS разрабатываемой микропроцессорной системы экземпляров IP-ядер с интерфейсом AXI автоматически добавляется компонент AXI Interconnect, представляющий блок межсоединений этого интерфейса.
В большинстве случаев рекомендуется воспользоваться автоматическим способом генерации описания соединений портов добавляемого экземпляра IP-ядра с портами микропроцессорного блока и внешними портами. Для этого достаточно в поле выбора, расположенном в центре диалоговой панели Instantiate and Connect IP, указать идентификатор экземпляра процессорного блока, к которому подключается сгенерированный IP-компонент. При проектировании одноядерных микропроцессорных встраиваемых систем выпадающий список возможных значений этого поля выбора содержит единственный вариант processing_system7_0.
После нажатия клавиши OK, находящейся в нижней части диалоговой панели Instantiate and Connect IP, сконфигурированный экземпляр IP-ядра автоматически добавляется в формируемую спецификацию аппаратной платформы разрабатываемой микропроцессорной системы. Чтобы убедиться в этом, следует открыть вкладку Bus Interfaces страницы System Assembly View основного окна средств проектирования Xilinx Platform Studio, которая после включения экземпляра IP-ядра AXI General Purpose IO приобретает вид, приведенный на рис. 28.
В таблице, расположенной на этой вкладке, кроме экземпляра ядра процессорного блока processing_system7_0 появились компоненты axi_gpio_0 и axi_interconnect_1, которые представляют собой соответственно экземпляры IP-ядра AXI General Purpose IO и блока межсоединений интерфейса AXI. Компонент axi_interconnect_1, автоматически добавленный средствами Xilinx Platform Studio, предназначен для сопряжения процессорного блока и контроллера интерфейса портов ввода/вывода общего назначения.
Информация обо всех соединениях экземпляров IP-ядер, включенных в состав создаваемой спецификации MHS, которые осуществляются посредством интерфейсных шин, представлена в графической форме во встроенной панели, расположенной вдоль левой границы вкладки Bus Interfaces. В верхней части этой панели приводятся названия используемых шинных интерфейсов. Сведения о режиме подключения IP-компонентов к соответствующим шинам отображаются в этой панели с помощью системы условных обозначений, краткое описание которых содержится в нижней части вкладки Bus Interfaces.
В более наглядном виде структура формируемой спецификации аппаратной платформы проектируемой встраиваемой системы воспроизводится на странице Graphical Design View основного окна средств Xilinx Platform Studio (рис. 29). На этой станице изображено схемотехническое представление архитектуры разрабатываемой микропроцессорной системы.
После завершения автоматического формирования спецификации MHS проектируемой встраиваемой системы рекомендуется проконтролировать диапазоны адресного пространства, которые были выделены для каждого ее компонента средствами разработки Xilinx Platform Studio.
Определение диапазонов адресного пространства, выделяемых для компонентов спецификации MHS
Для контроля распределения адресного пространства, выделенного различным компонентам спецификации аппаратной платформы разрабатываемой микропроцессорной системы, нужно открыть вкладку Addresses страницы System Assembly View основного окна средств проектирования Xilinx Platform Studio. На рис. 30 приведен вид этой вкладки для формируемой спецификации MHS системы сбора и обработки данных.
Карта распределения адресного пространства проектируемой микропроцессорной системы, отображаемая на вкладке Addresses, представлена в форме таблицы, которая содержит 11 колонок — Instance, Base Name, Base Address, High Address, Size, Bus Interface(s), us Name, Address Type, IP Type, Lock и IP Version. Для определения состава видимых столбцов таблицы следует воспользоваться контекстно-зависимым всплывающим меню, открываемым щелчком правой кнопки мыши при расположении курсора в строке, содержащей названия колонок.
В ячейках, образующих колонку Instance, приводятся идентификаторы экземпляров IP-ядер, входящих в состав формируемой спецификации аппаратной платформы проектируемой микропроцессорной системы.
Ячейки, составляющие колонку Base Name, содержат идентификаторы параметров, значения которых определяют нижнюю границу диапазона адресного пространства, выделяемого для соответствующих компонентов спецификации MHS.
В ячейках, расположенных в колонке Base Address, указываются значения базового адреса компонентов, для которых выделяется адресное пространство. Для тех компонентов, которые не отмечены маркером в ячейках, образующих колонку Lock, каждая ячейка, относящаяся к столбцу Base Address, представляет собой поле редактирования значения соответствующего параметра. Поэтому для изменения значения базового адреса достаточно активизировать соответствующую ячейку столбца Base Address и ввести новое значение, используя клавиатуру.
В ячейках, которые входят в состав колонки High Address, отображаются значения, определяющие верхнюю границу адресного пространства, предоставляемого для соответствующих компонентов. Эти значения вычисляются автоматически на основании базового адреса и размера выделяемого адресного пространства.
В ячейках, относящихся к столбцу Size, указывается размер адресного пространства, которое выделяется для соответствующих компонентов спецификации аппаратной платформы. Для компонентов, которые не отмечены маркером в соответствующих ячейках колонки Lock, каждая ячейка столбца Size представляет собой поле выбора, в правой части которого расположена кнопка управления выпадающим списком допустимых значений этого параметра. Определение размера выделяемого адресного пространства для каждого периферийного компонента осуществляется путем выбора соответствующей строки в выпадающем списке. При этом следует помнить, что размер диапазона адресного пространства, который резервируется для какого-либо компонента спецификации MHS, должен соответствовать допустимым значениям, указанным в документации для соответствующего IP-ядра.
В ячейках, входящих в состав колонки Bus Interface(s), отображается название интерфейса, посредством которого соответствующий компонент спецификации MHS подключается к процессорному блоку. При этом название шины используемого интерфейса приводится в ячейке столбца Bus Name, расположенной в строке с названием этого компонента.
Ячейки, составляющие колонку Address Type, содержат информацию о типе адресного пространства, выделяемого для компонентов спецификации аппаратной платформы разрабатываемой микропроцессорной системы. Адресному пространству памяти соответствует условное обозначение Memory, а адресам регистров — Register. В ячейках столбца IP Type приводятся идентификаторы IP-ядер, экземпляры которых включены в состав формируемой спецификации MHS. Сведения об используемых версиях этих ядер представлены в ячейках, входящих в состав колонки IP Version.
Ячейки, образующие колонку Lock, содержат индикаторы состояния, позволяющие зафиксировать границы диапазонов, указанные в ячейках колонок Base Address и High Address, для выбранных компонентов формируемой спецификации MHS в процессе автоматического распределения адресного пространства. При этом следует обратить внимание на то, что границы диапазонов адресов, зарезервированных для периферии процессорного блока PS, постоянно находятся в зафиксированном состоянии.
Кнопка , находящаяся над правым верхним углом вкладки Addresses (рис. 30), предоставляет возможность запуска программы автоматического распределения адресного пространства для тех компонентов, которые не отмечены маркером в ячейках, образующих колонку Lock. После определения границ диапазонов адресного пространства для всех компонентов спецификации аппаратной платформы проектируемой микропроцессорной системы нужно перейти к следующему шагу — проверке и редактированию описания подключения портов этих компонентов.
Подготовка описания подключения внешних портов разрабатываемой микропроцессорной системы и компонентов, входящих в ее состав
Вся необходимая информация о подключении внешних портов разрабатываемой микропроцессорной системы, а также портов компонентов, включенных в состав спецификации аппаратной платформы этой системы, представлена в таблице, расположенной на вкладке Ports страницы System Assembly View основного окна средств проектирования Xilinx Platform Studio. На рис. 31 показан вид этой вкладки для создаваемой спецификации MHS системы сбора и обработки данных.
Таблица, представленная на вкладке Ports, содержит 12 колонок — Name, Connected Port, Net, Direction, Range, Class, Frequency (Hz), Reset Polarity, Sensitivity, IP Type, IP Version и Differential Polarity. Управление составом колонок, отображаемых на экране, осуществляется с помощью контекстно-зависимого всплывающего меню, которое вызывается щелчком правой кнопки мыши при расположении курсора в строке названий столбцов.
В ячейках, относящихся к столбцу Name, отображаются идентификаторы внешних портов проектируемой микропроцессорной системы, а также идентификаторы экземпляров компонентов, включенных в состав ее спецификации MHS, и подключаемых портов этих компонентов. Для внешних портов разрабатываемой встраиваемой системы ячейки этого столбца представляют собой поля редактирования. Первоначально в этих ячейках отображаются идентификаторы внешних портов, предлагаемые автоматически средствами проектирования Xilinx Platform Studio. Чтобы изменить идентификатор внешнего порта, назначенный автоматически средствами XPS, следует, прежде всего, активизировать соответствующую ячейку столбца Name, расположив на ней курсор и щелкнув левой кнопкой мыши. Затем, используя клавиатуру, нужно ввести текст идентификатора.
Ячейки, расположенные в колонке Connected Port, содержат идентификаторы портов компонентов, которые подключены к соответствующим портам, перечисленным в столбце Name. При этом используется следующий формат представления информации о подключенных портах:
<идентификатор_экземпляра_компонента>::<идентификатор_подключенного_порта>
Для изменения автоматически предлагаемого варианта подключения какого-либо порта нужно указать курсором соответствующую ячейку колонки Connected Port и щелкнуть левой кнопкой мыши, в результате чего на экране появляется всплывающая панель (рис. 32). В ее верхней части расположены два поля выбора, которые позволяют указать соответственно экземпляр компонента спецификации MHS и подключаемый порт этого компонента. Выпадающий список первого поля выбора содержит идентификаторы компонентов, включенных в состав формируемой спецификации аппаратной платформы. В выпадающем списке второго поля выбора содержатся идентификаторы портов выбранного экземпляра компонента. После закрытия всплывающей панели выбранные идентификаторы экземпляра компонента и порта отображаются в выделенной ячейке колонки Connected Port.
В ячейках, образующих колонку Net, указывается название цепи, к которой подключается соответствующий порт. Каждая ячейка, расположенная в этой колонке, представляет собой поле выбора, выпадающий список которого содержит идентификаторы цепей, доступных для подключения выбранного порта, а также идентификаторы шин питания и «земли».
Ячейки, составляющие колонку Direction, содержат информацию о типе порта (сигнала) в соответствии с направлением передачи данных. Если описываемый порт является входным, то в этой ячейке отображается символ I. Для обозначения выходного порта в ячейке Direction используется символ O. При описании подключения двунаправленного порта в этой ячейке отображается сочетание символов, соответствующих двум предыдущим типам порта (входному и выходному), — IO. Для внешних портов проектируемой микропроцессорной системы ячейки столбца Direction представляют собой поля выбора, позволяющие установить требуемый тип этих портов. Выпадающие списки этих полей выбора содержат условные обозначения трех типов портов, представленные выше.
Ячейки, которые входят в состав колонки Range, используются для определения номеров разрядов внешних интерфейсных портов, которые представлены в форме векторов (массивов). Каждая ячейка, относящаяся к этой колонке, является полем редактирования. Для того чтобы указать значения начального и конечного индексов вектора (массива), необходимо активизировать соответствующую ячейку и воспользоваться клавиатурой. Вводимые значения начального и конечного индекса векторов разделяются двоеточием.
В ячейках, которые расположены в колонке Class, указываются условные обозначения категорий, к которой относятся сигналы, ассоциируемые с описываемыми портами. Если сигнал, ассоциируемый с портом, соответствует группе сигналов синхронизации, то в относящейся к нему ячейке этого столбца содержится обозначение CLK. Для сигналов, относящихся к категории сигналов прерывания, используется условное обозначение INTERRUPT. Принадлежность к группе сигналов сброса фиксируется условным обозначением RST. Для всех остальных сигналов, не попадающих ни в одну из перечисленных категорий, в ячейках колонки Class используется обозначение None. Ячейки колонки Class, соответствующие внешним портам разрабатываемой микропроцессорной системы, представляют собой поля выбора, предназначенные для определения категорий сигналов, ассоциируемых с этими портами. Выпадающие списки этих полей выбора включают в себя четыре варианта условных обозначений — CLK, INTERRUPT, RST и None, о назначении которых мы уже сказали.
Ячейки, входящие в состав колонки Frequency (Hz), позволяют указать значение частоты сигнала синхронизации, ассоциируемого с соответствующим внешним портом. Для определения значения частоты внешнего тактового сигнала необходимо активизировать соответствующую ячейку этой колонки и воспользоваться клавиатурой.
В ячейках, составляющих столбец Reset Polarity, для портов сигналов сброса приводится информация об активном уровне напряжения для этих портов. Каждая ячейка этой колонки для портов, ассоциированных с сигналами сброса, является полем выбора, предоставляющим возможность определения активного уровня сигналов для указанных портов. Выпадающий список этого поля выбора включает в себя два варианта — 0 и 1, которые соответствуют низкому и высокому логическому уровню напряжения.
Колонка Sensitivity заполняется только для тех портов, с которыми ассоциированы сигналы прерывания. В ячейках этого столбца отображается условное обозначение активного уровня или фронта для сигнала прерывания, с которым ассоциируется описываемый порт. Возможны следующие четыре варианта условного обозначения активного события:
- EDGE_FALLING соответствует порту, управляемому спадом сигнала.
- EDGE_RISING соответствует порту, управляемому фронтом сигнала.
- LEVEL_HIGH соответствует порту, для которого активным является высокий логический уровень сигнала.
- LEVEL_LOW соответствует порту, для которого активным является низкий логический уровень сигнала.
В ячейках столбцов IP Type и IP Version отображается информация о типе и версии IP-ядер, к экземплярам которых относятся подключаемые порты.
Ячейки, относящиеся к колонке Differential Polarity, позволяют указать полярность для внешних портов тактовых сигналов, представленных в дифференциальном виде. Эти ячейки для внешних портов, ассоциированных с сигналами синхронизации, представляют собой поля выбора полярности сигнала. Выпадающие списки этих полей выбора содержат два варианта — P и N, которые соответствуют положительной и отрицательной полярности сигналов дифференциальной пары.
Вся информация о подключении портов в таблице, расположенной на вкладке Ports страницы System Assembly View, разбита на разделы, названия которых отображаются в колонке Name. Если в диалоговой панели Instantiate and Connect IP (рис. 27) был выбран автоматический способ подключения добавляемых экземпляров IP-ядер к микропроцессорному блоку, то все эти разделы уже заполнены. При необходимости автоматически сгенерированную информацию о соединениях портов проектируемой микропроцессорной системы разработчик может изменить вручную.
В начале таблицы расположен раздел External Port, в котором приводятся сведения о подключении внешних портов разрабатываемой встраиваемой системы. Чтобы добавить описание порта в этот раздел, следует воспользоваться кнопкой , которая находится над правым верхним углом вкладки Ports (рис. 31). Эта кнопка предназначена для включения описаний внешних портов в состав спецификации аппаратной платформы проектируемой системы. При нажатии на эту кнопку на экране появляется диалоговая панель Connection Dialog (рис. 33).
Она позволяет определить все параметры создаваемого внешнего порта. В поле редактирования External Port Name после его активизации необходимо указать идентификатор нового внешнего порта, используя клавиатуру. Поле выбора значения параметра Direction позволяет определить тип создаваемого порта. Для этого следует нажать кнопку управления выпадающим списком, расположенную в правой части указанного поля выбора, и выбрать из предложенных вариантов тип, соответствующий направлению передачи данных через этот порт (I — входной, O — выходной или IO — двунаправленный).
С помощью поля выбора значения параметра Class нужно указать категорию, к которой относится сигнал, ассоциируемый с создаваемым портом. Возможные варианты категорий были представлены выше. Если сигнал, ассоциируемый с портом, не принадлежит ни к одной из рассмотренных категорий, то в поле выбора Class следует оставить без изменений вариант None, который предлагается по умолчанию. Чтобы указать название цепи, к которой должен быть подключен новый внешний порт, нужно воспользоваться полем редактирования значения параметра Net Name. Идентификатор соответствующей цепи может быть непосредственно занесен в это поле (после его активизации) с помощью клавиатуры. После того как определены все параметры создаваемого порта, следует нажать кнопку ОК, расположенную в нижней части диалоговой панели Connection Dialog. Вслед за этим в разделе External Port появляется новая строка, содержащая описание нового внешнего порта.
Если какой-либо внешний порт был ошибочно включен в спецификацию MHS, то для его удаления нужно воспользоваться командой Delete External Port из контекстно-зависимого всплывающего меню, открываемого щелчком правой кнопки мыши при расположении курсора на соответствующей строке раздела External Port.
Названия всех последующих разделов таблицы, представленной на вкладке Ports страницы System Assembly View, совпадают с идентификаторами экземпляров IP-ядер, включенных в состав формируемой спецификации аппаратной платформы разрабатываемой микропроцессорной системы. Эти разделы содержат информацию о подключении портов соответствующих экземпляров IP-компонентов. Если необходимо изменить предлагаемый вариант подсоединения портов какого-либо компонента, то следует воспользоваться полем выбора, расположенным в соответствующей строке колонки Connected Port.
Проверка сформированной спецификации аппаратной платформы проектируемой системы
После контроля и внесения необходимых изменений диапазонов адресного пространства, которое предоставляется различным экземплярам IP-ядер, входящих в состав создаваемой спецификации аппаратной платформы проектируемой системы, а также подключения портов этих компонентов можно перейти к заключительной фазе подготовки спецификации MHS. Следует выполнить проверку сформированной спецификации с помощью инструментов автоматизированного контроля DRC (Design Rule Check) средств проектирования Xilinx Platform Studio. Для активизации этого процесса нужно воспользоваться командой Design Rule Check из всплывающего меню Project или кнопкой быстрого доступа , расположенной на оперативной панели управления средств XPS. Вся информация о результатах выполняемой проверки отображается в консольной области основного окна средств разработки Xilinx Platform Studio.
Для просмотра сообщений об обнаруженных ошибках следует открыть страницу Errors консольной области. Чтобы ознакомиться с предупреждениями, сгенерированными средствами контроля DRC, нужно воспользоваться страницей Warnings консольной области. Для устранения обнаруженных ошибок следует открыть соответствующие вкладки страницы System Assembly View и внести необходимые изменения в таблице портов или адресов. Кроме того, можно непосредственно отредактировать спецификацию MHS в текстовом формате. Для этого нужно, прежде всего, открыть вкладку Project (рис. 34) рабочей области проекта основного окна средств проектирования Xilinx Platform Studio. На этой вкладке следует расположить курсор на строке MHS File, в которой отображается название файла спецификации аппаратной платформы разрабатываемой системы, и дважды щелкнуть левой кнопкой мыши. После этого откроется окно встроенного текстового редактора средств проектирования XPS, содержащее текст сгенерированной спецификации MHS (рис. 34). При необходимости с помощью клавиатуры в текст спецификации можно внести различные изменения, в том числе значений параметров, идентификаторов компонентов и цепей (сигналов). Для того чтобы выполненные изменения вступили в силу, следует сохранить файл MHS на жестком диске, выполнив команду Save из всплывающего меню File.
После устранения обнаруженных ошибок и критических предупреждений необходимо повторно выполнить проверку созданной спецификации MHS. Этот процесс может потребовать несколько итераций до тех пор, пока в консольной области не появится сообщение об успешном завершении проверки сформированной спецификации аппаратной платформы.
В качестве примера приведем полный текст спецификации MHS системы сбора и обработки данных, которая была автоматически сформирована после выполнения всех рассмотренных выше операций. Созданная спецификация аппаратной платформы должна выглядеть следующим образом. (Для большей информативности она дополнена комментариями, которые поясняют назначение разделов спецификации.)
# Номер версии спецификации MHS # PARAMETER VERSION = 2.1.0 # # Описание внешних портов проектируемой микропроцессорной системы # PORT processing_system7_0_MIO = processing_system7_0_MIO, DIR = IO, VEC = [53:0] PORT processing_system7_0_PS_SRSTB_pin = processing_system7_0_PS_SRSTB, DIR = I PORT processing_system7_0_PS_CLK_pin = processing_system7_0_PS_CLK, DIR = I, SIGIS = CLK PORT processing_system7_0_PS_PORB_pin = processing_system7_0_PS_PORB, DIR = I PORT processing_system7_0_DDR_Clk = processing_system7_0_DDR_Clk, DIR = IO, SIGIS = CLK PORT processing_system7_0_DDR_Clk_n = processing_system7_0_DDR_Clk_n, DIR = IO, SIGIS = CLK PORT processing_system7_0_DDR_CKE = processing_system7_0_DDR_CKE, DIR = IO PORT processing_system7_0_DDR_CS_n = processing_system7_0_DDR_CS_n, DIR = IO PORT processing_system7_0_DDR_RAS_n = processing_system7_0_DDR_RAS_n, DIR = IO PORT processing_system7_0_DDR_CAS_n = processing_system7_0_DDR_CAS_n, DIR = IO PORT processing_system7_0_DDR_WEB_pin = processing_system7_0_DDR_WEB, DIR = O PORT processing_system7_0_DDR_BankAddr = processing_system7_0_DDR_BankAddr, DIR = IO, VEC = [2:0] PORT processing_system7_0_DDR_Addr = processing_system7_0_DDR_Addr, DIR = IO, VEC = [14:0] PORT processing_system7_0_DDR_ODT = processing_system7_0_DDR_ODT, DIR = IO PORT processing_system7_0_DDR_DRSTB = processing_system7_0_DDR_DRSTB, DIR = IO, SIGIS = RST PORT processing_system7_0_DDR_DQ = processing_system7_0_DDR_DQ, DIR = IO, VEC = [31:0] PORT processing_system7_0_DDR_DM = processing_system7_0_DDR_DM, DIR = IO, VEC = [3:0] PORT processing_system7_0_DDR_DQS = processing_system7_0_DDR_DQS, DIR = IO, VEC = [3:0] PORT processing_system7_0_DDR_DQS_n = processing_system7_0_DDR_DQS_n, DIR = IO, VEC = [3:0] PORT processing_system7_0_DDR_VRN = processing_system7_0_DDR_VRN, DIR = IO PORT processing_system7_0_DDR_VRP = processing_system7_0_DDR_VRP, DIR = IO PORT axi_gpio_0_GPIO_IO_pin = axi_gpio_0_GPIO_IO, DIR = IO, VEC = [7:0] # # Описание параметров и подключения ядра микропроцессорного блока # BEGIN processing_system7 PARAMETER INSTANCE = processing_system7_0 PARAMETER HW_VER = 4.03.a PARAMETER C_DDR_RAM_HIGHADDR = 0x1FFFFFFF PARAMETER C_EN_EMIO_CAN0 = 0 PARAMETER C_EN_EMIO_CAN1 = 0 PARAMETER C_EN_EMIO_ENET0 = 0 PARAMETER C_EN_EMIO_ENET1 = 0 PARAMETER C_EN_EMIO_I2C0 = 0 PARAMETER C_EN_EMIO_I2C1 = 0 PARAMETER C_EN_EMIO_PJTAG = 0 PARAMETER C_EN_EMIO_SDIO0 = 0 PARAMETER C_EN_EMIO_CD_SDIO0 = 0 PARAMETER C_EN_EMIO_WP_SDIO0 = 0 PARAMETER C_EN_EMIO_SDIO1 = 0 PARAMETER C_EN_EMIO_CD_SDIO1 = 0 PARAMETER C_EN_EMIO_WP_SDIO1 = 0 PARAMETER C_EN_EMIO_SPI0 = 0 PARAMETER C_EN_EMIO_SPI1 = 0 PARAMETER C_EN_EMIO_SRAM_INT = 0 PARAMETER C_EN_EMIO_TRACE = 0 PARAMETER C_EN_EMIO_TTC0 = 1 PARAMETER C_EN_EMIO_TTC1 = 0 PARAMETER C_EN_EMIO_UART0 = 0 PARAMETER C_EN_EMIO_UART1 = 0 PARAMETER C_EN_EMIO_MODEM_UART0 = 0 PARAMETER C_EN_EMIO_MODEM_UART1 = 0 PARAMETER C_EN_EMIO_WDT = 0 PARAMETER C_EN_EMIO_GPIO = 0 PARAMETER C_EMIO_GPIO_WIDTH = 64 PARAMETER C_EN_QSPI = 1 PARAMETER C_EN_SMC = 0 PARAMETER C_EN_CAN0 = 0 PARAMETER C_EN_CAN1 = 0 PARAMETER C_EN_ENET0 = 1 PARAMETER C_EN_ENET1 = 0 PARAMETER C_EN_I2C0 = 0 PARAMETER C_EN_I2C1 = 0 PARAMETER C_EN_PJTAG = 0 PARAMETER C_EN_SDIO0 = 1 PARAMETER C_EN_SDIO1 = 0 PARAMETER C_EN_SPI0 = 0 PARAMETER C_EN_SPI1 = 0 PARAMETER C_EN_TRACE = 0 PARAMETER C_EN_TTC0 = 1 PARAMETER C_EN_TTC1 = 0 PARAMETER C_EN_UART0 = 0 PARAMETER C_EN_UART1 = 1 PARAMETER C_EN_MODEM_UART0 = 0 PARAMETER C_EN_MODEM_UART1 = 0 PARAMETER C_EN_USB0 = 1 PARAMETER C_EN_USB1 = 0 PARAMETER C_EN_WDT = 0 PARAMETER C_EN_DDR = 1 PARAMETER C_EN_GPIO = 1 PARAMETER C_FCLK_CLK0_FREQ = 100000000 PARAMETER C_FCLK_CLK1_FREQ = 142857132 PARAMETER C_FCLK_CLK2_FREQ = 50000000 PARAMETER C_FCLK_CLK3_FREQ = 50000000 PARAMETER C_USE_CR_FABRIC = 1 PARAMETER C_USE_M_AXI_GP0 = 1 BUS_INTERFACE M_AXI_GP0 = axi_interconnect_1 PORT MIO = processing_system7_0_MIO PORT PS_SRSTB = processing_system7_0_PS_SRSTB PORT PS_CLK = processing_system7_0_PS_CLK PORT PS_PORB = processing_system7_0_PS_PORB PORT DDR_Clk = processing_system7_0_DDR_Clk PORT DDR_Clk_n = processing_system7_0_DDR_Clk_n PORT DDR_CKE = processing_system7_0_DDR_CKE PORT DDR_CS_n = processing_system7_0_DDR_CS_n PORT DDR_RAS_n = processing_system7_0_DDR_RAS_n PORT DDR_CAS_n = processing_system7_0_DDR_CAS_n PORT DDR_WEB = processing_system7_0_DDR_WEB PORT DDR_BankAddr = processing_system7_0_DDR_BankAddr PORT DDR_Addr = processing_system7_0_DDR_Addr PORT DDR_ODT = processing_system7_0_DDR_ODT PORT DDR_DRSTB = processing_system7_0_DDR_DRSTB PORT DDR_DQ = processing_system7_0_DDR_DQ PORT DDR_DM = processing_system7_0_DDR_DM PORT DDR_DQS = processing_system7_0_DDR_DQS PORT DDR_DQS_n = processing_system7_0_DDR_DQS_n PORT DDR_VRN = processing_system7_0_DDR_VRN PORT DDR_VRP = processing_system7_0_DDR_VRP PORT FCLK_CLK0 = processing_system7_0_FCLK_CLK0 PORT FCLK_RESET0_N = processing_system7_0_FCLK_RESET0_N PORT M_AXI_GP0_ACLK = processing_system7_0_FCLK_CLK0 END # # Описание параметров и подключения экземпляра ядра параллельного порта ввода/вывода # общего назначения # BEGIN axi_gpio PARAMETER INSTANCE = axi_gpio_0 PARAMETER HW_VER = 1.01.b PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_BASEADDR = 0x41200000 PARAMETER C_HIGHADDR = 0x4120ffff BUS_INTERFACE S_AXI = axi_interconnect_1 PORT S_AXI_ACLK = processing_system7_0_FCLK_CLK0 PORT GPIO_IO = axi_gpio_0_GPIO_IO END # # Описание параметров и подключения экземпляра ядра шинного интерфейса AXI # BEGIN axi_interconnect PARAMETER INSTANCE = axi_interconnect_1 PARAMETER HW_VER = 1.06.a PARAMETER C_INTERCONNECT_CONNECTIVITY_MODE = 0 PORT INTERCONNECT_ACLK = processing_system7_0_FCLK_CLK0 PORT INTERCONNECT_ARESETN = processing_system7_0_FCLK_RESET0_N END
Схемотехническое представление приведенной аппаратной платформы системы сбора и обработки данных, отображаемое на странице Graphical Design View основного окна средств проектирования Xilinx Platform Studio, показано на рис. 35.
Подготовив спецификацию MHS разрабатываемой встраиваемой микропроцессорной системы, можно приступить к выполнению этапов синтеза, размещения и трассировки в кристалле аппаратной части, конфигурируемой на базе ресурсов программируемой логики PL. Все перечисленные этапы выполняются в среде САПР серии Xilinx ISE Design Suite, поэтому можно закрыть основное окно средств разработки аппаратной платформы встраиваемых микропроцессорных систем Xilinx Platform Studio. Прежде чем приступить к выполнению этих этапов, необходимо создать модуль описания верхнего уровня иерархии для проекта разрабатываемой системы в среде САПР серии Xilinx ISE Design Suite.
Продолжение следует
Статья опубликована в журнале «Компоненты и технологии» №5’2014.