FPGA は AD7606 データを収集します UDP ネットワーク伝送 エンジニアリング ソース コードと技術サポートを上位コンピュータ受信ソフトウェアで提供します

1 はじめに

現在、インターネット上でfpgaが実装しているudpの基本的なエコロジーは以下の通りです
。実際のプロジェクトでは使用されませんこのようなコードは、想像してみてください、マルチマシンの相互接続で問題が発生した場合、ネットワーク カードには ping 機能がなく、基本的なトラブルシューティング メカニズムさえありません。そのようなコードを使用するには?
2: ping 機能を備えた udp トランシーバー、コードは優れていて使いやすいですが、基本的にオープン ソースではなく、ソース コードは提供されません。この種のコードにも欠点があります。 ;
3: ザイリンクスの 3 倍速ネットワーク IP 実装を使用して、この種のコードも非常に優れていますが、同じ問題があり、ソース コードがなく、 3 倍速のネットワーク IP にはライセンスが必要です。公式ライセンスは 120 日間しか有効ではありません。実際、3 倍速のネットワーク IP は、rgmii から gmii への変換、そして axis への変換のみが実現され、この ip は完全に不要です。この設計で使用されるUDP
ソリューションは、Micrel の KSZ9031RNX をネットワーク PHY チップとして使用し、Verilog コードを使用して UDP プロトコルを設計し、ユーザー インターフェイスを備えているため、ユーザーは複雑な UDP プロトコルを気にする必要がなく、気にするだけで済みます。 UDPの送受信を操作するためのシンプルなユーザーインターフェイスのタイミング、非常にシンプル。

この設計では、UDP を使用して FPGA によって収集された AD7606 データを送信し、ホスト コンピューターは、ネットワーク ポートから UDP データ パケットを受信することによって、AD7606 の波形データをコンピューターに表示します。デジタルオシロスコープのプロトタイプであり、ADCデータを保存できる、より直感的な方法で波形を観察できます。

2. ここにある UDP スキーム

現在、私は次のUDPソリューションとアプリケーション例を持っています:
私のブログのホームページには無料のFPGAイーサネット通信のコラムがあり、FPGAで実装された多くのUDPアプリケーションがあります. ネットワーク通信が必要な兄弟は見に行くことができます :クリック直接行く

3. AD7606取得の詳細説​​明

AD7606 の出力には、シリアルとパラレルの 2 つのモードがあります。AD7606 で遊んでみたい場合は、まずデータシートを読む必要があります。データシートに基づいてインターフェイスを設計するときは、シリアル モードとパラレル モードの両方の取得があります。詳細に説明された記事、兄弟は最初に私の記事を振り返って基礎を築くことができます:直接クリックして移動します

4. UDP 設計スキーム

この実験では、ギガビット イーサネット RGMII 通信を例として、Verilog プログラムを設計します.UDP は、送信と受信の 2 つの部分に分割され、動的 ARP、UDP、Ping、および 10/100/1000M ネットワーク速度の自動ネゴシエーションおよびアービトレーション機能を実現します。以下は、原理的な実装のブロック図です。詳細な設計については、以前に書いた記事を参照してください。直接クリックして移動します。

5. AD7606 UDP 送信の詳細設計スキーム

AD7606 UDP 送信の詳細な設計スキームは次のとおりです:
ここに画像の説明を挿入
オシロスコープを使用して、AD7606 への入力ソースとして正弦波を生成します. AD7606 データ収集は、プロジェクト コードの最上位ファイルに統合されているパラレル モードとシリアル モードをサポートします.次のように: 収集された AD データは
ここに画像の説明を挿入
DDR3 キャッシュに送信されます。このデータ キャッシュ モジュールは、AD データをキャッシュするだけでなく、画像データをキャッシュすることもでき、4 フレーム キャッシュ モードを備えています。データキャッシュモジュールはあまり紹介しませんが、興味のある方は詳細なソースコードをご覧いただけます。

UDP アプリケーションの設計アイデア

UDP自体は単なる通信プロトコルであり、verilogで実装することは難しくありません.その本質はアプリケーションにあります.UDPアプリケーションのキーポイントはデータのパッケージングとアンパックにあります.データを組み立ててアンパックし,解凍は、ホスト コンピュータ ソフトウェアによって行われます。
知らせ!! !
ここでのグルーピングとは、UDP プロトコルにおける固定フレームのヘッダーなどの情報のグルーピングではなく、イーサネット フレーム フォーマットにおける UDP 有効データ セグメントの人為的なグルーピングを指し、ここでのグルーピングは 2 つのノード間の送受信対応のためのものです。. .
通信開始後、上位コンピュータはクエリコマンドをFPGAに送信し、FPGAはローカルネットワークカードの基本情報とAD7606のデータ情報を上位コンピュータにUDPに従ってデータを送信します。自分で定義したデータパケットと組み合わせることで、簡単な UDP 通信アプリケーションが完成します。. .
設計パッケージ契約は次のとおりです。

FPGA ネットワーク カード情報の取得

