Ни в одной области электроники не скопилось столько мифов,
как в области Hi-Fi и Hi-End устройств для воспроизведения звука.
Ударим Рождественской Историей по одному из них!




Когда старый год уже проводили, Новый встретили сначала в узком семейном кругу, а затем с более дальними родственниками, когда закончились или пришли в негодность новогодние салаты и стало отпускать похмелье…

Те, кто не захотел или не смог встречать Новый Год в Дальнем Зарубежье, начинают ощущать на себе зов персонального компьютера.

Именно для них и предназначена моя рождественская история, об основах ресемплинга — технологии, позволившей значительно улучшить качество воспроизведения дисков формата Аудио CD в начале тысячелетия. Именно тогда для воспроизведения 16 битных записей начали применять 18 и даже 20 битные цифро-аналоговые преобразователи. С первого взгляда это выглядело как маркетинговая уловка производителей, направленная на извлечение дополнительной порции денег из кошельков доверчивых аудиофилов, но в этот раз сторонники теории заговоров могут курить в сторонке. На самом деле это было удачной попыткой улучшить качество воспроизведения и снизить цену дорогостоящей профессиональной аппаратуры. История старая, но поучительная, во многом актуальная и по сей день.

Цифро-аналоговый преобразователь digital-to-analog DAC является сердцем любой аудиовопроизводящей системы, использующей в качестве источника компакт диски. На него возложена сложная и деликатная задача раскодирования последовательности 16-битных чисел и преобразования её в формат, воспринимаемый человеческим ухом.



В далёком 1983 году появился первый культовый CD проигрыватель Magnavox со сдвоенным 14 битным конвертором, но уже к началу века многие системы высококачественного воспроизведения CD дисков имели 18, а то и 20 битные преобразователи. Почему?

Немного теории, почти без формул


Концепция цифро-аналоговых преобразований покоится на двух китах: частоте дискретизации sampling и разрядности quantization.

Для воспроизведения звука в PCM формате мы должны через равные промежутки времени преобразовывать цифровые значения в соответствующие им аналоговые величины напряжения или тока. Частота этих преобразований и является частотой дискретизации. Согласно теореме Найквиста, таким образом возможно воспроизводить сигналы с частотой не выше половины частоты дискретизации. Наиболее распространённые форматы, которые способны воспроизводить сигналы с частотой воспринимаемой человеческим ухом общепринята цифра 20 кГц, имеют частоты дискретизации в 44.1 и 48 КГц.

image
Первый до сих пор широко используется в звуковых компакт дисках (CDDA, англ. Compact Disc Digital Audio, также называемый англ. Audio CD и Red Book), а второй зародился в ряде стандартов для профессиональной звукозаписывающей аппаратуры.

Давайте вообразим себе что при записи звуковой сигнал попадает на идеальный аналогово-цифровой преобразователь. Он не имеет собственных шумов и искажений и преобразует мгновенное значение поступающего на него сигнала в цифровое с заданной разрядностью, ну например в 16 бит, как это принято в формате Audio CD. В таком случае, теоретически достижимый динамический диапазон сигнала (соотношение между оцифрованными сигналами с самым большим и маленьким уровнями) будет составлять 98.1 dB. Для вычисления этой величины часто используют приближённую формулу, согласно которой каждый лишний бит добавляет 6 децибел к теоретически достижимому динамическому диапазону. Для 16 битного сигнала мы получим:

6dB/bit*16bits=96dB.

Реальный музыкальный сигнал чаще всего состоит не из чистого тона, а из смеси большого количества быстро меняющих свою частоту и амплитуду гармоник. Для гармоник, имеющих амплитуду менее одного разряда АЦП, невозможно восстановить корреляцию с исходным сигналом и они в результате операции кодирования-декодирования превращаются в белый шум. Кроме этого, шумы генерируются быстро изменяющимися сигналами с большой амплитудой, которых много скажем в поп музыке.

От идеальных приближений к реальной жизни. Проблемы первых CD проигрывателей


Со времён начала использования цифровых технологий в звукозаписи ведётся постоянная гонка за увеличение их производительности и уменьшение стоимости. Первые CD проигрыватели имели единственный параллельный DAC и две входные цепи, которые поочерёдно подавали на него сигналы то правого, то левого каналов. Мгновенные уровни аналоговых сигналов на выходе DAC фиксировались с помощью специальных цепей на время между двумя считываниями и попеременно поступали на отдельные усилители правого и левого каналов. Это порождало дополнительные искажения, величина которых зависела от разности мгновенных звуковых уровней каналов. Под напором критики ауидофилов производители вынуждены были перейти на схему с отдельными DAC для каждого из каналов.

image На выходе DAC присутствует ступенчатый сигнал, который не слишком похож на плавный исходный, в нём существуют неприятные на слух искажения. Давайте для упрощения представим что на вход была подана единственная гармоника с частотой 1 КГц. Операция восстановления оцифрованного сигнала приводит фактически к возникновению интермодуляционных искажений между исходным сигналом и частотой дискретизации — в нашем случае 44.1 КГц. (Механизм возникновения интермодуляционных искажений и ликбез по гармоникам при необходимости ищите в моей прошлой статье).

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



