Аудио SSTC с сигма-дельта модулятором
Аудио SSTC с сигма-дельта модулятором
По мотивам теслы mutabor'а захотелось и мне сделать сстц с сигма-дельта модуляцией. Естественно, это будет долгострой, так как времечка у меня всегда не хватает, но интересно жеж разобраться в тонне математики. Возможно, и вам будет интересно, поэтому буду сюда отписываться о прогрессе.
Естественно, первое с чего я начал - это сам модулятор. Если кратко, то весь цимус сигма-дельта модуляторов (по сравнению с ШИМом) в том, что можно отдельно управлять АЧХ сигнала и АЧХ шума, и, таким образом, вытеснить шум в область ультразвука, где его никто и не услышит. Чем больеш порядок модулятора - тем больше можно вытеснить шум в ультразвук, но тем нестабильнее сам моделятор. При любом неловком движении модулятор высокого порядка превращается в генератор.
Сначала я попробовал сделать подулятор первого порядка, чтобы было с чем сравнивать. Звучит он довольно отвратно. Естественно, модулятор был модифицирован до второго порядка:
Звучит он уже намного лучше, но, все-равно, шумит довольно сильно.
Небольшими усилиями воли, модулятор разросття до третьего порядка. В этот раз в более общей форме и с управляемым нулем в передаточной характериситке шума: Шума этого модулятора уже практически не сылшно, поэтому он и сойдет за рабочий вариант. Вот, к примеру, спектр выходного сигнала этого модулятора при подаче на выход 1кгц: Видно и ноль в шуме и, что даже на 20кгц сохраняется 50dB сигнал/шум. Не аудиофильски, конечно, но, на практике, его не слышно.
Сделать его в аналоге уже довольно сложно, да и не интересно, поэтому это все я постараюсь впихнуть в свою старую любимую плис xc3s50an. К сожалению, в ней не хватает ресурсов чтобы сделать все "в лоб", поэтому нам с вами предстоит увлекательное создание специализированного процессора под эту задачу.
Естественно, первое с чего я начал - это сам модулятор. Если кратко, то весь цимус сигма-дельта модуляторов (по сравнению с ШИМом) в том, что можно отдельно управлять АЧХ сигнала и АЧХ шума, и, таким образом, вытеснить шум в область ультразвука, где его никто и не услышит. Чем больеш порядок модулятора - тем больше можно вытеснить шум в ультразвук, но тем нестабильнее сам моделятор. При любом неловком движении модулятор высокого порядка превращается в генератор.
Сначала я попробовал сделать подулятор первого порядка, чтобы было с чем сравнивать. Звучит он довольно отвратно. Естественно, модулятор был модифицирован до второго порядка:
Звучит он уже намного лучше, но, все-равно, шумит довольно сильно.
Небольшими усилиями воли, модулятор разросття до третьего порядка. В этот раз в более общей форме и с управляемым нулем в передаточной характериситке шума: Шума этого модулятора уже практически не сылшно, поэтому он и сойдет за рабочий вариант. Вот, к примеру, спектр выходного сигнала этого модулятора при подаче на выход 1кгц: Видно и ноль в шуме и, что даже на 20кгц сохраняется 50dB сигнал/шум. Не аудиофильски, конечно, но, на практике, его не слышно.
Сделать его в аналоге уже довольно сложно, да и не интересно, поэтому это все я постараюсь впихнуть в свою старую любимую плис xc3s50an. К сожалению, в ней не хватает ресурсов чтобы сделать все "в лоб", поэтому нам с вами предстоит увлекательное создание специализированного процессора под эту задачу.
Re: Аудио SSTC с сигма-дельта модулятором
Итаксь, набросал процессор для этого проектика. Задача процессора, фактически, умножать и складывать, используя при этом поменьше аппаратных ресурсов и делая это как можно быстрее, поэтмоу он получился доволньо простой.
Работает он с числами с фиксированной запятой 0q31. К примеру, интегратор на нем, выглядит вот так:
nop тут для того, чтобы успела завершиться предыдущая комманда. В таких глубокоэмбеддед штуках часто проще сделать вот такие хаки, чем выдумывать синхронизацию. Но и этот мелкий процессор забил 60% плисины (естественно, их забил не сам процессор, а умножитель). Если кому интересно, вот полный код:
Теперь нужно написать хотябы простой модулятор для этого проца, попутно его обезбаживая
Работает он с числами с фиксированной запятой 0q31. К примеру, интегратор на нем, выглядит вот так:
Code: Select all
in 0x00
lda 0x00
ldb 0x01
nop
stradd 0x01
done
Re: Аудио SSTC с сигма-дельта модулятором
После небольшего ковыряния с процессором оказалось, что он не успевает все посчитать, поэтому переписал я на жесткую логику и все работает нормально. Добился совпадения сигналов с моделью. Теперь нужно бы написать приемник аудиосигнала.
Re: Аудио SSTC с сигма-дельта модулятором
Написал приемник spdiff, он-же toslink и прицепил к нему модулятор. Пришлось немного поиграться, так как это все никак не хотело запускаться как в симуляторе. В итоге, оно заработало. Не так хорошо, как предсказывал симулинк, но заработало. Вот видео 
-
Firelander
- Posts: 93
- Joined: 15 Jul 2015, 19:53
Re: Аудио SSTC с сигма-дельта модулятором
Качество вполне себе 
То есть по сути на выходе мы получаем сигнал включена или нет тесла в данном периоде, эдакий высокочастотный интерраптер, я правильно понимаю?
Если так, то на ум сразу приходит условный компаратор, который сравнивает ток вторички с аналоговым аудиосигналом.
Ех, а у меня без дела валяется coreEP4CE10.
Короче было бы здорово, если б ты сделал видео, где на пальцах объясняешь как работает сигмадельта. Статейки я почитал, картина немного-немного начала вырисовываться, но далеко не всё понятно, например как поток нулей и единиц на выходе магическим образом преобразуется в число. Это я про АЦП. Не совсем про твою схему, конечно.
Хотелось бы узнать о преимуществах схемы по сравнению с компаратором. В сигмадельте используется виртуальное интегрированное значение, коэффециентами подстраиваются скорости нарастания/затухания, как я понимаю, а тут можно считать реальный ток. Если я совсем уж чушь говорю, ткни носом, а)
То есть по сути на выходе мы получаем сигнал включена или нет тесла в данном периоде, эдакий высокочастотный интерраптер, я правильно понимаю?
Если так, то на ум сразу приходит условный компаратор, который сравнивает ток вторички с аналоговым аудиосигналом.
Ех, а у меня без дела валяется coreEP4CE10.
Короче было бы здорово, если б ты сделал видео, где на пальцах объясняешь как работает сигмадельта. Статейки я почитал, картина немного-немного начала вырисовываться, но далеко не всё понятно, например как поток нулей и единиц на выходе магическим образом преобразуется в число. Это я про АЦП. Не совсем про твою схему, конечно.
Хотелось бы узнать о преимуществах схемы по сравнению с компаратором. В сигмадельте используется виртуальное интегрированное значение, коэффециентами подстраиваются скорости нарастания/затухания, как я понимаю, а тут можно считать реальный ток. Если я совсем уж чушь говорю, ткни носом, а)
Re: Аудио SSTC с сигма-дельта модулятором
Именно такэдакий высокочастотный интерраптер, я правильно понимаю?
Скорее-всего, такая штуковина возбудится из-за двух полюсов в обратной связи. Плюс ток померять с достаточной для аудио точносью в тесле не так то просто. Это не токовая защита. Тут-же, все обратные связи внути и в цифре, что гарантирует их стабильность. Кроме того, сама передаточная характеристика огибающей теслы тут сыграет как ФНЧ, что еще улучшит сигнал/шум.Если так, то на ум сразу приходит компаратор, который сравнивает ток вторички с аналоговым аудиосигналом.
coreEP4CE10, да, это монстрячая штуковина по сравнению с тем, что у меня тут, но у меня эта платка уже есть, плюс она заточена под теслы, так-что пришлось впихиваться в нее.
Re: Аудио SSTC с сигма-дельта модулятором
2 BSVi: Интересные картинки, но многое не понятно, вот например: ты из однобитного формата (в симуляшке) делаешь многобитный, это FIR фильтр с дециматором делают? Какая у тебя частота на выходе модулятора и после дециматора, и сколько фактически бит на один отсчет получается в итоге?
И еще гдето читал, что модуляторы выше второго порядка в тех же АЦП не используется, т.к они потенциально неустойчивы.
И еще гдето читал, что модуляторы выше второго порядка в тех же АЦП не используется, т.к они потенциально неустойчивы.
Re: Аудио SSTC с сигма-дельта модулятором
ага.ты из однобитного формата (в симуляшке) делаешь многобитный, это FIR фильтр с дециматором делают?
После модулятора 500кгц, после дециматора 45кГц.Какая у тебя частота на выходе модулятора и после дециматора, и сколько фактически бит на один отсчет получается в итоге?
Даже второй порядок не устойчив если его в лоб делать. Тут нужно немного магии с математикой и можно стабилизировать все. В промышленных применениях есть модуляторы до 5того порядка если в лоб и есть еще топологии, где ошибка последнего бита не загоняется в обратную связь, там вообще порядок может быть какой угодно. Но тут это все избыточноИ еще гдето читал, что модуляторы выше второго порядка в тех же АЦП не используется, т.к они потенциально неустойчивы.
Сейчас проектик остановился на том, что мне нужно сделать PLL и, собственно, саму теслу
Re: Аудио SSTC с сигма-дельта модулятором
М-мм, а PLL то зачем? 
Ааа..кажись догадался - чтобы не мучиться с синхронизацией при слабом сигнале? Ну да, у меня была такая проблема - после долгого перерыва между импульсами следующая пачка идет с рассинхроном по фазе, правда это было только с ШИМом (он у меня на частоте 22кГц был) + после 3-5 импульсов синхронизация восстанавливалась. Более того, у ФАПЧи тоже будет эта проблема. И кстати, все равно придется постоянно вкачивать некоторую среднюю мощность в пушистик -почему это так я приводил ссылку на обсуждение с математиками электроникса, вывод был такой: чтобы звуковые колебания создаваемые кустиком были без искажений нужно постоянно иметь кустик как можно большего объема, который модулируется на небольшой процент от этого объема. При этом сигнал ОС с катушки будет достаточно мощным, чтобы и тактировать модулятор, и управлять драйвером.
С другой стороны имея плисину грех не попробовать сделать на ней цифровой ФАПЧ
Ааа..кажись догадался - чтобы не мучиться с синхронизацией при слабом сигнале? Ну да, у меня была такая проблема - после долгого перерыва между импульсами следующая пачка идет с рассинхроном по фазе, правда это было только с ШИМом (он у меня на частоте 22кГц был) + после 3-5 импульсов синхронизация восстанавливалась. Более того, у ФАПЧи тоже будет эта проблема. И кстати, все равно придется постоянно вкачивать некоторую среднюю мощность в пушистик -почему это так я приводил ссылку на обсуждение с математиками электроникса, вывод был такой: чтобы звуковые колебания создаваемые кустиком были без искажений нужно постоянно иметь кустик как можно большего объема, который модулируется на небольшой процент от этого объема. При этом сигнал ОС с катушки будет достаточно мощным, чтобы и тактировать модулятор, и управлять драйвером.
С другой стороны имея плисину грех не попробовать сделать на ней цифровой ФАПЧ
Re: Аудио SSTC с сигма-дельта модулятором
Да, PLL для того, чтобы это все не заглохло при низких скважностях. Но, действительно, судя по всему, работало бы и без него, но уже, хоть коряво, но написал. Силовуха пока очень слабенькая, но уже что-то работает:
Re: Аудио SSTC с сигма-дельта модулятором
Прикольно такой маленький пуфыстик, а играет бойко
Кстати еще можно как посмотреть на результат работы -щуп положить рядом и длительность развертки сделать 500мкс/дел. или около того -будет видно огибающую несущей (сам аудиосигнал)
Кстати еще можно как посмотреть на результат работы -щуп положить рядом и длительность развертки сделать 500мкс/дел. или около того -будет видно огибающую несущей (сам аудиосигнал)
Re: Аудио SSTC с сигма-дельта модулятором
Не будет, будет просто сплошная колбаса.будет видно огибающую несущей (сам аудиосигнал)
Попробовал мегагерц. Силовая не тянет
Re: Аудио SSTC с сигма-дельта модулятором
Значит глубина модуляции маленькая, у меня хорошо просматривалось. Кстати я еще вместо аудио выводил чисто синус, на макс.амплитуде хорошо видно когда упирается в ограничение, ну и вообще искажения можно сразу увидеть. Но по-любому играет она именно за счет АМ 
Кстати идея, если уж ты будешь делать цифровой ФАПЧ, может попробовать ЧМ модуляцию реализовать? Идея в следующем (не знаю как реализуется цифровой ФАПЧ, расскажу на примере аналогового, но думаю ты поймешь идею) в аналоговом ФАПЧе есть фазовый детектор и фильтр, с выхода которого сигнал заводится на ГУН, так вот если к этому сигналу приплюсовать некий внешний сигнал, то он будет модулировать генератор по частоте. Получим ЧМ модуляцию. Но посколько катушка это резонансный контур, отклонение от резонансной частоты будет модулировать и амплитуду (что нам и нужно). Только для получения более-менее качественного АМ нужно работать не на самом резонансе, а немного в стороне от него -чтобы в одну сторону сигнал нарастал, а в другую убывал.
Плюс идеи в том, что тогда можно будет просто выкинуть сигма-дельта модулятор 
- iEugene0x7CA
- Адепт
- Posts: 1571
- Joined: 20 May 2012, 02:38
- Location: Киев
Re: Аудио SSTC с сигма-дельта модулятором
Игрался с 4046 микросхемкой, а?mutabor wrote:Кстати идея, если уж ты будешь делать цифровой ФАПЧ, может попробовать ЧМ модуляцию реализовать? Идея в следующем (не знаю как реализуется цифровой ФАПЧ, расскажу на примере аналогового, но думаю ты поймешь идею) в аналоговом ФАПЧе есть фазовый детектор и фильтр, с выхода которого сигнал заводится на ГУН, так вот если к этому сигналу приплюсовать некий внешний сигнал, то он будет модулировать генератор по частоте. Получим ЧМ модуляцию. Но посколько катушка это резонансный контур, отклонение от резонансной частоты будет модулировать и амплитуду (что нам и нужно). Только для получения более-менее качественного АМ нужно работать не на самом резонансе, а немного в стороне от него -чтобы в одну сторону сигнал нарастал, а в другую убывал.Плюс идеи в том, что тогда можно будет просто выкинуть сигма-дельта модулятор
На самом деле у подобного решения не мало минусов:
1. Косвенная AM модуляция через FM не особо эффективна, и как следствие — звук получается паршивым, как со старого радио;
2. Работая вне резонанса теряется эффект ZCS, а это значительные потери КПД.
Пропуск импульсов с синхронизацией ОС этот эффект сохраняет, а сигма-дельта — лишь более эффективное по сравнению с ШИМ решение.
PLL'ка тоже не лишняя, она не даст катушке заглохнуть в результате внешних воздействий или угасания стримера из-за модуляции.
По сути проект чересчур сложен, с этим не поспорю. Однако в нём всё сделано т.с. по-правильному. Идей как сделать ещё круче у меня лично нет.
Re: Аудио SSTC с сигма-дельта модулятором
Было делоiEugene0x7CA wrote:Игрался с 4046 микросхемкой, а?
На самом деле у подобного решения не мало минусов:
1. Косвенная AM модуляция через FM не особо эффективна, и как следствие — звук получается паршивым, как со старого радио;
2. Работая вне резонанса теряется эффект ZCS, а это значительные потери КПД.
Пропуск импульсов с синхронизацией ОС этот эффект сохраняет, а сигма-дельта — лишь более эффективное по сравнению с ШИМ решение.
PLL'ка тоже не лишняя, она не даст катушке заглохнуть в результате внешних воздействий или угасания стримера из-за модуляции.
По сути проект чересчур сложен, с этим не поспорю. Однако в нём всё сделано т.с. по-правильному. Идей как сделать ещё круче у меня лично нет.
Еслибы я знал ПЛИСКИ я бы сам чтото такое попробовал, хоть я и аналоговик, но в цифре гораздо интереснее реализовывать идеи - не мешают никакие наводки и особенности аналоговой схемы, и ктобы не повторил cхему и алгоритм -работать будет точно также, и с математической точностью
По поводу замечаний -оно как бы да, но всё же...Сильно ли будет уходить схема от ZCS? Да не особо, тут сильно менять амплитуду не надо, да и чем дальше отойдет от резонанса, тем и ток ниже, поэтому нагрев думаю не особо увеличится. Ну а насчет низкой эффективности АМ -наверно да, линейность там не супер, возможно будут искажения. Но в любом случае если эту фишку можно реализовать попутно, то почему бы не проверить этот вариант?
Re: Аудио SSTC с сигма-дельта модулятором
Сделать такую штуку можно, но сейчас у меня не классическая PLL, а, скорее, random walk filter, поэтому как-нибуть попозже. Кроме того, глубокой модуляции на одном контуре дя еще и с переменной добротностью не получить, как мне кажется. Мне интересно сделать именно классическую AM, а не FM, детектируемую контуром.
Сейчас мне кажется, что лучше попробовать многобитный сигма-дельта модулятор. Это типа ШИМа, но последний бит ШИМа модулируется как сигма-дельта.
К примеру, у нас частота 500кГц. Частота ПЛИС, к примеру, 100МГц. В период влезает 100 отсчетов, что соответствует 6.6 бита или 40дБ С/Ш. Дальше прибавляем СД модулятор второго порядка, но прибавляет еще 30дб, итого получается 70дб, что уже эквивалентно 12 битам. На самом деле, можно затактировать отдельно ШИМ-модулятор и поднять частоту до ~200МГц в моей плисинке, что добавит еще 6дб. Тоесть из этой системы можно добиться примерно 78дб. На видео, для сравнения, примерно 30дб.
Сейчас мне кажется, что лучше попробовать многобитный сигма-дельта модулятор. Это типа ШИМа, но последний бит ШИМа модулируется как сигма-дельта.
К примеру, у нас частота 500кГц. Частота ПЛИС, к примеру, 100МГц. В период влезает 100 отсчетов, что соответствует 6.6 бита или 40дБ С/Ш. Дальше прибавляем СД модулятор второго порядка, но прибавляет еще 30дб, итого получается 70дб, что уже эквивалентно 12 битам. На самом деле, можно затактировать отдельно ШИМ-модулятор и поднять частоту до ~200МГц в моей плисинке, что добавит еще 6дб. Тоесть из этой системы можно добиться примерно 78дб. На видео, для сравнения, примерно 30дб.
Re: Аудио SSTC с сигма-дельта модулятором
Т.е ты хочешь делать частоту ШИМ равную частоте вторички? Не пугают жесткие переключения?
Re: Аудио SSTC с сигма-дельта модулятором
АгаТ.е ты хочешь делать частоту ШИМ равную частоте вторички?
Если они контроллируемые, чего их бояться то. Больше пугает передача переменной скважности через GDT. Хотя, можно читерить и использовать фэйзшифтинг вместо ШИМ.Не пугают жесткие переключения?
Re: Аудио SSTC с сигма-дельта модулятором
Форма импульсов какая -трехуровневая манипуляция (короткий в плюс, потом ноль до следующего полупериода и короткий в минус)? Мы такую использовали както, как раз для управления полумостом через транс. Ферриты были обычные Н2000, вроде проблем не было, хотя давно это было...
Re: Аудио SSTC с сигма-дельта модулятором
Итак, сделал первый эксперемент. Оно вполне себе работает, но слышны искажения и шумит тесла доволньо сильно. Шум, очевидно, связан с низкой рабочей частотой. А вот искажения, как я и предпологал, с формой синусоиды.
Re: Аудио SSTC с сигма-дельта модулятором
Сергей, поясни пожалуйста по второму рисунку с точки зрения мат анализа. На первом ты берешь интеграл от sin x dx. Т.е. sin это рабочая частота самой катушки (резонансная). Вторая картинка несовсем понятна.
PS как работает дельта сигма модулятор в курсе, с математической стороны не совсем.
PS как работает дельта сигма модулятор в курсе, с математической стороны не совсем.
Re: Аудио SSTC с сигма-дельта модулятором
по какому из вторых рисунков?
Re: Аудио SSTC с сигма-дельта модулятором
На последнем видео, 2:12 минуте.
Re: Аудио SSTC с сигма-дельта модулятором
Вторая картинка - это зависимость площади под синусоидой от длинны куска синусоиды, который мы отрезаем. Площадь под функцией равна интегралу этой функции.
Re: Аудио SSTC с сигма-дельта модулятором
Сделал катушку на 2МГц. Чесно-говоря, я разочарован. Шипит она так-же, как и на 500кГц, а усититель E-класса модулируется сигнма-дельта модулятором отвратно. Это и понятно - ему нужно много циклов, чтобы получился стационарный E-классный режим. Поэтому, нельзя так просто брать и выбрасывать импульсы накачки. Похоже, нормально модулировать его можно только аналоговым образом, как это и делают другие ребята, которые работали над аудиотеслами.