FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2017-05-01から1ヶ月間の記事一覧

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #9)

さて、前回までで、devmem2を使って自作IP(LED点灯制御回路)にアクセスできるところまで確認した。 今回は、Linux上で動作するドライバを作成して、devmem2を使わずにアクセス、さらにはユーザアプリケーションからアクセスする方法を試行する。 myLEDを制御…

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #8)

前回までで独自にビルドしたハードウェアを使ってLinuxを立ち上げることに成功した。 次に、ZedBoardに付属しているLEDを制御する。LEDを制御するためのハードウェアは、myLEDというIPとして実装し、あらかじめPL部に組み込んである。 devmem2を使えるように…

6th RISC-V Workshopの全発表資料が公開されました

riscv.org 6th RISC-V Workshopの記事が公開された。一個ずつチェックしていこう。

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #7)

前回まででU-BootでLinuxをブートする準備が整った。次に、Linuxのルートファイルイメージを用意しよう。 今回も簡単化のため、既に存在するイメージを利用した。LinaroのUbuntuのイメージだ。 参考にしたのは以下のページ。 qiita.com 以下のページから最新…

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #6)

最初に作成したブートイメージを試行して、ZedBoardで何故かブートできなかったので、いろいろ立ち戻って調査していたのだが、やはりZybo用のものを使うのは結構ハードルが高くて、Xilinxのオフィシャルパッケージを使うほうが楽なのかもしれないと思い出し…

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #5)

前回の続き。ZedBoard向けのFSBLを作成する。 ハードウェアをエクスポートして、SDKを起動した。 [New] –> [Application Project]をクリックして、新しいアプリケーションプロジェクトを作成した。 新しいプロジェクト名として、「myLED_FSBL」を記入して、…

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #4)

前回の続き。前回はハードウェアデザインまで作成したのだが、直後に自作したIPが壊れてしまい、環境を構築しなおしたのだった。 さらに、ZedBoardのADV7511の環境を引っ張ってきた場合、ブロックデザインのsystem.vまではLEDの出力ポートが生成されるのだが…

64bit BOOMプロセッサでCoremarkを動作させたい (2. RTLによるシミュレーション)

前回に引き続き、RocketChipおよびBOOMでCoremarkを動作させる。いろいろ調査した結果、RocketChipとBOOMでコンパイラを切り分けなければならないので、 それを適用してCoremarkをコンパイルしてみる。 ここでは、RocketChip版は${ROCKET_CHIP} リポジトリ、…

XmingよりもVCXsrvのほうが断然使いやすいので移行する

VirtualBoxなどで仮想マシンを作り、Puttyなどでコマンドラインから接続していてXを立ち上げる場合、Xサーバを立ち上げてWindowsにGUIを転送する必要がある。 WindowsにおいてフリーのXサーバといえば、Xmingしか知らなかったが、ひょんなことからVCXSrvを見…

RISC-V RocketコアとBOOMコアでサポートされているISAの違い

msyksphinz.hatenablog.com 前回BOOMコアでRTLシミュレーションを行おうとしてRTLシミュレーションエラーになってしまっていたのだが、どうしてもエラーの理由が分からず、まさかと思いriscv-toolsをboomのブランチでリコンパイルして動作させてみた結果、動…

RISC-V UCB実装のメモリマップまとめ

実装を確認するにあたり、RISC-Vの実装のメモリマップを各種資料からまとめた。 たぶんあっていると思うが、オフィシャル文章ではないので、間違いを発見した場合は指摘お願いします。。。

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #3)

前回の続き。 参考ページ。 yuki-sato.com カスタムIPを接続する 作成したカスタムIPをインスタンスして、AXIポート、LED出力ポートと接続する。 myLEDカスタムIPにインスタンスとAXIポートの接続 まずはBlock Design上で作成したmyLEDIPを追加しよう。 myLE…

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #2)

前回の続き。 参考サイト。 yuki-sato.com IPに外部ポートと機能を追加する。 AXIに接続されるIPは作成したが、まだ機能を追加していないのと、LEDと接続するポートが空いていないので、Verilogを記述してIPを改造する。 編集する必要のあるファイルは、 myL…