クエリコマンド(ホストコンピュータから Ethernet 経由で送信される合計 5 バイト)
ここに画像の説明を挿入
と応答コマンド(開発ボードからイーサネット経由で送信される合計 27 バイト)の
ここに画像の説明を挿入
コードレベルは次のとおりです。 (eth_cmd.v)
ここに画像の説明を挿入

データを取得する

制御コマンド (ホスト コンピューターから送信されるデータ要求) の
ここに画像の説明を挿入
各 UDP パケットには、最初のバイトにヘッダーが含まれています。その形式は次のとおりです。
ここに画像の説明を挿入

UDP はデータ パケットを送信します

知らせ!! !
知らせ!! !
知らせ!! !
ここがプロジェクト全体のポイントです.AD7606のデータはこのフォーマットで送信されます.
ここに画像の説明を挿入
コードレベルは次のとおりです.(mac_ctrl.v)
ここに画像の説明を挿入

UDP 送信プロセス

まず、アイドル状態では、ホストマシンがイーサネットブロードキャストで問い合わせコマンドを送信するため、IP層で受信する際に、ブロードキャストUDPデータかどうかを判断し、そうであればデータも受信する必要があります.このコードは.次に、
ここに画像の説明を挿入
受信したデータ情報が eth_cmd.v ファイルで照会コマンドか制御コマンドかを判断し、
コマンド応答要求信号 cmd_reply_req またはデータ要求信号 ad_data_req を生成します。
eth_cmd.v モジュールの最上位インタフェースは次のとおりです。
ここに画像の説明を挿入
mac_ctrl.v ファイルは、イーサネット送信制御を実装し、IDLE 状態で一定時間待機し、CMD_WAIT 状態に入り、コマンド要求があるかどうかを判断します。 cmd_reply_req またはデータ要求 ad_data_req を実行し、次に CHECK_ARP 状態に入り、
対応する。そうでない場合は、ARP 要求を送信して応答を待ちます。次に、コマンド要求またはデータ要求、CMD_SEND または AD_SEND ステートに従って、対応するデータ送信ステートに入ります。
mac_ctrl.v モジュールの最上位インターフェイスは次のとおりです。
ここに画像の説明を挿入
ホスト コンピューターによって設定されるキャッシュ スペースは 1M バイトであり、要求データ間隔は 100ms であるため、サンプリング深度を設定する際にはこの 2 点を考慮する必要があります。eth_top.v プログラムでは、32K バイトである 32'h00008000 に設定されており、サンプリング周波数は 200KHz、ADC のサンプリング終了時のデータは 2 バイト長であるため、サンプリング長はサンプリング バイトを分割したものになります。 2、つまり 32'h00004000 を計算すると、取得が完了するまでに 82ms かかります。UDP 送信データのチェックサムを削除しました。
コード レベルは次のとおりです。 (eth_top.v)
ここに画像の説明を挿入

6. vivado プロジェクトの詳細説明

プロジェクト紹介:
開発ボード: Xilinx Artix7 開発ボード;
開発環境: vivado2019.1;
ネットワーク PHY: KSZ9031;
入力: AD7606;
出力: UDP-RJ45 ネットワーク ポート;
プロジェクト コード構造は次のとおりです:
ここに画像の説明を挿入
FPGA リソース消費と消費電力の見積もり以下の通り:
ここに画像の説明を挿入

7. ボードのデバッグ検証とデモンストレーション

ホスト コンピューター ソフトウェアの位置は次のとおりです:
ここに画像の説明を挿入
ホスト コンピューターがデータを受信しない場合は、次のとおりです:
ここに画像の説明を挿入
オシロスコープを使用して 5 V 正弦波を生成し、それを AD7606 アダプター ボードに接続します. ホスト コンピューターの実際の波形緑色の
ここに画像の説明を挿入
ボックスは送信ボードの MAC アドレスと IP アドレスを示します;
リセット: リセットをクリックして、波形表示を初期状態にします;
垂直: 「垂直」と「水平」を切り替えます。水平および垂直ズーム、垂直状態では、マウス ローラーを転がして垂直方向にズーム、水平状態では、水平方向にズーム、一時停止:「一時停止」と「続行」を切り替え、クリックして波形を一時停止
、 [続行] をクリックして波形を表示します;
保存: ADC データを TXT ファイルとして保存し、保存パスは [パス] ボタンにあります 設定、デフォルトはソフトウェアが配置されているパスです; 値: 間で切り替え
ます「値」と「電圧」、Y 方向の座標単位は元の値、つまり、受信した元のデータ値であり、「電圧」をクリックして電圧値を表示します; パス: 保存パスを選択します; 開く
:
開く保存されたTXTウェーブファイル;

8.メリット:エンジニアリングコードの取得

利点: エンジニアリング コードの取得
コードが大きすぎて電子メールで送信できないため、ある程度のネットワーク ディスク リンクで送信されます.
データの取得方法: プライベート、または記事の最後の V 名刺.
ネットワークディスク情報は次のとおりです。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41667729/article/details/129954622