Создание интерфейса между ПЛИС и МК


PDF версия

В половине всех разработок встраиваемых систем ПЛИС соседствует с микроконтроллером (МК). В таких схемах ПЛИС имеют различное функциональное назначение, начиная с интерфейсных логических схем и заканчивая заказными СФ-блоками и ускорителями для алгоритмов с большим объемом вычислений. Беря на себя некоторые задачи по обработке данных, ПЛИС повышают производительность системы, освобождая МК от работы с большим количеством циклов. ПЛИС также обеспечивают превосходные рабочие характеристики и гибкость, соответствуя изменяющимся стандартам.

Существуют две базовые реализации проектов МК+ПЛИС. В первой из них программное ядро МК помещается в логическую структуру ПЛИС, а во второй стандартный МК используется с дискретной ПЛИС. Применение программного ядра в ПЛИС может оказаться эффективным, но дорогостоящим и энергозатратным методом по сравнению с использованием стандартного МК, например, с 32-разрядным ARM-ядром. В результате только 1/3 проектов ПЛИС+МК осуществляется с установленным внутри логики ПЛИС ядром МК. Оставшиеся 2/3 разработок используют стандартный МК по соседству с дискретной ПЛИС.

Следует заметить, что ни стандартные МК, ни ПЛИС не создавались в расчете на эффективное взаимодействие друг с другом. Они даже используют разные языки. По этой причине вопрос обеспечения интерфейса между ними может оказаться непростым. ПЛИС не имеют специализированной логической схемы для установления связи с МК. Этот блок логики требуется создать с нуля. Во-вторых, связь между микроконтроллером и ПЛИС асинхронна. Особое внимание требуется уделить тому, чтобы повторно синхронизировать МК с тактовым генератором ПЛИС. Наконец, имеется проблема ограничений как на интерфейсной, так и на шине микроконтроллера. Передача информации между МК и ПЛИС обычно занимает несколько циклов МК и отнимает ресурс (PIO или EBI), используемый для эффективной передачи данных. При этом следует избегать ограничений со стороны внешней SRAM- или флэш-памяти, а также на шине МК.

Для обеспечения интерфейса между ПЛИС и МК используются три аппаратные опции: блок программируемого ввода-вывода (PIO); интерфейс внешней шины (EBI) и специализированный встроенный в МК интерфейс между расширенной высокоскоростной шиной (AHB — Advanced High-Speed Bus) и ПЛИС. Выбор того или иного метода зависит от конечного приложения и поставленной задачей.

PIO-интерфейс

Сопряжение МК с ПЛИС через PIO — относительно простая задача при передаче простых данных, состоящих из 32 бит адреса, 32 бит данных и нескольких сигналов управления. Для такой передачи требуется 32-разрядный PIO и дополнительно два бит для другого PIO (см. рис. 1).

Рис. 1. Интерфейс между PIO и ПЛИС

Для передачи данных на ПЛИС направление двусторонних буферов в PIO устанавливается на выход. Чтение с ПЛИС выполняется схожим образом: направление буфера на PIO сначала устанавливается на выход, а затем направление изменяется на вход для чтения данных с ПЛИС.

Для установления требуемой связи между ARM-микроконтроллером и ПЛИС требуется более сложный алгоритм, чем для базовой передачи. Особое внимание при этом необходимо уделить подтверждению приема данных, например для того, чтобы данные не потерялись из-за недостаточной скорости или циклов ожидания с каждой стороны.

Время доступа рассчитывается следующим образом:

Тдост. PIO = t1 + адресная фаза + t2 +
+ информационная фаза

При использовании компилятора GCC с максимальной оптимизацией системе требуется около 55 циклов AHB для выполнения операции записи на ПЛИС (см. рис. 2).

Рис. 2. Запись на ПЛИС с помощью PIO

Предполагая, что время t2 (ожидание отклика готовности от ПЛИС) занимает около 25 циклов AHB, системе требуется приблизительно 85 циклов AHB на выполнение операции чтения данных от ПЛИС (см. рис. 3).

Рис. 3. Чтение данных с ПЛИС с помощью PIO

Интерфейс со стороны МК устроен достаточно просто. Однако в ПЛИС должна быть реализована специальная логика для декодирования всего трафика, поступающего с PIO. В большинстве случаев трафик от микроконтроллера полностью асинхронный. По этой причине ПЛИС должна быть в состоянии выполнить передискретизацию сигналов управления от МК, иначе она пропустит временное окно, и данные не поступят адресату внутри ПЛИС.

