Для двух ЦАП, один из которых отправляется D0-D7, а другой - D8-D15, с напряжением питания 5 В, если 5 В добавляется к выходу 2-го ЦАП, а затем два выхода ЦАП суммируются, должен получиться 16-разрядный ЦАП состоит из двух 8-битных ЦАП.
Единственная проблема заключается в том, что если второй ЦАП имеет вход 0x00, то необходимо отменить добавление 5 В, что я не уверен, как это сделать. Суммирование может быть выполнено суммированием усилителя. Схема должна работать только с частотой до 10 кГц.
Есть ли что-то принципиально не так с этой идеей?
operational-amplifier
dac
summing
quantum231
источник
источник
Ответы:
Это возможно, но это не сработает.
Во-первых, существует проблема объединения двух выходов, причем один масштабируется точно на 1/256 другого. (Независимо от того, ослабляете ли вы одну на 1/256, усиливаете другую на 256 или как-то иначе, например, * 16 и / 16, значения не имеет).
Большая проблема, однако, заключается в том, что 8-битный ЦАП, вероятно, будет точнее, чем 8 бит: он может иметь спецификацию "DNL" 1/4 LSB и спецификацию "INL" 1 / 2LSB. Это спецификации «Дифференциальная» и «Интегральная» нелинейность, и они являются мерой того, насколько велик каждый шаг между смежными кодами. (DNL обеспечивает гарантию между любыми двумя смежными кодами, INL между любыми двумя кодами во всем диапазоне ЦАП).
В идеале каждый шаг должен быть точно 1/256 от значения полной шкалы; но спецификация DNL 1 / 4LSB указывает, что соседние шаги могут отличаться от этого идеала на 25% - это обычно приемлемое поведение в ЦАП.
Проблема в том, что ошибка 0,25 LSB в вашем ЦАП MSB вносит ошибку 64 LSB (1/4 от всего диапазона) в вашем ЦАП LSB!
Другими словами, ваш 16-битный ЦАП имеет линейность и искажение 10-битного ЦАП, что для большинства приложений 16-битного ЦАП неприемлемо.
Теперь, если вы можете найти 8-битный ЦАП, который гарантирует 16-битную точность (INL и DNL лучше, чем 1/256 LSB), тогда продолжайте: однако они не экономичны, поэтому единственный способ получить один - это начать с 16-битным ЦАП!
В другом ответе предлагается «программная компенсация» ... отображение точных ошибок в вашем ЦАП MSB и их компенсация путем добавления обратной ошибки к ЦАП LSB: это долго задумывалось звукорежиссерами в те дни, когда 16-разрядные ЦАП были дорогими. ..
Короче говоря, его можно заставить работать до некоторой степени, но если 8-разрядный ЦАП дрейфует с температурой или возрастом (вероятно, он не был разработан, чтобы быть сверхстабильным), компенсация больше не является достаточно точной, чтобы стоить сложность и стоимость.
источник
Обратите внимание, как это умножается, это не прибавление (как это происходит, когда вы суммируете выходы двух 8-битных ЦАП).
Если бы я взял два 8-битных ЦАП и суммировал их выходы, каковы возможные значения?
Ответ: 0, 1, 2, ..., 256, 257, 258, .... 511, 512 и все!
16-битный ЦАП может делать 0,1,2 ..., 65535, 65536, это намного больше!
Теоретически это возможно, но тогда вам необходимо умножить выход одного из 8-битных ЦАП ровно на 256 и соединить биты LSB с 1-кратным ЦАП, а биты MSB с 256-кратным ЦАП. Но не удивляйтесь, если страдают точность и линейность!
источник
Этот метод работает, если напряжение полной шкалы «внутреннего» ЦАП больше, чем размер шага внешнего ЦАП, и имеется средство для точного (хотя и не обязательно быстрого) измерения выходных напряжений, генерируемых различными выходными кодами, и применения подходящие регулировки линейности в программном обеспечении. Если натурное напряжение внутреннего ЦАП может быть меньше, чем размер шага в наихудшем случае между двумя напряжениями на внешнем ЦАП (учитывая, что ступени редко бывают абсолютно идеально однородными), могут быть напряжения, которые невозможно получить при любом комбинация значений внутреннего и внешнего ЦАП. Однако, если кто-то гарантирует, что диапазоны перекрываются, то использование программной коррекции линейности может дать хорошие результаты.
Кстати, старая конструкция чипа Cypress PSOC (я не знаю о новых) эмулирует девятибитный ЦАП, используя два шестибитовых ЦАП, которые масштабируются относительно друг друга. Он не использует программную коррекцию линейности, а лишь пытается добавить три бита точности к 6-битному ЦАП. Попытка добавить более 3-4 бит точности к любому типу ЦАП без использования программной компенсации, вероятно, не будет работать очень хорошо.
источник
21 год назад, когда я был бедным студентом колледжа (и мог позволить себе только 8-разрядные ЦАП), я использовал эту технику для объединения двух 8-разрядных ЦАП в более высокий разрядный ЦАП, зная, что я не получу точность 16 бит, потому что из интегральной нелинейности (INL) и дифференциальной нелинейности (DNL), DNL на старшем байтовом ЦАП является убийцей в этом случае; если у вас есть INL, то выходной сигнал искажен, но все еще гладкий. DNL определяет размер от одного шага ЦАП до следующего, и, если он достаточно варьируется, при пересечении 8-битных границ вы увидите разрывы или изменения: например, 0x07ff <-> 0x0800, так как ЦАП MSB изменяется с 0x07 <-> 0x08 может измениться не на идеальные 256 отсчетов ЦАП LSB, а на 384 или 128 отсчетов (± 1/2 его собственного младшего значащего бита). Хороший ЦАП будет иметь только 1/2 LSB DNL, посредственный ЦАП будет иметь худшее DNL, хотя чем выше разрешение, тем труднее, поэтому в 8-битном ЦАП должно быть довольно легко найти 1/2 LSB DNL, но не в 16-битном ЦАП.
Я не помню, какое было эффективное разрешение в моем случае, может быть, 12 или 13 бит, и мне пришлось настраивать усиление 2-й ступени вручную с помощью потенциометра.
источник
Я видел это на практике на ВЭЖХ детекторе УФ для увеличения динамического диапазона. Один из ЦАПов является офсетным на необходимое количество. Скажем, 1-й ЦАП обрабатывает от 0 до 10 В, а второй - от 10 до 20 Вольт.
источник
Это возможно, и это было сделано раньше. Смотрите эту отличную реализацию на EDN.com http://www.edn.com/design/analog/4329365/Combine-two-8-bit-outputs-to-make-one-16-bit-DAC
источник
У меня другое мнение ... Просто используйте один 8-битный ЦАП. Вы упомянули, что он должен работать только до нескольких десятков Гц, поэтому вы можете использовать только один ЦАП (который может работать до 100 кГц) и использовать его в качестве модулятора. Основная идея состоит в том, чтобы вывести 256 циклов значения MSB плюс однобитовый флаг переполнения / переноса из 8-разрядного аккумулятора, к которому LSB добавляется каждый цикл. Вы получаете только 254 в качестве максимального MSB из-за дополнительного «модулирующего бита» от LSB, но это не сильно уменьшает диапазон.
Пример: если вы запускаете цикл на частоте 30 кГц, 256 циклов повторяются на частоте 117 Гц, так что вы можете установить на выходе фильтр нижних частот 50 Гц для получения достаточно плавного и точного сигнала, который может работать до необходимой вам частоты.
Точность этого метода во многом зависит от размера битовых шагов, но не более, чем от любого другого метода. В прошлом я использовал его для генерации эталонного напряжения, и он работает на удивление хорошо.
источник