World”文字列をシリアル出力させました。(PL)に作成し、Zybo上で実装・動作確認を行いました。Lite”のAXI4-Liteポートと接続可能なカスタムIPを作成しました。Liteのレジスタに書き込む方法IPパッケージャーを使用してMaster側のAXI4-Liteインタフェースを追加する方法を解説しています。Lite”のAXI4-Liteポートと接続可能なカスタムIPを作成しました。World”という文字列を伝送するためのIPを紹介した後、実際にZybo上で動作確認をした結果をまとめます。world!!”を外部PCに出力させてみました。全体構成ブロックデザインは以下のようにしました。このブロックデザインの動作原理は以下のとおりです。Worldシリアル出力ロジックの動作原理Zyboのボタンを押し、BTNがHigh状態にアサートされるRTLモジュール”debounce.v”でボタン入力”BTN”のチャタリング除去を行うチャタリング除去後の”BTN”をトリガーにRTLモジュール”word_send.v”をアサートする。FIFOレジスタ内のデータを順次シリアル信号に変換し、UART_TXD_INポートを通じて、外部に出力するチャタリング除去に用いたRTLモジュール”debounce.v”は、「FPGAプログラミング大全」に記載されているコードをそのまま用いています。Rinker秀和システムAmazon楽天市場Yahooショッピング以下では、私が自作した”word_send.v”のソースコードについて解説します。endfunctionendmoduleタイミングチャートソースコードの説明を、word_send.vのタイミングチャートを使いながら説明します。チャタリング除去後のボタン入力btn_inをトリガーにカウンターが回り始めます。カウンターは(100マイクロ秒/バイト)×(送信するバイト数)だけ回ります。その間、load変数はHigh状態にアサートされています。World!!(+改行)”は全部で13バイトなので1.3ミリ秒になります。1バイト送信する100マイクロ秒の間に、AXI_DATA_ENがHigh状態にアサートされ、前回の記事で作成したカスタムIP”UART_OUT”に1文字分のデータを送信します。ボーレートが115200bpsのとき、シリアル通信で1バイトの文字を送るのにかかる時間がおよそ87マイクロ秒なので、1語の送信間隔を100マイクロ秒だけ開ければ、余裕を持って送信することが可能です。hello_sentenceという関数は、アスキーコード表を参考にして作成しています。ZyboとPCの接続は図のようにしています。ZyboのPmodからシリアル信号を出力し、シリアルアダプターを用いてPCに読み込みました。TTLアダプターを用いています。値段も手頃で、3.3/5.0Vの両方に対応しているので使い勝手が良いと思います。ケースに入っているのも安心感がありますね。Pmod)を選択しています。follo...reference.digilentinc.com下のZyboの写真におけるY17をRXD、T17をTXDにしました。https://reference.digilentinc.com/_media/zybo/zybopins.png?cache=より抜粋それぞれのPmodピンとシリアルアダプターのピンとをジャンパ線を使って接続しています。接続の対応関係は以下の通りです。RXD制約ファイルにおけるピン配置この接続を踏まえて、制約ファイルを作成しました。{UART_RXD_OUT}]Pmodの接続に加えて、システムクロックとリセットポート、そしてトリガーをかけるためのボタンの接続ピンの配置を設定しました。bitstreamファイルの作成までを一気に行います。ZyboをPCに接続し、作成したbitファイルの書き込みまでを行い、シリアルアダプターをPCに接続しました。Termを用いました。Termを立ち上げたら、シリアルを選択し、シリアルアダプターを接続しているポートを選択します。ターミナル画面が立ち上がったら、[設定]>[端末]を選択します。ここでは、改行コードの受信をLF、送信をCR+LF、そしてローカルエコーにチェックを入れます。選択が終わったら、[OK]をクリックしましょう次に、[設定]>[シリアルポート]を選択します。Lite”のボーレートと一致させます。今回は、115200です。終わったら、[現在の接続を再設定]を選択します。Termの設定は完了です。World!!”が無事に出力されました!ひがし前々回、前回の記事から、M側のAXI4-Liteインタフェースを持つカスタムIPの作成を行い、今回の記事で実機での動作確認までを行うことができました。プロセッサを使わずにAXI4-Lite経由で自由に書き込みや読み出しができるようになると、IP活用の幅が広がると思います。本記事では、Zynqが外部からのHDMI信号を受信しDDRメモリに格納した後、DDRメモリを読み出しVGA信号を送信するDigilent社のデモサンプルの解説を行い、デモサンプルをもとにZynq内部のハードウェア構成を作成しています。本記事では、任意精度型ライブラリの使い方について解説しました。任意精度型ライブラリの特徴や追加するメリット、使用時の注意点についてまとめたあと、任意精度整数型に含まれる有用なメソッドについても紹介しています。Vitis【HDMI出力編(3)】静止画をZynqからHDMI出力するVitisアプリケーション本記事では、Vitisを用いてZybo経由で外部ディスプレイに画像を出力するアプリケーションを作成します。アプリケーションでは、ドライバ関数によりIPコアの設定を行った後、読み出すフレームバッファに直接静止画を書き込んでいます。企業のエンジニアとして働きつつ、FPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。本記事ではVitisとVivadoを用いてZybo上の"LED"を点滅させるアプリケーションを作成しています。CPUで動作する”LED点滅”プログラムの動作原理を解説しながら、実際にLEDの点滅まで確認しました。(3)カスタムIPを用いたVitisプラットフォームプロジェクトの作成ハードウェア言語で作成したRTLモジュールにIPパッケージャーを使用してAXI4-Liteインタフェースを追加する方法を解説しています。IDEのアプリケーションを作成する方法を具体的に解説しています。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。@phys_higashiFPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。初学者の目線から、詰まりやすいポイントとそれを解決した方法について、記事にまとめています。初学者ゆえの間違い等あるとは思いますが、お気づきの際はお問い合わせをいただけますと幸いです。@phys_higashiFPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。初学者の目線から、詰まりやすいポイントとそれを解決した方法について、記事にまとめています。初学者ゆえの間違い等あるとは思いますが、お気づきの際はお問い合わせをいただけますと幸いです。-掛け算IPをZyboに実装-2021.04.182022.02.13Rustupをインストールするときに発生したエラーの回避方法2021.08.102021.11.07。