Поскольку именно процессор отвечает за занятость PIO, время обработки используется нерационально. До тех пор пока центральный процессор занят передачей данных, он не может выполнять другие операции. Таким образом, это решение усложняет обработку данных в системе. Метод прямого доступа к памяти (ПДП) не имеет возможности использовать интерфейс PIO, поэтому разработчик ПО должен ограничить ширину полосы данных, чтобы учесть другую канал связи с МК. Например, если подпрограмма требует 100% циклов процессоров, выполняемых параллельно с последовательной передачей (SPI, USART или TWI) данных в или от ПЛИС, один из этих двух процессов должен находиться в состоянии ожидания. Если данные, поступающие в или от ПЛИС, не буферизуются вовремя, возникает переполнение к моменту поступления следующей порции байтов. По сути, встроенный процессор становится устройством по перемещению данных.

Реализация интерфейса с помощью модуля EBI

Многие 32-разрядные МК оснащены модулем интерфейса внешней шины (EBI — External Bus Interface), предназначенным для передачи данных между внешними устройствами и контроллерами памяти ARM-устройств. Эти контроллеры способны управлять несколькими типами внешней памяти и периферийными устройствами, например SRAM, PROM, EPROM, EEPROM, флэш-памятью и SDRAM.

Модуль EBI можно также применять для подключения к ПЛИС, пока ПЛИС управляет встроенными интерфейсами памяти. Использование интерфейса статической памяти (SRAM) на модуле EBI является предпочтительным для установления связи с ПЛИС, поскольку он прост и хорошо известен большинству разработчиков. Как и в случае с интерфейсом PIO, ПЛИС должна включать модуль, который понимает синхронизацию SRAM и способен выдавать ответный сигнал микроконтроллеру (см. рис. 4).

Рис. 4. Интерфейс между EBI и SMC

На рисунке 5 показана стандартная синхронизация чтения данных для EBI-интерфейса с использованием интерфейса памяти SMC, а на рисунке 6 — стандартный цикл записи.

Рис. 5. Цикл чтения EBI-SMC
Рис. 6. Цикл записи EBI-SMC

EBI-интерфейс работает быстрее, чем PIO, т.к. у EBI имеется собственная система ввода-вывода и большая часть сигналов параллельна. Однако если внешнее устройство работает медленно или входит в состояние ожидания, преимущества скорости EBI нивелируются.

Как и PIO-интерфейс, EBI-интерфейс управляется процессором или другим ведущим AHB-устройством. Таким образом, достижимая ширина полосы у EBI-интерфейса также зависит от программного обеспечения и от того, располагает ли процессор достаточным временем. Безусловно, имеется ограничение на ширину полосы, которое и в этом случае ограничивает возможности встраиваемого процессора при выполнении других системных функций, для чего он и предназначен.

Специализированный интерфейса ПЛИС на МК

Микроконтроллеры с ядром ARM7 имеют специализированный интерфейс, который позволяет ПЛИС получать прямой доступ к внутренней AHB-шине МК с ПДП через два ведущих AHB-устройства и четыре ведомых AHB-устройства. Одно дополнительное ведомое AHB-устройство можно использовать для перераспределения памяти ПЗУ с помощью технологии внешней памяти ZBT RAM (RAM с нулевым временем переключения) через ПЛИС с программируемой функцией перераспределения ПЗУ при запуске.

Этот интерфейс также обеспечивает ПЛИС доступ к 14 ведомым устройствам с шинами APB (Advanced Peripheral Bus), двум полнодуплексным каналам ПДП, а также обеспечивает до 13 кодированных прерываний с установкой приоритетов (IRQ), два некодируемых IRQ для передачи данных с ПДП и программируемые 32-бит вводы-выводы для совместного пользования. Интерфейс ПЛИС получает доступ к AHB-шине, предварительно установив МК в режим ведущего или ведомого устройства (см. рис. 7).

Рис. 7. МК со специализированным интерфейсом ПЛИС

Интерфейс ПЛИС основан на нескольких параллельно-последовательных преобразователях, которые кодируют и декодируют весь трафик между МК и ПЛИС. Для того чтобы установить связь и синхронизацию между обоими устройствами, необходимо соблюсти следующие требования.

ПЛИС должна компенсировать рассогласование тактовых частот и устранять задержку. В семействах ПЛИС компании Xilinx использование менеджера DCM (Digital Clock Manager) обязательно, чтобы устранять задержку и управлять генерацией требуемых тактовых сигналов. Устройства компании Altera требуют ФАПЧ. ПЛИС должна также обеспечивать режимы конфигурирования и сброс встроенного интерфейса МК. ПЛИС должна также обеспечить тактовый сигнал последовательной связи с МК, частота которого может достигать 100 МГц для коммерческих устройств. Соотношение между внутренним тактовым сигналом и синхросигналом в линии синхронизации должно быть около 0,8 или ниже (ARM Clk/Serial Clk).