В ранних моделях аппаратуры для воспроизведения цифрового контента для этого использовались фильтры, которые имели плоскую характеристику до частоты в 20 кГц, а далее резкое ослабление уровня на 80дБ и более. В английской терминологии такие фильтры называют brick-wall, на русском иногда именуют по аналогии “кирпичной стеной”. Проблема заключалась в том, что аналоговые ФНЧ высокого порядка очень чувствительны к точности значений пассивных компонентов, из которых они состоят. Ещё больше осложняют ситуацию требуемые номиналы выбивающиеся за пределы стандартного ряда и особые требования к качеству этих компонентов, которое необходимо для достижения минимального вклада в искажение сигнала. В результате, стоимость данных фильтров получалась запредельной, но самое печальное — они не смогли удовлетворить запросы аудиофилов, поскольку данные фильтры имели большие фазовые искажения, особенно на краях воспроизводимого диапазона. Поэтому звучание ранних версий CD проигрывателей несмотря на высокую стоимость аудиофилы характеризовали как “песочное” (gritty).

Цифровые фильтры спешат на помощь. Oversampling на пальцах


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

Для того, чтобы пояснить её сущность давайте представим процесс восстановления сигнала с так любимой ГОСТами частотой 1 КГц. На рисунке A представлен ряд сэмплов составляющих сигнал, которые появляются на выходе DAC, а правее спектральные составляющие второго и третьего порядков, содержащиеся в сигнале на выходе DAC. Можно заметить, что сигнал является ни чем иным, как продуктом интермодуляционных искажений между исходным тоном с частотой 1 КГц и частой оцифровки 44.1 КГц.



Увеличим частоту дискретизации сигнала в четыре раза путём элементарной операции — добавления лишних трёх сэмплов между двумя соседними, каждый из которых имеет нулевые значения, как показано на рисунке C. Одновременно с этим добавим два младших разряда в каждый сэмпл, также заполнив их нулями. Теперь мы получили 18 битные значения сэмплов. В результате этой операции спектр сигнала фактически не изменился, но на самом деле произошло фундаментальное изменение. Гармоники второго порядка, вызванные частотой дискретизации стали частью спектра основного сигнала. Производные же гармоники переместились выше частоты 44.1 кГц. Это показано на рисунке D.



В области же спектра основного сигнала с успехом можно применить цифровую фильтрацию, что мы и сделаем, использовав цифровой фильтр высокого порядка, с АЧХ показанный на рисунке F. Физически мы получаем дополнительные промежуточные точки между имеющимися сэмплами сигнала, которые сглаживают переходы между двумя значениями за счёт появления дополнительных двух разрядов в представлении амплитуды.



Теперь, когда всю тяжёлую и грязную работу выполнил цифровой фильтр мы подаём результирующий сигнал с частотой дискретизации в 44.1*4 =176.4 КГц, на DAC.

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



Результат — спектр полученного сигнала стал гораздо ближе к исходному, паразитные составляющие в нём сильно ослаблены, а фазовые искажения сведены к минимуму благодаря возможностям цифровой фильтрации.


Аппаратная реализация


На рисунке представлена аппаратная реализация описанного выше решения. Операции передискретизации и цифровой фильтрации выполняет микросхема CXD1088Q производства фирмы SONY — одним из прародителей формата Audio CD. Несложная логическая схема поочерёдно запускает преобразование двух отдельных 18 битных DAC AD1860.



Какие же преимущества мы получили в результате наших цифровых фокусов?


  • Снижение интермодуляционных искажений
  • Низкие фазовые искажения, вносимые фильтром
  • Отличное подавление высших гармоник, возникающий в процессе цифро-аналогового преобразования, которые могут служить источником возникновения интермодуляционных искажений в усилительном тракте
  • Применение ЦАП с большей разрядностью позволяет уменьшить нелинейности преобразования и коэффициент гармонических искажений в силу того, что они имеют лучшие параметры
  • Благодаря использованию специализированных чипов вместо сложных аналоговых фильтров, снизилась цена реализации, размеры и потребляемая мощность аппаратного решения.

Каждому яблоку место упасть, каждому вору возможность украсть…


Как любая хорошая рождественская история, эта имеет хэппиенд. От внедрения новой технологии кажется выиграли все:


Производители профессиональной аппаратуры и CD проигрывателей в сегменте Hi Fi смогли улучшить качество звука и значительно увеличить повторяемость параметров своих изделий в процессе производства.

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

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

Ну а избранные производители хайэнда могут создавать единичные экземпляры устройств, тщательно подбирая компоненты аналогового фильтра с характерным названием “кирпичная стена”, получая при этом аппараты с индивидуальным звучанием обусловленным в основном вносимыми фильтрами фазовыми и не только искажениями и задирать их ценник до небес.


Более подробное сравнение работы аналоговых и цифровых фильтров и ответы на характерные вопросы читайте в следующей статье

.

При подготовке публикации были использованы материалы статьи DAC ICs: How Many Bits is Enought? под авторством Robert Adams
Поделиться с друзьями
-->

