Система маршрутизации высококачественных звуковых потоков

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

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

На рисунке 3 изображена структура аппаратной части устройства маршрутизации звуковых потоков. Центральным элементом устройства является специализированная система на кристалле (СНК), реализована внутри ПЛИС. СНК включает в себя аппаратный процессор сетевых пакетов, который выполняет аппаратную обработку пакетов со звуком, центральный процессор, контроллер звукового ввода-вывода, контроллер памяти, контроллеры Ethernet MAC и арбитр шины. Другие элементы, такие как ОЗУ, ПЗУ, приемник Ethernet и RS232, аудиокодеки и элементы управления и индикации подключены непосредственно к ПЛИС.

Система маршрутизации высококачественных звуковых потоковОсновные требования, предъявляемые к СНК:

—    наличие прямого доступа к памяти со стороны периферийных устройств (режим ПДП, необходимый для скоростной записи и чтения данных из ОЗУ модулями, которые занимаются приемом, обработкой и передачей пакетов, содержащих аудиоданные)

—    максимально простая и эффективная системная шина.

Эти два требования являются очень важными для будущего устройства, так как они определяют его быстродействие.

Среди современных software-процессоров, которые могут быть использованы в устройстве стоит рассмотреть MicroBlaze, LEON 2 и OpenRISC 1200. Все три процессора являются 32-разрядными RISC-процессорами. В LEON 2 и OpenRISC 1200 является 5-ступенчатые конвейеры, в MicroBlaze может использоваться 3-х или 5-ступенчатый конвейер.

LEON 2 и OpenRISC 1200 доступны бесплатно по лицензии LGPL, а MicroBlaze доступен на платной основе от компании Xilinx и предназначен для использования только внутри ПЛИС, выпускаемых этой компанией. В регистровых файлах LEON2 присутствуют теневые регистры, повышающие быстродействие, в остальных процессоров их нет и общее количество регистров меньше.

Во всех трех процессоров доступна кэш-память, построенная по Гарвардской архитектуре, возможные размеры кэша у процессоров примерно одинаковы. LEON2 отличается поддержкой 2-х или 4-канального ассоциативного кэша, кроме кэша с прямым отображением. MicroBlaze может кэшировать только участки памяти со смежными адресами, в то время как OpenRISC и LEON 2 могут кэшировать данные, расположенные в любых адресам памяти.

MicroBlaze изначально оптимизирован только для ПЛИС от Xilinx и использование этого процессора позволяет эффективно использовать ресурсы микросхемы для повышения быстродействия и воспламенения минимального объема кристалла.

MicroBlaze доступен только на коммерческой основе, и если в дальнейшем появится необходимость изготовления специализированной заказной микросхемы с его использованием, придется потратить большие средства на приобретение лицензии. Сильной стороной OpenRISC 1200 является использование системной шины Wishbone. Это довольно простая и в то же время мощная системная шина с поддержкой различных режимов работы. LEON2 использует гораздо более усложненную шину AMBA и при этом по основным параметрам очень близок к OpenRISC 1200.

Учитывая преимущества OpenRISC 1200 по сравнению с LEON2 и невозможность использования MicroBlaze из-за его закрытости, было принято решение использовать в устройстве маршрутизации процессор OpenRISC 1200.

Одной из проблем, возникающих в процессе разработки устройства, является отсутствие законченных открытых реализаций контроллера памяти DDR2 для системной шины Wishbone. Поэтому дополнительно необходимо реализовать   такой контроллер. Для этого используются наработки сообщества OpenCores [4] в этой области, в частности, контроллер Versatile Memory Controller. Проприетарные реализации использовать нельзя, так как это повлечет проблемы в виде дополнительных затрат на приобретение лицензии и невозможность опубликования в открытом доступе этой части устройства.

Программная часть устройства включает в себя: подсистему управления периферией — модуль, отвечающий за работу периферийных устройств, модуль реализации TCP / IP стека (устройство имеет только контроллер уровня Ethernet, необходимо реализовать TCP / IP стек для работы в сети), подсистему сетевого конфигурирования — сервис, с помощью которого можно настроить работу устройства, подсистему работы с управляющим LWCP протоколом и систему обновления ПО — модуль, который позволяет удаленно обновлять ПО и устройством ядро, которое является связующим элементом между собой все модули.

Учитывая большой круг задач, которые должна выполнять программная часть системы, и необходимость организации эффективной работы всех ее модулей, необходимо использовать встроенную операционную систему в качестве основы. В устройстве используется ОС Linux. Эта ОС уже портирована для процессора OpenRISC 1200 и поддерживается сообществом OpenCores.

В Linux доступна готова реализация стека протоколов TCP / IP, а также большое количество вспомогательных утилит и готовых приложений, которые можно использовать в устройстве. Недостатком данной системы является большое по сравнению с другими, загрузка процессора для выполнения системных задач.

Среди других вариантов рассматривалась разработка без использования встроенной ОС, а также ОС Micrium uC / OS — II и FreeRTOS, однако без использования ОС разработка многократно усложняется, uC / OS — II не подходит, потому что есть проприетарной, а FreeRTOS по сравнению с Linux гораздо меньше возможностей.