Circuit)規格でマイコンとZynqをデータを通信する方法を解説。TerminalのATSAMD51P19を選択。Slave)であるZynqからデータを要求。Terminalのマイコンで動作させるArduinoのスケッチを紹介した後、実際にI2C通信した結果を掲載しました。TerminalのマイコンATSAMD51P19とのI2C通信に挑戦しています。Terminalをマスター、Zynqをスレーブにして、データを通信する方法を解説。本記事では、I2C通信方式について解説した後、マイコンとZynqの接続の構成について解説しました。TerminalのマイコンとZynqをデータを通信する方法を解説。本記事では、ZynqのMIOとEMIOの違いについて解説した後、Zynq内部のブロックデザインをVivadoで作成しました。TerminalのマイコンとZynqをデータを通信する方法を解説。本記事では、サンプルプログラムや各API関数のリファレンスの参照方法を紹介した後、サンプルプログラムの動作原理について調べた内容を解説します。TerminalとZyboの接続Zynqで動かすソフトウェアの土台となるハードウェア構成Zynqアプリケーションプロジェクトの読み込みまで完了しました。Terminalで動かすソフトウェアのArduino版を作ります。前回の記事と今後の記事では、以下の順に解説をしています。記事で、Zynq(スレーブ)の動作について解説しました。Terminal(マスター)のプログラムを作成しました。Terminalの動作は、以下のシーケンスに従うようにしています。図のように設計しました。ZynqにI2C通信でのメッセージを要求(Wire.requestFrom)し、ZynqからのI2C信号の受信を待ちます。ZynqとのI2C通信が確立し、読み取り可能なデータがあれば、STATE_READに遷移し、メッセージの受信を開始します。ここで、Wire.available()は、read()関数で読み取ることのできるバイト数を返す関数ですので、ゼロより大きいと、読み取り可能なデータがあることを意味します。Wire.available()機能:Wire.read()で読み取ることができるバイト数を返す関数。TerminalにはもともとI2C通信のためのバスが2種類用意されています。I2C1のポートを使ってI2C通信を行いたいので、ヘッダーファイルWire.hの関数を用いています。Terminal内部の加速度センサ、背面の40ピンコネクタの27端子(SDA)・28端子(SCL)と接続。Arduinoでは[Wire1.h]で制御可能。背面の40ピンコネクタの3端子(SDA)・5端子(SCL)、側面のGroveコネクタ(#1。左側のポート)と接続。Arduinoでは[Wire.h]で制御可能。Wire.read()で1バイトずつZynqからデータを読み出し、バッファに格納しています。読み出したいデータ数に達したら、状態STATE_WRITEに遷移します。250)で受信したデータをそのまま送信しています。無事に送信が完了したら、状態STATE_IDLEに遷移し、処理を終了します。Terminalを接続して、動作を確認しましょう。Terminalの40ピンとZyboのPmodとをジャンパーピンで接続しています。Terminalがきちんと信号を受信しているかを確認しています。TerminalとZyboの電源を入れて、プログラムを書き込んでいきます。TerminalへArduinoスケッチを書き込みました。Terminalへの書き込み方法は、Seeedstudioに詳しい解説が載っていますので割愛します。Seeedウィキ(日本語版)wiki.seeedstudio.com実際に、正しく動作をしているか確認するため、TeraTermでシリアルの信号を見ています。TerminalのUSBを経由してホストPCで確認することが可能です。zynq”の文字列が、順次出力されます。Zyboにコンフィグレーションしていないため、スレーブ機器とのI2C通信ができていません。IDEで、Zyboにbitファイルのコンフィグレーション、プラットフォームプロジェクト、アプリケーションプロジェクトの書き込みなど、一括で行います。Hardware]と選択します。TEST_BUFFER_SIZE-1)がシリアル伝送されて表示され、その後Zynqへの書き込みが完了したことを示す文が表示されます。スケッチでは以下の箇所が対応しています。Serial.print("----------------------------\n");Zynqの方はどうでしょう?Vitisのデバッグ画面では、以下の通りSuccessで完了していました。Zynqも送信バッファと受信バッファの一致を確認できたようです。TerminalのArduinoスケッチを紹介した後、実際の動作検証まで完了した結果を紹介しました。ひがしお疲れさまです。Controllerの最低限知っておくと良い項目についてまとめました。Controllerを制御するためのドライバの使用方法について初心者向けに解説しています。Accessの最低限知っておくと良い項目についてまとめました。VDMAは何のために用いるのか、他のIPとはどのように接続すればよいのか、初心者向けに基本的な機能について解説しています。Zynqが外部からのHDMI信号を受信しDDRメモリに格納した後、DDRメモリを読み出しVGA信号を送信するアプリケーションの解説を行っています。HDMI信号をZynqが受信する際の割り込みの設定方法について紹介・解説しました。-掛け算IPをZyboに実装-本記事では、掛け算を行う関数をハードウェアIPに高位合成し、さらに高位合成の結果を実感するためにLED点滅回路に実装しました。回路実装では、スイッチからの入力を掛け算してLEDに出力して、掛け算IPの動作を確認しています。-プログラムの作成と実行-本記事では、VitisとVivadoを用いてZybo経由で外部ディスプレイに画像を出力するアプリケーションを作成します。CPUで動作するHDMI出力プログラムを読み込み、Zybo上で動作を確認しました。2021.1版にも対応)開発ボードZyboの初期設定ファイルをVivadoに読み込むための方法を解説。2021.1以降では対応方法が異なります。本サイトでは両方のバージョンでの方法をそれぞれ解説しています。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。@phys_higashiFPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。初学者の目線から、詰まりやすいポイントとそれを解決した方法について、記事にまとめています。初学者ゆえの間違い等あるとは思いますが、お気づきの際はお問い合わせをいただけますと幸いです。@phys_higashiFPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。初学者の目線から、詰まりやすいポイントとそれを解決した方法について、記事にまとめています。初学者ゆえの間違い等あるとは思いますが、お気づきの際はお問い合わせをいただけますと幸いです。-掛け算IPをZyboに実装-2021.04.182022.02.13Rustupをインストールするときに発生したエラーの回避方法2021.08.102021.11.07。