Submit Search
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
Download as PPTX, PDF
1 like
3,447 views
T
Takayasu Shibata
RTLを語る会(14)での発表資料です。 RISC-Vの話と、MicrosemiのGitHubに上がっていたRISC-VでLチカしてみた事を発表しました。
Devices & Hardware
Read more
1 of 18
Download now
Downloaded 23 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
More Related Content
PPTX
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
Takayasu Shibata
PDF
Zynq mp勉強会資料
一路 川染
PDF
ACRiウェビナー:小野様ご講演資料
直久 住川
PDF
Scapyで作る・解析するパケット
Takaaki Hoyo
PPTX
本当は恐ろしい分散システムの話
Kumazaki Hiroki
PDF
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
Takeshi HASEGAWA
PDF
Rust で RTOS を考える
ryuz88
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
Takayasu Shibata
Zynq mp勉強会資料
一路 川染
ACRiウェビナー:小野様ご講演資料
直久 住川
Scapyで作る・解析するパケット
Takaaki Hoyo
本当は恐ろしい分散システムの話
Kumazaki Hiroki
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
Takeshi HASEGAWA
Rust で RTOS を考える
ryuz88
What's hot
(20)
PPTX
UEFIによるELFバイナリの起動
uchan_nos
PPTX
RISC-Vの基礎、オバービュー(RISC-V basis-overview)
Takayasu Shibata
PDF
TLS, HTTP/2演習
shigeki_ohtsu
PDF
Wireshark だけに頼らない! パケット解析ツールの紹介
morihisa
PDF
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
PDF
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
VirtualTech Japan Inc.
PPTX
分散システムについて語らせてくれ
Kumazaki Hiroki
PDF
仮想化環境におけるパケットフォワーディング
Takuya ASADA
PDF
15分でわかるGit入門
to_ueda
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
PDF
レシピの作り方入門
Nobuhiro Iwamatsu
PDF
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
PDF
初心者向けCTFのWeb分野の強化法
kazkiti
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
PDF
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
PPTX
PHPとシグナル、その裏側
do_aki
PDF
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
PDF
.NET Core時代のCI/CD
Yuta Matsumura
PPTX
ARM LinuxのMMUはわかりにくい
wata2ki
PDF
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
UEFIによるELFバイナリの起動
uchan_nos
RISC-Vの基礎、オバービュー(RISC-V basis-overview)
Takayasu Shibata
TLS, HTTP/2演習
shigeki_ohtsu
Wireshark だけに頼らない! パケット解析ツールの紹介
morihisa
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
VirtualTech Japan Inc.
分散システムについて語らせてくれ
Kumazaki Hiroki
仮想化環境におけるパケットフォワーディング
Takuya ASADA
15分でわかるGit入門
to_ueda
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
レシピの作り方入門
Nobuhiro Iwamatsu
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
初心者向けCTFのWeb分野の強化法
kazkiti
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
PHPとシグナル、その裏側
do_aki
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
.NET Core時代のCI/CD
Yuta Matsumura
ARM LinuxのMMUはわかりにくい
wata2ki
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
Ad
Similar to Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
(20)
PDF
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
yaegashi
PDF
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
inaz2
PDF
スタート低レイヤー #0
Kiwamu Okabe
ODP
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
Kazuyuki Sato
PDF
ceph acceleration and storage architecture
Yuki Kitajima
PDF
例会講座 今更fish shellの紹介
segre2
PDF
Dalvik仮想マシンのアーキテクチャ 改訂版
Takuya Matsunaga
PDF
Xbyakの紹介とその周辺
MITSUNARI Shigeo
PDF
JIT のコードを読んでみた
y-uti
PDF
ACRiウェビナー:岩渕様ご講演資料
直久 住川
PPTX
Power shell で DSL
urasandesu
PDF
DartVM on Android
nothingcosmos
PDF
Shinjuku.rs #14 userland-ioの紹介
Akira Hayakawa
PDF
FPGAによるHDMI to LVDS変換器
I_HaL
PDF
高位合成ツールVivado hlsのopen cv対応
marsee101
PPTX
Androidとfpgaを高速fifo通信させちゃう
ksk sue
PDF
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Mr. Vengineer
PDF
Reconf 201506
Takefumi MIYOSHI
PDF
Using asimdhp (fp16) on Jetson Xavier CPU
tomoaki0705
PDF
仮想記憶の構築法
magoroku Yamamoto
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
yaegashi
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
inaz2
スタート低レイヤー #0
Kiwamu Okabe
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
Kazuyuki Sato
ceph acceleration and storage architecture
Yuki Kitajima
例会講座 今更fish shellの紹介
segre2
Dalvik仮想マシンのアーキテクチャ 改訂版
Takuya Matsunaga
Xbyakの紹介とその周辺
MITSUNARI Shigeo
JIT のコードを読んでみた
y-uti
ACRiウェビナー:岩渕様ご講演資料
直久 住川
Power shell で DSL
urasandesu
DartVM on Android
nothingcosmos
Shinjuku.rs #14 userland-ioの紹介
Akira Hayakawa
FPGAによるHDMI to LVDS変換器
I_HaL
高位合成ツールVivado hlsのopen cv対応
marsee101
Androidとfpgaを高速fifo通信させちゃう
ksk sue
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Mr. Vengineer
Reconf 201506
Takefumi MIYOSHI
Using asimdhp (fp16) on Jetson Xavier CPU
tomoaki0705
仮想記憶の構築法
magoroku Yamamoto
Ad
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
1.
Microsemi FPGAで RISC-Vを動かしてみた話(Lチカ) RTLを語る会(14) ~FPGAの現実~ 2017年09月24日(日) @shibatchii
2.
発表を聞くにあたっての注意点 あまり真剣に見ないでください。 ボロが丸わかりです。
あまり深く考えないでください。 え~それって〇〇じゃん、こじつけだーってとこ多いです。 笑って、和やかな心で見てください。 その方が幸せになれます。 勘のいい子は嫌いだよ @shibatchii
3.
自己紹介 @shibatchii 名前: @shibatchii 仕事:ASIC、FPGAの設計検証 某ゲーム機のDDR I/Fとか 現在常駐で東京に来ている 本拠地は山口県宇部市 趣味:オートバイでツーリング FPGA,マイコン
いじり ブログ:http://shibatchii.cocolog-nifty.com/blog/ ホームページ:http://shibatchii.cool.coocan.jp/ Twitter:@shibatchii フォロー歓迎
4.
Microsemi FPGAで RISC-Vを動かしてみた @shibatchii
5.
なぜMicrosemiでRISC-V? 2016年11月頃、 「米Microsemi社は、オープンソースの命令セット「RISC-V」を実装した CPUコア(RISC-Vコア)として「RV32IM」を開発し、同社のFPGA向けに 提供を始める。このCPUコアは、米SiFive社と共同開発したもの。」 というようなニュースが流れた。 しばらくするとGitHubにFPGAのプロジェクト ファイル等が提供された。
おもしろそうだ、ボードもあるしやってみる か! ちなみに、MicrosemiはRISC-VのGoldメンバー なのですぐに無くなることもないだろうと。 @shibatchii
6.
RISC-Vとは CPUの命令セット・アーキテクチャ (ISA)
グーグル、オラクル、ヒューレット・パッカード・エ ンタープライズ(HPE)などが開発に参加 完全にオープンで自由に使える命令セットアーキテク チャ アドレッシングは32/64/128bitサポート 上記、Wikipedia参照しました。https://ja.wikipedia.org/wiki/RISC-V 詳細は FPGAマガジンNo.18とかRISC-VのWebページを参考にしてください。 @shibatchii
7.
特徴 自由度が高い 必要なバス幅、命令セットを選んで構成できる
バスも自由:AMBA,Sonic,VME,オレオレバス,etc メモリマップも自由:スタートベクタが途中にあっ てもOK 命令セット構成例 RV32I MACFDQ ■ RV32I:基本命令 ■ M:乗算命令 ■ A:アトミック命令 ■ C:圧縮 ■ F:単精度小数点 ■ D:倍精度小数点 ■ Q:4倍精度小数点 ■他にも J,L,V,B,T,Pなど有 ここまで必要ないなら、例えばRV32IMACだけでもOK @shibatchii
8.
MicrosemiのRISC-Vコア仕様 低消費電力のASICマイクロコントローラおよびFPGAソフト コアのインプリメンテーション用に設計•統合された8Kバイト の命令キャッシュと8Kバイトのデータキャッシュ プラットフォームレベルの割り込みコントローラ(PLIC)は単 一優先度レベル
RISCV標準のRV32IM ISAをサポート•JTAGインタフェース を備えたオンチップデバッグユニット IOおよびメモリ用の2つの外部AXIインターフェイス @shibatchii
9.
Microsemiはどう実装したか @shibatchii JTAG 割り込 み入力 周辺デバイス用AXI4 キャッシュ無し メモリ用AXI4 キャッシュ有り CLK RESET Catalogから SmartDesignに持っ てくるとこんな感じ 中身はSiFive's E31 Coreplex Platform-Level Interrupt
Controller プラットフォームレベル割込制御 E31 Core TileLink To AXI Brdge タイルリンク-AXIブリッジ Integer Multiplier/Divider 整数 乗算/除算 RV32IM コア JTAG TAP Controller JTAGコントローラ Clock-Domain Crossing クロック載せ替え Debug Transport Module 8KB Instruction Cache 8KB命令キャッシュ 8KB IData Cache 8KBデータキャッシュ TileLink To AXI Brdge タイルリンク-AXIブリッジ Uncached TileLink Interconnect CoreRISCV_AXI4 JTAG I/f External Interrupts AXI4 MMIO I/F AXI4 Memory I/F Clock Reset
10.
Lチカ用全体構成 @shibatchii Microsemiのサンプル
11.
全体構成 ブロック図 @shibatchii CCC クロック制御 CoreRISCV_AXI4 RISC-Vコア CoreAHBLite AHBブリッジ CoreJTAGDebug JTAGデバッガ eNVM 不揮発メモリ CoreAPB# APB3ブリッジ CoreAHBtoAPB3 AHB<->APB3 CoreGPIO 汎用入出力 CoreSPI 3線IF CoreTimeer タイマー 割込 DDR
Contrller DDRコントローラ AXI Glue Logic AXI接続回路 CoreAXIToAHBL AXI4<->AHBL CoreAHBLite AHBブリッジ ResetSyncronizer リセット同期 Microsemi SoC FPGA Fabric CoreAXIToAHBL AXI4<->AHBL AXI Glue Logic AXI接続回路 LEDs Offchip SPI 周辺 Offchip DDRメモリ External OSC 外部クロック PushBottonReset 押しボタンリセット JTAG Header CoreUART シリアル 割り込み シリアルIF
12.
ソフトウェア構成1riscv-systick-blinky │ │ .cproject //
SoftConsole用プロジェクトファイル Cの環境に関するもの │ .project // SoftConsole用プロジェクトファイル Softconsole自身の環境に関するもの │ hw_platform.h // ベースアドレスや定数がdefineされている │ main.c // Cプログラムメイン。ここから動き始める。解析もここから。 │ README.txt // このプログラムの概要。結構重要なことが書いてある。 │ riscv-systick-blinky Debug.launch // デバッグ時の設定ファイル?よくわからない │ ├─drivers // 各ハードIP用のドライバファイル │ ├─CoreGPIO // GPIO 汎用入出力用 │ │ coregpio_regs.h // GPIOが持っているレジスタのオフセットアドレス │ │ core_gpio.c // GPIOへ出力したり、入力したりする関数 │ │ core_gpio.h // ヘッダファイル。ビットマスク等の設定値defineとprototype宣言 │ │ │ └─CoreUARTapb // UART シリアル用 │ coreuartapb_regs.h // UARTが持っているレジスタのオフセットアドレス │ core_uart_apb.c // UARTへ出力したり、入力したりする関数 │ core_uart_apb.h // ヘッダファイル。ビットマスク等の設定値defineとprototype宣 言 @shibatchii
13.
ソフトウェア構成2 │ ├─hal // Hardware
Abstraction Layer ハードウェア抽象化階層 │ cpu_types.h // typedef 数個 │ hal.h // レジスタアクセスとかをHW依存のから共通のアクセスに変換 │ hal_assert.h // HAL_ASSERT がdefineしてある │ hal_irq.c // 割り込みの抽象化 │ hw_macros.h // ハードウェアレジスタアクセス define │ hw_reg_access.c // レジスタアクセス関数 │ hw_reg_access.h // レジスタアクセス関数のプロトタイプ宣言 │ └─riscv_hal // RISC-V用 Hardware Abstraction Layer ハードウェア抽象化階層 encoding.h // ステータスや割り込みレジスタのビット位置define等 entry.S // csrアクセスアセンブラ init.c // 領域コピー関数 microsemi-riscv-ram.ld // SRAMのメモリスペース設定 riscv_CoreplexE31.h // 割り込み制御、設定 riscv_hal.c // 割り込みハンドラ riscv_hal.h // 割り込みハンドラのプロトタイプ宣言 riscv_hal_stubs.c // 該当関数が定義されていないときのスタブ関数 sample_hw_platform.h // ベースアドレスや定数設定 syscall.c // UART_APBアクセス関数 @shibatchii
14.
プログラム抜粋 (main.c) // riscvの抽象化階層、必要な定数等の定義、関数ヘッダ
呼び出し #include "riscv_hal.h" #include "hw_platform.h" #include "core_gpio.h" // GPIOでin,outの変数宣言。 // core_gpio.hで宣言 gpio_instance_t g_gpio_in; gpio_instance_t g_gpio_out; // ステートカウンタ宣言。初期値は1 uint32_t g_state = 1; // 割り込みハンドラ関数。 void SysTick_Handler(void) { uint32_t stable; uint32_t gpout; // GPIOのデータを読み出す stable = GPIO_get_inputs(&g_gpio_in); // 反転して、マスクをかけている。 gpout = ~stable & 0x000000F0; // g_tateを右1ビットシフト。つまり2倍にしている g_state = g_state << 1; // 4より大きくなったら1にする. if (g_state > 4) { g_state = 0x01; } // [7:4]がそのままもちこし、[3:0]がステートカウント値 gpout = gpout | g_state; // GPIOに出力 GPIO_set_outputs(&g_gpio_out, gpout); } @shibatchii // おなじみ、Cのメイン int main(int argc, char **argv) { // PLICって Platform Level Interrupt Controller の略 // この関数は riscv_CoreplexE31.hで定義してある PLIC_init(); // GPIOの初期化。ここで入力でつかうとかの設定。INとOUTでアドレスが違う // core_gpio.hで宣言 // COREGPIO_IN_BASE_ADDR とかは hw_platform.h で定義 GPIO_init(&g_gpio_in, COREGPIO_IN_BASE_ADDR, GPIO_APB_32_BITS_BUS); GPIO_init(&g_gpio_out, COREGPIO_OUT_BASE_ADDR, GPIO_APB_32_BITS_BUS); // タイマー設定 riscv_hal.h で定義されている。 // SYS_CLK_FREQ は hw_platform.h で定義。83000000UL なので 83MHz SysTick_Config(SYS_CLK_FREQ / 2); return 0; }
15.
動かしてみよう @shibatchii LiberoSoc,SoftConsole インストール、設定 GitHubからMicrosemi RISC-V Igloo2用を一式ダウンロード LiberoSocにパーツ取り込み Lチカのプロジェクト取り込み FPGAファブリックのコンパイル FPGAに書き込み SoftConsoleでファームコンパイル 実行! LED点滅!
16.
デモ まずはVideoでみてね。 https://www.youtube.com/watch?v=-mrOy9FMHzA
時間があれば実機でデモするよ。 @shibatchii
17.
まとめ Microsemiは何を考えているか。(@shibatchii主観) いままでは、IglooにCortex-M3載せたSmartfusionや Smartfusion2でCortex-M3、そこからCPU除けたIgloo2 などをリリースしてきた。
だが最新のPolaFireではCPU入りのはでてきなさそう。 XilinXのMicrobreeze,IntelのNIOSⅡのようなメインラインのCPUを 持ってない。 ハードCPUを載せるのはちょっと荷が重い。 そうだ!RISC-Vで自由に構成してもらおう! ベンダーもユーザーもWin&Win! 今後予定 とりあえずデモを動かしてみただけなので、RISC-Vを調査し オリジナルなもの(無駄に高機能な時計とか)作ってみる。 @shibatchii
18.
質問タイム なにか質問あればどうそ。 なんでも良いですよ。 @shibatchii
Download