工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DACとカスタムPCBを使用して高精度波形を生成する方法

この記事では、高精度、高速信号生成の基盤となるファームウェアを開発します。

最近、アナログ・デバイセズのC8051F360マイクロコントローラーとTxDACを中心に構築された任意波形発生器(AWG)PCBを設計しました。

これらの2つのICは、マイクロコントローラーがデータをDACに移動できる最大速度を求めることにより、より高い周波数のアナログ信号を生成できる並列インターフェースを介して通信します。

この記事では、一連の準備技術記事で回路図とレイアウトについて広範囲に説明したため、ハードウェア設計の側面を説明するのに邪魔になりません。これらの記事のうち3つは、回路図面の特定の部分(つまり、マイクロコントローラー、DAC、およびDACの出力回路)に焦点を当てており、4つ目はレイアウトについて説明しています。

目的

このプロジェクトの目標は、デジタルデータをマイクロコントローラーからDACに便利に移動し、このデータをアナログ信号に変換できるファームウェアフレームワークを作成することです。このAWGボードにはいくつかの興味深い機能の可能性がありますが、最も重要なステップは、MCUとDACの間に信頼性が高く拡張可能な高精度のインターフェイスを確立することです。ランプ波形を生成し、オシロスコープの分析を実行して、このインターフェースを検証します。

要件

高精度タイミング

多くのマイクロコントローラアプリケーションでは、非常に正確なタイミングはほとんど必要ありません。これが、MCUの低精度内部発振器のみがクロックソースである成功したデバイスを頻繁に作成できる理由です。ただし、AWGは異なります。ソースマテリアルとして機能する理想化された数学的波形と可能な限り一貫性のある信号を生成する必要があります。これは、予測可能な信号周波数と一貫性のあるDACサンプリングレートが必要であることを意味します。

プロセッサの効率的な使用

この特定のPCBはほぼ完全に波形の生成に専念していますが、このファームウェアとハ​​ードウェアのフレームワークを他のアプリケーションに簡単に組み込むことができるようにする必要があります。したがって、ファームウェアが安定した高精度の波形を生成できるようにしたいのですが、プロセッサを他のタスクで完全に使用できなくすることはありません。

最高速度

私たちは高周波の世界に住んでおり、このAWGは1kHzで最大になるとほとんど役に立ちません。公平を期すために、これは単純で低コストの設計であり、ISMバンド伝送に対応した915 MHzDQPSK波形を作成することは期待できません。ただし、このデバイスからできるだけ多くの帯域幅を取得したいので、サンプリング周波数が実際の信号周波数よりも大幅に高いことを思い出すと、これはさらに困難になります。ナイキスト-シャノンの定理にもかかわらず、サイクルごとに少なくとも5つのサンプルが必要であり、10が私の好みです。したがって、サンプリングレートを10 MHzまで上げることができたとしても、波形は1〜2MHzの範囲でダウンします。

ハードウェア設計は、速度を最適化することの重要性をすでに反映しています。最大100 MHzのコア周波数で動作するマイクロコントローラーを選択し、MCUのメモリからDAC入力ピンにデータを移動するために必要なオーバーヘッドを最小限に抑える並列バスを実装しました。

サンプリングレート

AWGボードには、高性能クロックソース(全体的な周波数安定性が±50ppmのMEMS発振器)があります。ファームウェアは、このタイムベースを使用して、DACの更新回路を駆動する安定したクロック信号を作成する必要があります。高品質のタイミング信号が必要な場合は、常にハードウェアを使用します。この場合、プログラマブルカウンターアレイ(PCA)を使用して、10MHzの外部発振器から500kHzのクロックを生成します。

Simplicity Studioに組み込まれている構成ツールではC8051F360がサポートされていないため、ハードウェア構成にSilicon LabsConfig2プログラムを使用しました。 PCAモジュールの一般的な構成は次のとおりです。

PCAが有効になっており、タイムベースはシステムクロックです。この時点で、システムクロック周波数は外部発振器周波数(10 MHz)と同じですが、後でマイクロコントローラーのフェーズロックループを使用して、より高いコア周波数を取得します。 DACのクロック信号は、「周波数出力」モード用に構成されたPCAモジュール0によって生成されます。

サンプルレートクロックを見てみましょう。 Tektronixの私のMDO3104スコープには、その品質を評価するのに役立つかなり高度な測定機能がいくつかあります。

