SlideShare a Scribd company logo
Interface Device Laboratory, Kanazawa University http://ifdl.jp/
自作RISC-Vチップで
Lチカをやってみた
秋田純一
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
自己紹介
本業:金沢大の教員
専門:集積回路、イメージセンサ、インタラクション
好きなプロセスはCMOS 0.35um
副業:Maker、ハンダテラピスト
好きな半田はPb:Sn=37:63
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
私とRISC-Vの出会い
中国でアツいらしい?
→HiFiveを買う
→LonganNano買う
→積む
→ほぼ積む
→Sipeedに行く→K210開発者の妻に会う
→SipeedのK210に出会う
→Interfaceとかでお勉強
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
こんな動画をつくってみました
https://www.youtube.com/watch?v=A188CYfuKQ0
http://www.nicovideo.jp/watch/sm23660093
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
ニコ動でいただいたコメント
 こっから?
 ニコ技界のTOKIO
 ゲートの無駄遣い
 ここから!!?
 ひでえ、勿体ない使い方wwwww
 マジかよ。レジストレベルの設計とかガチすぎる。
 無駄遣い過ぎるだろw
 贅沢というかなんというか
 え?まじでここからかよ」wwww」」
 IC版FusionPCB的なところが現れれば・・・
 (FPGAでは)いかんのか?
 俺はFPGAで我慢することにする
 いや、そこまでは必要ないです
 量産品すらFPGA使う時代に専用LSI・・・
 アマチュアはFPGAで良いんだよなぁ・・・w