Комментарии (83)


  1. AntonSor
    02.01.2017 13:46

    Кстати да, сэкономили пару-тройку корпусов операционных усилителей для активного ФНЧ и добавили корпус цифрового фильтра. Плюс выкинули операцию по проверке АЧХ фильтра на выходе. Плюс получили возможность написать на коробке красивые маркетинговые слова про цифровую фильтрацию и 192 кГц.


    1. progchip666
      02.01.2017 14:02
      +2

      Похоже, уважаемый, вы не слишком внимательно прочитали статью, прежде чем оставлять этот комментарий. Дело не в количестве корпусов операционников, хотя их для реализации аналогичного фильтра понадобится намного больше двух. Дело в том, что подобный фильтр просто не получится реализовать из-за невозможности подобрать аналоговые компоненты — резисторы, индуктивности, конденсаторы с необходимой для него точностью, я уже не говорю о том, что с изменением температуры его параметры уплывут всё равно уплывут.


      1. AntonSor
        02.01.2017 14:15

        Для того, чтобы обрезать все, что лежит за границами звукового диапазона (20 кГц) и получить затухание под 40 дБ на 44 кГц, да с ровной фазовой характеристикой, требуется (с ровной — это фильтр Баттерворта) фильтр 7 порядка, это три операционных усилителя и по 10 5%-е резисторов и конденсаторов на канал. Да, громоздко, но не невозможно. Два счетверенных операционных усилителя типа TL074. В любительском приемнике прямого преобразования бывает больше (в фазовращателе).


        1. progchip666
          02.01.2017 15:08
          +1

          и по 10 5%-е резисторов и конденсаторов на канал

          Вы сами то поняли, что написали? С таким разбросом компонентов это будет не фильтр, а генератор искажений сигнала.


          1. AntonSor
            02.01.2017 15:19
            +1

            Ничего страшного. Если все резисторы и конденсаторы одновременно изменят свой номинал на 5% — частота фильтра тоже уйдет на 5%. Ну будет затухание не 100 раз, а 95 раз на исходной частоте, 39 дБ вместо 40 дБ. Никто этого не ощутит и никаких серьезных последствий не вызовет. А 5% допуск на значения резисторов и конденсаторов и сейчас, и в середине 80-х годов на Западе вполне стандартен. Даже для бытовой техники.


            1. progchip666
              02.01.2017 15:39
              +1

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


              1. dernuss
                02.01.2017 19:54
                +1

                Всё гораздо проще. Дело не в 5%, а в размерах индуктивностей и емкостей на звуковые частоты. Поэтому цифровой фильтр в данном случае дешевле;)


            1. geher
              02.01.2017 16:07
              +1

              > Если все резисторы и конденсаторы одновременно изменят свой номинал на 5% — частота фильтра тоже уйдет на 5%

              Это вряд ли. Если я правильно помню, то в формуле рассчета частоты фильтра емкости и сопротивления отнюдь не суммируются, а потому результат будет отличаться совсем не на 5%.
              Не говоря уже о том, что в реальной жизни никогда не будет одновременного изменения всех параметров именно на 5%


              1. AntonSor
                02.01.2017 16:18

                Да, согласен, частота обратно пропорциональна RC. 0,95*R*0.95*C = 0,9025RC, т.е. на 10 %. А если номиналы уйдут не в одну сторону, то это даже проще — часть уйдет в одну, часть в другую, в итоге останется среднее значение.


                1. zerg59
                  02.01.2017 21:00
                  +3

                  Я вот вспомнил закон Мерфи для электроники. «Всё, что требует наладки и регулировки, обычно не поддаётся ни тому ни другому»


          1. dernuss
            02.01.2017 17:44
            -1

            С таким разбросом компонентов это будет не фильтр, а генератор искажений сигнала

            Хорошая новогодняя шутка;)


        1. sim2q
          02.01.2017 16:54
          +1

          В любительском приемнике прямого преобразования

          полоса в нём от силы 3 kHz


          1. progchip666
            02.01.2017 17:10
            +1

            Да и к качеству сигнала требования нулевые — главное слова различать. Там и 5 процентами можно обойтись.


  1. iig
    02.01.2017 17:09
    +1

    Уйдет не только частота. Не строят сложные фильтры на 5% компонентах.


    1. progchip666
      02.01.2017 17:17
      +4

      Совершенно верно! Когда нарушается соотношение между компонентами то фильтр просто теряет свои свойства, а не изменяет частоту полосы пропускания. Причём чем больший порядок имеет фильтр, тем тщательнее надо подбирать компоненты для того чтобы получить заявленные характеристики. Я уже не говорю о том, что паразитная составляющая в компонентах во всём частотном диапазоне не должна играть существенного значения.


      1. dernuss
        02.01.2017 17:48

        фильтр просто теряет свои свойства, а не изменяет частоту полосы пропускания.

        И какие же свойства свойства он теряет?


        1. progchip666
          02.01.2017 18:11

          Все в той или иной степени, которая зависит насколько вы нахимичили с компонентами. Но самое неприятное что он может элементарно потерять главное свойство — устойчивость и похоже гораздо быстрее чем вы думаете.


          1. dernuss
            02.01.2017 19:41
            -1

            Интересно бы посмотреть на схему RLC фильтра.


            Вы сколько аналоговых фильтров спроектировали?


            1. dernuss
              02.01.2017 19:42

              На схему неустойчивойчивого фильтра


              1. progchip666
                02.01.2017 20:23
                +4

                Вы же занимаетесь разработкой устройств практически любой сложности, в чём проблемы? Для вас не составит труда собрать фильтр девятого порядка на компонентах с допуском 5% и измерить параметры своего творения.
                Если ещё и статью с результатами опубликуете вообще будет замечательно!


                1. dernuss
                  02.01.2017 20:27

                  Я то да, есть такое.
                  Но я понимаю что вы отказываетесь предоставить схему неустойчивойчивого rlc фильтра?


                  1. zerg59
                    02.01.2017 21:12
                    +1

                    Регенеративный каскад. Там вводилась ПОС для компенсации потерь в контуре ®. Для получения максимальной избирательности приходилось регулировать величину обратной связи достаточно часто. Иначе получаем сверхрегенератор. Который, кстати, излучает в антенну. И который можно засечь радиопеленгатором. Причём у гетеродинного приёмника, где частота гетеродина сдвинута на величину ПЧ и хоть как-то отфильтровывается входным фильтром, шансов быть непойманным больше.

                    Вообще абсолютно устойчивыми являются только нерекурсивные фильтры.


                    1. dernuss
                      02.01.2017 21:16
                      -5

                      А если только на rlc? Слабо?


                      1. zerg59
                        02.01.2017 23:11
                        +2

                        На слабо будете фраеров ловить. Здесь вроде другой ресурс.
                        Если без активных элементов — то это будет как раз аналог цифрового нерекурсивного фильтра. Кочечно будет устойчив как айсберг на пути Титаника. Но кто будет делать фильтр на ЗЧ такого порядка только на пассивных элементах?


                        1. dernuss
                          03.01.2017 00:13

                          А вы использовали регенеративный каскад в качестве фильтра ЗЧ?


                          1. dernuss
                            03.01.2017 00:14

                            А вы использовали регенеративный каскад в качестве фильтра ЗЧ?


                          1. zerg59
                            03.01.2017 01:34

                            Вроде в Радио я видел схему трёхпрограммного приёмника с активным фильтром на мосте Вина. Там то же самое — для получения максимальной избирательности надо было подходить близко к порогу генерации. Почти регенеративный каскад, но на RC и операционнике ;-) Там почти ЗЧ — что-то типа 75 кГц.


  1. ilynxy
    02.01.2017 17:32
    +2

    А есть дельта-сигма, где идея ресемплинга доведена до оверсемплинга — частота дискретизации превышает полезную полосу на пару порядков (и разрядность сокращена до одного бита). Чем упрощает ФНЧ до уровня RC-цепочки.


    1. progchip666
      02.01.2017 17:59
      +1

      В последние годы АЦП и ЦАП, основанные на этом принципе, практически полностью завоевали область обработки звука.
      Рассказанная сегодня история уже в прямом смысле является ИСТОРИЕЙ. Я выбрал её как пищу для ума — изящного решения проблемы. И как лишнее напоминание того, что прежде чем строить теории заговора стоит самому разобраться в сути проблемы.


    1. Gryphon88
      07.01.2017 03:47

      Извините, а можете на пальцах объяснить или посоветовать литературу, где объясняется, почему при повышении дискретизации можно огрублять квантование?


      1. progchip666
        07.01.2017 12:00

        Если совсем на пальцах…
        Нарисуйте график синусоиды на клетчатой бумаге, только сравнительно большой амплитуды — клеток двадцать не меньше примерно как в моей следующей статье и второй такой в 4 раза шире, а потом попробуйте по клеточкам соединить как в моей следующей статье и увидите сами на каком из графиков аппроксимированный сигнал будет ровнее.


  1. mirsev
    02.01.2017 17:43

    Увеличим частоту дискретизации сигнала в четыре раза путём элементарной операции — добавления лишних двух сэмплов между двумя соседними, каждый из которых имеет нулевые значения, как показано на рисунке C.
    Там и вправду вставка нулевых значений? Логичнее было бы делать либо повтор предыдущего значения, либо интерполяцию между соседними значениями… Тем более что интерполяция в аудио CD, вроде бы, предусмотрена для коррекции сигнала в том случае, когда из-за дефектов или повреждения диска цифровая коррекция ошибок уже не срабатывает. Понятно, что цифровой фильтр может эту интерполяцию и сам сделать, так что вопрос, скорее, о том, а как же оно всё-таки реализовано на самом деле…


    1. progchip666
      02.01.2017 17:50

      Трудно сказать. Речь идёт об аппаратном решении, причём весьма старом. Данный чип увидел свет более 15 лет назад. Вполне вероятно что в целях упрощения именно так и сделали — всё таки обработка сигнала ведётся на приличной частоте. Возможно также что подобного рода интерполяция не слишком хорошо вписывалась в аппаратную реализацию алгоритма фильтрации.
      Думаю что сегодня, когда вычисления строятся на основе DSP ядер, вставляют уже интерполированные значения в качестве нулевых условий


    1. ilynxy
      02.01.2017 18:29
      +4

      Там и вправду вставка нулевых значений. Если сделать повтор предыдущих то сигнал на выходе не изменится (то есть, если увеличить частоту дискретизации в N раз и повторять капждый сэмпл N раз, то его никак не отличить от исходного). Если сделать интерполяцию значений — то возникает вопроос: а как интерполировать, чтобы в спектре не появилось новых гармоник? Например если мы сделаем линейную интерполяцию то получим новые гармоники (немножко лень расписывать подробно, но навскидку это будет расширение спектра + фильтр «бегущее среднее», которы не обеспечивает нужное подавление).
      Если расписать красивыми мат. выкладками вставку нулевых значений + фнч, получим самую православную интерполяцию. вставка нулевых значений оставляет исходный спектр + появляются отражения, которые и давяца ФНЧ, обеспечивая нам отсутсвие внеполосных гармоник. При этом к ФНЧ предъявляются определенные требования по крутизне спада и глубине подавления.


      1. mirsev
        02.01.2017 20:48
        +1

        Если сделать повтор предыдущих то сигнал на выходе не изменится (то есть, если увеличить частоту дискретизации в N раз и повторять капждый сэмпл N раз, то его никак не отличить от исходного).
        А зачем его отличать? Дело не в этом, скорее всего, а в том, что повторение в данном случае эквивалентно фильтрации сигнала через фильтр с sinc-образной передаточной характеристикой, т.е. слегка будут завалены верхние частоты…
        как интерполировать, чтобы в спектре не появилось новых гармоник? Например если мы сделаем линейную интерполяцию то получим новые гармоники
        Нет. Линейная интерполяция эквивалентна прохождению сигнала через фильтр с симметричным треугольным откликом. Никаких лишних гармоник при этом не появится, разве что из-за квантования, но это один бит и при увеличенной разрядности ЦАП это будет совсем незаметно. Наверное, тут тоже дело в том, что так же, как и в случае повторением, в случае линейной интерполяции чуть-чуть завалятся верхние частоты… Конечно, надо бы прикинуть всё математически или, хотя бы, на картинках с передаточными характеристиками, но сейчас каникулы… :)


        1. progchip666
          02.01.2017 20:53

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


        1. ilynxy
          03.01.2017 19:32
          +1

          А зачем его отличать? Дело не в этом, скорее всего, а в том, что повторение в данном случае эквивалентно фильтрации сигнала через фильтр с 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 раз). Вот как раз и получим небольшой завал (перемножая спектр исходного сигнала и КИХ фильтра). Да, новые гармоники не появятся, это я лишнего махнул.
          Проще показать это всё через свёртку. Но новый год и лень =)


    1. Sun-ami
      02.01.2017 19:03
      +1

      Вставку нулей вместо повтора предыдущего значения используют потому что это позволяет уменьшить вычислительную нагрузку соответственно кратности ресэмплинга — используются КИХ-фильтры, представляющие собой множество MAC-операций (умножить сэмпл на коэффициент и добавить к аккумулятору), при этом для вставленных нулевых сэмплов вычисления делать не нужно.


    1. Refridgerator
      02.01.2017 20:58
      +4

      Логичнее было бы делать либо повтор предыдущего значения, либо интерполяцию между соседними значениями

      Не логичнее, поскольку это приведёт к искажению АЧХ исходного сигнала (за исключением sinc-интерполяции). Математически интерполяция в данном случае будет равна свёртке сигнала с интерполируемой функцией (в случае линейной интерполяции — с треугольной, при повторе предыдущего семпла — прямоугольной и т.д.).


    1. Carry
      03.01.2017 13:06

      В процессе оцифровки мы сигнал умножаем на дельта-импульс.
      При восстановлении его и получаем.
      Преславутый «ступенчатый» сигнал на выходе ЦАПа — крайне неправильный сигнал, имеет огибающую спектра sinx/x вместо плоской.

      Передискритизация с вставлением нулей приближает сигнал к исходному дельта-импульсу.


  1. aamonster
    02.01.2017 18:49
    +1

    Простите, или я не понял, или вы не раскрыли мысль из начала статьи — "для воспроизведения 16 битных записей начали применять 18 и даже 20 битные цифро-аналоговые преобразователи". Зачем повышать разрядность ЦАП, если передискретизация позволяет, напротив, обойтись меньшей разрядностью (вплоть до "однобитных" дельта-сигма, которые тут уже упоминали)?
    Или маркетинг в том, что взяли 16-битный ЦАП на 176 кГц и стали продавать, как 18-битный?


    1. VaalKIA
      07.01.2017 09:19
      +1

      Тоже хотел задать подобный вопрос, но по обсуждению ниже: «Только увеличение количества сэмплов даёт возможность повысить разрядность ЦАП, иначе эта операция просто не имеет смысла.», фактически все распинания автора про разрядность не имеют смысла, стоило говорить про 176КГц, для полного раскрытия потенциала которых требуется прибавить хотя бы пару бит, я — возмущён стилем изложения, если не сказать больше.


  1. progchip666
    02.01.2017 18:53

    Вы правы, действительно непрозрачно получилось.
    Подправил в статье.
    Смысл в том, что добавляя два лишних сэмпла мы изменяем разрядность существующих, прибавляем два младших бита, заполняя их нулями. В результате процесса фильтрации «промежуточные» сэмплы «сгладят» переходы между исходными.
    Если бы мы попытались тупо прибавить разрядность, не повысив частоту сэмплирования эта операция была бы бессмысленной.


    1. aamonster
      02.01.2017 19:44

      Ну да, результат промежуточных вычислений будет иметь больше 16 бит. Но непонятно, почему это требует повышения разрядности ЦАП:


      1. При тупом отбрасывании младших бит мы всё равно получаем выигрыш (кто делал subpixeling при рисовании во времена CGA-VGA — поймёт: наклонную линию можно сместить на долю пиксела даже без anti-aliasing).
      2. Отброшенные биты необязательно терять — их можно подмешать к сигналу последующих отсчётов. Вроде в те годы алгоритм Флойда-Стейнберга был уже широко распространён в компьютерной графике, и поступить так же — естественно.
        Т.е. вроде бы нет причин повышать разрядность АЦП, а можно и вообще понизить (как я понимаю, в итоге к этому и пришли, но это уже совсем другая история).


      1. progchip666
        02.01.2017 20:19

        Тут пожалуй связь обратная.
        Только увеличение количества сэмплов даёт возможность повысить разрядность ЦАП, иначе эта операция просто не имеет смысла.
        Повысив разрядность ЦАП можно сделать интерполяцию между существующими точками — собственно именно эту операцию и выполняет фильтр. Теоретически разрядность АЦП можно и не повышать, но тогда и интерполяция будет грубее.
        Да, про сигма дельта АЦП — совершенно другая история.


      1. progchip666
        02.01.2017 20:40

        Возможно тут ещё причина в том, что упрощается аппаратная реализация цифрового фильтра при одновременном увеличении частоты и разрядности по амплитуде. Если кто то из крупных специалистов в области ЦОС подскажет буду благодарен.


        1. mirsev
          02.01.2017 22:30
          +1

          Мне кажется, что поскольку коэффициенты в импульсном отклике цифрового фильтра явно не будут целочисленными, то для представления промежуточных вычислений и выходного сигнала фильтра потребуется больше разрядов. Возможно, что до ЦАПа «тащить» все разряды и не сто?ит, но ЦАП с бо?льшим числом бит — не такая уж сложная и дорогая штука, как, например, АЦП, так что, может, даже это хорошо — уменьшить шумы квантования за счёт увеличения числа бит. Вытянет такой увеличенный динамический диапазон после ЦАПа аналоговый усилитель или нет — это уже другой вопрос…


  1. mwaso
    02.01.2017 19:51

    А что делает SHA section на последнем рисунке? Я так понял, что она занимается задержкой сигнала, чтобы уменьшить фазовый сдвиг между правым и левым каналом, т.к. АЦП работают по очереди. Правильно?

    И с рисунком D как-то не прозрачно. Понятно, что у сигнала с вставленными нулевыми семплами получится такой спектр, но почему зеркалки (images) считаются от 88кГц, а не от 176? Хоть этот момент особой роли и не играет, но интересно.


    1. progchip666
      02.01.2017 20:38

      Честно скажу — не знаю ответа на эти вопросы. Возможно кто то из читателей подскажет.


    1. mirsev
      02.01.2017 23:09

      Про SHA (Sample-and-Hold-Amplifier) — правильно: восстанавливает синхронность дискретизации обоих каналов. Про рисунок D: вообще, aliases («зеркалки») — это то, что появляется от половины частоты дискретизации и дальше…


  1. Dum_spiro_spero
    02.01.2017 20:14

    Небольшое уточнение по грамматике.
    Законченные аудиофилы теперь могут ворчать о том, какой крутой звук был у старых аппаратов с аналоговыми фильтрами пока всё не испортила цифра и охотится за винтажной техникой.
    Аудиофилы что могут делаТЬ? ОхотиТЬся.


    1. progchip666
      02.01.2017 20:25

      принимается, а вообще аудиофилы на что угодно способны :)


  1. Refridgerator
    02.01.2017 20:48
    +4

    Разрешите продемонстрировать более наглядно.

    Дан сигнал с частотой дискретизации 4кГц (зелёный — во временном домене, синий — в частотном — АЧХ):



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



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



    Профит.


    1. progchip666
      02.01.2017 21:01

      Спасибо, красиво получилось.


    1. Enessar
      03.01.2017 12:24

      Восхитительно. Я правильно понимаю, что такая операция мене затратная, чем синк интерполяция?


      1. progchip666
        03.01.2017 12:42

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


      1. Refridgerator
        03.01.2017 17:00

        Чисто математически это одно и тоже, поскольку sinc в теореме Котельникова как раз и играет роль идеального фильтра низких частот с линейной фазой. Разница только в реализации — программно FIR-фильтрацию эффективнее делать через FFT, в железе — линейной свёрткой, но используя специальную архитектуру для распараллеливания вычислений. Аналоговыми (IIR) фильтрами высокого порядка тоже можно получить приемлемые результаты, но они фазу вращают. В некоторых случаях используют гибридные решения, когда FIR-ом компенсируют фазовые сдвиги от IIR.


    1. FreeMind2000
      03.01.2017 18:16

      Просветите не специалиста? ;)

      Первоначальная цепочка такая:
      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. Refridgerator
        03.01.2017 20:29

        1. А действительно ли мы улучшили качество звука, добавив семплы, которые в оригинале (живом звуке) могли отличаться от тех, которые мы придумали(интерполировали)?
        В оригинале (живом звуке) никаких семплов нет, потому что он непрерывный, а не дискретный. Мы не улучшаем качество звука как таковое, мы снижаем уровень шумов.

        Ведь, то что мы записали с частотой 44.1 КГц — было реально зафиксировано микрофоном, а то что было между записанными семплами нам не известно.
        Известно согласно теореме Котельникова или Шеннона. Сигнал перед дискретизацией обязательно фильтруется, причём с некоторым запасом. Более того, чувствительность микрофонов, используемых для записи, редко превышает 15кГц.

        2. На сколько далеко наша фантазия (прошу прощения, интерполяция :) может нас завести? Т.е. теоретически, мы можем интерполировать и 8битный звук и 4х…
        Битность мы не интерполируем, т.к. шумы квантования удалению не подлежат, только маскировке. А частоту дискретизации можно увеличивать хоть до бесконечности.

        Для человека средний порог частоты воспринимаемого звука 20 кГц, мы воспроизводим с частотой 44.1 КГц — есть ли смысл в дальнейшем увеличении?
        Это вопрос снижения погрешности при восстановлении исходного непрерывного сигнала, а не человеческой чувствительности.

        а кто-нибудь знает сколько разрядов может различать человеческое ухо? ;)
        Ухо отличает не разряды, а перепад в децибелах. Разряды определяют шумы квантования. По поводу чувствительности — множество научных статей можно найти при желании как-то так.


        1. FreeMind2000
          04.01.2017 03:10

          «В оригинале (живом звуке) никаких семплов нет, потому что он непрерывный, а не дискретный. Мы не улучшаем качество звука как таковое, мы снижаем уровень шумов.»

          Если звук считать точками амплитуд во времени (именно это имелось в виду под семплами), то не совсем понятна формулировка «Мы не улучшаем качество звука как таковое, мы снижаем уровень шумов».
          По факту, мы на графике время/текущая_амплитуда создаем новые (интерполированные) точки. А потом наш ЦАП пытается этот график воспроизвести в реальный звук. На мой взгляд, качество воспроизводимого звука — это то, насколько точно он соответствует оригиналу (живому звуку).

          «Известно согласно теореме Котельникова или Шеннона.»
          — Да, похоже по этой теореме, если мы записали звук с необходимой минимальной частотой дискретизации, то можем сгенерировать промежуточные точки в любом количестве.

          «Битность мы не интерполируем, т.к. шумы квантования удалению не подлежат, только маскировке.»
          — Но ведь мы, преобразуем 16бит в 18бит, именно для того чтобы промежуточные точки по амплитуде могли более точно отобразиться на ЦАП. Или я не прав?

          «Это вопрос снижения погрешности при восстановлении исходного непрерывного сигнала, а не человеческой чувствительности.»
          — Так ведь смысл как раз таки в том, зачем снижать погрешность, если ее человек и так уже не чувствует?

          «Ухо отличает не разряды, а перепад в децибелах. Разряды определяют шумы квантования. „
          — Ну почему же, разрядность уха человека (его чувствительность к звукам по амплитуде) можно было бы посчитать (грубо конечно). Если бы мы знали минимальное изменение амплитуды которое различает человек и максимальное значение амплитуды которое человек может слышать.
          А что вы называете шумом квантования?


          1. vintage
            04.01.2017 12:12

            Тут утверждается, что дискретность уха в один момент времени не превышает 5 бит, а 16 с головой покрывает весь динамический диапазон уха: https://geektimes.ru/company/audiomania/blog/246304/


            1. FreeMind2000
              04.01.2017 15:07

              Спасибо, как раз то, о чем я спрашивал.
              Собственно, это подтверждает мнение, что увеличение интерполированных точек, повышение частоты дискретизации и разрядности на ЦАП не влияет на качество звука воспринимаемое человеком, ибо ЦАП(16бит, 44.1 КГц) достаточно и даже с большим запасом.

              Получается все эти «улучшения качества» с точки зрения человека воспроизводящего звук с CD — не более чем маркетинговый трюк…


              1. Refridgerator
                04.01.2017 18:40
                +1

                Всё не так просто. Маркетинг в 192/24 действительно имеет место быть. 44.1/16 достаточно, если он воспроизводится идеально. А вы возьмите осциллограф и посмотрите, что ваша звуковая карта выдаёт на частот 10кГц.


                1. progchip666
                  06.01.2017 23:22

                  Он не может воспроизводиться идеально, во всяком случае на сложном сигнале. Даже ресемпл не поможет.
                  Не случайно даже во времена CD профессиональная аппаратура поддерживала формат 48/16 плюс ресмпл до 18-20 бит. Видимо этого уже достаточно. В большинстве случаев.


    1. VaalKIA
      07.01.2017 09:58

      Прекрасные графики, но у меня вопрос дилетанта:
      Добавленные нули, это фактически расширение спектра в этих местах до бесконечности, на резком перепаде амплитуды, что должно восприниматься как щелчки. Дальнейшая фильтрация, убирает все лишнее, что по графику должно выравнивать эти провалы, фактически интерполируя исходный сигнал. Однако фильтровать полезный сигнал мы не можем, поэтому ширина фильтра будет 20 КГц, соотвественно вместо нулей в итоге должны получиться не гладенькие участки плавно соединящие изначальные точки квантизации а биения с частотой до 20 КГц включительно, можете показать тот же график в увеличенном виде, и с фильтром на 44КГц, а не 20КГц?


      1. Refridgerator
        08.01.2017 11:49

        Добавленные нули, это фактически расширение спектра в этих местах до бесконечности
        Спектр дискретного сигнала ограничен по определению.

        что должно восприниматься как щелчки
        Не должно. В частотном домене «щелчок» — это всплеск в широком диапазоне частот, из чего следует, что для восприятия перепадов амплитуд как щелчков они должны быть достаточно далеко разнесены во времени.

        соотвественно вместо нулей в итоге должны получиться не гладенькие участки плавно соединящие изначальные точки квантизации а биения с частотой до 20 КГц включительно, можете показать тот же график в увеличенном виде

        Линии между точками я нарисовал сам, и это тоже не совсем корректно, потому правильнее было бы интерполировать их sinc-ом, но на небольшом масштабе это не принципиально, поскольку разницы не видно. Соответственно и масштаб графика увеличивать нет смысла.

        и с фильтром на 44КГц, а не 20КГц
        С моим примером эти частоты не пересекаются.


        1. VaalKIA
          08.01.2017 19:44

          Ладно, я понял, что эту статью можно забыть, мне такие рано ещё читать.


  1. doobrik
    02.01.2017 21:15

    воспроизведения дисков формата Аудио CD в начале тысячелетия. Именно тогда для воспроизведения 16 битных записей начали применять 18 и даже 20 битные цифро-аналоговые преобразователи


    Первый 20-битный цап это AD5791 и представлен он в 2010-м году. Так что в начале тысячелетия не могли начать применять 20-битные цапы.

    И по поводу «теоремы Нейквиста». Во-первых на русском языке Nyquist всегда был Найквистом. А во-вторых «Nyquist–Shannon theorem» на русском языке звучит как «теорема Котельникова-Шеннона», или просто «теорема Котельникова». Вот такие загогулины при переводе.


    1. ptica_filin
      03.01.2017 14:15

      2010-й год — это всего лишь 0,01 от тысячелетия. И даже 2100-й год всё ещё будет началом тысячелетия :)


    1. sh0k
      06.01.2017 23:22

      Первый 20-битный цап это AD5791 и представлен он в 2010-м году.

      А это тогда что?
      The PCM1702 is a precision 20-bit digital-to-analog
      converter with ultra-low distortion (–96dB typ with a
      full scale output).

      http://www.ti.com/lit/ds/symlink/pcm1702.pdf


  1. progchip666
    02.01.2017 22:07
    +3

    А во-вторых «Nyquist–Shannon theorem» на русском языке звучит как «теорема Котельникова-Шеннона»,

    да, да я в курсе что Россия — Родина Слонов
    Первый 20-битный цап это AD5791 и представлен он в 2010-м году.


    1. doobrik
      02.01.2017 22:55
      -1

      Конечно-конечно, ES9018 и PCM1795 — 32 битные, в айфоне стоит 24-битный цап, а на многих картриджах для NES было по 9999 игр. Всё так.


      1. zerg59
        02.01.2017 23:42
        +1

        Вы считаете, что дельта-сигма это не настояцие ЦАПы?
        Например набор микросхем, включающий «однобитный» 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/


        1. doobrik
          03.01.2017 00:56
          +1

          Почему не настоящие? У меня сейчас играет ЦАП который может дельта-сигму на 11,2 Мгц. Вполне себе ЦАП.

          Из вашего даташита (THD + N)/S от -96 до -101 дб.
          При таких параметрах он не может выдавать больше чем 16 бит информации.

          И, раз мы вспоминали Найквиста, шум Джонсона-Найквиста ограничивает теоретический предел ЦАПа в ?27 бит при комнатной температуре на частоте 20 Кгц.

          Ещё раз повторю, 32-битный цап имеет такое же отношение к реальности как картриджи на 9999 игр.


          1. zerg59
            03.01.2017 01:17

            При таких параметрах он не может выдавать больше чем 16 бит информации.

            Но от этого он не перестаёт быть 20 битным. Есть такая весчь как эффективная разрядность. И в данном случае эти 16 бит эффективной разрядности прекрасно согласуются с 16 битами, получаемыми с СD.


            1. doobrik
              03.01.2017 01:37

              1 бит на входе, не больше 16 бит информации на выходе. В каком месте он 20-битный?

              эти 16 бит эффективной разрядности

              Я бы не стал так спешить. «не больше 16 бит» не значит что их таки 16.


              1. zerg59
                03.01.2017 01:47

                я специально отметил «набор микросхем». Сам ЦАП однобитный. Остальное реализуется ещё парочкой. А 20 бит (в даташите про них есть) там нужны ещё для маскирования цифрового шума (noise shaping). Он более неприятен человеческому уху ибо это просто ошибка округления. И зависит от сигнала. И самый простой способ с ним бороться — утопить его в собственных шумах аналоговой части подняв разрядность. Аудиотехника — достаточно специфическая область. Народ прекрасно слушает свою музыку через ламповые усилители с КГ под 10%. Но, по вашему им в таком случае достаточно 6-8 битного ЦАП? Неет. Искажения ламповых усилителей не вызывают такого дискомфорта, как «цифровой шум» Это как с градиентом на экране. Монитор может быть не калиброван, но это фигня по стравнению со ступеньками на градиенте из-за «цифрового шума»


      1. GennPen
        03.01.2017 00:55

        А сколько в этих ЦАПах реально используется бит? Сколько бит бесполезны из-за искажений аудиотракта типа шумов и т.п.? Сильно повезет, если в айфоне полезными окажутся хотя бы 14-16 бит ЦАПа.


    1. rexen
      03.01.2017 12:43
      +1

      Дело не в слонах, а в том, что над этой проблемой в то время реально работали независимо несколько человек. Независимо — потому что это было слишком узкоспециализировано, а то и секретно. Даже в англоязычной Вики упоминается, что Найквист выдвинул теорему, а Шеннон и Котельников развили и доказали теорию. Уиттекеры же доказали чисто математически. Каждый работал несколько в отличном направлении, но вот в этом краеугольном месте вынужденно пересеклись.


      1. progchip666
        03.01.2017 12:44

        В прошлом веке, как и позапрошлом очень много исследований велось в рамках государственных околовоенных программ. Правда секретность больше физиков касалась, чем математиков.


  1. IRI
    02.01.2017 23:10
    +2

    Quantization и теорема Найквиста всё же, а не Нейквиста. И ещё «CD диск» — тавтология. Как и digital-to-analog DAC. За статью спасибо :-)


    1. progchip666
      03.01.2017 01:23
      -1

      Quantization и теорема Найквиста всё же

      Сдаюсь, исправил.


  1. SADKO
    03.01.2017 14:56

    Статейка, действительно о делах дней давно минувших, так-что мне невольно вспомнилась моя первая DAW — CreamWare tripleDAT это была та ещё «песочница», большинство покупателей стремилось от неё избавиться дабы не распугать со студии всех клиентов, а правда была лишь в том, что фильтров на плате не было :-) что для музыкантов это было полной засадой.