Перейти к содержанию
    

Lionet

Участник
  • Постов

    36
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Lionet


  1. Есть модуль ЦАП, принимающий данные по два отсчёта за такт обмена. Т.е. частота оцифровки сигнала 500 МГц, а обмен идёт на 250 МГц, но по два отсчёта. Модуль подключён к ПЛИС.

     

    Есть сигнал с частотой оцифровки 250 МГц. Соответственно, необходимо произвести передискретизацию (интерполяцию) сигнала на частототу оцифровки 500 МГц и, далее, группировку симплов парами.

     

    Проблема в том, что привычные методы (например, FIR и CIC ядра для ПЛИС), выдают по одному отсчёту за такт и требуют тактовой частоты не менее 500 МГц, соответственно.

    На такой частоте проект у меня не собирается даже в пустой ПЛИС.

    Само по себе это странно, используется Kintex-7, Xilinx FIR пишет в конфигураторе допустимую тактовую до 700 с лишним МГц, но, возможно, проблема в том, что используется LabView FPGA и это добавляет

    какие-то дополнительные модули, не дающие проекту собраться на такой частоте. На 250 МГц всё собирается нормально даже в больших проектах.

     

    Есть ли какие-то методы, позволяющие проводить интерполяцию "параллельно", получая сразу N-й и N-1 отсчёты выходного сигнала?

  2. Добрый день

     

    Есть Vivado и SDK, версия 2014.4 и отладочные платы (ZC706, ZedBoard и другие).

     

    Есть несколько сложностей с корректным взаимодействием между Вивадой и SDK, и вообще

    иделогией Xilinx в этом плане. Разъясните, пожалуйста, кто "в теме".

     

    1. Vivado: Export hardware - здесь момент следущий:

    опция "Include bitstream" - насколько я понимаю, если нам нужен только процессор (PS) без программируемой логики (PL),

    то создаём Block design, добавляем Zynq Processing system, настраиваем, экспортируем без Include bitstream (его и не будет),

    работаем в SDK как с обычным ARM-процессором. Так?

     

    Если мы что-то насоздавали в ПЛИС, то генерируем bitstream и экспортируем с ним. Но тогда возникает проблема

    синхронизации файлов - копия битстрима уходит в SDK и, если мы потом что-то изменим в FPGA-коде, SDK всё равно будет

    использовать старый вариант. Можно, конечно, попробовать обновить данные путём Change Hardware Platform Specification в SDK

    или вручную скопировать новый битстрим, но это какие-то костыли. Непонятно.

     

    2. SDK. Создание конфигурации отладки/выполнения (Debug/Run configurations) приложения.

     

    Вообще, по логике должно быть два варианта:

    1) полный сброс системы, заливка указанного пользователем bitstream, загрузка в память приложения и его отладка.

    Настройку процессора можно было бы сделать в виде Си кода в начале приложения ну или tcl-скриптами, как сейчас, но

    как-то более прозрачно.

    2) сброс только процессора (если в ПЛИС ничего менять не надо, для экономии времени), инциализация процессора,

    загрузка и запуск приложения.

     

    У Xilinx всё как-то хитрее - в окнах Run Configurations, Debug Configurations и Program FPGA

    кнопки Search (которая позволяет, видимо, выбрать файл (bitstream или скрипт) из текущей Hardware Platform Specification) и

    Browse (позволяющая выбрать произвольный файл) становятся активными и неактивными по каждый раз

    по-новому по какому-то неведомому алгоритму.

    Опция Run ps7_post_config (которая отвечает, судя по Гуглу, как раз за включение мота PS-PL и выдачу тактовых

    сигналов и сброса в PL от PS) никак не даёт себя включить (хотя в других проектах бывает доступна).

     

    В общем, чуть-чуть сильно запутался (с)

     

  3. Концептуально-практический волрос: сейчас все IP-cores для потоковой обработки данных (DSP FIR, FFT и прочее) реализуются с

    использованием шины AXI-stream - по крайней мере, в Xilinx Vivado DSP ядер с классической шиной "данные-и-стробы" уже нет.

     

    (То, что другие типы ядер используют вообще "полноформатную" AXI4 - это отдельная проблема).

     

    Собственно, вопросы:

     

    - разве использование специфической шины не ведёт к дополнительным накладным расходам ресурсов ПЛИС?

     

    - что делать, если надо реализовать какую-то bitwise-magic - вытащить статусный бит, инвертировать, "обрезать" разрядность и т.д.?

    Ранее всё это делалось достаточно нативно, поскольку линии данных доступны непосредственно.

    Получается, что на каждый "чих" теперь нужно реализовывать своё ядро с интерфейсами AXI и добавлять в интегратор (для Vivado)?

     

    - собственно, как правильно реализовать поддержку AXI-stream? Толковых мануалов и примеров найти пока не удалось.

     

    Аналогичные вопросы и по AXI (не stream). С готовыми ядрами всё красиво - собирается, настраивается, даже как-то "подтягиваются" драйвера в devicetree

    (хотя уже не всегда и не для всего). А вот как что-то своё, написанное на том же Verilog и нормально работающее в ISE, сделать совместимым с нетривиальной шиной - проблема...

  4. К сожалению, что-то никак я не освою работу с обсуждаемым предметом.

    Кроме, собственно, того, что Эклипс вызывает не очень хорошие эмоции, никак не разберусь с тулчейном.

     

    Есть демо-проект от терровской платы с stm32f107, несколько статей в pdf-ках. Отладчик их же te-arm-link.

    При заливке бинарника из проекта (т.е. который уже был в архиве) всё работает нормально. А вот скомпилить заново такой же -- ну никак..

    Основная проблема сейчас -- unresolved inclusion заголовков стандартной библиотеки Си (типа stdint.h) (path к тулчейну прописан)

     

     

    Пытался разобраться со структурой тулчейна -- непонятно, почему некоторые файлы повторяются несколько раз, почему папка include в корне пустая... и т.п. Помогите разобраться, пожалуйста. Очень хочеться понять.

     

    На всякий случай: ОС ВинХР, 32bit, Eclipse IDE for C/C++ Developers Helios Service Release 2

  5. >> 160$

    Какой-то он дорогой. Можно BF561-х поставить линейку и соединить через SPORT и PPI.

    И будет вам кластер или конвеер обработки. Во всяком случае, софт будет пистать, легче если его пофункционально разложить по кристаллам.

     

    А вот вроде как раз SPORT и реализует нужный мне интерфейс TDM. Так что его занимать нельзя.

     

    Сейчас появилась мысль попробовать с каким-нибудь одним DSP. Но что-то не знаю, какую плату взять, тем более, что в той же терре всё весьма дорогое, а ждать из буржуинии и таможить неохота)

  6. 320 GMAC/160 GFLOP @ 1.25GHz хватит? => TMS320C6678

     

    EVM: TMDXEVM6678L

     

    Вот это уже интересно. Если удастся добыть в наших краях хотя бы за 450 баксов (у TI - 399).

    Правда, пока ещё непонятно, что там с TDM интерфейсами... И что ешё надо закупать. Отладчик там вроде строенный. А вот на среду разработки не хочется разоряться.

  7. Если вернуться к картинкам, то на первой получается такая структура:

    N АЦП -> коммутатор/микшер на FPGA -> N DSP -> еще один коммутатор/микшер на FPGA -> N ЦАП + некоторая общая схема управления, которая и раздает задания для каждого компонента.

     

    На второй же просто несколько трактов обработки с объединенными входами и независимыми выходами.

     

    По картинкам получается так, да. Но по задаче -- совсем не то, увы ( Разобрать и посмотреть, к сожалению, нельзя. Гугл тоже не помогает.

    В конце концов, если отвлечься от звука -- как-то же делают блоки из нескольких DSP...

  8. Если есть, допустим, 32 входных и 32 выходных канала 24 бит/96 кГц оцифровкой, то в любом случае пара-тройка TDM интерфейсов такую пропускную способность не обеспечит. А ведь это средненький пульт по числу каналов.

     

    То же, собственно, касается и производительности DSP. Звук процессить, конечно, не так сложно, как HD-видео, к примеру.

    Но при таком потоке... У меня один эквалайзер получился что-то вроде 10 млн умножений с накоплением в секунду на канал.

    А ещё динамическая обработка (вполне возможно, что с преобразованием Гильберта) и всё это на каждом канале.

    Плюс явно отдельные DSP для пространственной обработки (реверберация и проч.)...

     

    Как-то так... Да и вообще, думаю, не будет плохо разобраться, как же всё-таки делаются DSP-кластеры)

     

    P.S. На картинках DSP между собой никак не связаны, т.е. никакого кластера нет. Есть несколько параллельно работающих узлов с общим управлением.

     

    Самое главное "П.С." я не чуть не пропустил. Это структурные схемы именно микшеров. А там (я с таким оборудованием профессионально работаю) сигнал можно направить куда угодно. У них, да, как-то странно получилось -- как будто входы и выходы группами. Но, сами понимаете, как минимум, если есть 10 входов для микрофонов и 1 главный выход на "колонки", то в общем случае сигнал на выход надо смешивать со всех входов )

  9. Добрый день!

     

    Заинтересовался темой многоканальной цифровой обработки аудиосигналов (с сфере проф. оборудования - театрального, концертного)

    Добыл даже несколько Cirrus-овских восьмиканальных АЦП и ЦАП для экспериментов.

     

    А вот собственно по ЦОС возникло несколько проблем (не считая стоимости отладочных плат с DSP):

    1) АЦП/ЦАП имеют интерфейс TDM, а в DSP таких интерфейсов 1-2, таким образом много не подключишь;

    2) алгоритмы бывают достаточно сложные (сейчас в Матлабе экспериментирую с параметрическим эквалайзером на FIR-фильтрах),

    соответственно одного DSP может либо не хватить, либо это будет что-то очень дорогое.

     

    Поиск Гуглом дал достаточно мало информации по ЦОС именно в таких задачах, но кое-что нашлось:

     

    post-60787-1296323455_thumb.jpg

     

    post-60787-1296323468_thumb.jpg

     

    Т.е. предлагается использовать именно несколько DSP, как мне хотелось.

    Ключевой вопрос: как реализовать то, что на рисунках обозначено тремя вертикальными точками?? т.е. связь DSP между собой?

     

    При этом, в тех же микшерных пультах сигнал с любого входа может быть подан в различных пропорциях на практически на любой выход (да ещё и с разными обработками). Соответственно, пути сигнала могут быть весьма длинными и запутанными. Так что связь должна быть шустрая и многоканальная...

     

    В документации поискал, но, честно, ничего не нашёл...

    Может кто подскажет правильное решение и, заодно, вариант DSP для оптытов (желательно, чтобы отладочную плату можно было приобрести)?

     

    Такой же вопрос интересует в отношении ARM процессоров - можно ли объединять несколько в кластер.

    Но пока в разделе ARM тему создавать не буду. Если что - потом выделим в отдельную тему.

     

    Заранее спасибо!

     

  10. Немного не по теме. Но

    Новичкам на форуме, видимо, недоступны личные сообщения.

    Спасибо, _Vova, что ответили в ICQ.

     

    По сабжу: травить плату некогда, подключился пока проводками к технологическим "пятачкам" на поверхности.

    В UART пошёл отладочный вывод загрузчика (но он майкрософтовский, походу, позволяет грузить новые прошивки только через USB или сеть, - этого там само собой нет, оно должно быть на "матернке"), вроде начинает грузиться ВинСЕ, но ей, думаю, нужен как минимум экран...

    Путаюсь запустить Линух с SD карты, но то ли не так её форматирую и заливаю загрузчик, то ли подключил не так... Вывода отладки от u-boot не видно.

    Документация вообще кривоватая какая-то. Дали 3 Гб данных средней полезности (смайл)

  11. нашел все-таки отладку и тп- Custom base board со странички mini6410.

    да, похоже, паяться придется проводами.

    всем спасибо, тему можно закрыть

     

    Добрый день!

    У меня такая же плата и такая же проблема.

    С арм-мами только разбираюсь, с платой повезло не очень...

    Не поможете, раз у Вас получилось?

    Можно постучаться в ICQ -- 2 три 7 четырe 05 56 нoль

     

    Заранее спасибо!!

×
×
  • Создать...