チップをつくる=
「すごいことをするため」
という意識
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
LSIの歴史:Moore(ムーア)の法則
ref: http://www.intel.com/jp/intel/museum/processor/index.htm
G.Mooreが1965年に論文[1]で述べる→C.Meadが「法則」と命名→「予測」→「指針(目標)」へ
素子を微細化する=いいことがたくさんある(性能↑、消費電力↓などなど)
[1] G.E.Moore, "Cramming more components onto integrated circuits," IEEE Solid-State Circuit Newsletter, Vol.11, No.5, pp.33-35, 1965.
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
「Lチカ」のパラダイムシフト
MCU
#Component=1
$1
Oscillator(555)
#Component=4
$1.5 while(1){
a = 1;
sleep(1);
a = 0;
sleep(1);
}
可能だが非現実的なLチカ
合理的なLチカ
マイコン(MCU)を使って
「Lチカ」しない理由がない
コスト、機能性、・・・
コンピュータの使い方がもったいなくなくなった
チップ設計・製造も、Makeの「道具」になるべき
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
MakerでオレLSIをつくってみたい
情報収集・整理
仲間さがし
有志でつくってみる?
製造方法もいくつか
フェニテック0.6umなど
http://j.mp/make_lsi
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
・・・と思っていたら
NDA不要・オープンソースなチップ設計環境
やや議論が発散気味な印象だが、猛スピードで整備中
予定では11月に相乗り試作
「なんてNDAなしでできたんですかね?」
→「だって130nmなんて枯れた技術だし、
隠すより、エコシステム作ったほうがいいじゃん?」
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
Non-commercial EDA Tools
結構ある(オープンソースも多い)
Layout Tool: Glade, K-Layout
Schematic Entry: KiCAD, Xscheme, …
Circuit Simulator: LTspice / Spice3 / ngspice, …
Synthesize/P&R: Alliance, Qflow, OpenLANE
*Open Source Softwares
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
これまでに・・・
「懲りずに再度、LED点滅用のLSIを
つくってLチカをやってみた」
Inkscape設計、クリーンルームで製造、
センサ
「また懲りずに再度、LED点滅用の
LSIをつくってLチカをやってみた 」
555互換(デジアナ混載)
「またまた懲りずに再度、LED点滅用
のLSIをつくってLチカをやってみた 」
Cortex-M0(HDLから設計)
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
今回のお題:RISC-V
Open SourceなRISC命令セット
用途に応じて、実装する命令が階層化
乗算器、浮動小数点、暗号化、・・・
回路の小規模下、省電力化に
適している
ARMと並んで組み込み用途、
特に中国で採用例が急増中
12
https://riscv.org/specifications/
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
RISC-VでLチカ:準備
poyo-v
(RISC-V実装の一つ)
命令セット:RV32I
※レジスタを必要数に削減
「Lチカ」
https://github.com/ourfool/poyo-v
RISC-V
ROM
GPIO
Lチカのプログラムを
入れておく
※実はレジスタ5個、各2bit
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
Lチカのプログラム~チップへ
0000 lui x1,0x0
0004 addi x1,x1,0x0ff ; x1=255
0008 lui x3,0x00001 ; GPIO base address
000c li x4,1 / ori x0,x4,1
0010 sw x4,0(x3) ; GPIO=1
0014 mv x2,x0 ; = addi x2,x0,0
0018 addi x2,x2,1 ; = x2++
001c bgeu x1,x2,00018
0020 sw x0,0(x3) ; GPIO=0
0024 mv x2,x0 ; = addi x2,x0,0
0028 addi x2,x2,1 ; x2++
002c bgeu x1,x2,00028
0030 j 00010
VerilogHDL
CMOS 0.6um 3Al 1.8mm(sq)
Core=1490um x 1240um
Qflow(論理合成・配置配線)
osu050
(NDAフリースタセル:一部修正)
module imem(
input wire clk,
input wire [5:0] addr,
output reg [31:0] rd_data
);
wire [3:0] iaddr = addr[5:2];
always @(posedge clk) begin
case (iaddr)
// blink program
16'h0000 : rd_data <= 32'h000000b7; // lui x1,0x0
16'h0001 : rd_data <= 32'h0ff08093; // addi x1,x1,0x0ff / x1=255
16'h0002 : rd_data <= 32'h000011b7; // lui x3,0x00001 / GPIO base address
16'h0003 : rd_data <= 32'h00106213; // li x4,1 / ori x0,x4,1
16'h0004 : rd_data <= 32'h0041a023; // sw x4,0(x3) ; GPIO=1
16'h0005 : rd_data <= 32'h00000113; // mv x2,x0 = addi x2,x0,0
16'h0006 : rd_data <= 32'h00110113; // addi x2,x2,1 = x2++
16'h0007 : rd_data <= 32'hfe20fee3; // bgeu x1,x2,00018
16'h0008 : rd_data <= 32'h0001a023; // sw x0,0(x3) ; GPIO=0
16'h0009 : rd_data <= 32'h00000113; // mv x2,x0 = addi x2,x0,0
16'h000a : rd_data <= 32'h00110113; // addi x2,x2,1 ; x2++
16'h000b : rd_data <= 32'hfe20fee3; // bgeu x1,x2,00028
16'h000c : rd_data <= 32'hfe1ff06f; // j 00010
endcase
end
endmodule
poyo-v + GPIO
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
プログラム部分(ハンドアセンブル)
0000 lui x1,0x0
0004 addi x1,x1,0x0ff ; x1=255
0008 lui x3,0x00001 ; GPIO base address
000c li x4,1 / ori x0,x4,1
0010 sw x4,0(x3) ; GPIO=1
0014 mv x2,x0 ; = addi x2,x0,0
0018 addi x2,x2,1 ; = x2++
001c bgeu x1,x2,00018
0020 sw x0,0(x3) ; GPIO=0
0024 mv x2,x0 ; = addi x2,x0,0
0028 addi x2,x2,1 ; x2++
002c bgeu x1,x2,00028
0030 j 00010
module imem(
input wire clk,
input wire [5:0] addr,
output reg [31:0] rd_data
);
wire [3:0] iaddr = addr[5:2];
always @(posedge clk) begin
case (iaddr)
// blink program
16'h0000 : rd_data <= 32'h000000b7; // lui x1,0x0
16'h0001 : rd_data <= 32'h0ff08093; // addi x1,x1,0x0ff / x1=255
16'h0002 : rd_data <= 32'h000011b7; // lui x3,0x00001 / GPIO base address
16'h0003 : rd_data <= 32'h00106213; // li x4,1 / ori x0,x4,1
16'h0004 : rd_data <= 32'h0041a023; // sw x4,0(x3) ; GPIO=1
16'h0005 : rd_data <= 32'h00000113; // mv x2,x0 = addi x2,x0,0
16'h0006 : rd_data <= 32'h00110113; // addi x2,x2,1 = x2++
16'h0007 : rd_data <= 32'hfe20fee3; // bgeu x1,x2,00018
16'h0008 : rd_data <= 32'h0001a023; // sw x0,0(x3) ; GPIO=0
16'h0009 : rd_data <= 32'h00000113; // mv x2,x0 = addi x2,x0,0
16'h000a : rd_data <= 32'h00110113; // addi x2,x2,1 ; x2++
16'h000b : rd_data <= 32'hfe20fee3; // bgeu x1,x2,00028
16'h000c : rd_data <= 32'hfe1ff06f; // j 00010
endcase
end
endmodule
2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/
Lチカしてみた
クロック源の”555”(約10Hz)
MakerFaireTokyo2020の1週間前に到着
→ボンディングして、ブレッドボードで
※ちょっと動作があやしい・・・?(周期がバラつく)
→D-FFのSetup/Holdタイムが足りない・・・?

More Related Content

What's hot

Makerの「道具」としてのLSI ~「LED点滅用のLSIをつくって   Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Makerの「道具」としてのLSI~「LED点滅用のLSIをつくって  Lチカをやってみた」のココロ~(MakerFaireTokyo2014)Makerの「道具」としてのLSI~「LED点滅用のLSIをつくって  Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Makerの「道具」としてのLSI ~「LED点滅用のLSIをつくって   Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Junichi Akita
 
