To content | To menu | To search

Subcategories

Monday, October 18 2021

Petalinux が対応しているホスト OS バージョン

https://www.xilinx.com/support/documentation-navigation/see-all-versions.html?xlnxproducttypes=Design%20Tools&xlnxdocumentid=UG1144

こちらより。

ただツールバージョンまで考えるとキリが無い

Continue reading...

Monday, July 26 2021

antonblanchard/microwatt をもう一度動かす

前のは間違いもあったので、今度は備忘録も兼ねてもう少し細かく。

Continue reading...

Friday, October 11 2019

antonblanchard/microwatt を動かした

OpenPOWER ISA を実装した antonblanchard/microwatt を動かした話。

ただ、Python のライブラリの依存関係がうまく解消できなかったので、OS にインストール済みの Python 関係のパッケージを一旦全部削除、という乱暴なことをしているので、この手順の実用性はいまいちかもしれない。

2019/Oct/28 追記:この点については Pipenv を使えばいいらしい。

あと、本来は bit ファイルのロードも自動でされるはずが、仮想マシンで行っているためか、デバイスが検出できなかったため途中でとまる。手動でロードすれば動作する。

Continue reading...

Tuesday, February 12 2019

Xilinx の Vivado を起動しようとすると Microsoft の Visual C++ のランタイムライブラリをインストールしろと言われる問題

今回は 2017.1 をインストールした時に発生。

インストーラは「C:\Xilinx\Vivado\2017.1\tps\win64\xvcredist.exe を実行しろ」というようなメッセージを残していた。

実行すると Visual C++ 2017 Redistributable のインストールがされようとするものの、エラー番号 0x80070666 でセットアップが失敗する。

恐らく、別途 Visual C++ をインストールしているせい。

ひとまず回避したいときは、C:\Xilinx\Vivado\2017.1\bin\loader.bat を編集する。

xvcredist.exe がある行を探して、例えば拡張子を .exex 等に書き換えると、ファイルが見つからないのでスキップする。

同じことは SDK、HLS でも起きるので、C:\Xilinx\SDK\2017.1\bin\loader.bat や C:\Xilinx\Vivado_HLS\2017.1\bin\loader.bat も同じように編集しておく。

Thursday, August 16 2018

メタステーブル

FPGA で、Stratix II や Virtex-II くらいの時代、「非同期信号の取り込みでのメタステーブルは、フリップフロップ2個通せば防げる」って話をどこかで聞いたか読んだかしたんだけれど、これは最近のデバイスや速いクロックの回路でもまだ通用するのかな。

「2個」については、経験則だったような気もするし、何か具体的に数字を挙げて説明されていたような気もするけれど、元ネタが思い出せない。

Monday, September 26 2016

FPGArduino をさわってみる(3)

とりあえず動いた

Continue reading...

Thursday, September 22 2016

FPGA の回路規模の見積もり

ちょっと前に話題にあがったので。みんなどんな風にしているんだろう。

Continue reading...

FPGArduino をさわってみる(2)

昨日の続き

Continue reading...

Wednesday, September 21 2016

FPGArduino をさわってみる(1)

幸い Xilinx Spartan 3A/3AN Starter Kit を自由に使える環境があるので、まずはバイナリで動かしてみた。
シリアルポートが、まだ USB-UART が無くて、D-SUB 9pin の PS/2 側を使わないといけなかったのはハマったけれど、とりあえず動いた。

けど f32c\rtl\proj\xilinx\s3a_700_bram\s3a_700_bram.xise をそのまま ISE 14.7 で通そうとしてもエラーになる。

 ERROR:HDLParsers:3375 - "f32c/rtl/generic/bram.vhd" Line 81. Choices for an array aggregate (result of operator) must be locally static unless there is only one choice. (LRM 7.3.2.2)

だそうで。
Makefile 使わないとだめなんだろうか。
でもこれ長くて読むのつらい。

元々、これまた自由に使える ML605 に移植しようと思ったけれど、どこから手をつけていいのか分からない。
なので素直に f32c\rtl\generic\glue_bram.vhd から手をつけていきますか。

基本的には、http://www.nxlab.fer.hr/fpgarduino/ のページの My board isn't listed above, is there any hope? の手順のはずなんだけど。

と、generic で Synthesize 走らせたら通った。失敗したときはパッケージ系のファイルが入っていなかっただけかもしれない。
C_clk_freq に MHz で数字を設定したら通った。
読み込んだファイルは

