Комментарии 83
и по 10 5%-е резисторов и конденсаторов на канал
Вы сами то поняли, что написали? С таким разбросом компонентов это будет не фильтр, а генератор искажений сигнала.
Это вряд ли. Если я правильно помню, то в формуле рассчета частоты фильтра емкости и сопротивления отнюдь не суммируются, а потому результат будет отличаться совсем не на 5%.
Не говоря уже о том, что в реальной жизни никогда не будет одновременного изменения всех параметров именно на 5%
В любительском приемнике прямого преобразования
полоса в нём от силы 3 kHz
Уйдет не только частота. Не строят сложные фильтры на 5% компонентах.
Если ещё и статью с результатами опубликуете вообще будет замечательно!
Вообще абсолютно устойчивыми являются только нерекурсивные фильтры.
Если без активных элементов — то это будет как раз аналог цифрового нерекурсивного фильтра. Кочечно будет устойчив как айсберг на пути Титаника. Но кто будет делать фильтр на ЗЧ такого порядка только на пассивных элементах?
Рассказанная сегодня история уже в прямом смысле является ИСТОРИЕЙ. Я выбрал её как пищу для ума — изящного решения проблемы. И как лишнее напоминание того, что прежде чем строить теории заговора стоит самому разобраться в сути проблемы.
Нарисуйте график синусоиды на клетчатой бумаге, только сравнительно большой амплитуды — клеток двадцать не меньше примерно как в моей следующей статье и второй такой в 4 раза шире, а потом попробуйте по клеточкам соединить как в моей следующей статье и увидите сами на каком из графиков аппроксимированный сигнал будет ровнее.
Увеличим частоту дискретизации сигнала в четыре раза путём элементарной операции — добавления лишних двух сэмплов между двумя соседними, каждый из которых имеет нулевые значения, как показано на рисунке C.Там и вправду вставка нулевых значений? Логичнее было бы делать либо повтор предыдущего значения, либо интерполяцию между соседними значениями… Тем более что интерполяция в аудио CD, вроде бы, предусмотрена для коррекции сигнала в том случае, когда из-за дефектов или повреждения диска цифровая коррекция ошибок уже не срабатывает. Понятно, что цифровой фильтр может эту интерполяцию и сам сделать, так что вопрос, скорее, о том, а как же оно всё-таки реализовано на самом деле…
Думаю что сегодня, когда вычисления строятся на основе DSP ядер, вставляют уже интерполированные значения в качестве нулевых условий
Если расписать красивыми мат. выкладками вставку нулевых значений + фнч, получим самую православную интерполяцию. вставка нулевых значений оставляет исходный спектр + появляются отражения, которые и давяца ФНЧ, обеспечивая нам отсутсвие внеполосных гармоник. При этом к ФНЧ предъявляются определенные требования по крутизне спада и глубине подавления.
Если сделать повтор предыдущих то сигнал на выходе не изменится (то есть, если увеличить частоту дискретизации в N раз и повторять капждый сэмпл N раз, то его никак не отличить от исходного).А зачем его отличать? Дело не в этом, скорее всего, а в том, что повторение в данном случае эквивалентно фильтрации сигнала через фильтр с sinc-образной передаточной характеристикой, т.е. слегка будут завалены верхние частоты…
как интерполировать, чтобы в спектре не появилось новых гармоник? Например если мы сделаем линейную интерполяцию то получим новые гармоникиНет. Линейная интерполяция эквивалентна прохождению сигнала через фильтр с симметричным треугольным откликом. Никаких лишних гармоник при этом не появится, разве что из-за квантования, но это один бит и при увеличенной разрядности ЦАП это будет совсем незаметно. Наверное, тут тоже дело в том, что так же, как и в случае повторением, в случае линейной интерполяции чуть-чуть завалятся верхние частоты… Конечно, надо бы прикинуть всё математически или, хотя бы, на картинках с передаточными характеристиками, но сейчас каникулы… :)
А зачем его отличать? Дело не в этом, скорее всего, а в том, что повторение в данном случае эквивалентно фильтрации сигнала через фильтр с sinc-образной передаточной характеристикой, т.е. слегка будут завалены верхние частоты…Когда я говорил «неотличимы» я имел ввиду одинаковы. Не вижу причин, по которым у двух одинаковых сигналов будет отличаться спектр.
Нет. Линейная интерполяция эквивалентна прохождению сигнала через фильтр с симметричным треугольным откликом.Вот как раз тут будет фильтр с прямоугольным окном и отклик будет sinc (а точнее его дискретный эквивалент — периодический sinc/функция Dirichlet). Линейная аппроксимация эквивалентна (скажем в 2 раза, когда вставляется среднее между двух отсчётов): повторяем каждый сэмпл по два раза (то есть [x0 x1 x2… xn] -> [x0 x0 x1 x1 x2 x2… xn xn] и пропускаем через КИХ фильтр с коэффициентами [1/2 1/2] (в случае линейной интерполяции в N раз будет [1/N 1/N… 1/N] N-раз, это есть фильтр бегущее среднее по N). Легко показать, что для рассматриваемого случая, выходной сигнал будет [(x0+x0)/2 (x0+x1)/2 (x1+x1)/2 (x1+x2)/2 ...], то есть эквивалентно линейной аппроксимации со вставкой среднего между отсчётами. Отклик такого фильтра есть diric (периодический sinc), а спектр исходного сигнала не изменился (если поверить мне в первом утверждении, о неизменности спектра при повторении исходных значений в N раз). Вот как раз и получим небольшой завал (перемножая спектр исходного сигнала и КИХ фильтра). Да, новые гармоники не появятся, это я лишнего махнул.
Проще показать это всё через свёртку. Но новый год и лень =)
Логичнее было бы делать либо повтор предыдущего значения, либо интерполяцию между соседними значениями
Не логичнее, поскольку это приведёт к искажению АЧХ исходного сигнала (за исключением sinc-интерполяции). Математически интерполяция в данном случае будет равна свёртке сигнала с интерполируемой функцией (в случае линейной интерполяции — с треугольной, при повторе предыдущего семпла — прямоугольной и т.д.).
При восстановлении его и получаем.
Преславутый «ступенчатый» сигнал на выходе ЦАПа — крайне неправильный сигнал, имеет огибающую спектра sinx/x вместо плоской.
Передискритизация с вставлением нулей приближает сигнал к исходному дельта-импульсу.
Простите, или я не понял, или вы не раскрыли мысль из начала статьи — "для воспроизведения 16 битных записей начали применять 18 и даже 20 битные цифро-аналоговые преобразователи". Зачем повышать разрядность ЦАП, если передискретизация позволяет, напротив, обойтись меньшей разрядностью (вплоть до "однобитных" дельта-сигма, которые тут уже упоминали)?
Или маркетинг в том, что взяли 16-битный ЦАП на 176 кГц и стали продавать, как 18-битный?
Подправил в статье.
Смысл в том, что добавляя два лишних сэмпла мы изменяем разрядность существующих, прибавляем два младших бита, заполняя их нулями. В результате процесса фильтрации «промежуточные» сэмплы «сгладят» переходы между исходными.
Если бы мы попытались тупо прибавить разрядность, не повысив частоту сэмплирования эта операция была бы бессмысленной.
Ну да, результат промежуточных вычислений будет иметь больше 16 бит. Но непонятно, почему это требует повышения разрядности ЦАП:
- При тупом отбрасывании младших бит мы всё равно получаем выигрыш (кто делал subpixeling при рисовании во времена CGA-VGA — поймёт: наклонную линию можно сместить на долю пиксела даже без anti-aliasing).
- Отброшенные биты необязательно терять — их можно подмешать к сигналу последующих отсчётов. Вроде в те годы алгоритм Флойда-Стейнберга был уже широко распространён в компьютерной графике, и поступить так же — естественно.
Т.е. вроде бы нет причин повышать разрядность АЦП, а можно и вообще понизить (как я понимаю, в итоге к этому и пришли, но это уже совсем другая история).
Только увеличение количества сэмплов даёт возможность повысить разрядность ЦАП, иначе эта операция просто не имеет смысла.
Повысив разрядность ЦАП можно сделать интерполяцию между существующими точками — собственно именно эту операцию и выполняет фильтр. Теоретически разрядность АЦП можно и не повышать, но тогда и интерполяция будет грубее.
Да, про сигма дельта АЦП — совершенно другая история.
И с рисунком D как-то не прозрачно. Понятно, что у сигнала с вставленными нулевыми семплами получится такой спектр, но почему зеркалки (images) считаются от 88кГц, а не от 176? Хоть этот момент особой роли и не играет, но интересно.
Законченные аудиофилы теперь могут ворчать о том, какой крутой звук был у старых аппаратов с аналоговыми фильтрами пока всё не испортила цифра и охотится за винтажной техникой.
Аудиофилы что могут делаТЬ? ОхотиТЬся.
Дан сигнал с частотой дискретизации 4кГц (зелёный — во временном домене, синий — в частотном — АЧХ):


