Автор Тема: Изобретаем оверсемплер.  (Прочитано 9937 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Изобретаем оверсемплер.
« : 12 Июня 2016, 23:22:21 »
+1
Привет.
Долго не решался поделиться наболевшим по этой теме, т.к. изобретаю революционный цапЪ, который меня озолотит. Да.
А потом подумал, что инженеры ведущих компаний мира тоже должны быть не дураками, если их современные изделия продаются миллионными тиражами, а математика, которую я хочу привлечь, была им известна задолго до того, как я пришел на первую лекцию по матану.

Итак. Я вываливаю свои соображения, а вы, друзья, если захотите, приводите свои.

Практически все цифровые фильтры для аудио (приведите исключения?) работают по одному алгоритму. Промежутки между прилетевшими с источника семплами забиваются нулевыми значениями. Затем получившийся забор прогоняется через FIR фильтр, срубающий внеполосные компоненты, за счет чего сигнал и сглаживается. Отличаются они лишь набором коэффициентов и... звуком. :) Алгоритм несложен и исключительно шустер, поэтому весьма технологичен в кремнии.

В противоположность этому подходу я хотел бы заняться реальной интерполяцией. Современные ПЛИСки с элементами DSP будут щелкать те же кубические сплайны как семечки и - я удивлен, почему доселе не слышал о таком приколе в железе.

Получается - либо "честная" интерполяция не имеет преимуществ перед алгоритмом Смита-Госсетта, либо я упускаю какое-то неведомое мне важное обстоятельство, либо же - действительно придумываю НЕ велосипед.

Мнения?

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Изобретаем оверсемплер.
« Ответ #1 : 13 Июня 2016, 08:54:09 »
0
Марат, разброд и шатания в стане ресемплеров простирается от банальной линейной интерполяции до неимоверно навороченных комбинаций Фурье с полифазными фильтрами. Все зависит от вычислительных ресурсов и масштабов хотелок.

и добавил...
Почистил оффтоп. Господа, давайте будем по делу. Даже те, что не в Париже.
« Последнее редактирование: 13 Июня 2016, 09:23:25 от Althair »

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #2 : 13 Июня 2016, 09:31:18 »
0
cu6apum, я для начала предлагаю реализовать алгоритм, в том виде в котором удобнее (по знаниям, опыту и прочее) на компьютере (matlab, octave, языки программирования).
Потом на виртуальных приборах проверить эти алгоритмы в сравнении с традиционной интерполяцией.
Затем уже реализовывать в кремнии.
Таким образом будет значительно проще реализовать идею или же отказаться от нее по причине не удовлетворительных результатов, получается минимизация затрат по ресурсам (время, деньги, ну добавил бы еще приборы).

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #3 : 13 Июня 2016, 11:17:39 »
0
Игорь, пару названий фирмачей вбросишь?

Илья, работать-то будет, я не сомневаюсь. Также подлежит корчевке один принципиальный недостаток "классического" интерполятора, ради чего всё и затевается.

Володя, в личку повтори? Не успел до Гоши.

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Изобретаем оверсемплер.
« Ответ #4 : 13 Июня 2016, 11:33:09 »
0
Вова высказался в стиле "нахуа Хуану сомбреро", и что велосипедов уже изобретено воз и тележка

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #5 : 13 Июня 2016, 12:45:27 »
0
Вова высказался в стиле "нахуа Хуану сомбреро", и что велосипедов уже изобретено воз и тележка
Ну он прав по сути. Но мы ж через тернии к граблям и лежа в гамаке на лыжах стоя. Иногда получается.

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #6 : 13 Июня 2016, 12:52:09 »
0
сделать в симулинке, потом протестировать в режиме обработке аудиозаписи, потом если что сразу в плис сконвертировать код.
У меня есть плата на которой можно протестировать (правда spdif оптика) на Artix 7. Ну это про режим реального времени в железе.

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #7 : 14 Июня 2016, 11:18:21 »
0
У меня есть платка на спартан6. Купил как раз под этот проект, но пока физически нет времени въезжать в fpga. Симулинком не владею (жена умеет, но у нее две дитяти, дом и я в четырех руках), думал сделать просто на Сях обработку файла, обдергать анализаторами, затем портировать в реалтайм и на финише - в ПЛИСку. Получается проект с нуля.

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Изобретаем оверсемплер.
« Ответ #8 : 14 Июня 2016, 12:22:21 »
0
[ Вложение: Вам нельзя просматривать вложения ] Марат, то, о чем мы спорили

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #9 : 14 Июня 2016, 12:23:04 »
0
ЗОШЫБИСЬ!!!! Оно нам очень пригодится!  :yah:

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Изобретаем оверсемплер.
« Ответ #10 : 14 Июня 2016, 12:23:14 »
0
Это касательно Циклона

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #11 : 14 Июня 2016, 12:23:44 »
0
Это касательно Циклона
Эм, а спартана?!

и добавил...
Впрочем, сейчас, ДО начала работ, мне непринципиально, на чем это будет. Главное не менять коней на переправе и выбрать то, что с запасом потянет задачу. Ужаться можно после.
« Последнее редактирование: 14 Июня 2016, 12:28:01 от cu6apum »

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #12 : 14 Июня 2016, 12:46:48 »
0
Тут 2 задачи:
1) Алгоритмическая - не имеет значения в чем реализовано, но удобнее пожалуй в симулинке/матлабе, потому что в симулинке можно подключить виртуальные приборы и все метрологически проработать. Собственно, для начала малозначимо, что будет работать не в режиме реального времени.
2) Аппаратная реализация. Устройства одного технологического поколения у разных производителей отличаются незначительно.
Выбор - обычно по отношению цена/производительность или же опыт и личное предпочтение.
Когда делаешь опытные образцы, то желательно брать с запасом (по количеству логики, или тактовой частоте процессора, или другим характеристикам).
Как уже было сказано, ужаться всегда легче.