f32c/rtl/generic/glue_bram.vhd
f32c/rtl/generic/bram.vhd
f32c/rtl/cpu/pipeline.vhd
f32c/rtl/cpu/alu.vhd
f32c/rtl/cpu/debug.vhd
f32c/rtl/cpu/defs_f32c.vhd
f32c/rtl/cpu/defs_mi32.vhd
f32c/rtl/cpu/defs_rv32.vhd
f32c/rtl/cpu/idecode_mi32.vhd
f32c/rtl/cpu/idecode_rv32.vhd
f32c/rtl/cpu/loadalign.vhd
f32c/rtl/cpu/mul_dsp.vhd
f32c/rtl/cpu/mul_iter.vhd
f32c/rtl/cpu/shift.vhd
f32c/rtl/generic/bptrace.vhd
f32c/rtl/generic/reg1w2r.vhd
f32c/rtl/generic/bootloader/boot_rom_mi32el.vhd
f32c/rtl/generic/bootloader/boot_sio_mi32eb.vhd
f32c/rtl/generic/bootloader/boot_sio_mi32el.vhd
f32c/rtl/generic/bootloader/boot_sio_rv32el.vhd
f32c/rtl/generic/bootloader/defs_bootblock.vhd
f32c/rtl/soc/gpio.vhd
f32c/rtl/soc/sio.vhd
f32c/rtl/soc/spi.vhd
f32c/rtl/soc/timer.vhd

そしてこれをラッピングして ML605 につながるようにして bit ファイル作ったら、とりあえず Arduino IDE と通信はできた。
動作クロックは 150MHz を指定。というか C_clk_freq は integer といってるし、166.6 はどうやって指定するんだろうな。

ただ、LED のアサインが違っているようで、blink は動いてくれなかった。その他も、まだこれからかな。

Wednesday, August 14 2013

Xilinx の FPGA の cross clock の制約設定

調査中。 こことか
http://forums.xilinx.com/t5/General-Technical-Discussion/False-Timing-Paths-using-FIFO-to-cross-clock-domains/td-p/220259
そこからのリンクでこことか。
http://forums.xilinx.com/t5/Virtex-Family-FPGAs/Virtex-5-metastability-protection/m-p/196834#M12512
UG612 がどうにもうまく理解できてないので。

Tuesday, April 9 2013

FPGA

あまり輝かしい未来は思いつかないなあ。 通信系では相変わらず強いと思う。

演算ユニットとしては正直つらいと思う。 単純な FFT ならもう何世代も前の GPU の時に追い越されているし。 動作クロックもせいぜい 300MHz 、メモリも多チャンネル化は厳しいから、GPU 相手だと厳しい。 (メモリについては演算ユニット数を考えると比較の仕方も変わってくるけれど) [2013/4/10追記: もちろんパイプラインで動作するとはいえ FPGA が 300MHz 1クロックで処理できる内容に GPU が 1GHz 4クロックかかるならいい勝負になるけれど、演算ユニットの数でカバーできると変わってくるので] いわゆるディスクリート GPU ならデータのやりとりのレイテンシはどうしてもつらいけれど、AMD と Intel は同じダイに載せて Uniform にしていくみたいだから(Uniform については NVIDIA もだけど)そういう弱点も問題で無いシステムになっていくだろうし。 というかこう考えると CPU + GPU はどんどん一つに凝縮されていく流れも一つだなあ。そうなると「対 GPU」という視点も変わってくるか。 NVIDIA は ARM 組み込んで自立を目指すんだろうか。 そして Xeon Phi の未来がよくわからなくなる。

金融系についてはネットワークプロセッサもあまり無視できないかもしれない。 ネットワークインタフェースに関しては向こうも強力なところがあるし。プロセッサも64個とかのもあるし。MIPS 系のもあったと思う。 FPGA は TCP/IP とかのプロトコルを入れるのが大変だったけど SiTCP をもう少し使ってみるともう少し見方も変わってくるのかなあ。 FPGA の反応速度はやっぱり反射神経のように早いから、その点でいつまでアドバンテージを保てるか。 それともロジックの開発期間を考えるとネットワークプロセッサで先行させるのが必須になるか。

一番わかりやすいグルーロジックとしての役割は、他に無いから安泰として。

通信系のような、流れるデータに対してパイプラインで処理をするような分野ではまだまだ強いと思う。 ソフトウェアでやるなら SIMD というか MIMD でかつこれに集中してないとデータレートの変動が怖いだろうなあ。 逆にそれが怖くなくなるくらい早いプロセッサが出てくれば流れは変わるかもしれない (というかそれもネットワークプロセッサの狙いの一つか)。

あとはハイレベルシンセシスが流れを変えることになるのかどうか。 Xilinx のツールでも上位版で標準になったし、Altera は OpenCL 対応を研究中だし。 IPFlex の DAP/DNA も、演算ユニットを FPGA 的に再構成できるのはとても興味深かったけれど、ツールに慣れないといけなかったのも普及しなかった原因の一つだったのかなあ。

というかリコンフィギュアブルなデバイスってあまり生き残ってない気が。 テンシリカも買収されてしまったし。

今の FPGA ユーザーって Bjarne Stroustrup Interview about C++ みたいな状態かもしれなあとも思うけどどうなのかなあ。