FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

FPGA

VivadoでIPを生成するフローをスクリプト化する

Vivadoでは様々なIPを生成することが出来るが、それはIP GeneratorによってGUIで様々な操作を行う必要がある。 これは面倒なので、スクリプト化しておく。 github.com VivadoのIPは、まずIP用のプロジェクトを作成する必要があるため、スクリプトは以下のデ…

FreeBSD on ZedBoardを試行(2. PreBuild Imageをダウンロードして試行)

前回、途中でビルドの方法が分からず詰まってしまったので、既にビルドされているSDカード用イメージをダウンロードし書き込みを行い、ZedBoardでブートの試行を行ってみた。 msyksphinz.hatenablog.com ZedBoard用FreeBSDのプレビルドバイナリ ZedBoard用Fr…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(5)

前回の記事でちょっと書き忘れたのだが、xil_printf()で浮動小数点を表示することは出来ないらしい。最初スペースばかりが出力されて訳が分からなかった。 というわけで以下の掲示板の記事を参照した。 forums.xilinx.com 以下のようなトリッキーな方法を使…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(4)

前回まででIPのインテグレートが完了したので、今度はPS側の制御プログラムの開発に入る。 SDKで新しいプロジェクトを立ち上げる。ハードウェアとしては、design_1_wrapper_hw_platform_1を指定する。 Vivado HLSで生成したドライバ群をSDKから参照するため…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(3)

前回までで、Vivaod HLSで開発した回路をVivadoにインポートできるIPとして生成した。 次は、Vivadoから開発したIPをインポートして、IPとして利用できるように設定する。 Vivado上で、HLSを使用して開発したIPをインポートする 前回、AXIのインタフェースに…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(2)

前回、Vivado HLS上でC言語の行列積関数を記述し、それをテストするところまで確認した。今回はこれを論理合成し、C言語とRTLのCosimulationを実施しよう。 Vivado HLSを使用してC言語の関数を論理合成する 論理合成はツールバーから[Run C Synthesis]をクリ…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(1)

これまで、Zynq ZedBoardを利用して、Vivadoで作成したカスタムIPをインテグレートする方法について調査してきた。 この場合、IPは自分でVerilogを記述しAXIに接続した。これはこれで十分有益だ。 しかしせっかくVivado HLSがあるので、C言語で回路を記述し…

Zynq Cortex-A9 ARMでお手軽にサイクル計測する手法を調査する(2)

前回で、ARMでサイクルカウンタを使用する方法を調査した。 サンプルプログラムを用いてPLへのアクセス性能を計測するプログラムを記述する これを前回PS/PLのサンプルデザインに適用してみよう。以下のように、PL内にメモリが格納されている。 メモリへのス…

Zynq Cortex-A9 ARMでお手軽にサイクル計測する手法を調査する(1)

Zynq FPGAにはARMプロセッサが搭載されているため、もちろんタイマなどのレジスタ群も用意されている。 なかでも、性能評価屋さんが非常によく使うのが、サイクルカウンタだ。サイクルカウンタは現在までのサイクル数を計測し、レジスタに格納している。 こ…

ZynqのデバッグI/FをLinux無しで実現したい(readlineを試行→失敗)

前回、ZedBoard Zynqを使って、簡単なPL回路を作成し、それをPSから制御することに成功した。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com ここで、制御するためにわざわざCのプログラムを書いて、コンパイルして、ダウ…

Zynq ZedBoardを使ってPSとPLの協調プログラミング入門(4)

ここからは、ARM上のプログラムの開発に入る。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com 使用ツール : Vivado 2016.2 使用OS : Windows 10 ARM上で動作するプログラムを書いてCustom IPを制御する [File]→[New Project]をクリックする。 プログ…

Zynq ZedBoardを使ってPSとPLの協調プログラミング入門(3)

前回まででIPの生成が完了したので、Wrapperを作成してbitstreamの合成の準備に入る。 使用ツール : Vivado 2016.2 使用OS : Windows 10 FPGA用のBitstreamを作成する msyksphinz.hatenablog.com msyksphinz.hatenablog.com Sourceペインで[design_1]を右ク…

Zynq ZedBoardを使ってPSとPLの協調プログラミング入門(2)

前回までで、ZedBoard用のハードウェアの基盤が出来上がったので、今度はPLロジック部に追加するハードウェアを作り、IPとして追加していこう。 msyksphinz.hatenablog.com 使用ツール : Vivado 2016.2 使用OS : Windows 10 VivadoでIPを新規作成する 前回ま…

Zynq ZedBoardを使ってPSとPLの協調プログラミング入門(1)

ZedBoardはずっと持っていたのだが、Linuxを単体で立ち上げたりなど、これまであまりPL側の回路を活用することが無かった。 ところが最近、PL側の回路設計も行う機会が増えたため、勉強のためにも、Zynq ZedBoardとVivadoを使って、どのようにPS+PLの協調設…

Ubuntu on ZedBoardでCoremark性能計測

折角ZedBoard上でUbuntuが動作するようになったので、性能計測の基本、ベンチマークソフトウェアを動作させて、ZedBoard上のCortex-A9の性能を評価してみよう。 ちなみに、性能測定については、以前ZedBoardを動かしたときにCoremark-1.0を使って実施してい…

高位合成でソーティングネットワークを試す(バイトニックソートの合成試行)

