21Q1.05A

DA コンバータがなくてもできる FPGA ピアノ (2)

前回の実装では FPGA から指定した周波数のパルス波を出力し、圧電スピーカーから音を出すことができるようになりました。あとは音階に対応した周波数を各ボタンスイッチに割り当てれば、だいぶピアノらしくなるはずです。いわば FPGA ピアノの調律の作業です。さて、ピアノの調律といえば音の高さだけではなく音色の調整も行います。そこで今回は簡易的な音色の調整機能として PWM (Pulse Width Modulation) のメカニズムを実装して、自由にパルス幅を変更できるようにしてみましょう。また...
21Q1.02B

FPGA for HPC:宇宙物理アプリケーションをマルチ FPGA で高速化 (2)

前回の記事では、宇宙物理アプリケーションになぜ FPGA を利用しようと考えるに至ったかについて紹介しました。2 回目となる今回は、宇宙物理アプリケーションの支配的な処理である ART 法 (前回の記事参照) のハードウェアアクセラレータをどのように FPGA に実装していくかをご紹介します。 FPGA-based ART accelerator 実装の概要 1 FPGA に実装される ART 法のハードウェアアクセラレータ。各 Processing Element (PE)...
21Q1.01B

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

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

DA コンバータがなくてもできる FPGA ピアノ (1)

この連載では、少しホビーエレクトロニクス的なテイストも交えながら、FPGA ボードのスイッチボタンを鍵盤に見立てた電子ピアノの作成例をご紹介します。 オーディオ信号の出力となると、FPGA に DA コンバータを接続し、ディジタル信号をアナログ信号に変換するというのが普通かと思います。実際、廉価な FPGA ボードでもオーディオ用 DA コンバータを備えているものがかなりありますし、DA コンバータを搭載した拡張基板も色々とあるのですが、本連載ではあえて「DA コンバータがなくてもできる...
21Q1.04A

HPC アプリを FPGA 上で加速! (1)

みなさん、こんにちは。広島市立大学の窪田と申します。今回、ACRi ブログを執筆する機会をいただきましたので、高位合成ツールである Xilinx Vitis を使って連立一次方程式の求解法である Conjugate Gradient (CG) 法を FPGA で動かす例題を使って、ソフトウェアの FPGA への移植について説明します。 はじめに 私自身は、主に HPC 向けのソフトウェアや並列化コンパイラを研究、開発してきたのですが、最近は FPGA を使った処理の高速化にも手を広...
21Q1.03A

ACRi ルームの FPGA で○×ゲームを作って遊んでみよう (1)

ACRi ルームではリモートで FPGA を利用できる環境が提供されています。セットアップ済みの開発ツールを使ってすぐに FPGA 開発をはじめることができます。…と言われても、さて何からはじめてみよう、という人もいるかもしれません。身近な問題から FPGA に向くものを選んで実装するというのは (残念ながら) 簡単ではないので仕方ないことだと思います。 そこで、楽しく FPGA 開発をはじめてみる題材としてゲームを作ってみるのはいかがでしょう。この連載では、FPGA を使った○×ゲーム...
21Q1.02B

FPGA for HPC:宇宙物理アプリケーションをマルチ FPGA で高速化 (1)

どうも皆さんお久しぶりです。筑波大学計算科学研究センター所属の小林諒平です。 昨年はスーパーコンピュータでも使われ始めた FPGA という記事を執筆させて頂き、そして今年また本ブログにて記事を執筆させて頂く機会を賜りましたので、今回は計算科学研究センター (以下、当センター) にて FPGA をどのように活用しているのかについて紹介していきたいと思います。 このコースは、ACRiQ1.04 と同じように FPGA やアダプティブコンピューティングの研究論文をその著者が紹介するシリー...
21Q1.01B

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

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

FPGA 使え、って社長に言われた。さぁ、どうする? (5)

前回までのお話  自社の主力製品を調査し、FPGA 事業部の方向をすり合わせることにした Y 君。ただ、自社製品で取り扱っているからという理由だけで通信を対象とした製品を扱うのは不十分と考え、幾らかの市場調査を加え、特にリアルタイム性を有する Social Media という分野に焦点をあててプレゼンを行った。打ち合わせにおいて大きな反対はなかったものの、宿題として具体的な製品イメージおよび製品仕様の提出が課された。慌てた Y 君は、作成したプレゼン資料を持参し、改めて先生のもとへ向かっ...
20Q4.03A

FPGA 使え、って社長に言われた。さぁ、どうする? (4)

前回までのお話  会社に戻り、どのような製品開発をするかについて考えた Y 君。最初は身近なところから、ということで主力製品である通信機器を見直し、FPGA を活用することで付加価値をつけることにした。第1回目の企画会議に向けて資料を作成し、準備万端と思っていたが・・・。(前回の話はこちら) 調査報告 (1回目) @会議室 Y 君:おはようございます。お時間頂きありがとうございます。それでは、本日はよろしくお願いします。 社長:おはようございます。それでは、調査結果およ...
20Q4.04A

BRAM 達人への道 (5) レイテンシ 0 FIFO と Read Modify Write