Увеличиваем частоту дискретизации до 16кГц, для чего добавляем по 3 промежуточных нулевых отсчёта:


Отфильтровываем гармоники фильтром нижних частот от 2 кГц (так как их не было в исходном сигнале) и получаем


Профит.
Первоначальная цепочка такая:
1) Живой звук -> АЦП(16бит, 44.1 КГц) -> CD
2) CD -> 16бит -> Микроконтроллер -> ЦАП(16бит, 44.1 КГц) -> восстановленный звук
После апгрейда:
2) CD -> 16бит -> Микроконтроллер + (Некий фильтр преобразующий 16бит в 18, 44.1 КГц в 44.1*4) -> ЦАП(18бит, 44.1*4 КГц) -> восстановленный звук
Т.е. в апгрейде мы всего лишь:
1. Поставили более дорогой ЦАП (с повышенной частотой дискретизации и разрядностью)
2. За счет придумывания(интерполирования) отсутствующих семплов на шкале времени CD — увеличили кол-во воспроизводимых семплов.
Верно?
Тогда, внимание, вопрос:
1. А действительно ли мы улучшили качество звука, добавив семплы, которые в оригинале (живом звуке) могли отличаться от тех, которые мы придумали(интерполировали)? Ведь, то что мы записали с частотой 44.1 КГц — было реально зафиксировано микрофоном, а то что было между записанными семплами нам не известно.
2. На сколько далеко наша фантазия (прошу прощения, интерполяция :) может нас завести? Т.е. теоретически, мы можем интерполировать и 8битный звук и 4х…
3. И о каком таком повышении качества мы говорим?
Для человека средний порог частоты воспринимаемого звука 20 кГц, мы воспроизводим с частотой 44.1 КГц — есть ли смысл в дальнейшем увеличении?.. Повышение точности воспроизведения на 2 разряда — единственное, что имеет отношение к реальному улучшению качества, хорошо, а кто-нибудь знает сколько разрядов может различать человеческое ухо? ;)
1. А действительно ли мы улучшили качество звука, добавив семплы, которые в оригинале (живом звуке) могли отличаться от тех, которые мы придумали(интерполировали)?В оригинале (живом звуке) никаких семплов нет, потому что он непрерывный, а не дискретный. Мы не улучшаем качество звука как таковое, мы снижаем уровень шумов.
Ведь, то что мы записали с частотой 44.1 КГц — было реально зафиксировано микрофоном, а то что было между записанными семплами нам не известно.Известно согласно теореме Котельникова или Шеннона. Сигнал перед дискретизацией обязательно фильтруется, причём с некоторым запасом. Более того, чувствительность микрофонов, используемых для записи, редко превышает 15кГц.
2. На сколько далеко наша фантазия (прошу прощения, интерполяция :) может нас завести? Т.е. теоретически, мы можем интерполировать и 8битный звук и 4х…Битность мы не интерполируем, т.к. шумы квантования удалению не подлежат, только маскировке. А частоту дискретизации можно увеличивать хоть до бесконечности.
Для человека средний порог частоты воспринимаемого звука 20 кГц, мы воспроизводим с частотой 44.1 КГц — есть ли смысл в дальнейшем увеличении?Это вопрос снижения погрешности при восстановлении исходного непрерывного сигнала, а не человеческой чувствительности.
а кто-нибудь знает сколько разрядов может различать человеческое ухо? ;)Ухо отличает не разряды, а перепад в децибелах. Разряды определяют шумы квантования. По поводу чувствительности — множество научных статей можно найти при желании как-то так.
Если звук считать точками амплитуд во времени (именно это имелось в виду под семплами), то не совсем понятна формулировка «Мы не улучшаем качество звука как таковое, мы снижаем уровень шумов».
По факту, мы на графике время/текущая_амплитуда создаем новые (интерполированные) точки. А потом наш ЦАП пытается этот график воспроизвести в реальный звук. На мой взгляд, качество воспроизводимого звука — это то, насколько точно он соответствует оригиналу (живому звуку).
«Известно согласно теореме Котельникова или Шеннона.»
— Да, похоже по этой теореме, если мы записали звук с необходимой минимальной частотой дискретизации, то можем сгенерировать промежуточные точки в любом количестве.
«Битность мы не интерполируем, т.к. шумы квантования удалению не подлежат, только маскировке.»
— Но ведь мы, преобразуем 16бит в 18бит, именно для того чтобы промежуточные точки по амплитуде могли более точно отобразиться на ЦАП. Или я не прав?
«Это вопрос снижения погрешности при восстановлении исходного непрерывного сигнала, а не человеческой чувствительности.»
— Так ведь смысл как раз таки в том, зачем снижать погрешность, если ее человек и так уже не чувствует?
«Ухо отличает не разряды, а перепад в децибелах. Разряды определяют шумы квантования. „
— Ну почему же, разрядность уха человека (его чувствительность к звукам по амплитуде) можно было бы посчитать (грубо конечно). Если бы мы знали минимальное изменение амплитуды которое различает человек и максимальное значение амплитуды которое человек может слышать.
А что вы называете шумом квантования?
Собственно, это подтверждает мнение, что увеличение интерполированных точек, повышение частоты дискретизации и разрядности на ЦАП не влияет на качество звука воспринимаемое человеком, ибо ЦАП(16бит, 44.1 КГц) достаточно и даже с большим запасом.
Получается все эти «улучшения качества» с точки зрения человека воспроизводящего звук с CD — не более чем маркетинговый трюк…
Добавленные нули, это фактически расширение спектра в этих местах до бесконечности, на резком перепаде амплитуды, что должно восприниматься как щелчки. Дальнейшая фильтрация, убирает все лишнее, что по графику должно выравнивать эти провалы, фактически интерполируя исходный сигнал. Однако фильтровать полезный сигнал мы не можем, поэтому ширина фильтра будет 20 КГц, соотвественно вместо нулей в итоге должны получиться не гладенькие участки плавно соединящие изначальные точки квантизации а биения с частотой до 20 КГц включительно, можете показать тот же график в увеличенном виде, и с фильтром на 44КГц, а не 20КГц?
Добавленные нули, это фактически расширение спектра в этих местах до бесконечностиСпектр дискретного сигнала ограничен по определению.
что должно восприниматься как щелчкиНе должно. В частотном домене «щелчок» — это всплеск в широком диапазоне частот, из чего следует, что для восприятия перепадов амплитуд как щелчков они должны быть достаточно далеко разнесены во времени.
соотвественно вместо нулей в итоге должны получиться не гладенькие участки плавно соединящие изначальные точки квантизации а биения с частотой до 20 КГц включительно, можете показать тот же график в увеличенном виде
Линии между точками я нарисовал сам, и это тоже не совсем корректно, потому правильнее было бы интерполировать их sinc-ом, но на небольшом масштабе это не принципиально, поскольку разницы не видно. Соответственно и масштаб графика увеличивать нет смысла.
и с фильтром на 44КГц, а не 20КГцС моим примером эти частоты не пересекаются.
воспроизведения дисков формата Аудио CD в начале тысячелетия. Именно тогда для воспроизведения 16 битных записей начали применять 18 и даже 20 битные цифро-аналоговые преобразователи
Первый 20-битный цап это AD5791 и представлен он в 2010-м году. Так что в начале тысячелетия не могли начать применять 20-битные цапы.
И по поводу «теоремы Нейквиста». Во-первых на русском языке Nyquist всегда был Найквистом. А во-вторых «Nyquist–Shannon theorem» на русском языке звучит как «теорема Котельникова-Шеннона», или просто «теорема Котельникова». Вот такие загогулины при переводе.
А во-вторых «Nyquist–Shannon theorem» на русском языке звучит как «теорема Котельникова-Шеннона»,
да, да я в курсе что Россия — Родина Слонов
Первый 20-битный цап это AD5791 и представлен он в 2010-м году.

