手を動かす

21Q1.01B

自作回路を PYNQ につなぐ様々な方法 (5)

自作回路を PYNQ から使うための設計・開発法に関するコースの最終回になります。今回の設計も、対象のアプリケーションがステンシル計算であること、IP コアがフル機能の AXI をもつ場合を取り上げることは変わりません。異なるのは、IP コアを Vitis HLS (2019.2 以前の Vivado では Vivado HLS とよばれていました) による高位合成で作成する点です。 本コースで使用したハードウェア記述 (一部ソフトウェアも含む) は、GitHub リポジトリ上で公開して...
21Q1.01B

自作回路を PYNQ につなぐ様々な方法 (4)

自作回路を PYNQ から使うための設計・開発法に関するコースの第4回です。今回は、「AXI でプロセッサとつながる IP コアを作る (5)」で紹介したステンシル計算コプロセッサを再び取り上げ、IP コアがフル機能の AXI をもつ場合の設計のポイントを確認します。前述の記事でも、ハードウェア実装とソフトウェア実装 (C 言語による) とを比較してみましたが、Python ではどうでしょうか。 本コースで使用したハードウェア記述 (一部ソフトウェアも含む) は、GitHub リポジトリ...
21Q1.01B

自作回路を PYNQ につなぐ様々な方法 (3)

自作回路を PYNQ から使うための設計・開発法に関するコースの第3回です。ここからは、PS と多量のデータのやりとりを必要とする回路を含んだ設計例の説明に入ります。今回は、AXI-Stream で回路からデータを PS に流し込み、そのデータをファイルに保存する、という例を取り上げます。今回の例は、「PYNQ を使って Python で手軽に FPGA を活用 (5)」の後半で紹介されている、AXI-Stream で来たデータを加工して AXI-Stream で返す、といった回路にも応用でき...
21Q1.01B

自作回路を PYNQ につなぐ様々な方法 (2)

自作回路を PYNQ から使うための設計・開発法に関するコースの第2回です。今回は、第1回で作成したナイトライダー回路の IP コアに少し手を加えることで、自身が制御用の AXI Lite インタフェースを持っている場合の設計例を説明したいと思います。また、自作の IP コア専用のドライバクラスを Python で作成する方法についても取り上げます。 本コースで使用したハードウェア記述は、GitHub リポジトリ上で公開しています。今回の関連するファイルは、knight2 フォルダ内にあ...
21Q1.01B

自作回路を PYNQ につなぐ様々な方法 (1)

愛知工業大学の藤枝です。この度また ACRi ブログでの執筆の機会をいただきました。今回は、2020年第1クォーター (20Q1) で三好さんが執筆された、「PYNQ を使って Python で手軽に FPGA を活用」の内容を補完するコースとなります。 FPGA や Zynq での設計にそれなりに慣れた人であれば、上記のコースを読んだあと少しばかり試行錯誤をすれば、すぐに自分の設計した回路を PYNQ 上で動かせるかもしれません。ただ、FPGA 開発に関する初級~中級レベルのコースで、...
20Q3.01B

AXI でプロセッサとつながる IP コアを作る (5)

AXI を使ってプロセッサと連携する回路の設計例について説明するコースも、いよいよ最終回となりました。今回は、前回作成したインタフェース変換回路を使い、専用計算回路 (コプロセッサ) の一例としてステンシル計算コプロセッサを作成し、C 言語によるソフトウェア実装と性能を比較してみます。 なお、第4回~第5回で使用する回路の SystemVerilog 記述は、GitHub からダウンロードできるようにしています。今回は、主に stencil/hdl/stencil_opt.sv を取り上...
20Q3.01B

AXI でプロセッサとつながる IP コアを作る (4)

この記事は、AXI を使ってプロセッサと連携する回路の設計例について説明するコースの第4回です。今回からは、いよいよフル機能の AXI を扱っていきます……が、必ずしもその機能の全てを使うわけではありません。そのため、今回はまず AXI のインタフェースをより少ない種類の信号で制御する、インタフェース変換回路を設計してみます。 なお、第4回~第5回で使用する回路の SystemVerilog 記述は、GitHub からダウンロードできるようにしています。今回取り上げる回路記述に対応するフ...
20Q3.01B

