Verilog HDL

24Q1

カウンタ回路を FPGA で動作させて挙動を確認しよう(入門編)

この記事では、ACRi ルームのコンピュータと FPGA を利用して、Verilog HDL で記述される簡単なカウンタ回路を動作させて、その挙動を確認する方法を説明します。 Verilog HDL で記述したハードウェアの内容や、論理合成、配置・配線といった処理の詳細は後回しにします。Vivado を活用して、FPGA を動かすこと、動かした FPGA の動作を確認することを目標にします。 FPGA の設計・開発に慣れていないみなさんを対象とする初級の内容です。ACRi ルームの...
21Q1.03A

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

ACRiルームのFPGAで○×ゲームを作って遊んでみよう ACRi ルームで楽しく FPGA 開発をはじめてみる題材としてゲームを作ってみるのはいかがでしょう。この連載では、FPGA を使った○×ゲームを作ることを題材に FPGA 開発をはじめてみることにします。リソースは○×ゲームで FPGA 開発をはじめてみようにあります。 今回の記事のねらい 開発の流れは、○×ゲームで FPGA 開発をはじめてみよう (RTL 編) をご覧ください。この記事では、○×ゲームがどう作られ...
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.04A

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

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

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

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

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

本連載は今回から、BRAM を用いたアプリケーションの一つとして、FIFO を扱うことにします。 はじめに FIFO は First In First Out の略で、最初に書き込まれたデータが最初に読み出せる→データが書き込んだ順に読み出せる記憶機能、と考えることができます。何らかのデータを扱うアプリケーションにおいては、非常に便利な構成要素で、その記憶素子として BRAM を使うととても便利です。FIFO の記憶容量として RAMB36 が大きすぎてもったいない場合もありますが...
20Q4.02B

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

皆さんこんにちは。今回は、設計の対象となる回路モデルを紹介していきたいと思います。今回は、前回紹介したFPGA を対象とした非同期式回路の設計 (1) で取り上げた制御回路モデルを用いますので、まだ読んでない方はそちらを先に読んでいただければと思います。 対象モデル (同期式回路) 最終的に設計した後、どのくらいの性能になるのかを確認するために、今回は同期式回路の設計から始めていきます。図1は、対象となる回路モデルです。算術演算を5段パイプラインで実現しています。 ...
20Q4.04A

BRAM 達人への道 (1) 構造と基本的な使い方

FPGA を用いて AI のアクセラレーションのような高度な処理を行うことが当たり前の時代になりました。しかし、FPGA を利用する全てのエンジニアがそうしたアプリケーションに携わっているわけではなく、初心者、初級者レベルのエンジニアが多数おられるということも事実ではないかと思います。 この記事では、現場レベルで使えるちょっとした工夫や考え方のヒントを紹介し、初級者のレベルアップや、現場の方々の手助けにつながればと考えています。 はじめに 題材としては、FPGA の基本要素と...
20Q2.09B

MIG を使って DRAM メモリを動かそう (4)

この記事では、前回まで解説してきた MIG ベースの DRAM コントローラのテストプログラムと先端の RISC-V ソフトプロセッサへの応用を説明していきます。 ソースコード: テストプログラム:  ソフトプロセッサ: Wizard ベースのクロック生成スクリプト: 説明では、現時点 (2020年8月) ACRi ルームで使用可能な Vivado 2019.2 を使用します。ターゲットの FPGA ボードは Arty A7-35T です。 テストプログラムと RI...
20Q2.09B

MIG を使って DRAM メモリを動かそう (3)

この記事では、Vivado で MIG の生成方法と DRAM コントローラ全体の Verilog HDL の実装を解説していきます。これまでのように、説明では、Digilent 社の Arty A7-35T FPGA ボードを想定します。 ソースコード: 現時点 (2020年8月) において、ACRi ルーム (ACRi の提供する FPGA 利用環境) で使用可能な Vivado 2019.2 を使いますが、新しい Vivado バージョンにも簡単に移植することができます。 ...
20Q2.09B

MIG を使って DRAM メモリを動かそう (2)

この記事では、DRAM の基本的な構成と、MIG とアプリケーション回路の間に設けるユーザインタフェースと呼ばれるモジュールについて解説していきます。前回の記事のように、説明では、Micron 社の DDR3 SDRAM MT41K128M16JT-125 という 256MB DRAM チップを搭載する Arty A7-35T FPGA ボードを想定します。 DRAM の基本的な構成 下図は DRAM ベースのメモリシステムの一般的な構成を示しています。 図1: DRAM ベ...
20Q2.02A

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

IP インテグレータを用いた回路やシステムの設計について学ぶコースの第2回です。前回は、IP インテグレータの概要と、いくつかの既存の IP コアの例を見てきました。今回は、自作の IP コアをこれら既存の IP コアと組み合わせて使うために、IP パッケージャというツールの使い方を学びます。 今回の内容に関する Xilinx 社の公式ドキュメントの文書番号はUG1118となります。詳細な仕様などは上記ドキュメントを参照してください。 IP コア作成の下準備 IP コア作成の...
20Q2.09B

MIG を使って DRAM メモリを動かそう (1)

みなさんこんにちは。この「MIG を使って DRAM メモリを動かそう」のシリーズでは、全5回を通じて Xilinx Memory Interface Generator (MIG) という IP コアをベースに Xilinx FPGA で DRAM メモリを動かす方法を紹介していきます。説明では教育向けに設計された Arty A7-35T FPGA ボードを用いますが、他の FPGA ボードにも同様に適用できます。 第1回の今回は、FPGA 設計で DRAM を利用する必要性について説...
20Q1.05A

スーパーコンピュータでも使われ始めた FPGA (2)

このコースでは、スーパーコンピュータ (以下、ブログの文字数節約のために一般的に使われている略称「スパコン」を使います) にも FPGA が何故使われ始めたのか、FPGA をスパコンに使うことによって何ができるようになるのか、どのような技術的な面白さがあるのか等について紹介していきます。 第2回目のこの記事では、いよいよスパコンに FPGA がなぜ必要なのかを紹介していきます。 スパコン分野の研究者が注目する FPGA の3大要素 前回の記事で、スパコンのアクセラレータとし...
タイトルとURLをコピーしました