Использование процессоров Blackfin®
для обработки видеоизображений
Кунал СИНХ (Kunal Singh) Рамеш БАБУ (Ramesh Babu) Перевод: Вадим ТОРГАНОВ Vadim.torganov@analog.com.ru
В любой системе распределение памяти и управление потоками данных являются решающими элементами для успешной разработки мультимедиаприложений. Процессоры Blackfin" имеют многоуровневую организацию памяти и параллельный периферийный интерфейс (PPI), поддерживающий механизм ПДП (DMA). При использовании в вашем приложении они могут обеспечить очень высокую эффективность системы.
Введение
В этой статье рассматриваются проблемы, связанные с обеспечением максимальной производительности процессоров ADSP в приложениях видеообработки:
• Оптимизация работы с памятью:
- Работа с внутренней памятью;
- Работа с памятью SDRAM;
- Управление доступом к внешним данным.
• Режимы DMA для захвата и воспроизведения видео через PPI:
- Входные режимы ITU-R-656;
- Вывод видеокадров ITU-R-656;
- Приоритет DMA и регистр управления трафиком.
Оптимизация работы с памятью
Архитектура процессоров Blackfin® поддерживает иерархическую память, что позволяет программисту иметь доступ к быстрой памяти меньшего объема для размещения там часто исполняющегося кода, и к памяти большего объема для буферов данных, относящихся к видеоприложениям. Память процессоров Blackfin® имеет унифицированное адресное пространство, куда входит внутренняя память первого уровня L1 (а в случае процессора ADSP-BF561 также и память второго уровня L2), синхронное динамическое ОЗУ (SDRAM) и пространство асинхронной памяти.
Работа с внутренней памятью
Память L1 работает на частоте ядра и, таким образом, имеет наименьшее время доступа по сравнению с другими областями памяти. Процессоры Blackfin® имеют отдельную память L1 для данных и программ.
Статическая (SRAM) память данных L1 состоит из однопортовых подсекций (банков); каждый такой банк содержит 4 кбайт памяти. Результатом такой организации является муль-типортовое поведение при одновременном
обращении к разным банкам или к одному четному и одному нечетному 32-битному слову внутри одного и того же 4-кбайтного банка.
На рис. 1 показано неоптимизированное размещение различных буферов в памяти. Каждый прямоугольный блок на рисунке
С
Core
Fetch
с
Буфер О Буфер 1
Буфер 2 Коэффициенты
/L-
\г
DMA
Access
Рис. 1. Неоптимизированное распределение памяти L1
с
Core
Fetch
•с
Core
Fetch
Буфер О
Буфер 1
Буфер 2
Коэффициенты
í>
DMA
Access
/L-
N-
Рис. 2. Оптимизированное распределение памяти L1
представляет 4-кбайтный банк внутренней памяти данных. Здесь внутренние шины данных используются неэффективно, поскольку процессор не может извлечь два слова данных одновременно.
Рис. 2 показывает оптимизированное распределение памяти среди 4-кбайтных банков памяти данных. Такое распределение памяти допускает одновременный доступ к ней двух устройств генерации адреса (DAG) и контроллера DMA, за счет чего обеспечивается максимальная пропускная способность шин данных.
В приложениях кодирования и декодирования видео оптимизированное распределение памяти уменьшает задержки доступа к памяти данных L1, связанные с одновременным обращением ядра и контроллера DMA.
Работа с памятью SDRAM
Контроллер SDRAM (SDC) позволяет процессору обмениваться данными с синхронной динамической памятью (SDRAM). Он способен поддерживать соединение с четырьмя внутренними банками SDRAM. Соответственно, в конечных приложениях, размещая буферы данных в разных внутренних банках, можно минимизировать задержки доступа ядра/DMA к данным. SDC может отслеживать по одной строке в каждом из четырех возможных внутренних банков. То есть переключение между четырьмя внутренними банками SDRAM будет осуществляться без каких-либо дополнительных задержек.
В приложениях обработки изображений видеокадр вводится в память при помощи PPI DMA. Из-за существенных размеров кадра вводимого изображения (например, форматы VGA, D-1 NTSC, D-1 PAL, 4CIF, 16CIF), каждый кадр должен быть захвачен в SDRAM через PPI с использованием канала DMA. Алгоритм может считывать точки блок за блоком из SDRAM и обрабатывать каждый блок по мере его поступления. Каждый последующий кадр PPI захватывает в другой буфер, пока ядро занято
Код
Видеофрейм О Видеофрейм 1
Опорный
фрейм
Не
используется
Не
используется
обработкой предыдущего. Поскольку ядро и контроллер DMA обращаются к SDRAM памяти одновременно, то для минимизации задержек доступа необходимо соответствующим образом размещать программный код, видеокадры и другие буферы в SDRAM.
Рис. 3 иллюстрирует неоптимальное распределение объектов по внутренним банкам памяти SDRAM. На рис. 3 программный код и один из буферов видеокадра помещены в нулевой внутренний банк SDRAM. Такой способ размещения порождает дополнительную задержку, потому что циклы выборки строки SDRAM происходят почти каждый системный такт. Причина — в чередовании обращений со стороны ядра (извлечение инструкций) и DMA к разным страницам одного и того же внутреннего банка SDRAM. Эта задержка может привести к ошибке переполнения (в случае захвата изображения) или не-дополнения (в случае вывода изображения) аппаратной очереди (FIFO) PPI. Для увеличения пропускной способности при доступе к внешней памяти необходимо размещать видео/эталонный буферы так, чтобы только один канал DMA обращался к банку SDRAM в любое заданное время.
Inst. Fetch DMA DMA
Рис. 4 иллюстрирует оптимизированное размещение объектов по внутренним банкам SDRAM. В этом примере распределения памяти в любой момент времени или ядро, или контроллер DMA осуществляют доступ в конкретный внутренний банк SDRAM памяти. Таким образом, задержки минимизированы, поскольку циклы выборки строк разбросаны среди сотен обращений к SDRAM.
Управление доступом
к внешним данным
Обращения к внешней памяти производятся более эффективно, если передача осуществляется в одном и том же направлении. При доступе к памяти SDRAM, группирование однонаправленных пересылок (то есть избежание частой смены направления) может снизить задержки передачи данных. Частые смены направлений в контроллере DMA могут привести к увеличению задержек из-за циклов записи, следующих непосредственно за чтением.
Режимы DMA для захвата и воспроизведения видео через PPI
Контроллер DMA процессора Blackfin® способен эффективно передавать данные между памятью и периферией. Разработчик имеет возможность выбрать соответствующие режимы DMA (например: режим остановки, автобуфер, или дескрипторные цепочки DMA) для передачи данных. Также, программист может выбрать приоритет DMA для конкретной периферии путем использования соответствующего канала DMA.
Порт PPI процессоров Blackfin® поддерживает режим промышленного стандарта ITU-R-656, а также режим ввода/вывода общего назначения с различными опциями внутренней и внешней синхронизации кадров. Целостное изображение может быть захвачено или отображено при помощи PPI в сочетании с соответствующим режимом DMA. Программисту следует выбрать конкретный режим DMA таким образом, чтобы изображе-
ние могло обрабатываться в реальном времени без потери кадров.
В приложениях кодирования изображения порт PPI может быть запрограммирован на работу в режиме дескрипторных цепочек DMA — для захвата кадров в два или более буферов. Ядро может обрабатывать один буфер, пока DMA заполняет другой буфер. Вы должны убедиться, что ядро и контроллер DMA не обращаются в один и тот же банк SDRAM, как уже обсуждалось выше.
В приложениях кодирования и декодирования изображения количество инструкций, выполняемых процессором в единицу времени (выраженное в MIPS) не является постоянным. Значение показателя MIPS зависит от коэффициента сжатия, содержания захватываемого изображения и т. д. В приложениях декодирования изображения, если декодируемый кадр еще не готов, PPI может передать последний декодированный кадр повторно. Чтобы реализовать такую возможность, порт PPI может быть запрограммирован на использование в режиме DMA с остановкой. Этот режим предоставляет больший контроль над данными, чем это необходимо для простого вывода изображения.
В режиме DMA с остановкой прерывание генерируется после каждого блока пересылки, а канал DMA при этом переводится в состояние паузы.
Таким образом, если следующий кадр еще не готов для отображения, предыдущий кадр может быть передан повторно. Это может быть сделано внутри функции обработки прерывания от PPI DMA.
Входные режимы ITU-R-656
Порт PPI поддерживает три входных режима для данных в формате ITU-R-656:
• Режим «Поле целиком»
• Режим «Активное видео»
• Режим «Только вертикальное гашение»
В приложениях кодирования изображения видеокадр можно вводить в режиме «Активное видео», так что будут захватываться только поля 1 и 2. Хотя ITU-R-656 имеет чересстрочный (interlaced) формат, алгоритмы могут требовать, чтобы видеоданные были доступны в прогрессивном (de-interlaced) формате. Используя канал Memory DMA (MDMA), программист может объединить вместе два поля видеокадра.
BLANKING
FIELD 1 ACTIVE VIDEO
BLANKING
FIELD 2 ACTIVE VIDEO
BLANKING
Рис. 6. Типичный формат видеокадра ITU-R-656
Для минимизации накладных расходов процессора на объединение полей кадра РРІ может осуществлять захват с пропуском одной строки после ввода каждой строки активного видео (как показано на рис. 7). В этом случае МБМЛ сможет добавить поле 2 к полю 1, заполняя пустые строки.
Рис. 8 иллюстрирует объединение видеополей с использованием механизма МЭМЛ. Данные поля 2 должны быть объединены с данными поля 1. Таким образом, пропущенные строки заменяются данными поля 2. Здесь адрес источника МБМЛ должен содержать адрес первой строки поля 2, а адрес назначения МБМЛ — первой пропущенной строки. Значения регистров МОМЛх_У_МООІРУ для обоих портов МБМЛ (источника и назначения) должны быть сконфигурированы для пропуска одной строки.
Вывод видеокадров ITU-R-656
РРІ в явном виде не обеспечивает формирования полного выходного потока ГГи-К-656 со всеми необходимыми преамбулами и интервалами гашения. Однако это можно сделать путем единовременного создания полного кадра в памяти и последующей его передачи через РРІ в нулевом режиме кадровой синхронизации. Видеоданные, коды гашения и управления могут быть сформированы в памяти перед началом вывода видеопо-
Единовременная инициализация горизонтальных, вертикальных и управляющих кодов в памяти
|---1 Данные активных полей,
---- обновляемые для каждого кадра
Рис. 9. Гашение и активное видео в памяти
тока. Информация о горизонтальном и вертикальном гашении может быть занесена в память однократно, после чего можно будет обновлять на покадровой основе только активные поля.
Приоритеты каналов DMA и регистр управления трафиком
В процессорах Ыаскйп® вся периферия способна работать в режиме БМЛ. По умолчанию каждое периферийное устройство связано с конкретным каналом БМЛ, который имеет свой собственный приоритет доступа к памяти. Каналы БМЛ с меньшими номерами имеют больший приоритет. Программисты могут назначать конкретный канал БМЛ периферийному устройству и, таким образом, изменить для него приоритет БМЛ.
По умолчанию РР1 использует канал с более высоким приоритетом, чем другие периферийные устройства. Если в приложении имеется несколько работающих параллельно потоков БМЛ, периферийные устройства с более высоким уровнем трафика или требованием готовности могут быть назначены
на каналы DMA с меньшим номером (то есть большим приоритетом) при помощи регистра DMA_PERIPHERAL_MAP.
С помощью регистра управления каналом DMA программист может влиять на направление передачи данных по внутренним шинам DMA (DAB, DCB и DEB). Управление трафиком обеспечивает возможность влияния на то, как часто может меняться направление передачи по шинам данных, за счет автоматической группировки в серии однонаправленных пересылок.
Шины DAB, DCB и DEB предоставляют периферийным устройствам, работающим в режиме DMA, средства доступа к внутренней и внешней памяти при небольшом снижении пропускной способности между ядром и памятью или даже практически без него.
Контроллер DMA использует шину DAB для доступа к DMA-совместимым периферийным устройствам. Шина DCB используется для доступа к внутренней памяти. Аналогично, шина DEB используется для доступа к внешней памяти через EBIU (модуль интерфейса внешней шины).
С помощью регистра управления каналом DMA программист имеет возможность влиять на направление передачи данных по каждой шине независимо, группируя однонаправленные передачи в серии.
На рис. 10 показаны поля регистра DMA_TC_PER. Например, рассмотрим приложение, в котором задействован MDMA вместе с PPI DMA и используется регистр управления трафиком. Если PPI DMA и MDMA одновременно требуется шина DEB (при этом направление передачи MDMA «по трафику» а PPI DMA — «против трафика»), MDMA первым получит доступ к шине DEB, даже несмотря на более высокий приоритет PPI DMA. Поскольку PPI DMA запрос осуществляется «против трафика» шины DEB, эффективный номер приоритета PPI DMA увеличится на 16, и в результате MDMA получает доступ к шине DEB. PPI DMA получит доступ к шине DEB, когда обнулится соответствую-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 О
00000000 00000000
Reset = 0x0000
MDMA_ROUND_ROBIN PERIOD[4:0] ----------
Maximum length of MDMA round robin bursts. If not zero, any MDMA stream which receives a grant is allowed up to that number of DMA transfers, to the exclusion of the other MDMA streams.
DAB_TRAFFIC_PERIOD[2:0]-------
000 - No DAB bus transfer grouping performed Other - Preferred length of unidirectional bursts on the DAB bus between the DMA and the peripherals
. DCB_TRAFFIC_PERIOD[3:0]
000 - No DCB bus transfer grouping performed Other - Preferred length of unidirectional bursts on the DCB bus between the DMA and internal L1 memory
DEB_TRAFFIC_PERIOD[3:0]
000 - No DEB bus transfer grouping performed Other - Preferred length of unidirectional bursts on the DEB bus between the DMA and external memory
Рис. 10. Регистр управления трафиком DMA
Таблица. Основные параметры семейства процессоров Blackfin®
Номер компонента Тип корпуса* Производительность, МГц Объем ОЗУ, кбайт Температурный диапазон, °С Основная периферия Стоимость ($US@10K)***
ADSP-BF531SBBC400 160 MBGA 400 52 -40...+85 PPI UART SPI 2 SPORTs 3 таймера 5,95
ADSP-BF531SBBCZ400 160 MBGA 400 52 -40...+85 5,95
ADSP-BF531SBST400 176 LQFP 400 52 -40...+85 4,95
ADSP-BF531SBSTZ400 176 LQFP 400 52 -40...+85 4,95
ADSP-BF531SBBZ400 169 PBGA 400 52 -40...+85 8,45
ADSP-BF532SBBC400 160 MBGA 400 84 -40...+85 7,50
ADSP-BF532SBBCZ400 160 MBGA 400 84 -40...+85 7,50
ADSP-BF532SBST400 176 LQFP 400 84 -40...+85 7,50
ADSP-BF532SBSTZ400 176 LQFP 400 84 -40...+85 7,50
ADSP-BF532SBBZ400 169 PBGA 400 84 -40...+85 9,95
ADSP-BF533SBBC500 160 MBGA 500 148 -40...+85 12,95
ADSP-BF533SBBCZ500 160 MBGA 500 148 -40...+85 12,95
ADSP-BF533SBBZ500 169 PBGA 500 148 -40...+85 15,50
ADSP-BF533SKBC600 160 MBGA 600 148 0...+70 15,95
ADSP-BF533SKBCZ600 160 MBGA 600 148 0...+70 15,95
ADSP-BF533SKBC750 160 MBGA 756 148 0...+70 59,95
ADSP-BF534BBC-4A1 182 MBGA 400 132 -40...+85 CAN PPI/SPI TWI 8 таймеров 48 GPIO 2 SPORTs/UARTs 9,65
ADSP-BF534BBCZ-4A1 182 MBGA 400 132 -40...+85 9,65
ADSP-BF534BBCZ-4B1 208 MBGA 400 132 * * 5 + 40 -4 9,65
ADSP-BF534BBC-5A1 182 MBGA 500 132 -40...+85 13,10
ADSP-BF534BBCZ-5A1 182 MBGA 500 132 -40...+85 13,10
ADSP-BF534BBCZ-5B1 208 MBGA 500 132 * * 5 + 40 -4 13,10
ADSP-BF535PBB-200 260 PBGA 200 308 -40...+85 2 SPI 2 SPORTs USB Device PCI 22,00
ADSP-BF535PKB-300 260 PBGA 300 308 0...+70 25,00
ADSP-BF535PBB-300 260 PBGA 300 308 -40...+85 27,00
ADSP-BF535PKB-350 260 PBGA 350 308 0...+70 31,25
ADSP-BF536BBC-3A1 182 MBGA 300 100 -40...+85 10/100 Ethernet CAN PPI TWI 8 таймеров 48 GPIO 2 SPORTs/UARTs SPI 8,05
ADSP-BF536BBCZ-3A1 182 MBGA 300 100 -40...+85 8,05
ADSP-BF536BBCZ-3B1 208 MBGA 300 100 -40...+85 8,05
ADSP-BF536BBC-4A1 182 MBGA 400 100 -40...+85 9,95
ADSP-BF536BBCZ-4A1 182 MBGA 400 100 -40...+85 9,95
ADSP-BF536BBCZ-4B1 208 MBGA 400 100 -40...+85 9,95
ADSP-BF537BBC-5A1 182 MBGA 500 132 -40...+85 13,50
ADSP-BF537BBCZ-5A1 182 MBGA 500 132 -40...+85 13,50
ADSP-BF537BBCZ-5B1 208 MBGA 500 132 -40...+85 13,50
ADSP-BF537KBC-6A1 182 MBGA 600 132 0...+70 16,55
ADSP-BF537KBCZ-6A1 182 MBGA 600 132 0...+70 16,55
ADSP-BF537KBCZ-6B1 208 MBGA 600 132 0...+70 16,55
ADSP-BF561SKBCZ500 256 MBGA 500 328 0...+70 2 PPIs UART 12 таймеров 2 SPORTs SPI 18,75
ADSP-BF561SBB500 297 PBGA 500 328 -40...+85 21,95
ADSP-BF561SBB600 297 PBGA 600 328 -40...+85 21,95
ADSP-BF561SKBCZ600 256 MBGA 600 328 0...+70 22,95
ADSP-BF561SKB750 297 PBGA 756 328 0...+70 85,72
* Типы корпусов: LQFP (Low-profile Quad Flat Pack); MBGA (Mini Ball Grid Array); PBGA (Plastic Ball Grid Array) ** Доступен также в расширенном промышленном температурном диапазоне (-40...+105 °C).
*** Приведенные цены действительны на территории США.
Свяжитесь с местным дистрибьютором для уточнения информации по наличию.
щий счетчик в регистре управления трафиком (или когда трафик прекратится либо поменяет направление сам по себе).
Для более подробной информации о регистре управления трафиком DMA обращайтесь к аппаратному руководству по ADSP-BF533 и ADSP-BF561.
Шинный арбитраж
При доступе к внутренней памяти L1 приоритет DMA выше, чем у ядра. По умолчанию, при доступе к внешней памяти, ядро имеет приоритет выше, чем DMA. При установке бита CDPRIO в регистре EBIU_AMGCTL, все транзакции DEB к внешней шине имеют приоритет перед обращениями ядра к внешней памяти. Программисты могут использовать этот бит, исходя из конкретных требований их приложения.
DMA и когерентность кэша В приложении с включенным кэшем, если ядро и DMA обращаются к совместно используемому буферу, следует обеспечить когерентность кэша за счет инвалидации (invalidating)* данных в разделяемом буфере. В процессорах Blackfin® содержимое кэша может быть инвали-дированно при помощи системных регистров, отображенных в память. Кроме того, средства разработки VisualDSP++® 4.0 предоставляют библиотечные функции (вызываемые из C кода) для инвалидации конкретных банков кэша. Программное обеспечение может производить ин-валидацию кэша каждый раз перед доступом к совместно используемому volatile буферу.
Области применения процессоров Blackfin®
ADSP-BF531
Для потребительского аудио, встроенных модемов, биометрии, промышленного управления и портативного тестового оборудования.
ADSP-BF532
Сбалансированное соотношение цена/производительность для систем цифрового радио, POS терминалов, медицинского оборудования, телефонии и цифровых коммуникаций.
ADSP-BF533
Высокая производительность для потребительского видео, систем видеонаблюдения и безопасности, широкополосных домашних шлюзов и автомобильных систем наблюдения.
ADSP-BF534
Поддержка интерфейса CAN для автомобильных, промышленных и медицинских приложений.
ADSP-BF535
Оптимизирован для сетевых приложений и Интернет, офисных/сетевых коммутаторов, а также приложений промышленного управления и автоматизации.
ADSP-BF561
Оптимизирован для симметричных мультипроцессорных систем высокопроизводительной обработки сигналов и мультимедиа.
ADSP-BF536/7
Встроенная поддержка сетевого интерфейса для видео, промышленности, биометрии, измерительной техники, медицинских и бытовых приборов.
Заключение
Учитывая различные факторы, обсуждаемые в данной статье, вы можете обеспечить максимальную производительность процессоров Blackfin® в приложениях обработки видео изображения. ■
Литература
1. ADSP-BF533 Blackfin Processor Hardware Reference. Revision 3.1 May 2005. Analog Devices, Inc.
2. ADSP-BF561 Blackfin Processor Hardware Reference. Revision 1.0, July 2005. Analog Devices, Inc.
* Инвалидация — процесс придания данным, находящимся в кэше статуса недействительных. Фактически речь идет об удалении данных из кэша.