センサ端末構築を牽引するマイコン・LSI技術とその動向
センサ端末構築を牽引するマイコン・LSI技術とその動向センサ端末構築を牽引するマイコン・LSI技術とその動向
センサ端末構築を牽引するマイコン・LSI技術とその動向
Junichi Akita
 
日本のメイカー活動とNT金沢
日本のメイカー活動とNT金沢日本のメイカー活動とNT金沢
日本のメイカー活動とNT金沢
Junichi Akita
 
ニセモノチップをみてみた&チップを流用する例をみてみた
ニセモノチップをみてみた&チップを流用する例をみてみたニセモノチップをみてみた&チップを流用する例をみてみた
ニセモノチップをみてみた&チップを流用する例をみてみた
Junichi Akita
 
電子回路の民主化とその実践
電子回路の民主化とその実践電子回路の民主化とその実践
電子回路の民主化とその実践
Junichi Akita
 
AI・IoT時代のテクノロジーとの付き合い方
AI・IoT時代のテクノロジーとの付き合い方AI・IoT時代のテクノロジーとの付き合い方
AI・IoT時代のテクノロジーとの付き合い方
Junichi Akita
 
「Lチカから考えるIoT時代のものづくり」
「Lチカから考えるIoT時代のものづくり」「Lチカから考えるIoT時代のものづくり」
「Lチカから考えるIoT時代のものづくり」
Junichi Akita
 
道具としての電子回路・半導体
道具としての電子回路・半導体道具としての電子回路・半導体
道具としての電子回路・半導体
Junichi Akita
 
M5Stackで授業をやってみた
M5Stackで授業をやってみたM5Stackで授業をやってみた
M5Stackで授業をやってみた
Junichi Akita
 
「電子立国日本の自叙伝」に見る半導体産業温故知新
「電子立国日本の自叙伝」に見る半導体産業温故知新「電子立国日本の自叙伝」に見る半導体産業温故知新
「電子立国日本の自叙伝」に見る半導体産業温故知新
Junichi Akita
 
Makerの「道具」としてのカスタムLSI
Makerの「道具」としてのカスタムLSIMakerの「道具」としてのカスタムLSI
Makerの「道具」としてのカスタムLSI
Junichi Akita
 
ICのオーパーツを探ってみた
ICのオーパーツを探ってみたICのオーパーツを探ってみた
ICのオーパーツを探ってみた
Junichi Akita
 
道具としての「ハードウエア」
道具としての「ハードウエア」道具としての「ハードウエア」
道具としての「ハードウエア」
Junichi Akita
 
リモート環境を整備してみた
リモート環境を整備してみたリモート環境を整備してみた
リモート環境を整備してみた
Junichi Akita
 
Makeと半導体の境界
Makeと半導体の境界Makeと半導体の境界
Makeと半導体の境界
Junichi Akita
 
「部品」としてのマイコン・半導体
「部品」としてのマイコン・半導体「部品」としてのマイコン・半導体
「部品」としてのマイコン・半導体
Junichi Akita
 
アナログ回路の民主化とプロの役割
アナログ回路の民主化とプロの役割アナログ回路の民主化とプロの役割
アナログ回路の民主化とプロの役割
Junichi Akita
 
Slide
SlideSlide
「揚げて炙ってわかる コンピュータの仕組み」の舞台裏
「揚げて炙ってわかるコンピュータの仕組み」の舞台裏「揚げて炙ってわかるコンピュータの仕組み」の舞台裏
「揚げて炙ってわかる コンピュータの仕組み」の舞台裏
Junichi Akita
 
CH551/2/8/9を炙ってみた
CH551/2/8/9を炙ってみたCH551/2/8/9を炙ってみた
CH551/2/8/9を炙ってみた
Junichi Akita
 

What's hot (20)

Makerの「道具」としてのLSI ~「LED点滅用のLSIをつくって   Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Makerの「道具」としてのLSI~「LED点滅用のLSIをつくって  Lチカをやってみた」のココロ~(MakerFaireTokyo2014)Makerの「道具」としてのLSI~「LED点滅用のLSIをつくって  Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Makerの「道具」としてのLSI ~「LED点滅用のLSIをつくって   Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
 
センサ端末構築を牽引するマイコン・LSI技術とその動向
センサ端末構築を牽引するマイコン・LSI技術とその動向センサ端末構築を牽引するマイコン・LSI技術とその動向
センサ端末構築を牽引するマイコン・LSI技術とその動向
 
日本のメイカー活動とNT金沢
日本のメイカー活動とNT金沢日本のメイカー活動とNT金沢
日本のメイカー活動とNT金沢
 
ニセモノチップをみてみた&チップを流用する例をみてみた
ニセモノチップをみてみた&チップを流用する例をみてみたニセモノチップをみてみた&チップを流用する例をみてみた
ニセモノチップをみてみた&チップを流用する例をみてみた
 
電子回路の民主化とその実践
電子回路の民主化とその実践電子回路の民主化とその実践
電子回路の民主化とその実践
 