AXI でプロセッサとつながる IP コアを作る (3)

この記事は、AXI を使ってプロセッサと連携する回路の設計例について説明するコースの第3回です。前回は、AXI-Lite で制御や少量のデータのやりとりを行うインタフェース回路について説明しました。今回は、AXI-Stream でテストパターンの動画像を生成する IP コアを作成し、これらを既存の IP コアと組み合わせて、HDMI 接続のディスプレイにテストパターンを表示させるシステムを構築します。 今回示すシステムは HDMI を扱うため、残念ながらその動作を ACRi ルームの検証...
20Q3.01B

AXI でプロセッサとつながる IP コアを作る (2)

この記事は、AXI を使ってプロセッサと連携する回路を作ることを目標に、そうした回路の設計例について説明するコースの第2回です。 前回は、Zynq と AXI のインタフェースの概要を説明しました。今回は、AXI-Lite の利用例として、プロセッサとの制御や少量のデータのやりとりを行うインタフェース回路について説明します。 なお、今回~第3回で使用する回路の SystemVerilog 記述は、GitHub からダウンロードできるようにしています。今回取り上げる回路記述に対応する...
20Q3.01B

AXI でプロセッサとつながる IP コアを作る (1)

愛知工業大学の藤枝です。2020年第2クォーター (20Q2) で担当したコース「IP の世界からこんにちは」で、AXI (Advanced Extensible Interface) の詳しいことはまた別の機会に……という話をしたのですが、案外早くその機会がやってきました。 このコースでは、AXI を使ってプロセッサと連携する高性能な計算回路や応用システムを設計するための基礎技術として、AXI の詳細とインタフェース変換回路の例、それらを使った計算回路の設計例について説明します。 ...
20Q2.02A

IP の世界からこんにちは (5)

IP インテグレータを用いた回路やシステムの設計について学ぶコースも、いよいよ今回が最終回です。前回は、文字送信回路の IP コアを MicroBlaze と組み合わせるための IP コアを作成し、これらを含むブロック図からシステムを合成しました。今回は、このシステムの上で動作するソフトウェアを記述し、動作確認を行います。 なお,今回の内容は基本的に Vivado/Vitis 2019.2 を対象に記述しています。2019.1 以前の Vivado では、こうした FPGA 上の組込みプ...
20Q2.02A

IP の世界からこんにちは (4)

IP インテグレータを用いた回路やシステムの設計について学ぶコースの第4回です。前回までで、シリアル通信による文字送信回路の IP コアを作成し、ブロック図を使った設計で「Hello, FPGA」を PC に送信する回路を作成しました。 今回は、文字送信回路の IP コアを Xilinx 社のソフトプロセッサである MicroBlaze と組み合わせていきます。 テンプレートからの IP の作成 IP パッケージャでテンプレートを生成 第1回 や 第2回 でもざっと紹介...
20Q2.02A

IP の世界からこんにちは (3)

