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

PPTX
自作LSIコミュニティの可能性
PPTX
Makeの最後の砦(ラスボス):半導体への挑戦
PPTX
Cortex-M0プロセッサから自作して Lチカをやってみた
PPTX
集積回路が真の道具になるために
PPTX
道具としての半導体設計:Lチカを題材として
PPTX
カスタムLSIが道具になるために
PPTX
「LED点滅用のLSIをつくって Lチカをやってみた」のココロ
PPTX
チップレベルでカスタマイズできることで見える世界の体験
自作LSIコミュニティの可能性
Makeの最後の砦(ラスボス):半導体への挑戦
Cortex-M0プロセッサから自作して Lチカをやってみた
集積回路が真の道具になるために
道具としての半導体設計:Lチカを題材として
カスタムLSIが道具になるために
「LED点滅用のLSIをつくって Lチカをやってみた」のココロ
チップレベルでカスタマイズできることで見える世界の体験

What's hot (20)

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

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

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

More from Junichi Akita (20)

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

自作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タイムが足りない・・・?