AI・IoT時代のテクノロジーとの付き合い方
AI・IoT時代のテクノロジーとの付き合い方AI・IoT時代のテクノロジーとの付き合い方
AI・IoT時代のテクノロジーとの付き合い方
 
「Lチカから考えるIoT時代のものづくり」
「Lチカから考えるIoT時代のものづくり」「Lチカから考えるIoT時代のものづくり」
「Lチカから考えるIoT時代のものづくり」
 
道具としての電子回路・半導体
道具としての電子回路・半導体道具としての電子回路・半導体
道具としての電子回路・半導体
 
M5Stackで授業をやってみた
M5Stackで授業をやってみたM5Stackで授業をやってみた
M5Stackで授業をやってみた
 
「電子立国日本の自叙伝」に見る半導体産業温故知新
「電子立国日本の自叙伝」に見る半導体産業温故知新「電子立国日本の自叙伝」に見る半導体産業温故知新
「電子立国日本の自叙伝」に見る半導体産業温故知新
 
Makerの「道具」としてのカスタムLSI
Makerの「道具」としてのカスタムLSIMakerの「道具」としてのカスタムLSI
Makerの「道具」としてのカスタムLSI
 
ICのオーパーツを探ってみた
ICのオーパーツを探ってみたICのオーパーツを探ってみた
ICのオーパーツを探ってみた
 
道具としての「ハードウエア」
道具としての「ハードウエア」道具としての「ハードウエア」
道具としての「ハードウエア」
 
リモート環境を整備してみた
リモート環境を整備してみたリモート環境を整備してみた
リモート環境を整備してみた
 
Makeと半導体の境界
Makeと半導体の境界Makeと半導体の境界
Makeと半導体の境界
 
「部品」としてのマイコン・半導体
「部品」としてのマイコン・半導体「部品」としてのマイコン・半導体
「部品」としてのマイコン・半導体
 
アナログ回路の民主化とプロの役割
アナログ回路の民主化とプロの役割アナログ回路の民主化とプロの役割
アナログ回路の民主化とプロの役割
 
Slide
SlideSlide
Slide
 
「揚げて炙ってわかる コンピュータの仕組み」の舞台裏
「揚げて炙ってわかるコンピュータの仕組み」の舞台裏「揚げて炙ってわかるコンピュータの仕組み」の舞台裏
「揚げて炙ってわかる コンピュータの仕組み」の舞台裏
 
CH551/2/8/9を炙ってみた
CH551/2/8/9を炙ってみたCH551/2/8/9を炙ってみた
CH551/2/8/9を炙ってみた
 

Similar to 自作RISC-VチップでLチカをやってみた

DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519Yasuhiro Ishii
 
M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話
Masawo Yamazaki
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
Fixstars Corporation
 
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
Masawo Yamazaki
 
M5Stack互換機を作った話
M5Stack互換機を作った話M5Stack互換機を作った話
M5Stack互換機を作った話
Masawo Yamazaki
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
M5Stackのシールドを作った話
M5Stackのシールドを作った話M5Stackのシールドを作った話
M5Stackのシールドを作った話
Masawo Yamazaki
 
AVRマイコン入門
AVRマイコン入門 AVRマイコン入門
AVRマイコン入門
amusementcreators
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
Shinya Takamaeda-Y
 
Arduino 習作工坊 - Lesson 5 機械之夜
Arduino 習作工坊 - Lesson 5 機械之夜Arduino 習作工坊 - Lesson 5 機械之夜
Arduino 習作工坊 - Lesson 5 機械之夜
CAVEDU Education
 
Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編
Hiromu Yakura
 
衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18Koichiro Mori
 
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」 2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
aitc_jp
 
ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門
Yoichi Yamazaki
 
Takep lpc1114-190614
Takep lpc1114-190614Takep lpc1114-190614
Takep lpc1114-190614
たけおか しょうぞう
 