yuki-sato.comの「LinuxからFPGAを使ってみる」をやってみる (ZedBoard版 #1)

ZedBoard上で動作するLinuxで、ZynqのPL部を制御する方法について調査していたところ、以下のページを発見した。 yuki-sato.com Vivadoの立ち上げから、Linuxのビルド、そしてデバイスドライバの記述まで丁寧に解説してある。早速やってみよう。 このページ…

64bit BOOMプロセッサでCoremarkを動作させたい

RISC-V環境であるE51プロセッサを動作させたときに、Coremarkの公称値と実際の値が少し違っているのを見つけた。 64bit版Coremarkバイナリの生成 Coremarkをriscv-testsの環境でコンパイルしてみる RISC-V ISS Spikeでシミュレーション BOOMコアでRTLシミュ…

RISC-V Instruction Set Privileged Architecture 1.10 / User-Level ISA 2.2が出ました

RISC-V Instruction Set Architectureに更新が入っていた!こういうのをシレッとアップグレードするのは正直止めてほしいのだが。。。 User-Level ISA Specification 2.1 –> 2.2 (2017/05/07) Draft Privileged Architecture 1.9.1 –> 1.10 (2017/05/07) ど…

SiFiveの64bit RISC-Vコア Soc E51でCoremarkを動作させる(MCSの作り方)

前回、RISC-Vの64bitコアを搭載したSoCプラットフォームE51を使ってCoremarkを動作させたが、このときにあらかじめ提供されているMCSを改造してCoremarkを挿入した。 この方法はハードウェア設計の師匠に教えてもらったものだが、師匠から許可を得たのでその…

SiFiveの64bit RISC-VコアE51でCoremarkを動作させる

前回、MCSをダウンロードしてSiFiveのRISC-VコアE51を起動させた。 その時は、デバッグ用の機器を用意していなかったので自分のプログラムを動作させることができなかったが、ハードウェア設計の師匠からメールをもらい、プログラムを動作させることができる…

「ローグ・ワン スターウォーズ ストーリー」DVD買った

ローグワンのDVD買っちゃった。 msyksphinz.hatenablog.com 劇場で見ても結構面白かったので、もう一度見たいと思いDVDを買ってしまった。 ローグ・ワン/スター・ウォーズ・ストーリー MovieNEX(初回限定版) [ブルーレイ+DVD+デジタルコピー(クラウド対応)+M…

「Zedroid - Android (5.0 and later) on Zedboard」をやってみる(9. uramdisk.image.gzの展開)

前回は、u-bootが立ち上がったもののinitを起動させることができず、どうしたらよいのか分からないところで終わった。 そこまで日記に書いたところ、uramdisk.image.gzを事前に展開しておく必要があるということを @ksmakoto さんに教わった。 確かにその通…

「Zedroid - Android (5.0 and later) on Zedboard」をやってみる(8. Kernel Panic)

前回からいろいろブートファイルを作り直して、どうにかu-bootが立ち上がるようになった。 そして zedroid_device_xilinx_zedboard-kernel を少し変更する必要があったが、U-bootでの動作は始まったようだ。 zynq-zed-adv7511.dtsi diff --git a/arch/arm/bo…

SiFiveの64bit RISC-VコアE51をArty FPGAで動作させる

SiFiveはフリーのRISC-Vコアデザインとして、32bitのE31、64bitのE51を提供している。 www.sifive.com これらのソースコードはリクエストしないとダウンロードすることは出来ないが、mcsファイルが配布されているためこれを使って手っ取り早くFPGAで動作させ…

SiFiveの新RISC-VコアIP(E51, E31 Coreplex IP)

RISC-V 6th Workshop にて、SiFiveが新RISC-VコアIPであるE51を発表した。これまで発表されていたE31 Coreplex-IPは32ビット版だが、E51は64bitだ。 www.eetimes.com SiFiveはそれ以外にも、E51の有償サポートを発表している。足回りのIPにより値段が若干変…

コンパイルオプションを変えてCoremarkベンチマークを改善する

自作RISC-Vプロセッサは16バイト単位で命令をフェッチしてくる。つまり分岐などで新しい場所に命令フェッチを発生した時も、16バイトアラインで命令をフェッチする。 このとき、分岐先や関数の先頭が16バイトに乗っていると効率的だ。16バイトアラインの乗っ…

命令バッファのサイズによる性能変化の調査

自作RISC-VプロセッサでCoremarkベンチマークを計測しているが、命令フェッチをどれだけ投機的に実行するかによって性能がずいぶん変わってきた。 投機フェッチは、命令バッファが空いている限り実行しているが、あまりフェッチを出しすぎると、パイプライン…

自作RISC-VプロセッサにRASを実装する

自作RISC-VプロセッサにRAS(Return Address Stack)を実装して性能を調査した。 RASの実装をここしばらくやっていたのだが、意外と難しいということが分かった。 Return命令の判定をどこで行うか RAS以外の分岐予測、アドレスを使って分岐予測を行う方式の分…

「Zedroid - Android (5.0 and later) on Zedboard」をやってみる(7. Linuxブート途中で失敗)

前回のLinuxが立ち上がらない原因を調べていたのだが、どうやらBOOT.binを作成するとき、U-bootのファイルはu-bootではなく、u-boot.elfに改名しておかなければならない気がする。 生成されるBOOT.binのファイルサイズも違うので、ファイル名が違うだけでは…

「Zedroid - Android (5.0 and later) on Zedboard」をやってみる(6. SDカードへの書き直し)

前回SDカードを使ってブートしてみたが、動作しなかった。 いろいろ解析を続けていたのだが、まずZedBoardのプログラム書き込み終了の青色LEDが点灯していなかった。 そこでデザインなどの再ビルドと再度SDカードに書き込みを行い、再度SDカードから起動する…

「Zedroid - Android (5.0 and later) on Zedboard」をやってみる(5. SDカードへの書き込み・ブート失敗)

ここまででAndroidをブートさせるためのファイル群ができたので、SDカードに書き込んでブートの試行をしてみよう。 参考にしている資料は以下。 Zedroid - Android (5.0 and later) on Zedboard from Industrial Technology Research Institute (ITRI)(工業…

6th RISC-V Workshop Agendaが発表されました

RISC-V Workshopの第6回目、今回は上海だ。 riscv.org 開催日:May 8-11, 2017 場所:Shanghai Jiao Tong University (SJTU) in Shanghai China 今回はnVIDIAが協賛している。アジェンダは上記のリンクの通りだが、ざっと眺めてみた感じ、第5回ほどのバリエ…