IP インテグレータを用いた回路やシステムの設計について学ぶコースの第3回です。前回は、IP パッケージャを使って、シリアル通信による文字送信回路の IP コアを作成しました。 今回は、これらと既存の IP コアとを組み合わせて、ブロック図を使った設計で「Hello, FPGA」を PC に送信する回路を作成して、その動作を確認していきます。 ブロック図作成の下準備 制御部の回路の再考 今回作成する回路は、「シリアル通信で Hello, FPGA (5)」(以下、「以前...
20Q1.08B

FPGA をもっと活用するために IP コアを使ってみよう (5)

みなさんこんにちは。この「FPGA をもっと活用するために IP コアを使ってみよう」のシリーズでは、全5回を通じて FPGA を使って実用的なアプリケーションを実装するために必要不可欠な IP コアの使い方を紹介していきます。 最終回となる第5回の今回は、ボトムアップ的な FPGA アプリケーション開発で役に立つ FIFO の使い方を紹介します。FIFO を使うと、いくつかのモジュールでデータを受け渡す時に、それぞれの細かい動作タイミングを気にする必要がなくなります。ソフトウェア・プロ...
20Q1.07A

シリアル通信で Hello, FPGA (5)

実用的な回路の設計・実装と動作確認を通じて,ハードウェア記述言語 (HDL) を使った FPGA 上のディジタル回路の設計について学ぶコースの最終回です。 前回までに、シリアル通信 (UART) による文字送信回路を設計し、論理シミュレーションと実機の両方で、1文字を正しく送信できることが確認できました。今回はこの回路をもう少しだけ拡張し、シリアル通信で Hello, FPGA を FPGA から PC に送信し、その結果を確認する……つまり、本コースの最終目標に踏み込みます。 ト...
20Q1.06A

4ビットカウンタでわかる FPGA のための論理回路 入門 (5)

みなさんこんにちは。このコースでは FPGA を使いこなすために理解しておきたい論理回路の基本について説明します。FPGA を使って開発しているけどハードウェアはよく分からないという方は、ぜひお付き合いください。 前回は4ビットカウンタ回路の挙動をシミュレーションで確認しました。また、前回までで論理回路の基礎事項はあらかた説明しています。 今回は、回路設計、最適化に重要なタイミング解析について、よく出てくる用語とともに掘り下げて説明します。 タイミング解析 論理回路は値...
20Q1.08B

FPGA をもっと活用するために IP コアを使ってみよう (4)

みなさんこんにちは。この「FPGA をもっと活用するために IP コアを使ってみよう」のシリーズでは、全5回を通じて FPGA を使って実用的なアプリケーションを実装するために必要不可欠な IP コアの使い方を紹介していきます。 第4回の今回は、FPGA の中に埋めこまれているメモリを利用する IP コアを紹介します。メモリは実用的なアプリケーションの作成には必須の機能です。すぐには使わないかなという人も、道具の一つとして覚えておくだけでも損はありません。 メモリってなんだっけ? ...
20Q1.07A

シリアル通信で Hello, FPGA (4)

実用的な回路の設計・実装と動作確認を通じて,ハードウェア記述言語 (HDL) を使った FPGA 上のディジタル回路の設計について学ぶコースの第4回です。 前回までに、シリアル通信 (UART) による文字送信回路を設計し、論理シミュレーションを使って動作検証を行いました。今回はこの回路を FPGA に書き込んで、シリアル通信で PC に文字を送信します。 トップモジュールの作成 トップモジュールの設計 第2回で設計した文字送信回路は、他の回路から1文字のデータを受け取...
20Q1.06A

4ビットカウンタでわかる FPGA のための論理回路 入門 (4)

みなさんこんにちは。このコースでは FPGA を使いこなすために理解しておきたい論理回路の基本について説明します。FPGA を使って開発しているけどハードウェアはよく分からないという方は、ぜひお付き合いください。 前回は、4ビットカウンタ回路を SystemVerilog で記述し、そのコードを Vivado を使って論理合成して結果を確認しました。今回は記述した4ビットカウンタ回路の挙動をシミュレーションで確認します。 今回の記事は、「シリアル通信で Hello, FPGA (3...
20Q1.08B

FPGA をもっと活用するために IP コアを使ってみよう (3)

みなさんこんにちは。この「FPGA をもっと活用するために IP コアを使ってみよう」のシリーズでは、FPGA を使って実用的なアプリケーションを実装するために必要不可欠な IP コアの使い方を紹介していきます。 第3回の今回は、FPGA 内部のロジックに供給するクロック周波数を指定するための IP コアを紹介します。 FPGA ボードに搭載されているクロックより高い周波数でロジックを駆動したい、ちょっと回路が大きくなってしまったから周波数を低くしたい、接続するデバイスにあわせた周...
タイトルとURLをコピーしました