Это старая версия документа!
Содержание
Числовые форматы
Аудиоданные на последовательных входах и выходах имеют формат 24-битных знаковых целых значений. Однако ядра SigmaDSP используют числовые форматы с более чем 24 битами для промежуточных значений, коэффициентов и параметров, чтобы обеспечить дополнительный запас (headroom) и точность. В более мощных архитектурах ядер DSP числовой формат был расширен.
Для представления нецелых значений все архитектуры SigmaDSP используют форматы с фиксированной точкой (а не более распространенную плавающую точку), чтобы максимизировать точность, необходимую для обработки аудиосигналов. Числа с фиксированной точкой просто форматируются как A.B, где A — количество битов слева от десятичной точки (целая часть), а B — количество битов справа от десятичной точки (дробная часть).
Комбинированное значение A.B представлено в дополнительном коде, что позволяет использовать как положительные, так и отрицательные значения. Для получения дополнительной информации о представлении в дополнительном коде, пожалуйста, прочитайте подробную статью в Википедии: Дополнительный код
32-битные архитектуры
В 32-битных архитектурах SigmaDSP аудио представляется с A = 8 и B = 24, что дает число в формате 8.24. Однако сигналы управления и значения индексных таблиц обычно требуют целочисленного представления и поэтому представляются как A = 32 и B = 0, т.е. значение 32.0 без дробной части.
Формат 32.0 (целочисленный)
Сигналы в целочисленном формате подчиняются стандартным правилам двоичного представления.
0b = 0, 1b = 1, 10b = 2, 11b = 3, 100b = 4, et cetera.
Числа в формате 32.0 находятся в диапазоне от (2^31)-1 до -(2^31). Включая нулевое заполнение, положительные целые числа в DSP представляются следующим образом:
0000 0000 0000 0000 0000 0000 0000 0000 = 0 0000 0000 0000 0000 0000 0000 0000 0001 = 1 0000 0000 0000 0000 0000 0000 0000 0010 = 2 0000 0000 0000 0000 0000 0000 0000 0011 = 3 0000 0000 0000 0000 0000 0000 0000 0100 = 4 ... 0000 0000 1000 0000 0000 0000 0000 0000 = 8,388,608 (0 dBFS for 24 bit audio represented in 32.0 format) ... 0111 1111 1111 1111 1111 1111 1111 1111 = 2,147,483,647 (2^31 - 1)
32-битные отрицательные целые числа представляются в дополнительном коде следующим образом:
1111 1000 0000 0000 0000 0000 0000 0000 = -2,147,483,648 (2^31) ... 1111 1111 1111 1111 1111 1111 1111 1100 = -4 1111 1111 1111 1111 1111 1111 1111 1101 = -3 1111 1111 1111 1111 1111 1111 1111 1110 = -2 1111 1111 1111 1111 1111 1111 1111 1111 = -1
В целом, отрицательные целые числа не используются в алгоритмах SigmaStudio или SigmaDSP.
Как упоминалось, последовательные порты и ЦАП используют 24-битные знаковые целые значения. Избегайте сопоставления значения в формате 32.0 с аудиовыходом.
Формат 8.24 (десятичный)
Аудио обычно форматируется как десятичное значение в диапазоне от (1 - 1 МЗР) до -1. Полномасштабный 24-битный входной сигнал имеет положительное пиковое значение в 24-битном представлении в дополнительном коде:
0111 1111 1111 1111 1111 1111 = 1 - 1 LSB = largest positive 24-bit value
Добавление МЗР для представления истинного значения единицы требует более широкого слова. Если мы добавим 8 бит запаса (заполнение нулями СЗР) и сдвинем знаковый бит влево, представление 8.24 станет:
0000 0000 1111 1111 1111 1111 1111 1111 = 1 - 1 LSB
Обратите внимание, что сдвиг ведущей '1' влево или вправо удваивает или уменьшает значение вдвое соответственно.
0000 0000 0000 0000 0000 0000 0000 0000 = 0.0 0000 0000 0100 0000 0000 0000 0000 0000 = 0.25 0000 0000 1000 0000 0000 0000 0000 0000 = 0.5 0000 0001 0000 0000 0000 0000 0000 0000 = 1.0 0000 0010 0000 0000 0000 0000 0000 0000 = 2.0 0000 0100 0000 0000 0000 0000 0000 0000 = 4.0 0111 1111 1111 1111 1111 1111 1111 1111 = (128.0 - 1 LSB) = max value
Аналогично для отрицательных чисел:
1000 0000 0000 0000 0000 0000 0000 0000 = -128.0 = min value 1111 1100 0000 0000 0000 0000 0000 0000 = -4.0 1111 1110 0000 0000 0000 0000 0000 0000 = -2.0 1111 1111 0000 0000 0000 0000 0000 0000 = -1.0 1111 1111 1000 0000 0000 0000 0000 0000 = -0.5 1111 1111 1100 0000 0000 0000 0000 0000 = -0.25 1111 1111 1111 1111 1111 1111 1111 1111 = (1 LSB below 0.0)
При выводе на последовательные порты или ЦАП сигналы насыщаются до 24 бит путем сдвига вправо на один разряд и игнорирования старших 8 бит. Это означает, что любой сигнал с пиком вне диапазона (1.0 - МЗР) до -1 в формате 8.24 будет ограничен до полной шкалы на выходах.
28-битные архитектуры
В 28-битных архитектурах SigmaDSP аудио представляется с A = 5 и B = 23, что дает число в формате 5.23. Однако сигналы управления и значения индексных таблиц обычно требуют целочисленного представления и поэтому представляются как A = 28 и B = 0, т.е. значение 28.0 без дробной части.
Формат 28.0 (целочисленный)
Сигналы в целочисленном формате подчиняются стандартным правилам двоичного представления.
0b = 0, 1b = 1, 10b = 2, 11b = 3, 100b = 4, et cetera.
Числа в формате 28.0 находятся в диапазоне от (2^27)-1 до -(2^27). Включая нулевое заполнение, положительные целые числа в DSP представляются следующим образом:
0000 0000 0000 0000 0000 0000 0000 = 0 0000 0000 0000 0000 0000 0000 0001 = 1 0000 0000 0000 0000 0000 0000 0010 = 2 0000 0000 0000 0000 0000 0000 0011 = 3 0000 0000 0000 0000 0000 0000 0100 = 4 ... 0000 1000 0000 0000 0000 0000 0000 = 8388608 (0 dB full scale represented in 28.0 format) ... 0111 1111 1111 1111 1111 1111 1111 = 134217727 (2^27 - 1)
28-битные отрицательные целые числа представляются в дополнительном коде следующим образом:
1000 0000 0000 0000 0000 0000 0000 = -134217728 (2^27) ... 1111 1111 1111 1111 1111 1111 1100 = -4 1111 1111 1111 1111 1111 1111 1101 = -3 1111 1111 1111 1111 1111 1111 1110 = -2 1111 1111 1111 1111 1111 1111 1111 = -1
В целом, отрицательные целые числа не используются в алгоритмах SigmaStudio или SigmaDSP.
Как упоминалось, последовательные порты и ЦАП используют 24-битные целые значения. В 28-битных архитектурах 24 младших значащих бита сигнала соответствуют 0 дБFS. Четыре дополнительных старших бита (СЗР), добавленных для запаса при обработке, игнорируются. Это означает, что любой сигнал, превышающий 8388608 в формате 28.0, будет ограничен до полной шкалы на выходах. Эта операция ограничения является одной из причин, по которой отрицательные 28-битные целые числа не используются.
Формат 5.23 (десятичный)
Аудио, в отличие от сигналов управления, интуитивно форматируется как десятичное значение в диапазоне от 1 до -1. Если к полномасштабному аудиосигналу с пиковой амплитудой 1 применить усиление -3 дБ, его амплитуда должна составлять примерно 0.707. Если применить усиление -6 дБ, амплитуда сигнала составит 0.5.
Полномасштабный 24-битный входной сигнал имеет положительное пиковое значение в стандартном 24-битном представлении в дополнительном коде:
1000 0000 0000 0000 0000 0000 = 2^23 - 1 = 0dBFS
Если мы добавим 4 бита запаса (заполнение нулями СЗР), 28-битное представление станет:
0000 1000 0000 0000 0000 0000 0000 = 2^23 - 1 = 0dBFS (A=0, B=2^23 - 1)
Отрицательный пик полномасштабного сигнала становится:
1111 1000 0000 0000 0000 0000 0000 (A=-1, B=2^23 - 1)
Сдвиг ведущей '1' влево или вправо удваивает или уменьшает значение вдвое соответственно.
0000 0000 0000 0000 0000 0000 0000 = 0.0 0000 0010 0000 0000 0000 0000 0000 = 0.25 0000 0100 0000 0000 0000 0000 0000 = 0.5 0000 1000 0000 0000 0000 0000 0000 = 1.0 (0 dBFS) 0001 0000 0000 0000 0000 0000 0000 = 2.0 0010 0000 0000 0000 0000 0000 0000 = 4.0 0111 1111 1111 1111 1111 1111 1111 = (16.0 - 1 LSB)
Аналогично для отрицательных чисел:
1000 0000 0000 0000 0000 0000 0000 = -16.0 1110 0000 0000 0000 0000 0000 0000 = -4.0 1111 0000 0000 0000 0000 0000 0000 = -1.0 1111 1000 0000 0000 0000 0000 0000 = -1.0 1111 1100 0000 0000 0000 0000 0000 = -0.5 1111 1110 0000 0000 0000 0000 0000 = -0.25 1111 1111 1111 1111 1111 1111 1111 = (1 LSB below 0.0)
При выводе на последовательные порты или ЦАП сигналы насыщаются на уровне 0 дБFS. Это означает, что любой сигнал с пиком, превышающим 1.0 в формате 5.23, будет ограничен до полной шкалы на выходах.
Как упоминалось, последовательные порты и ЦАП используют 24-битные целые значения. 24 младших значащих бита (дробная часть = B) соответствуют 0 дБFS. Четыре целых бита (A) игнорируются.
Формат 5.19 (чтение из аппаратуры)
Некоторые модули в SigmaStudio могут использовать несколько иные числовые форматы. Например, поскольку аппаратные регистры чтения DSP в ADAU1701 имеют только 24 бита, младшие 4 бита сигнала 5.23 отбрасываются, и число представляется в формате 5.19.
Таким образом, полномасштабный сигнал, представленный в формате 5.23 как
0000 1000 0000 0000 0000 0000 0000
будет иметь усеченные младшие 4 бита для представления в формате 5.19:
0000 1000 0000 0000 0000 0000
Результатом является то, что сигналы очень малой амплитуды будут усечены и, следовательно, не могут быть считаны из DSP на старом поколении ядер SigmaDSP.
Более новые ядра, такие как ADAU1761 и ADAU144x, имеют полные возможности чтения в формате 5.23, реализованные в программном обеспечении.
Преобразование в децибелы
Концепция преобразования в дБ:
- Подсчитайте количество ведущих 0 (минус 4) и умножьте на 6; это целая часть шкалы дБ.
- Используйте биты после ведущей 1 для линейной интерполяции между точками 6 дБ.
Чтобы преобразовать линейное значение в шестнадцатеричное/двоичное число, которое можно записать в SigmaDSP, и наоборот, важно понимать преобразования чисел.
Фактические параметры уровня, которые необходимо записать, — это только последние 28 бит, и это значение является просто линейным значением усиления. Используя -40 дБ в качестве примера, преобразуйте это значение в линейное, используя стандартное уравнение дБ:
20log10 (x/1) = -40dB x = .01
Возьмите это линейное значение и умножьте на 2^23, чтобы получить десятичное представление значения в шестнадцатеричном виде, поскольку это значение 5.23.
.01 * 223 = 83886.08.
Теперь возьмите целую часть этого результата и преобразуйте 83886 в шестнадцатеричный вид, и вы получите 0x00147AE.
Выход некоторых блоков представляет собой число в формате 5.19. Формула для определения выходного значения в дБ по считанному значению следующая:
dB_value = 96.32959861 * (readback_value / 219 - 1)
