ZX Hard #02
28 октября 1999
  Железо  

 ────────────────────────────────────────
             DIGITAL SOUND,
        или расставим точки над i
 ────────────────────────────────────────

(c) VTS'99

   Мне  кажется, этот вопрос слабо освещен
в  ZX-прессе,  поэтому возникают некоторые
заблуждения.  Публикуемый  здесь материал,
полагаю, устранит часть из них.


       Знаковый (биполярный) ЦАП.

   Кто-то  говорил,  что сия фича обладает
лучшим качеством звука, нежели униполярный
(обычный) ЦАП. Вероятно, это чисто субъек-
тивная  оценка, т.к. такого быть в природе
не может.
   Насколько я понимаю, биполярный код вы-
дают   дигитайзеры,   которыми  оцифровуют
сэмплы (хотя я незнаком с пц). Этот же код
можно потом выкидывать в биполярный ЦАП, а
для  униполярного  нужно  делать  пересчет
(прибавлять #80). Все бы ничего, но схемо-
технически  биполярный  ЦАП обычно чуточки
сложнее,  а  произвести пересчет сэмплов в
униполярный код - секундное дело, т.е. ис-
пользовать униполярный ЦАП выгоднее.
   И  вот,  значит, нам говорят, что, мол,
ваши униполярные ЦАП'ы - маст дай.
   На самом же деле единственное его отли-
чие - в формировании постоянной составляю-
щей  на  уровне #80, которая затем отфиль-
тровывается  переходными  конденсаторами в
УНЧ.  Причем  уровень #80 постоянен только
потому, что мы взяли оцифрованный биполяр-
ный сигнал и сместили его на это значение.
Если попытаться сгенерить какой-нибудь RND
сигнал, то этот уровень сместиться и, кро-
ме  того,  может  изменяться.  Если кто не
знает, поясню понятие постоянной составля-
ющей сигнала (Рис.1).



        Рис. 1

   Итак,  постоянная составляющая U0 - это
среднее значение сигнала за некоторое вре-
мя T. Причем если вычислить площадь, огра-
ничиваемую  линиями  Ot,  t=0, t=T и самим
сигналом,  то она будет равна площади пря-
моугольника  U0*T.  А если сложить площади
сигнала  сверху  и  снизу линии ox, то они
будут  равны.  Именно  до этого напряжения
заряжаются  переходные конденсаторы, а за-
тем  "вычитают"  его  из сигнала, оставляя
нагрузке   лишь  переменную  составляющую.
Причем время T определяется инерционностью
конденсатора   (т.е.   постоянной  времени
("тау") т=Rh*C).

   Так вот, если использованный ранее сиг-
нал  с  U0<>#80,  преобразовать и подать в
биполярный ЦАП, там тоже появится постоян-
ная составляющая, и она тоже отфильтруется
конденсатором.  Отдельно хочу предостеречь
сторонников  биполярного преобразования от
попыток избавиться от ненавистного конден-
сатора, используя усилитель с гальваничес-
кими  связями. Попадание упомянутой посто-
янной  составляющей  чревато  порчей ваших
любимых  100-ваттных  колонок  (если Вы не
предусмотрели защиту).

   "А  нафиг тогда вообще нужны биполярные
ЦАП, ведь кто-то их придумал ?" - спросите
Вы. Да, они нужны, но не для получения di-
gital  sounds,  а  скажем,  для управления
двигателем  (изменение  направления враще-
ния), да мало ли чего еще...


          Динамический диапазон.

   Весьма  спорное  понятие.  Одни считают
его  отношением  max  значения  сигнала  к
уровню шумов, а другие - к уровню min зна-
чения  сигнала, причем у первых получается
куда большая цифра (которая и рекламирует-
ся),  а  как  считают вторые, я и вовсе не
понимаю (т.к. критерием min уровня сигнала
выступает субъективная оценка его качества
-  [1],  что  недопустимо).  Весь прикол в
том,  что в аналоговой технике эти оба оп-
ределения  идентичны, т.к. при малых уров-
нях сигнала активные усилительные элементы
практически  не  вносят  искажений, потому
как  работают на узком участке характерис-
тики, где она практически линейна (за иск-
лючением  режима  B,  дающего значительные
искажения  и  при  большом сигнале). А min
уровень  сигнала ограничивается его разли-
чимостью  на  фоне  шумов, т.е. собственно
уровнем шумов.
   В  digital канале есть единственный не-
устранимый шум, "от природы" - шум кванто-
вания.  При этом все остальные шумы - ком-
мутационные, из цепей питания, шумы актив-
ных элементов аналогового тракта, тепловые
шумы, и т.д., видимо, настолько легко уст-
ранимы,  что  о  них можно даже не вспоми-
нать, и вписывать в рекламу заветную цифру
96  дБ... Оставим эти шумы на совести рек-
ламы, и разберемся с шумом квантования.
   Возникает он по банальной причине - ко-
нечному  количеству  ступенек квантования,
определяемого разрядностью цифрового кана-
ла.  Т.к. исходный сигнал - непрерывный, а
оцифрованный  -  дискретный, то всегда су-
ществует  ошибка  квантования, которая все
время  изменяется.  После восстановления в
аналоговый  сигнал эта ошибка превращается
в  шум квантования. Спектр этого шума рас-
положен выше по частоте, чем спектр полез-
ного сигнала, а пик приходиться на частоту
дискретизации.  Если  этот  шум отфильтро-
вать,  то  получиться полностью идентичный
входному сигнал. Но об этом позже. Пусть у
нас  нет  никаких фильтров. Тогда согласно
[2]  уровень шума квантования определяется
как:

          Kш = -(6*N+1.8)  [дБ],

   где N - число разрядов.

   Тогда  при  N=16 получим Kш=-97.8 дБ, а
при N=8 - Kш=-49.8 дБ

   Теперь займемся вторым определением ди-
намического диапазона, реально отражающего
положение вещей.

   Положим  min амплитуду сигнала в 1 еде-
ницу младшего разряда, и получим следующее
выражение:

              D = 6*N  [дБ]

   При  N=16  получим  D=96  дБ, а при N=8
имеем D=48 дБ.

   Собственно эти цифры обычно и приподно-
сятся.  Однако из начальных условий следу-
ет, что на min уровне сигнал принимают од-
нобитовым  !  со всеми вытекающими качест-
венными характеристиками...
   Т.е.  необходимо задаться порогом нели-
нейных  искажений.  На самом деле в теории
это  не  так  просто, а на практике просто
делаются соответствующие измерения [2].
   Намного проще перейти от max допустимых
нелинейных искажений к min допустимому ко-
личеству    разрядов.   Обычно   допускают
Khu=10%, что примерно соответствует 4-раз-
рядному  кодированию [2]. Может, это и не-
верно  с позиций теории, но зато позволяет
легко  оценить динамический диапазон. Хотя
понятия нелинейных искажений и разрядности
квантования не являются синонимичными, од-
нако и то, и другое четко определяет иска-
жения.  Следовательно, в теоретическом оп-
ределении,   оперирующим   max  допустимым
Khu.max, можно использовать min допустимое
Nmin.  Теперь  динамический диапазон можно
оценивать непосредственно количеством раз-
рядом  (т.е.  используя  двоичный логарифм
вместо десятичного):

         D2 = N-Nmin = dN  [бит]

   Приняв Nmin=4, имеем dN = N-4 [бит].

   А можно перейти и к десятичному основа-
нию:

             D = 6*dN  [дБ]

   Для  N=16  имеем  D=72  дБ при Nmin=4 и
D=48 дБ при Nmin=8.

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


            Передискретизация.

   Что  это  такое и с чем ее едят - можно
прочитать в SE#2 ([1]), в статье про комп-
ьютерную  музыку. Если кратко, передискре-
тизация представляет собой заполнение про-
межутка  времени между двумя соседними от-
четами  дополнительными отчетами, значения
которых  вычисляются интерполяцией в соот-
ветствии с импульсной характеристикой иде-
ального  прямоугольного  ФНЧ (к сведению -
именно  это и есть таинственный фильтр Ко-
тельникова).  В  простейших  случаях можно
использовать  обычную  линейную интерполя-
цию.
   Т.о.  передискретизация  -  это  просто
цифровая фильтрация, с повышенной частотой
дискретизации.  Необходима она потому, что
в  обычных саунд-картах нету на выходе ни-
какого  ФНЧ.  Если для fkb=ЧЧкГц это почти
нормально,  то  для  8кГц'овых сэмплов это
выливается  в  ВЧ-шумы в полосе от ЧкГц до
22кГц.   Однако   достаточно  качественную
фильтрацию  даст  обычный  аналоговый  ФНЧ
примерно  восьмого-десятого  порядка. Так,
для  8 порядка нужно 4 операционных усили-
теля,  т.е.  всего  1 корпус К1401УД2 (для
стерео - два корпуса). Подобный фильтр со-
бираются сделать и для GS. По исследовани-
ям  X-Trade,  его  частота среза для боль-
шинства  сэмплов равна 10-12кГц. Кстати, в
районе  16-18 кГц у большинства нормальных
людей  лежит граница слышимости. На TV по-
лоса   1OOГц-1OкГц  (15.62SкГц  -  частота
строк),   на  FM  и  аудио-кассетах  около
1бкГц...  Но,  например,  музыканты слышат
до  22кГц.  Кроме того, есть гипотеза, что
ВЧ-шумы (далеко за 2OкГц) все же восприни-
маются как искажения.
                                        

   Ладно,  пора  закругляться. Вообще-то я
хотел  еще о паре мулек рассказать. Но ре-
шил пока отложить.

   Литература:

   1. Spectrum Expert #2.
   2. Радио,  1991,  N11-12. Звукотехника,
Устройства  преобразования аналоговых сиг-
налов.







Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Video - Converting animation on the example attribute the video.

В этот день...   21 November