и добавил...
Как показывает жизнь, железо такого плана гораздо проще чем алгоритмы и софт (программы, прошивки) под такие вещи.
У меня уже год как зависла задача с цифровым кроссовером и эквалайзером. Упомянутую выше аппаратную платформу на Xilinx Artix 7 я сделал и запустил (stm32f103 c USB, Artix 7, src4192 TI, Toslink один вход и шесть выходов). Только подвис на алгоритмах и программировании (ядро, гуй, ось для контроллера сама поднята, настроена, но сам софт под нее не сделан, и плюс прошивка к плис с fir фильтрами только начата).

и добавил...
А самое пожалуй простое - сначала устанавливается Xilinx ISE (брать уже 14.7, последнюю для продуктов по 6 семейство включительно) и затем устанавливать matlab.
Там можно подцепить для симулинка модули для xilinx, и работать с ними.
« Последнее редактирование: 14 Июня 2016, 14:29:37 от ilya_blazer »

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #13 : 29 Июля 2016, 23:48:08 »
0
Осталось найти денег и купить немного времени. На альтеровском сайте нашел пример кода для перегонки SPI в I2S. Для реализации первого этапа (завести цап без оверсемплера, пользуясь пока внешним) мне достаточно просто вывернуть этот пример наизнанку, но - вентилей в моей макетной платке на epm240 для него уже не хватает, так что ее я отложу до более примитивных приложений. И снова начну вертеть в руках давно купленную Xilinx XC6SLX9, пытаясь понять, где у ей кнопка.

Надо еще сбить комп с форточками. Матлаб под Мак есть, а вот ISE придется ставить под презренную оболочку.

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #14 : 30 Июля 2016, 10:46:30 »
0
Запрос в яндексе ise Mac OS Xilinx на второй ссылке выдавал что проблема solved (ссылка на форум Xilinx)
Для начала можно сделать fir интерполятор с помощью core-generator чтобы проверить работу системы.

и добавил...
И вообще если не быть фанатиком любой оси, то работать под ними всего лишь дело привычки. В конце концов это всего лишь инструмент, и не более того.

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #15 : 30 Июля 2016, 12:54:21 »
0
Спасибо. Сперва надо диодиком помигать..... Потом робко перегнать i2s в spi, соблюдая битность и Fs. А уж потом браться за фильтры. Маленький я. PLA и PAL помню, а FPGA не нюхал исчо.

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #16 : 07 Августа 2016, 11:41:34 »
0
Тоже схватил учебную платку на artix7. Его должно хватить уже не только на оверсемплер, но и на пополосную дележку. Ждем.

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #17 : 07 Августа 2016, 13:02:43 »
0
Digilent?

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #18 : 07 Августа 2016, 21:10:40 »
0
Угуй, второй чип с начала. Сразу современной техникой поовладевать.

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #19 : 07 Августа 2016, 22:38:14 »
0
Для задачи хватит с избытком.
Только лучше не техникой овладевать, а методами разработки - они устаревают медленнее. Ну или хотя бы софтом.
применительно к Xilinx - их прежний софт ISE разрабатывался и поддерживался с незапямямятных времен до версии 14.7 (вроде бы 2014 год), после чего поддержка была прекращена.
Далее у них пошел продукт Vivado, который поддерживает исключительно чипы начиная с 7 линейки ( в том числе, из-за новой архитектуры самих кристаллов).
Собственно, в ближайший исторический период будет актуальным именно умение работы с Vivado, несмотря на выпускаемые последующие поколения микросхем.
Важное замечание - в седьмой линейке, насколько я помню, унифицирована структура ячеек для всех линеек, что облегчает миграцию с одной микросхемы на другую.

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #20 : 07 Августа 2016, 23:09:19 »
0
Я о том и говорил. Натяну сразу виваду, ибо это, похоже, надолго.

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #21 : 21 Ноября 2016, 22:05:52 »
0
Скоро сказка сказывается, да нескоро дело делается. Задышала плиска конвертора i2s-spi для моих макеток. Еще неделька - и слушать.

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #22 : 22 Ноября 2016, 11:08:58 »
0
Интересно будет получить субъективный результат для, пожалуй, одного из самых лучших по параметрам R-2R ЦАП.
Какой выходной фильтр будешь использовать?


Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #23 : 22 Ноября 2016, 16:05:28 »
0
Самый примитивный, если расчеты подтвердятся.

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #24 : 22 Ноября 2016, 16:12:30 »
0
Концептуально как реализовали - из любого формата (RJ, LJ, Philips I2S) в 20 значащих бит или же определенный (RJ24, собственно, практически самый популярный), отрезали нижние 4 и добавили 4 бита служебных для ЦАП? или же через оверсемплер аппаратный делал преобразование форматов?

Оффлайн cu6apum

  • Старожил
  • *****
  • Сообщений: 4018
  • Репутация: 14
  • Естествоиспытатель
  • Поблагодарили: +366
Re: Изобретаем оверсемплер.
« Ответ #25 : 22 Ноября 2016, 16:59:21 »
0
Пока последнее.

Оффлайн ilya_blazer

  • Наш человек
  • ****
  • Сообщений: 633
  • Репутация: 5
  • Илья
  • Поблагодарили: +46
Re: Изобретаем оверсемплер.
« Ответ #26 : 22 Ноября 2016, 18:42:57 »
0
Лиха беда начала, как можно сказать про эту идею.
Тут собственно отрезали 20 информационных бит на каждый канал из I2S, и по два регистра на вход двух модулей SPI работающих в нужном режиме (MODE0-MODE3, одном из них), собственно и все.