スコープキャプチャの下部に表示される測定値で確認されるように、周波数は正確に期待どおり(500 kHz)であり、完全な50%のデューティサイクルもあります。さらに、「最小」と「最大」の統計は、周波数とデューティサイクルが時間の経過とともに安定していることを示しています。

この測定機能への特に役立つ追加は、標準偏差(「標準偏差」)です。標準偏差は、値が平均からどれだけ逸脱する傾向があるかを示します。この状況では、クロック信号の周波数とデューティサイクルの欠陥をすばやく簡単に評価できます。両方の標準偏差は非常に低く、13.54 Hzは公称周波数の0.0027%であり、2.117×10 –3 通常のデューティサイクルのわずか0.0042%です。

クロックエッジの1つのヒストグラムを確認することで、この分析をさらに一歩進めることができます。スコープを立ち下がりエッジでトリガーするように設定してから立ち上がりエッジでズームインすると、信号のジッターに応じて立ち上がりエッジの位置がシフトします。次に、水平波形ヒストグラムを追加して、このジッターを追跡し、その分布を明らかにすることができます。ただし、この場合、ジッターが非常に低いため、見るものはあまりありません。

外部割り込み

これで、DACの出力回路を制御する方形波ができました。次のタスクは、MCUのデータ更新をこの方形波と同期させることです。これを行うには、クロック信号を出力するPCAピンに外部割り込みを接続します。 DACは、入力データを上昇でラッチします。 時計の端にあるため、立ち下がりのデータ信号を更新します。 縁。この反対エッジの手法は、入力デバイスがアクティブなクロックエッジを受信する前に、デジタルデータが更新されて安定するようにするための基本的な方法です。

そこで、外部割り込み0(/ INT0と表示)を有効にして、クロック信号出力ピン(P0.7)に接続し、立ち下がりエッジに敏感にしました。

おそらく、外部割り込みを使用して入力を監視することに慣れているでしょう。 信号ですが、この場合、ファームウェアイベントをマイクロコントローラー自体によって生成された信号と同じように効果的に同期させることができます。これは、タイミングが重要なタスクを処理する場合に特に便利な戦略です。外部割り込み0が最も優先度の高い割り込みであり、その割り込み保留フラグがハードウェアによって自動的にクリアされるためです(これにより、必要な時間がなくなります)。ファームウェアステートメントを使用してフラグをクリアします。

ISR

主なアクションは、/ INT0割り込みサービスルーチンで実行されます。次のDACデータバイトはメモリから取得され(またはマイクロコントローラによって直接生成され)、P2に駆動されます。 #defineステートメントを使用して、「DAC_WORD」を「P2」の代わりに使用しました:

SI_INTERRUPT(INT0_ISR、INT0_IRQn)
{
DAC_WORD –;
}

DACの更新レートを最大化するための重要な変数は、ISRで命令を実行するために必要な時間です。 (この例では、命令は1つだけですが、常にそうであるとは限りません。)ISRはDACクロックのアクティブエッジごとに1回呼び出す必要があり、実行が完了する前にISRを呼び出すことはできません。したがって、帯域幅を最大にしようとすると、ISRの実行時間を最小化するためにできる限りのことを行う必要があり、それに応じてDACクロック周波数を設定します。

上記の単一のステートメント(DAC_WORD–)は、DAC値がゼロまで直線的に減少し、次に255にロールオーバーして再び減少し始めるため、ランプ波形を作成します。 DACからの出力は次のとおりです。

アナログランプセクションが増加していることに気づいたかもしれません。 最大電圧に向かって、DAC値は減少 ゼロに向かって。これは、DACの出力アンプが反転構成を使用しているために発生します。

終了する前に、最後のスコープキャプチャを見てみましょう。

詳細情報を読む…。

DACとカスタムPCBを使用して高精度の波形を生成する方法


製造プロセス

  1. PythonとRaspberryPiの温度センサー
  2. 湿度センサーをチェックして校正する方法
  3. DACとカスタムPCBを使用して高精度波形を生成する方法
  4. Arduinoとスマートフォンを使用したDIY電圧計
  5. ArduinoとRDA8057Mを使用したFMラジオ
  6. Arduinoを使用するだけの正確な時計
  7. ArduinoとProcessingIDEを使用してコンパスを作成する方法
  8. PCBプロトタイプ製造会社の選び方
  9. PCB 製造はどのように正確なのか?
  10. PCB 製造でよくある間違いとその修正方法
  11. プリント基板とその機能