2つの8ビットDACを組み合わせて16ビットDACを作成することはできますか。16ビットワードの1バイトがそれぞれに送信されます。


16

2つのDACの場合、1つはD0-D7に送信され、もう1つはD8-D15に送信されます。電源は5Vです。 2つの8ビットDACで構成されています。

唯一の問題は、2番目のDACに0x00入力がある場合、5Vの加算をキャンセルする必要があることです。加算は、増幅器を加算することで実行できます。回路は数十kHzまで動作するだけで十分です。

この考えに根本的な問題はありますか?


11
あなたのアイデアに根本的な問題はありませんが、比較的複雑なデザインを扱う必要があります。まず、結果をアナログ信号で合計するだけではありません。合計する前に、MSB DACの各ビットはLSB DACの256ビットに相当するため、MSB DACをx256倍に増幅する必要があります。両方を追加するよりも、LSB DACフルスケールボルトでこの値をオフセットする必要があります。
PDuarte

7
ノイズ、歪み、供給能力は言うまでもありません...
PDuarte

4
それがそれほど簡単だったなら、誰もがそれをやっているでしょう...理論的には、はい、2つのDACを組み合わせることができます(ただし、加算ではなく乗算が必要です)。現実的には、パフォーマンス面では16ビットに近いものは得られません。16ビットDACを購入するだけです。
uint128_t

2
256xの乗算値が大きくなりすぎる場合、オフセットが必要です。8ビットDACがフルスケールで1ボルトを出力するとします。それに256を掛けると256 Vになります。あまり実用的ではありません;-)。DACが電流を供給する方が簡単です。その後、電流出力を並列に接続するだけで済みます(電圧を適切な値に保つ負荷がある場合、仮想グランドなど)。
Bimpelrekkie

1
信号を上位8ビットと下位8ビットに分割する代わりに、2パスのプログレッシブ近似として(プログレッシブJPGまたはPNGレンダリングのように)実装し、DAC1が(おおよそ)偶数ビットを提供し、DAC2が奇数のビットを使用して(再び、おおよそ)半分の電力。計算は面倒ですが、15ビットの信号精度を得ることができると思います。
フーバー

回答:


28

可能ですが、うまく機能しません。

まず、2つの出力を組み合わせて、一方を他方の正確に1/256にスケーリングするという問題があります。(一方を1/256で減衰させても、他方を256で増幅させても、その他の配置、たとえば* 16および/ 16は関係ありません)。

ただし、大きな問題は、8ビットDACが8ビットより優れた精度である可能性が高いことです。1/ 4 LSBの「DNL」仕様と1 / 2LSBの「INL」仕様がある場合があります。これらは「差分」および「積分」非線形性の仕様であり、隣接するコード間の各ステップが実際にどれだけ大きいかの尺度です。(DNLは、隣接する2つのコード間の保証、DACの全範囲にわたる2つのコード間のINLを保証します)。

理想的には、各ステップは正確にフルスケール値の1/256になります。しかし、1 / 4LSB DNL仕様は、隣接するステップが理想と25%異なる可能性があることを示しています-これは通常、DACで許容される動作です。

問題は、MSB DACの0.25 LSBエラーがLSB DACの64 LSBエラー(全範囲の1/4)に寄与することです!

つまり、16ビットDACには10ビットDACの線形性と歪みがあり、16ビットDACのほとんどのアプリケーションでは受け入れられません。

16ビットの精度を保証する8ビットDAC(INLおよびDNLが1/256 LSBより優れている)を見つけることができたら、先に進んでください。ただし、それらを作成するのは経済的ではありません。 16ビットDAC

もう1つの答えは、「ソフトウェア補正」です。MSBDACの正確なエラーをマッピングし、LSB DACに逆誤差を追加することで補正します。16ビットDACが高価だった時代にオーディオエンジニアが熟考したものです。 ..

要するに、ある程度動作させることができますが、8ビットDACが温度や経年によってドリフトする場合(おそらく超安定するように設計されていなかったため)、補償はもはや十分に正確ではなく、複雑さと費用。


1
ドリフトについてのあなたのポイントは良いものであり、2つの8ビットDACを組み合わせて、例えば20ビットの精度を得ようとする場合、この方法は非実用的です。ただし、2x8から13〜14個の使用可能なビットを取得しようとするのは現実的だと思います。
-supercat

19

8ビットDACは異なる値を出力できます。28=256

16ビットDACは、異なる値を出力できます。216=65536

乗算がどのように行われるかに注意してください。これは加算ではありません(2つの8ビットDACの出力を合計すると発生します)。

2つの8ビットDACを使用してそれらの出力を合計する場合、可能な値は何ですか?

回答:0、1、2、...、256、257、258、.... 511、512、それだけです!

16ビットDACは0,1,2 ...、65535、65536を実行できます。

理論的には可能ですが、その後、あなたがする必要があります掛けの出力1によって8ビットDACのを正確に256 256x DACへの1x DACとMSBビットにLSBのビットをして接続します。しかし、精度と直線性が損なわれても驚かないでください!


なるほど。気づかなかった
...-quanti231