Основу интерфейса ПЛИС составляет ряд модулей, которые кодируют и декодируют внутренние AHB-транзакции. Кодированные и декодированные данные передаются через MPIO с помощью специализированных параллельно-последовательных преобразователей каждого ведущего и ведомого устройств. Из-за большого количества передаваемых бит на одну отправку данных требуется несколько циклов синхронизации AHB-шины. Количество этих циклов зависит от соотношения между частотами тактового сигнала AHB-шины в ARM7, синхросигнала в линии синхронизации и тактового сигнала AHB-шины в ПЛИС. Поскольку частота тактового сигнала AHB-шины микроконтроллера не зависит от частоты тактового сигнала AHB-шины в ПЛИС, МК и ПЛИС могут работать на разных частотах. Даже ведущие и ведомые устройства внутри ПЛИС могут работать на различных частотах.

Каждый блок параллельно-последовательного преобразователя на МК и ПЛИС имеет дополнительный конечный автомат, который сообщается с шиной AHB. Таким образом, этот интерфейс может управлять одновременными передачами с любой стороны, что устраняет ограничения, в отличие от использования таких топологий как EBI или PIO.

Микроконтроллеры с прямым интерфейсом ПЛИС также имеют каналы ПДП почти на каждом периферийном устройстве, причем несколько ПДП-каналов выделено под интерфейс ПЛИС. ПДП-каналы поддерживаются многоканальным периферийным ПДП-контроллером (Peripheral DMA Controller — PDC), который освобождает ЦП от передачи данных между ПЛИС, периферией и памятью, как и в предыдущих методах. Это позволяет избежать ограничений на ширину полосы стандартного ядра ARM7, которая в ряде случае полностью монополизируется передачей данных со скоростью всего 4 Мбит/c.

Разгружая ЦП, PDC-контроллер обеспечивает скорость передачи данных до 12 Мбит/с. При этом 85% циклов блока ЦП доступны для обработки. Несколько ПДП-каналов выделяются под интерфейс ПЛИС для связи периферийных устройств (в зависимости от приложения) и интерфейсов с PDC без вмешательства со стороны МК. Применение выделенных ПДП-каналов в PDC освобождает ARM-процессор для выполнения ресурсоемких задач и увеличивает общую производительность системы наряду с шириной полосы передачи данных (см. рис. 8).

Рис. 8. Интерфейс между ARM7 и ПЛИС

Модуль параллельно-последовательного преобразователя управляет всеми шинами AHB и последовательными каналами связи. Он состоит из конечного автомата и сдвигового регистра. Конечный автомат распознает шину и устанавливает с ней связь. Если ведущее устройство начинает передачу данных (операции чтения/записи), конечный автомат входит в состояние ожидания с помощью HREADY в соответствии с протоколом AHB. Конечный автомат управляет количеством введенных циклов ожидания на основе соотношения между частотами тактовых сигналов AHB и синхросигнала в линии синхронизации. Чем меньше это соотношение, тем меньше количество вводимых циклов ожидания.

Конечный автомат управляет сдвиговым регистром, который управляет всеми перемещаемыми данными между МК и ПЛИС, передавая данные по два бита на цикл. Если скорость синхросигнала в линии синхронизации установлена равной 100 МГц, скорость передачи сдвигового регистра составляет 200 Мбит/с.

Модули параллельно-последовательного преобразователя, которые управляют ведущими устройствами A/B, ведомыми устройствами A/B и C/D, программируются при сбросе с помощью модуля режимов в ПЛИС, чтобы максимально увеличить количество доступных портов ввода-вывода. Разработчик может пользоваться всеми десятью линиями ввода-вывода в единичной последовательной конфигурации, при этом последовательный модуль станет управлять только одним AHB-интерфейсом. Например, если пользователю требуется только ведущее AHB-устройство А, последовательный модуль, управляющий ведущими устройствами, конфигурируется в единичной последовательной конфигурации. Она оптимизирует количество передаваемых бит между сдвиговыми регистрами, ускоряя посылку транзакций между МК и ПЛИС (см. рис. 9).

Рис. 9. Последовательная единичная конфигурация

Другой возможностью является конфигурирование последовательного модуля для управления двумя AHB-интерфейсами в последовательной спаренной конфигурации, в которой 10 линий ввода-вывода коллективно используются между двумя AHB (ведущие/ведомые устройства). В этом случае скорость передачи данных между МК и ПЛИС ниже, но ширина полосы больше, т.к. задействованы два AHB-интерфейса. Спаренная конфигурация повторно использует половину выделенных портов ввода-вывода для другого AHB-интерфейса (см. рис. 10).

Рис. 10. Последовательная спаренная конфигурация