[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法
LINE Corporation
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
Ryo Sakamoto
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
ryos36
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介
Takehiko YOSHIDA
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
Fujio Kojima
 

Similar to 自作RISC-VチップでLチカをやってみた (20)

DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
 
M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
 
M5Stack互換機を作った話
M5Stack互換機を作った話M5Stack互換機を作った話
M5Stack互換機を作った話
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
M5Stackのシールドを作った話
M5Stackのシールドを作った話M5Stackのシールドを作った話
M5Stackのシールドを作った話
 
AVRマイコン入門
AVRマイコン入門 AVRマイコン入門
AVRマイコン入門
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
 
Arduino 習作工坊 - Lesson 5 機械之夜
Arduino 習作工坊 - Lesson 5 機械之夜Arduino 習作工坊 - Lesson 5 機械之夜
Arduino 習作工坊 - Lesson 5 機械之夜
 
Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編
 
衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18
 
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」 2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
 
ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門
 
Takep lpc1114-190614
Takep lpc1114-190614Takep lpc1114-190614
Takep lpc1114-190614
 
[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
 

More from Junichi Akita

M5Stack用のつよつよ系負荷を駆動するUnit群(スイッチサイエンス年度末大感謝祭 240223)
M5Stack用のつよつよ系負荷を駆動するUnit群(スイッチサイエンス年度末大感謝祭 240223)M5Stack用のつよつよ系負荷を駆動するUnit群(スイッチサイエンス年度末大感謝祭 240223)
M5Stack用のつよつよ系負荷を駆動するUnit群(スイッチサイエンス年度末大感謝祭 240223)
Junichi Akita
 
M5Stackで脱出ゲームのギミックを作ってみた件(M5StackユーザーミーティングLT)
M5Stackで脱出ゲームのギミックを作ってみた件(M5StackユーザーミーティングLT)M5Stackで脱出ゲームのギミックを作ってみた件(M5StackユーザーミーティングLT)
M5Stackで脱出ゲームのギミックを作ってみた件(M5StackユーザーミーティングLT)
Junichi Akita
 
つくってドヤると楽しい
つくってドヤると楽しいつくってドヤると楽しい
つくってドヤると楽しい
Junichi Akita
 
日本の「ものづくり」の可能性:中国深センとの比較を通して
日本の「ものづくり」の可能性:中国深センとの比較を通して日本の「ものづくり」の可能性:中国深センとの比較を通して
日本の「ものづくり」の可能性:中国深センとの比較を通して
Junichi Akita
 
分解のススメHyperの読みどころ
分解のススメHyperの読みどころ分解のススメHyperの読みどころ
分解のススメHyperの読みどころ
Junichi Akita
 
深センで半年間住んでMakeと研究をしてみた
深センで半年間住んでMakeと研究をしてみた深センで半年間住んでMakeと研究をしてみた
深センで半年間住んでMakeと研究をしてみた
Junichi Akita
 
日本での電子回路の導入教育の可能性:中国との比較を通して
日本での電子回路の導入教育の可能性:中国との比較を通して日本での電子回路の導入教育の可能性:中国との比較を通して
日本での電子回路の導入教育の可能性:中国との比較を通して
Junichi Akita
 
中国と深センでの半導体とRISC-V業界事情
中国と深センでの半導体とRISC-V業界事情中国と深センでの半導体とRISC-V業界事情
中国と深センでの半導体とRISC-V業界事情
Junichi Akita
 
タイプライターを改造してキーボードを作ってみた
タイプライターを改造してキーボードを作ってみたタイプライターを改造してキーボードを作ってみた
タイプライターを改造してキーボードを作ってみた
Junichi Akita
 
3Dプリンタを改造してチップマウンタを作ってみたら物理的にForkされた件
3Dプリンタを改造してチップマウンタを作ってみたら物理的にForkされた件3Dプリンタを改造してチップマウンタを作ってみたら物理的にForkされた件
3Dプリンタを改造してチップマウンタを作ってみたら物理的にForkされた件
Junichi Akita
 
中国でスタックチャンに会ってみた
中国でスタックチャンに会ってみた中国でスタックチャンに会ってみた
中国でスタックチャンに会ってみた
Junichi Akita
 
M5Stackでインターンしてみた
M5StackでインターンしてみたM5Stackでインターンしてみた
M5Stackでインターンしてみた
Junichi Akita
 
左手サブキーボードを作り続けてみた
左手サブキーボードを作り続けてみた左手サブキーボードを作り続けてみた
左手サブキーボードを作り続けてみた
Junichi Akita
 
STM32F互換マイコン(自称を含む)を 軽く解析してみた
STM32F互換マイコン(自称を含む)を軽く解析してみたSTM32F互換マイコン(自称を含む)を軽く解析してみた
STM32F互換マイコン(自称を含む)を 軽く解析してみた
Junichi Akita
 
基板設計の基礎知識と実践(別名:基板と仲良くなる方法)
基板設計の基礎知識と実践(別名:基板と仲良くなる方法)基板設計の基礎知識と実践(別名:基板と仲良くなる方法)
基板設計の基礎知識と実践(別名:基板と仲良くなる方法)
Junichi Akita
 
深センで2ヶ月過ごしていろいろ試してみた
深センで2ヶ月過ごしていろいろ試してみた深センで2ヶ月過ごしていろいろ試してみた
深センで2ヶ月過ごしていろいろ試してみた
Junichi Akita
 
うっかりチップマウンタを自作して薄い本を書いてみた
うっかりチップマウンタを自作して薄い本を書いてみたうっかりチップマウンタを自作して薄い本を書いてみた
うっかりチップマウンタを自作して薄い本を書いてみた
Junichi Akita
 
多様な学生の教材としてしてのプロトタイピング用マイコンボードの可能性
多様な学生の教材としてしてのプロトタイピング用マイコンボードの可能性多様な学生の教材としてしてのプロトタイピング用マイコンボードの可能性
多様な学生の教材としてしてのプロトタイピング用マイコンボードの可能性
Junichi Akita
 
シリアルフラッシュを炙って比べてみた
シリアルフラッシュを炙って比べてみたシリアルフラッシュを炙って比べてみた
シリアルフラッシュを炙って比べてみた
Junichi Akita
 
CH340を炙って削ってみた
CH340を炙って削ってみたCH340を炙って削ってみた
CH340を炙って削ってみた
Junichi Akita
 

More from Junichi Akita (20)

M5Stack用のつよつよ系負荷を駆動するUnit群(スイッチサイエンス年度末大感謝祭 240223)
M5Stack用のつよつよ系負荷を駆動するUnit群(スイッチサイエンス年度末大感謝祭 240223)M5Stack用のつよつよ系負荷を駆動するUnit群(スイッチサイエンス年度末大感謝祭 240223)
M5Stack用のつよつよ系負荷を駆動するUnit群(スイッチサイエンス年度末大感謝祭 240223)
 
M5Stackで脱出ゲームのギミックを作ってみた件(M5StackユーザーミーティングLT)
M5Stackで脱出ゲームのギミックを作ってみた件(M5StackユーザーミーティングLT)M5Stackで脱出ゲームのギミックを作ってみた件(M5StackユーザーミーティングLT)
M5Stackで脱出ゲームのギミックを作ってみた件(M5StackユーザーミーティングLT)
 
つくってドヤると楽しい
つくってドヤると楽しいつくってドヤると楽しい
つくってドヤると楽しい
 
日本の「ものづくり」の可能性:中国深センとの比較を通して
日本の「ものづくり」の可能性:中国深センとの比較を通して日本の「ものづくり」の可能性:中国深センとの比較を通して
日本の「ものづくり」の可能性:中国深センとの比較を通して
 
分解のススメHyperの読みどころ
分解のススメHyperの読みどころ分解のススメHyperの読みどころ
分解のススメHyperの読みどころ
 
深センで半年間住んでMakeと研究をしてみた
深センで半年間住んでMakeと研究をしてみた深センで半年間住んでMakeと研究をしてみた
深センで半年間住んでMakeと研究をしてみた
 
日本での電子回路の導入教育の可能性:中国との比較を通して
日本での電子回路の導入教育の可能性:中国との比較を通して日本での電子回路の導入教育の可能性:中国との比較を通して
日本での電子回路の導入教育の可能性:中国との比較を通して
 
中国と深センでの半導体とRISC-V業界事情
中国と深センでの半導体とRISC-V業界事情中国と深センでの半導体とRISC-V業界事情
中国と深センでの半導体とRISC-V業界事情
 
タイプライターを改造してキーボードを作ってみた
タイプライターを改造してキーボードを作ってみたタイプライターを改造してキーボードを作ってみた
タイプライターを改造してキーボードを作ってみた
 
3Dプリンタを改造してチップマウンタを作ってみたら物理的にForkされた件
3Dプリンタを改造してチップマウンタを作ってみたら物理的にForkされた件3Dプリンタを改造してチップマウンタを作ってみたら物理的にForkされた件
3Dプリンタを改造してチップマウンタを作ってみたら物理的にForkされた件
 
中国でスタックチャンに会ってみた
中国でスタックチャンに会ってみた中国でスタックチャンに会ってみた
中国でスタックチャンに会ってみた
 
M5Stackでインターンしてみた
M5StackでインターンしてみたM5Stackでインターンしてみた
M5Stackでインターンしてみた
 
左手サブキーボードを作り続けてみた
左手サブキーボードを作り続けてみた左手サブキーボードを作り続けてみた
左手サブキーボードを作り続けてみた
 
STM32F互換マイコン(自称を含む)を 軽く解析してみた
STM32F互換マイコン(自称を含む)を軽く解析してみたSTM32F互換マイコン(自称を含む)を軽く解析してみた
STM32F互換マイコン(自称を含む)を 軽く解析してみた
 
基板設計の基礎知識と実践(別名:基板と仲良くなる方法)
基板設計の基礎知識と実践(別名:基板と仲良くなる方法)基板設計の基礎知識と実践(別名:基板と仲良くなる方法)
基板設計の基礎知識と実践(別名:基板と仲良くなる方法)
 
深センで2ヶ月過ごしていろいろ試してみた
深センで2ヶ月過ごしていろいろ試してみた深センで2ヶ月過ごしていろいろ試してみた
深センで2ヶ月過ごしていろいろ試してみた
 
うっかりチップマウンタを自作して薄い本を書いてみた
うっかりチップマウンタを自作して薄い本を書いてみたうっかりチップマウンタを自作して薄い本を書いてみた
うっかりチップマウンタを自作して薄い本を書いてみた
 
多様な学生の教材としてしてのプロトタイピング用マイコンボードの可能性
多様な学生の教材としてしてのプロトタイピング用マイコンボードの可能性多様な学生の教材としてしてのプロトタイピング用マイコンボードの可能性
多様な学生の教材としてしてのプロトタイピング用マイコンボードの可能性
 
シリアルフラッシュを炙って比べてみた
シリアルフラッシュを炙って比べてみたシリアルフラッシュを炙って比べてみた
シリアルフラッシュを炙って比べてみた
 
CH340を炙って削ってみた
CH340を炙って削ってみたCH340を炙って削ってみた
CH340を炙って削ってみた
 

自作RISC-VチップでLチカをやってみた

  • 1. Interface Device Laboratory, Kanazawa University http://ifdl.jp/ 自作RISC-Vチップで Lチカをやってみた 秋田純一
  • 2. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ 自己紹介 本業:金沢大の教員 専門:集積回路、イメージセンサ、インタラクション 好きなプロセスはCMOS 0.35um 副業:Maker、ハンダテラピスト 好きな半田はPb:Sn=37:63
  • 3. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ 私とRISC-Vの出会い 中国でアツいらしい? →HiFiveを買う →LonganNano買う →積む →ほぼ積む →Sipeedに行く→K210開発者の妻に会う →SipeedのK210に出会う →Interfaceとかでお勉強
  • 4. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ こんな動画をつくってみました https://www.youtube.com/watch?v=A188CYfuKQ0 http://www.nicovideo.jp/watch/sm23660093
  • 5. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ ニコ動でいただいたコメント  こっから?  ニコ技界のTOKIO  ゲートの無駄遣い  ここから!!?  ひでえ、勿体ない使い方wwwww  マジかよ。レジストレベルの設計とかガチすぎる。  無駄遣い過ぎるだろw  贅沢というかなんというか  え?まじでここからかよ」wwww」」  IC版FusionPCB的なところが現れれば・・・  (FPGAでは)いかんのか?  俺はFPGAで我慢することにする  いや、そこまでは必要ないです  量産品すらFPGA使う時代に専用LSI・・・  アマチュアはFPGAで良いんだよなぁ・・・w チップをつくる= 「すごいことをするため」 という意識
  • 6. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ LSIの歴史:Moore(ムーア)の法則 ref: http://www.intel.com/jp/intel/museum/processor/index.htm G.Mooreが1965年に論文[1]で述べる→C.Meadが「法則」と命名→「予測」→「指針(目標)」へ 素子を微細化する=いいことがたくさんある(性能↑、消費電力↓などなど) [1] G.E.Moore, "Cramming more components onto integrated circuits," IEEE Solid-State Circuit Newsletter, Vol.11, No.5, pp.33-35, 1965.
  • 7. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ 「Lチカ」のパラダイムシフト MCU #Component=1 $1 Oscillator(555) #Component=4 $1.5 while(1){ a = 1; sleep(1); a = 0; sleep(1); } 可能だが非現実的なLチカ 合理的なLチカ マイコン(MCU)を使って 「Lチカ」しない理由がない コスト、機能性、・・・ コンピュータの使い方がもったいなくなくなった チップ設計・製造も、Makeの「道具」になるべき
  • 8. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ MakerでオレLSIをつくってみたい 情報収集・整理 仲間さがし 有志でつくってみる? 製造方法もいくつか フェニテック0.6umなど http://j.mp/make_lsi
  • 9. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ ・・・と思っていたら NDA不要・オープンソースなチップ設計環境 やや議論が発散気味な印象だが、猛スピードで整備中 予定では11月に相乗り試作 「なんてNDAなしでできたんですかね?」 →「だって130nmなんて枯れた技術だし、 隠すより、エコシステム作ったほうがいいじゃん?」
  • 10. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ Non-commercial EDA Tools 結構ある(オープンソースも多い) Layout Tool: Glade, K-Layout Schematic Entry: KiCAD, Xscheme, … Circuit Simulator: LTspice / Spice3 / ngspice, … Synthesize/P&R: Alliance, Qflow, OpenLANE *Open Source Softwares
  • 11. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ これまでに・・・ 「懲りずに再度、LED点滅用のLSIを つくってLチカをやってみた」 Inkscape設計、クリーンルームで製造、 センサ 「また懲りずに再度、LED点滅用の LSIをつくってLチカをやってみた 」 555互換(デジアナ混載) 「またまた懲りずに再度、LED点滅用 のLSIをつくってLチカをやってみた 」 Cortex-M0(HDLから設計)
  • 12. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ 今回のお題:RISC-V Open SourceなRISC命令セット 用途に応じて、実装する命令が階層化 乗算器、浮動小数点、暗号化、・・・ 回路の小規模下、省電力化に 適している ARMと並んで組み込み用途、 特に中国で採用例が急増中 12 https://riscv.org/specifications/
  • 13. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ RISC-VでLチカ:準備 poyo-v (RISC-V実装の一つ) 命令セット:RV32I ※レジスタを必要数に削減 「Lチカ」 https://github.com/ourfool/poyo-v RISC-V ROM GPIO Lチカのプログラムを 入れておく ※実はレジスタ5個、各2bit
  • 14. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ Lチカのプログラム~チップへ 0000 lui x1,0x0 0004 addi x1,x1,0x0ff ; x1=255 0008 lui x3,0x00001 ; GPIO base address 000c li x4,1 / ori x0,x4,1 0010 sw x4,0(x3) ; GPIO=1 0014 mv x2,x0 ; = addi x2,x0,0 0018 addi x2,x2,1 ; = x2++ 001c bgeu x1,x2,00018 0020 sw x0,0(x3) ; GPIO=0 0024 mv x2,x0 ; = addi x2,x0,0 0028 addi x2,x2,1 ; x2++ 002c bgeu x1,x2,00028 0030 j 00010 VerilogHDL CMOS 0.6um 3Al 1.8mm(sq) Core=1490um x 1240um Qflow(論理合成・配置配線) osu050 (NDAフリースタセル:一部修正) module imem( input wire clk, input wire [5:0] addr, output reg [31:0] rd_data ); wire [3:0] iaddr = addr[5:2]; always @(posedge clk) begin case (iaddr) // blink program 16'h0000 : rd_data <= 32'h000000b7; // lui x1,0x0 16'h0001 : rd_data <= 32'h0ff08093; // addi x1,x1,0x0ff / x1=255 16'h0002 : rd_data <= 32'h000011b7; // lui x3,0x00001 / GPIO base address 16'h0003 : rd_data <= 32'h00106213; // li x4,1 / ori x0,x4,1 16'h0004 : rd_data <= 32'h0041a023; // sw x4,0(x3) ; GPIO=1 16'h0005 : rd_data <= 32'h00000113; // mv x2,x0 = addi x2,x0,0 16'h0006 : rd_data <= 32'h00110113; // addi x2,x2,1 = x2++ 16'h0007 : rd_data <= 32'hfe20fee3; // bgeu x1,x2,00018 16'h0008 : rd_data <= 32'h0001a023; // sw x0,0(x3) ; GPIO=0 16'h0009 : rd_data <= 32'h00000113; // mv x2,x0 = addi x2,x0,0 16'h000a : rd_data <= 32'h00110113; // addi x2,x2,1 ; x2++ 16'h000b : rd_data <= 32'hfe20fee3; // bgeu x1,x2,00028 16'h000c : rd_data <= 32'hfe1ff06f; // j 00010 endcase end endmodule poyo-v + GPIO
  • 15. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ プログラム部分(ハンドアセンブル) 0000 lui x1,0x0 0004 addi x1,x1,0x0ff ; x1=255 0008 lui x3,0x00001 ; GPIO base address 000c li x4,1 / ori x0,x4,1 0010 sw x4,0(x3) ; GPIO=1 0014 mv x2,x0 ; = addi x2,x0,0 0018 addi x2,x2,1 ; = x2++ 001c bgeu x1,x2,00018 0020 sw x0,0(x3) ; GPIO=0 0024 mv x2,x0 ; = addi x2,x0,0 0028 addi x2,x2,1 ; x2++ 002c bgeu x1,x2,00028 0030 j 00010 module imem( input wire clk, input wire [5:0] addr, output reg [31:0] rd_data ); wire [3:0] iaddr = addr[5:2]; always @(posedge clk) begin case (iaddr) // blink program 16'h0000 : rd_data <= 32'h000000b7; // lui x1,0x0 16'h0001 : rd_data <= 32'h0ff08093; // addi x1,x1,0x0ff / x1=255 16'h0002 : rd_data <= 32'h000011b7; // lui x3,0x00001 / GPIO base address 16'h0003 : rd_data <= 32'h00106213; // li x4,1 / ori x0,x4,1 16'h0004 : rd_data <= 32'h0041a023; // sw x4,0(x3) ; GPIO=1 16'h0005 : rd_data <= 32'h00000113; // mv x2,x0 = addi x2,x0,0 16'h0006 : rd_data <= 32'h00110113; // addi x2,x2,1 = x2++ 16'h0007 : rd_data <= 32'hfe20fee3; // bgeu x1,x2,00018 16'h0008 : rd_data <= 32'h0001a023; // sw x0,0(x3) ; GPIO=0 16'h0009 : rd_data <= 32'h00000113; // mv x2,x0 = addi x2,x0,0 16'h000a : rd_data <= 32'h00110113; // addi x2,x2,1 ; x2++ 16'h000b : rd_data <= 32'hfe20fee3; // bgeu x1,x2,00028 16'h000c : rd_data <= 32'hfe1ff06f; // j 00010 endcase end endmodule
  • 16. 2020/12/17 Interface Device Laboratory, Kanazawa University http://ifdl.jp/ Lチカしてみた クロック源の”555”(約10Hz) MakerFaireTokyo2020の1週間前に到着 →ボンディングして、ブレッドボードで ※ちょっと動作があやしい・・・?(周期がバラつく) →D-FFのSetup/Holdタイムが足りない・・・?