バイトニックソートは、マージソートの並列と言われており、並列プログラミングにおいては良く使われている(らしい)。 前回の単純選択ソートは、シーケンシャルに最小値を選んで、それを順番に交換していくのだった。 では、ソフトウェアの世界において並列…

Vivado 2015.4 HLSを試す(Interface Synthesis Lab 2)

Interface Synthesis Lab 2: Port I/O Protocolをやっていこう。 http://www.xilinx.com/support/documentation/sw_manuals/xilinx2013_1/ug871-vivado-high-level-synthesis-tutorial.pdf Step1. Create and Open the Project まずは、CUIでvivadoを起動し…

Vivado 2015.4 HLSを試す(Chap.4 Interface Synthesis)

Vivado HLSのチュートリアルを進めていこう。次はInterface Synthesis(Chapter-4)だ。 http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_1/ug871-vivado-high-level-synthesis-tutorial.pdf ソースコードのシミュレーション(Cレベル) ま…

Vivado 2015.4 HLSを試す(Lab.2 C Validation with ANSI C Arbitrary Precision)

Vivado 2015.4 のチュートリアルの続きをやっていこう。 http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_2/ug871-vivado-high-level-synthesis-tutorial.pdf Lab.2 C Validation with ANSI C Arbitrary Precision を挑戦してみる。 Ste…

Vivado 2015.4 HLSを試す(C Validation and Debug)

Vivado 2015.4 のチュートリアルの続きをやっていこう。 http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_2/ug871-vivado-high-level-synthesis-tutorial.pdf まずは、C Validation tutorialのディレクトリに移動し、以下のコマンドを叩…

Vivado 2015.4 HLSを試す(チュートリアル Lab.2)

前回の続き。チュートリアルのLab.2をやっていこう。今回は、単純にtclを使って、GUIを立ち上げずに合成をするだけだ。 http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_2/ug871-vivado-high-level-synthesis-tutorial.pdf 前回のLab.1…

Vivado HLS 2015.4を試す (チュートリアル Lab.1)

Vivado 2015.4 HLSでは、遂にHLSの機能が無償化されたらしい! 今まで触ってみたいと思いつつ、期限付きの評価ライセンスはきちんと使い切れる自信が無かったりて、申請していなかったので、今回の無償化は非常に嬉しい。さっそく試してみよう。 http://japa…

Vivado 2015.3の新機能であるCore Containerについて調査

今さらながらVivado 2015.3 をインストールして、IP Managerを立ち上げてみると、Core Containerという新機能が追加されていた。 Core Containerは、IPマネージャで管理されている各IPを、1つのファイルで管理できるようになるという構造だ。これまで複数の…

Vivado 2015.2ではZedBoardのHello Worldがビルドできない

Vivado 2015.2 をダウンロードして、ZedBoardをちょっとやり直そうと思い、CTTのHello Worldを実行しようとすると、ビルドエラーが発生した。 http://forums.xilinx.com/xlnx/attachments/xlnx/ELINUX/8467/1/zedboard_CTT_v2013_2_130807.pdf もともとVivad…

Zynq用Yocto-LinuxをビルドするためのVagrantfileとchef

ビルドが失敗する理由はタイムアウトが短かすぎるせいだった。 修正方法をに記載しました。 Zynq用Yocto-LinuxをビルドするためのVagrantfileとchef (2) - FPGA開発日記msyksphinz.hatenablog.com Yocto-Linuxってビルドするのに手順が多くて、良く忘れてし…

VivadoのIPをgitなどのバージョン管理システムで取り扱う方法 (IPをsubmoduleとして管理する)

これはVivadoの使い方じゃなくて、gitの使い方なんだけれども。 msyksphinz/fpga_ipsgithub.com http://japan.xilinx.com/support/documentation/application_notes/j_xapp1165.pdf http://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2013_…

VivadoのIPをgitなどのバージョン管理システムで取り扱う方法 (既存のIPを追加する)

既存のIPを、Managed IP Projectに追加するためには、どういたらいいんだろうか? ここでは、pulsar1_connect(AXIバス)というIPを、IPとしてgit管理したいとする。 msyksphinz/fpga_ipsgithub.com http://japan.xilinx.com/support/documentation/applicatio…

VivadoのIPをgitなどのバージョン管理システムで取り扱う方法 (Managed IP Projectを作成する)

Vivadoのプロジェクトはバージョン管理がしにくい。やたらと意味不明なファイルが更新されてファイルのmodificationマークが付くし、しかもファイル群が巨大なので、全部格納していたのでは、リポジトリが大変なことになる。 そのために、XilinxはVivadoのプ…

ZedBoardとGalileo購入

前々から言っていた、ZedBoardを購入した。Digi-keyで注文したが、1つだけでは何だか勿体無い気がしたので、ついでにGalileoも買ってみた。 ZedBoardは昔友人に貸してもらって、使ってみたことはあるが、所有するのは始めてだ。 ついでにGalileo(ついでとい…

FPGAエクストリームコンピューティング第6回を見てきた

FPGAエクストリームコンピューティング第6回が当選したので、ドワンゴまで見に行ってきた。 FPGAエクストリーム・コンピューティング 第6回 (2015/02/01 13:30〜) FPGAエクストリーム・コンピューティング 第6回 - connpass こういう形のセミナーに参加する…