非常に低い周波数でのDDSの精度の問題


8

人生で初めて、この DDSチップ(AD9850)を使用して、希望の周波数で正弦波を作成します。ここで、ルックアップテーブルコードと希望の周波数をアップロードします。マイクロコントローラー付きのコマンド。そのため、現時点での私の知識は非常に限られています。

今のところ問題はないようですが、問題は非常に低い周波数にあります。1Hzでも0.5Hzでも問題ないようです。しかし、最低でも0.1Hzが必要です。

以下は、マイクロコントローラーを介して0.1をDDS に送信したときのDDSの出力です。

ここに画像の説明を入力してください

私のコードでは、コマンドをPCからマイクロに文字列として送信し、それをdoubleに変換します。しかし、簡単にするために、私はこのコードを使用していることを確認し、0.1Hzの場合はループにsendFrequency(0.1)を設定しました。

しかし、ご覧のとおり、周期は0.1Hzコマンドの10秒ではなく、約11.5秒です。

私はその問題をうまく説明できればと思います。より正確な結果が得られるように、これを調整または微調整する方法はありますか?または私は正確に生きるべきですか?ところで、データシートでは、このような相対的な不確実性をどこで参照できますか?


1
では、DDSチップに送信しているコントロールワードは何ですか。また、DDSチップに使用している基準クロックは何ですか。あなたは何が起こると予想していましたか、それからこれらの11.5秒はどのくらい離れていますか?あなたのシステムについてもっと多くの知識が必要です!
マーカス・ミュラー

@MarcusMüller私はこのコードを使用しますsoftgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html少し変更しただけですが、コアは同じです。コードから使用されているクロックを推測できませんでした。私はコードとチップを提供しましたが、他に必要なものは私に提供させていただきます。
floppy380

チップを基準クロックに配線しました。あなたは文字通り、この世界で唯一、基準時計とは何かを教えてくれる人です。サーキットは私たちではなくあなたの前にあります!
マーカス・ミュラー

ああ、コードによって修正または変更されたと思います。測定して戻ってきます。
floppy380

それはこのモジュールtelecnatron.com/modules/ad9850/index.htmlなので、125MHzのようです
フロッピー380

回答:


9

正確さではなく、解像度です。

データシートの前面には、125 MHzクロックで0.0291 Hzのチューニング分解能が指定されています。

0.0291125×106232 Hz(位相アキュムレータは32ビットであるため)

つまり、これは希望する出力周波数の約30%です。これは、チューニングワードのLSBを位相アキュムレータに125MHzで追加した結果です。これは、特定のクロック周波数に対して、チップと、フェーズアキュムレータおよびチューニングワードに選択したビット数に固有のものです。

クロック周波数を下げてみてください。最小値は1MHzなので、分解能を2桁以上、0.1Hzで約+/- 0.23%まで向上させることができます。

0.23×101×106232 1MHzクロックでのHz分解能

残念ながら、最適なパフォーマンスを得るには、他のものを変更する必要があります(特に、これらのモジュールでは通常、7次楕円LCフィルターである出力フィルター)。

たとえば1Hzを超える必要がない場合は、たとえば100Hzのカットオフを持つRCフィルターを既存の出力に追加するだけで、多くの目的でそれを受け入れることができます。


1
125MHzを私が見ることができるものから分割するものはありません(もちろん、DDS自体を除きます)。オシレーターをはんだ付けしないで、別の(低い)周波数モジュールに交換する必要があります。または、それを無効にして外部クロックを適用します(有効化入力がある場合があります。参照できます)。ハードウェアの変更です。
Spehro Pefhany

1
もちろん、それは可能ですが、アプリケーション用に十分なビットがありませんでした。彼らがチューンワードとフェーズアキュムレータに別の8ビットを追加した場合、あなたは満足するでしょう(そして、そのような低周波数を必要としない人は、少し多く支払う必要があり、DDSをチューニングするためにより多くのビットを送信する必要があります。幸せになる)。
Spehro Pefhany

1
正しい。ただし、1MHzのクロックまで対応できるため、アプリケーションでもすべてが失われることはありません。モジュールの出力フィルター(これらのインダクターとコンデンサーと抵抗器)は適切ではありませんが、クロック周波数がはるかに低いと出力にノイズが発生する傾向があります。
Spehro Pefhany

1
ピンとは関係ありません。ただし、モジュールクロックと出力フィルターは125MHz固定に設計されています。
Spehro Pefhany

1
@SpehroPefhany-下端のベンチFGは、既製のDDSチップを使用できます。さらに、AD9106などのICは、A / FGスタイル(固定レート)の任意波形生成を実行できます。(ハイエンドのものは確かにFPGA + RAMと個別のDACを使用しますが、基本的には基本的に同じで、独自の実装をロールするだけです。)
ThreePhaseEel

7

データシートで探しているのは、周波数調整の分解能です。このチップの場合、125 MHzの基準クロック入力に対して0.0291 Hzです。頻度はこの数値の倍数に丸められます。この数は、チップのクロック入力の周波数に基づいています。

たとえば、0.1 Hzは0.0873 Hz(0.0291 * 3)に丸められます。0.0873 Hzの周期は11.5秒で、これが表示されています。

入力クロック周波数が低いほど、低い周波数での精度が高くなります。したがって、低い周波数でより高い精度が必要な場合は、クロック周波数を低くしてください。


出力の丸められた周波数をどのように計算しますか?たとえば、チップに0.5を送信した場合、使用されている数式と出力はどうなるかを示すことができますか?予測できるように
floppy380

0.0291の倍数に切り捨てられます。最も近い倍数を見つけるには、0.5を0.0291で割り、最も近い整数に切り捨て、0.0291を掛けます。0.5 / 0.0291 = 17.18は17に丸めます。17* 0.0291 = 0.4947となります。したがって、0.5Hzを入力した場合、実際には0.4947Hzと表示されます
Pangus

まあ、エラー対周波数をプロットすることもできます。NOW-
floppy380

@ChrisStrattonおっと。うん、君のいうとおりだ。回答を編集しました。ありがとう
Pangus

1
周波数変調と振幅変調を行うことができますが、チップのルックアップテーブルを変更することはできないと思います。任意波形の作成に関心がある場合は、別のチップを調べたり、DACを取得して独自のDDSを作成したりすることをお
勧めし
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.