1
256未満の乗算係数を使用すると、ソフトウェアの非線形性を補償できます。微分非直線性は、少なくとも小さいDACのステップサイズに等しくなりますが、2つの8ビットDACを使用する場合、適用する補正係数を正確に決定できる場合、単調な14ビットDACを現実的に管理できます
supercat

2
また、1つのDACの出力に257/256を掛けて合計することもできます。これは、特定の合計出力を得るためにどのDACにどの値を送信するのかを把握するという数学的な課題を楽しむ場合です。それ以外の場合は、callengesは同じ:)です
ホッブズは

@hobbs:それがうまくいくとは思わない。1つのDACが256のステップで0から65280を出力し、他のDACが257のステップで0から65535を出力する場合、65280から65535までのすべての出力値を達成できますが、その範囲では何も達成できませんたとえば32639と32768の間です。これは、単一の8ビットDACよりも実際にはそれほど良くありません。
-supercat

@supercatあなたは正しい、私は数学をふらついた。ネガティブになれば機能するバージョンはあると思いますが、私が書いたようには機能しません。とにかく、ほとんどがユーモアの試みでした。
ホッブズ

6

「内部」DACのフルスケール電圧が外部DACのステップサイズよりも大きく、異なる出力コードによって生成された出力電圧を正確に(必ずしも高速ではないが)測定する手段があれば、この手法は実行可能です。ソフトウェアでの適切な直線性調整。内側のDACのフルスケール電圧が、外側のDACの2つの電圧間の最悪の場合のステップサイズよりも小さい場合(ステップが完全に完全に均一になることはほとんどないことに注意してください)、内部DAC値と外部DAC値の組み合わせ。ただし、範囲に重複があることを確認した場合、ソフトウェアの直線性補正を使用すると、良い結果が得られます。

ところで、古いサイプレスPSOCチップデザイン(新しいものについては知りません)は、相互にスケーリングされた2つの6ビットDACを使用して9ビットDACをエミュレートします。ソフトウェアの直線性補正は使用しませんが、6ビットDACに3ビットの精度を追加しようとしているだけです。ソフトウェア補償を使用せずに、あらゆる種類のDACに3〜4ビット以上の精度を追加しようとすると、うまく機能しない可能性があります。


4

21年前、私が貧しい大学生だった(そして8ビットDACしか買えなかった)とき、16ビットの精度が得られないことを知って、この技術を使用して2つの8ビットDACをより高いビットDACに結合しました積分非直線性(INL)微分非直線性(DNL)。この場合、最上位バイトDACのDNLが致命的です。INLがある場合、出力はゆがんでいますが、まだ滑らかです。DNLは、DACステップごとのサイズを指示し、十分に変化する場合は、8ビット境界を越えるときに不連続または反転が発生します。たとえば、MSB DACが0x07 <->に変更されると、0x07ff <-> 0x0800 0x08は、LSB DACの理想的な256カウントではなく、384カウントまたは128カウント(自身の最下位ビットの±1/2)だけ変化する可能性があります。良いDACには1/2 LSB DNLしかなく、普通のDACには悪いDNLがありますが、分解能が高いほど難しくなります。したがって、8ビットDACで1/2 LSB DNLを見つけるのはかなり簡単ですが、 16ビットDAC

私の場合、有効な解像度が12ビットか13ビットかどうかは覚えていませんが、ポテンショメータを使用して手動で2段目のゲインを調整する必要がありました。


2

これを実際にHPLC UV検出器で見て、ダイナミックレンジを拡大しました。必要な量のDACの1つが提供されます。最初のDACは0〜10 Vを処理し、2番目は10〜20 Vを処理するとします。


1
これは1ビットだけ追加しませんか?
シジドール

はい、これは1ビットだけ追加します。ただし、オーディオ用語では、非常に成功した妥協点になります。「ストレート」DACには、16ビットすべてが一度に切り替わるハーフスケールで大きな問題があります。MSBがオンになり、他のすべてがオフになり、最大の単一DNLエラーが発生します。オーディオ信号では、この最大のエラーは最悪の場所、つまりゼロクロスでも発生し、最も静かな音でさえ破損します。1つのDACが正の信号を処理し、他のDACが負の信号を処理する場合、この問題を完全に回避できます。伝説的なBurr-Brown PCM-63 DACはこれをうまく活用しました。
ブライアンドラモンド


0

私はそれについて異なる見解を持っています... 1つの8ビットDACを使用してください。最大数十Hzで動作する必要があると述べたので、たった1つのDAC(おそらく最大100 kHzで動作可能)を使用し、それを変調器として使用できます。基本的な考え方は、MSB値の256サイクルと、LSBが各サイクルに追加される8ビットアキュムレータからの1ビットオーバーフロー/キャリーフラグを出力することです。LSBからの「変調ビット」が余分にあるため、最大MSBとして254を取得しますが、これは範囲をあまり縮小しません。

例:30kHzでサイクルを実行すると、256Hzサイクルが117Hzで繰り返されるため、出力に50Hzのローパスフィルターを適用して、必要なレートまで機能する非常に滑らかで正確な信号を得ることができます。

この方法の精度は、ビットステップのサイズに大きく依存しますが、他の方法とは異なります。過去に基準電圧の生成に使用しましたが、驚くほどうまく機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.