Логическая схема интерфейса ПЛИС

При реализации интерфейса ПЛИС с помощью EBI или PIO инженер должен записывать RTL-код, позволяющий ПЛИС сообщаться с МК. Поставщики МК с прямым интерфейсом ПЛИС обеспечивают все коды RTL для кодирования и декодирования связи с соответствующими ограничениями для каждой ПЛИС того или иного производителя. Этот блок логики производит возврат в исходное состояние и обеспечивает в нем требуемые режимы. RTL-коды поставщика позволяют выбрать определенную функциональность. По умолчанию все биты режима являются нулями (см. табл. 1).

Таблица 1. Биты режима

Бит режима

Описание

0

1

0

Internal ROM

Используется внутренняя ROM

Используется внешняя ZBT RAM

1

Masters

Используется только ведущее устройство А

Используются ведущие устройства А и В

2

Slaves A-B

Используется только ведомое устройство А

Используются ведомые устройства А и В

3

Slave C-D

Используется только ведомое устройство С

Используются ведомые устройства С и D

4

PIOB

Используется PIOB

Используются IRQ, PDC, APB

5

Режим CAP7 in ARM используется только для эмуляции CAP7

Режим CAP7Е

Режим эмуляции CAP7-ARM

6

Disable Pullups

Используется Pullups

Отключение Pullups

7

ADC/LVDS используется только для эмуляции CAP7

Используется АЦП

Используется LVDS

Для реализации ведущих и ведомых AHB-устройств в интерфейсе ПЛИС можно использовать стандартный блок от поставщика. Например, в блоке ПЛИС модуль Custom MP позволяет свести к минимуму усилия, направленные на интеграцию периферийных устройств AHB/APB. Использование этого блока позволяет разработчику легко перенести двухкристальную реализацию МК+ПЛИС на однокристальный настраиваемый МК, т.к. логическая схема в ПЛИС тестируется уже в системе.

Выбор внешней памяти ZBT-RAM и NVM/SDRAM/SRAM производится с учетом конкретных требований приложений и системы. Разработчики также имеют возможность добавить в ПЛИС логику non-AHB, обеспечивающую другие функции, не связанные с шиной AHB.

Как уже отмечалось, скорость передачи данных зависит от соотношения между частотами всех тактовых сигналов, относящихся к каналу связи между МК и ПЛИС, а также от выбора единичного или спаренного режима.

В режиме единичной конфигурации требуются четыре цикла синхронизации AHB-шины для передачи всей AHB-информации на интерфейс AHB от МК на ПЛИС, и наоборот (см. рис. 11). В режиме спаренной конфигурации требуются восемь циклов тактовой частоты AHB-шины для передачи всей информации на спаренный AHB-интерфейс от МК на ПЛИС, и наоборот.

Рис. 11. Расчет времени передачи данных чтения/записи при прямом сопряжении с ПЛИС

При передаче данных между ARM7-микроконтроллером и ПЛИС время учитывается следующим образом:

t1: время на два стандартных цикла AHB;

t2: время на передачу запроса в ПЛИС (четыре цикла при единичном AHB-интерфейсе, восемь — при двойном);

t3: время на отклик ПЛИС-периферия;

t4: время на передачу отклика на CAP7E (четыре цикла при единичном AHB-интерфейсе, восемь — при двойном);

t5: время на чтение отклика/данных, поступающих от ПЛИС на внутреннюю AHB-шину CAP7E;

t6: время на заявленные циклы ожидания.

Для аппроксимации времени доступа от ARM-ядра к периферийным устройствам используется следующая формула:

TДост. = t1+ t2 + t3 + t4 + t5.

Примечание. t1 и t5 — продолжительность циклов AHB-шины, которыми можно пренебречь по сравнению с временем PIO и EBI.

Заключение

В случаях, когда скорость передачи данных низкая, в качестве интерфейса между МК и ПЛИС достаточно использовать PIO или EBI. Однако трафик с высокой скоростью передачи между МК и ПЛИС или между периферией и устройствами памяти может монополизировать циклы блока ЦП и создать ограничения для периферии. Например, достаточно большой объем данных, передаваемых от кадрового буфера на ЖКД, может переполнить как блок ЦП, так и EBI-интерфейс. Такое приложение лучше выполняется с помощью прямого интерфейса между МК и ПЛИС, позволяя данным ЖКД передаваться через ПДП. Благодаря этому методу процессор освобождается от обработки данных, а EBI-интерфейс — для передачи других данных.

Кроме того, определенная в ПЛИС логика на шине AHB выглядит для МК так, как если бы она находилась внутри его. Благодаря этому переход на настраиваемый микроконтроллер намного упростится в будущих разработках.

Оставьте отзыв

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