Например набор микросхем, включающий «однобитный» TDA1547, реализующий 20-битное ЦАП в 91 году был точно. http://www.lampizator.eu/lampizator/LINKS%20AND%20DOWNLOADS/DATAMINING/tda1547.pdf
Есть ещё обзор по ЦАПАм в хайэнде http://www.dutchaudioclassics.nl/the_evolution_of_dac_the_digital_filter/
Из вашего даташита (THD + N)/S от -96 до -101 дб.
При таких параметрах он не может выдавать больше чем 16 бит информации.
И, раз мы вспоминали Найквиста, шум Джонсона-Найквиста ограничивает теоретический предел ЦАПа в ≈27 бит при комнатной температуре на частоте 20 Кгц.
Ещё раз повторю, 32-битный цап имеет такое же отношение к реальности как картриджи на 9999 игр.
При таких параметрах он не может выдавать больше чем 16 бит информации.
Но от этого он не перестаёт быть 20 битным. Есть такая весчь как эффективная разрядность. И в данном случае эти 16 бит эффективной разрядности прекрасно согласуются с 16 битами, получаемыми с СD.
эти 16 бит эффективной разрядности
Я бы не стал так спешить. «не больше 16 бит» не значит что их таки 16.
Quantization и теорема Найквиста всё же, а не Нейквиста. И ещё «CD диск» — тавтология. Как и digital-to-analog DAC. За статью спасибо :-)
Ресемплинг. Цифровая кирпичная стена против теории заговора. Рождественская сказка для любителей чистого звука