はじめに BRAM アプリケーションとして FIFO を扱ってきましたが、今回は読み出しレイテンシを0にするにはどうしたらいいか、を扱います。加えて、FIFO から離れますが、Read Modify Write を BRAM で実行したい場合について考察します。 読み出しレイテンシ0の FIFO 読み出しレイテンシ0の定義 読み出しレイテンシ0を誤解されないために、ここで扱うその定義について明確にしておきましょう。図5-1を見てください。BRAM としての出力段をラッチ...
20Q4.02B

FPGA を対象とした非同期式回路の設計 (5)

皆さん、こんにちは。今回は、前回までに合成した非同期式回路の機能検証と評価を説明していきます。前回をご覧になっていない場合は、初めにそちらをご覧下さい。 設計フローの続き 図1は、前々回示した設計フローです。 図1 設計フロー 前回の終了時点で、タイミング違反がないことを確認しました。今回は、その段階での Quartus Prime プロジェクトを想定して、説明をしていきます。 機能検証 ここでは、第2回で解説した RTL シミュレーションと同じ...
20Q4.01A

Vitis を用いたアクセラレータの開発 (5) Vitis Library, Vitis AI とは?

前回までは、Vivado や PetaLinux を使用して Vitis Target Platform の作成、そして Acceleration Application の構築までの一連の流れを簡単にご紹介しました。今回は最終回となる、Vitis Library や Vitis AI Solution についてご紹介いたします。 Vitis Library Vitis には Software の記述を FPGA に置き換えて高速化することが可能な Tool です。ですが、初めての...
20Q4.04A

BRAM 達人への道 (4) FIFO に使ってみる-非同期型2

前回からの続き 第3回では、非同期型の FIFO について2つの設計例を示しましたが、いずれも特定の条件下では有効に機能するが、万能ではない結果となってしまいました。今回はこれに対し改善を試みます。 アドレス交換法3 非常に安直な考え方ですが、前回説明のアドレス交換法1と2の両方の良いとこ取りという意味で、ハイブリッド型を考えてみます。アドレス交換法1と2とで異なるタイミングにて、一方のクロック系から他方のクロック系にアドレスを渡しあうわけですが、アドレス交換法1と2のタイミ...
20Q4.02B

FPGA を対象とした非同期式回路の設計 (4)

皆さん、こんにちは。前回までに、非同期式回路の合成について説明をしました。今回は、タイミング検証や遅延調整など残りの部分について説明したいと思います。前回を読んでいない方は、まずはそちらをご覧ください。 タイミング制約 設計フローの続きを解説する前に、タイミング制約を説明します。今回使用したモデルでは、セットアップ制約、ホールド制約、およびパルス幅制約の3種類のタイミング制約を満足する必要があります。 注意:今回の回路モデルは、直線的な処理をしているため、これらの...
20Q4.01A

Vitis を用いたアクセラレータの開発 (4) Acceleration Application 実装編

「Vitis Target Platform SW構築編」の記事で、PetaLinux を使った SW Component 構築方法について紹介しました。4回目となる今回は Vitis 2019.2 を利用して、Vitis Target Platform および Acceleration Application の構築方法をご紹介します。 Vitis Target Platform Tool Flow まず Tool Flow の復習ですが、Vitis での Acceleratio...
20Q4.04A

BRAM 達人への道 (3) FIFO に使ってみる-非同期型1

はじめに BRAM アプリケーションとして FIFO を扱っていますが、第2回では同期型 (書き込み側のクロックと読み出し側のクロックが同一の場合) を扱いました。今回は非同期型 (書き込み側のクロックと読み出し側のクロックが独立な場合) を扱います。 どうしたら非同期型の FIFO ができるか まず、前回の基本構成を図3-1に示します。 図3-1 同期型 FIFO のブロック図 書き込みアドレスカウンタ、読み出しアドレスカウンタは独立したクロックで動作し、互いに...
20Q4.03A

FPGA 使え、って社長に言われた。さぁ、どうする? (3)

前回までのお話  FPGA を組み込んだ新製品開発に向けて調査を始めた Y 君。そもそも FPGA って何だろう、というところから見直そうと大学時代の研究室を訪問。大学時代の恩師に相談するも、「満足度の高い製品開発が重要であり FPGA を使うことが重要ではない」とそもそも論から諭される。それでも、と FPGA についていくつか教わり、一旦会社に戻ることにした。(前回の話はこちら) 質問する際は事前準備をしっかりと Y 君:ただいま、帰りました。 U 氏:おー、帰ってき...
20Q4.02B

FPGA を対象とした非同期式回路の設計 (3)

皆さん、こんにちは。今回は、前回 (FPGA を対象とした非同期式回路の設計 (2)) で準備した回路モデルを Intel の FPGA を対象に合成していきます。前回を読んでいない方は、最初に前回を確認してください。 また、Quartus Prime が必要になりますので、インストールしていない方は Quartus Prime Lite (無償版) を準備してください。 設計フロー 図1は、今回用いる設計フローです。今回は合成に必要となるものと合成までを解説...
20Q4.01A

Vitis を用いたアクセラレータの開発 (3) Vitis Target Platform SW 構築編

「Vitis Target Platform HW構築編」の記事で、Vivado を使った HW Component 構築方法について紹介しました。3回目となる今回は PetaLinux 2019.2 を利用して Vitis Target Platform の作成 Software 編の Flow のご紹介をいたします。 SW Component の Flow まずは前回の復習ですが、Vitis での Acceleration Application の Tool Flow は以下...
タイトルとURLをコピーしました