a hardware development on fpgas

135
FPGAで始める ハードウェア 設計 @shtaxxx 09.08.29 高専カンファレンス in 東北 @福島高専

Upload: shinya-takamaeda-yamazaki

Post on 29-Nov-2014

1.303 views

Category:

Technology


0 download

DESCRIPTION

@Kosenconf-tohoku in Fukushima-NCT, 2009-08-29

TRANSCRIPT

Page 1: A Hardware Development on FPGAs

FPGAで始める ハードウェア

設計 @shtaxxx

09.08.29 高専カンファレンス in 東北 @福島高専

Page 2: A Hardware Development on FPGAs

はじめに 自己紹介

09.08.29 高専カンファレンス in 東北 @福島高専

Page 3: A Hardware Development on FPGAs

Twitter: shtaxxx

09.08.29 高専カンファレンス in 東北 @福島高専

Page 4: A Hardware Development on FPGAs

福島高専 電気工学科→ 東工大 工学部情報工学科→

東工大 大学院情報理工学研究科

計算工学専攻 修士1年

09.08.29 高専カンファレンス in 東北 @福島高専

Page 5: A Hardware Development on FPGAs

専門 と 興味

09.08.29 高専カンファレンス in 東北 @福島高専

Page 6: A Hardware Development on FPGAs

計算機 アーキテクチャ

09.08.29 高専カンファレンス in 東北 @福島高専

Page 7: A Hardware Development on FPGAs

計算機の 仕組みを 研究

09.08.29 高専カンファレンス in 東北 @福島高専

Page 8: A Hardware Development on FPGAs

マルチコア メニーコア が熱い!(?)

09.08.29 高専カンファレンス in 東北 @福島高専

Page 9: A Hardware Development on FPGAs

Intel Core i7

09.08.29 高専カンファレンス in 東北 @福島高専

Page 10: A Hardware Development on FPGAs

IBM SONY 東芝

Cell/B.E 09.08.29 高専カンファレンス in 東北 @福島高専

Page 11: A Hardware Development on FPGAs

SUN ROCK

09.08.29 高専カンファレンス in 東北 @福島高専

Page 12: A Hardware Development on FPGAs

ネットワークオンチップ (NoC)

09.08.29 高専カンファレンス in 東北 @福島高専

Page 13: A Hardware Development on FPGAs

投機的並列 スレッディング

09.08.29 高専カンファレンス in 東北 @福島高専

Page 14: A Hardware Development on FPGAs

FPGAで作る 大規模 検証環境

09.08.29 高専カンファレンス in 東北 @福島高専

Page 15: A Hardware Development on FPGAs

生まれて はじめての 高橋メソッド

09.08.29 高専カンファレンス in 東北 @福島高専

Page 16: A Hardware Development on FPGAs

SHTA.X>みえてる?

09.08.29 高専カンファレンス in 東北 @福島高専

Page 17: A Hardware Development on FPGAs

では 本題へ

09.08.29 高専カンファレンス in 東北 @福島高専

Page 18: A Hardware Development on FPGAs

FPGAで始める ハードウェア

設計 09.08.29 高専カンファレンス in 東北 @福島高専

Page 19: A Hardware Development on FPGAs

今日の内容

09.08.29 高専カンファレンス in 東北 @福島高専

Page 20: A Hardware Development on FPGAs

The first step

09.08.29 高専カンファレンス in 東北 @福島高専

Page 21: A Hardware Development on FPGAs

そもそも ハードウェア ってなに?

09.08.29 高専カンファレンス in 東北 @福島高専

Page 22: A Hardware Development on FPGAs

仕事の手順 (=命令)

を与えたら 動くもの

09.08.29 高専カンファレンス in 東北 @福島高専

Page 23: A Hardware Development on FPGAs

ファミコンが ハードウェア

09.08.29 高専カンファレンス in 東北 @福島高専

Page 24: A Hardware Development on FPGAs

スーパーマリオがソフトウェア

09.08.29 高専カンファレンス in 東北 @福島高専

Page 25: A Hardware Development on FPGAs

身近な ハードウェアとソフトウェアは

09.08.29 高専カンファレンス in 東北 @福島高専

Page 26: A Hardware Development on FPGAs

パソ コン

09.08.29 高専カンファレンス in 東北 @福島高専

Page 27: A Hardware Development on FPGAs

ハードウェア 代表: CPU

09.08.29 高専カンファレンス in 東北 @福島高専

Page 28: A Hardware Development on FPGAs

CPUの仕事: 命令を順番に こなす!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 29: A Hardware Development on FPGAs

命令を メモリから 持ってきて (Fetch)

09.08.29 高専カンファレンス in 東北 @福島高専

1

Page 30: A Hardware Development on FPGAs

命令を 解釈して (Decode)

09.08.29 高専カンファレンス in 東北 @福島高専

2

Page 31: A Hardware Development on FPGAs

実行! (Execution)

09.08.29 高専カンファレンス in 東北 @福島高専

3

Page 32: A Hardware Development on FPGAs

結果を 出力

(Write Back) 09.08.29 高専カンファレンス in 東北 @福島高専

4

Page 33: A Hardware Development on FPGAs

1~4を 繰り返す!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 34: A Hardware Development on FPGAs

命令の集まり= ソフトウェア

09.08.29 高専カンファレンス in 東北 @福島高専

Page 35: A Hardware Development on FPGAs

09.08.29 高専カンファレンス in 東北 @福島高専

アプリケーション ライブラリ

OS

Page 36: A Hardware Development on FPGAs

全部 命令の集合

09.08.29 高専カンファレンス in 東北 @福島高専

Page 37: A Hardware Development on FPGAs

みんな オリジナルの ソフトウェア 作るよね?

09.08.29 高専カンファレンス in 東北 @福島高専

Page 38: A Hardware Development on FPGAs

だってPCが あれば

作れるもん! 無料だもん

09.08.29 高専カンファレンス in 東北 @福島高専

Page 39: A Hardware Development on FPGAs

shtas-Mac:~ shta$ cat hello.c #include <stdio.h>

int main(){ printf("Hello, world!\n"); return 0; } shtas-Mac:~ shta$ gcc hello.c shtas-Mac:~ shta$ ./a.out Hello, world! 09.08.29 高専カンファレンス in 東北 @福島高専

Page 40: A Hardware Development on FPGAs

みんな オリジナルの ハードウェア 作るよね!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 41: A Hardware Development on FPGAs

例えば オリジナル

CPU 09.08.29 高専カンファレンス in 東北 @福島高専

Page 42: A Hardware Development on FPGAs

Javaの バイトコードを そのまま実行

09.08.29 高専カンファレンス in 東北 @福島高専

Page 43: A Hardware Development on FPGAs

特殊命令追加で 高速化

09.08.29 高専カンファレンス in 東北 @福島高専

Page 44: A Hardware Development on FPGAs

パターン マッチング 専用コア

09.08.29 高専カンファレンス in 東北 @福島高専

Page 45: A Hardware Development on FPGAs

ハードウェア Twitter

クライアント 09.08.29 高専カンファレンス in 東北 @福島高専

Page 46: A Hardware Development on FPGAs

作るよね!!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 47: A Hardware Development on FPGAs

作りたい! 09.08.29 高専カンファレンス in 東北 @福島高専

Page 48: A Hardware Development on FPGAs

でも チップ製作は

高い orz orz

09.08.29 高専カンファレンス in 東北 @福島高専

Page 49: A Hardware Development on FPGAs

もっと 手軽に

できないかな? 09.08.29 高専カンファレンス in 東北 @福島高専

Page 50: A Hardware Development on FPGAs

そこで FPGA

09.08.29 高専カンファレンス in 東北 @福島高専

Page 51: A Hardware Development on FPGAs

FPGAとは 書き換え可能な ディジタル回路

09.08.29 高専カンファレンス in 東北 @福島高専

Page 52: A Hardware Development on FPGAs

例えば

09.08.29 高専カンファレンス in 東北 @福島高専

CPU MPEG4 Encoder

かきかえ!

Page 53: A Hardware Development on FPGAs

どんな形?

09.08.29 高専カンファレンス in 東北 @福島高専

Page 54: A Hardware Development on FPGAs

Xilinx Spartan

09.08.29 高専カンファレンス in 東北 @福島高専

Page 55: A Hardware Development on FPGAs

Altera Cyclone

09.08.29 高専カンファレンス in 東北 @福島高専

Page 56: A Hardware Development on FPGAs

LatticeXP2

09.08.29 高専カンファレンス in 東北 @福島高専

Page 57: A Hardware Development on FPGAs

要は ICチップです

09.08.29 高専カンファレンス in 東北 @福島高専

Page 58: A Hardware Development on FPGAs

なにがあれば 開発できるのか

09.08.29 高専カンファレンス in 東北 @福島高専

Page 59: A Hardware Development on FPGAs

統合開発環境

09.08.29 高専カンファレンス in 東北 @福島高専

1

Page 60: A Hardware Development on FPGAs

例) Xilinx ISE

09.08.29 高専カンファレンス in 東北 @福島高専

Page 61: A Hardware Development on FPGAs

Web Packなら 無料でDL できます

09.08.29 高専カンファレンス in 東北 @福島高専

Page 62: A Hardware Development on FPGAs

FPGA基板

09.08.29 高専カンファレンス in 東北 @福島高専

2

Page 63: A Hardware Development on FPGAs

例) アットマークテクノ社 SUZAKU-S

09.08.29 高専カンファレンス in 東北 @福島高専

Page 64: A Hardware Development on FPGAs

例)MieruPC社 FPGACard

09.08.29 高専カンファレンス in 東北 @福島高専

Page 65: A Hardware Development on FPGAs

[AD] 詳しくはこちらまで! MieruPC株式会社 http://mierupc.com/

09.08.29 高専カンファレンス in 東北 @福島高専

Page 66: A Hardware Development on FPGAs

もちろん 無料では ありません

09.08.29 高専カンファレンス in 東北 @福島高専

Page 67: A Hardware Development on FPGAs

書き込み ケーブル

09.08.29 高専カンファレンス in 東北 @福島高専

3

Page 68: A Hardware Development on FPGAs

例)Digilent社 JTAG USB Cable

09.08.29 高専カンファレンス in 東北 @福島高専

Page 69: A Hardware Development on FPGAs

もちろん 無料では ありません

09.08.29 高専カンファレンス in 東北 @福島高専

Page 70: A Hardware Development on FPGAs

これだけあれば 何度でも オリジナル

ハードウェアが 作れる!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 71: A Hardware Development on FPGAs

えー 無料で

できないのー? ねぇ?

09.08.29 高専カンファレンス in 東北 @福島高専

Page 72: A Hardware Development on FPGAs

波形 シミュレーション

なら無料で できます!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 73: A Hardware Development on FPGAs

必要なもの

09.08.29 高専カンファレンス in 東北 @福島高専

Page 74: A Hardware Development on FPGAs

シミュレータ

09.08.29 高専カンファレンス in 東北 @福島高専

1

Page 75: A Hardware Development on FPGAs

例) ISE ISim

09.08.29 高専カンファレンス in 東北 @福島高専

Page 76: A Hardware Development on FPGAs

ISE Web Pack と一緒に

インストール できます

09.08.29 高専カンファレンス in 東北 @福島高専

Page 77: A Hardware Development on FPGAs

例) iverilog

09.08.29 高専カンファレンス in 東北 @福島高専

Page 78: A Hardware Development on FPGAs

Macportsなら

sudo port install iverilog

でインストール できます

09.08.29 高専カンファレンス in 東北 @福島高専

Page 79: A Hardware Development on FPGAs

どうやって 開発するの?

09.08.29 高専カンファレンス in 東北 @福島高専

Page 80: A Hardware Development on FPGAs

基本は ソフトウェア と同じ流れ

09.08.29 高専カンファレンス in 東北 @福島高専

Page 81: A Hardware Development on FPGAs

ソフトウェア の場合

09.08.29 高専カンファレンス in 東北 @福島高専

Page 82: A Hardware Development on FPGAs

言語を選ぶ C, Java, Ruby

とか 09.08.29 高専カンファレンス in 東北 @福島高専

Page 83: A Hardware Development on FPGAs

エディタで ごりごり 書く

09.08.29 高専カンファレンス in 東北 @福島高専

Page 84: A Hardware Development on FPGAs

(必要なら) コンパイルして 機械語に変換

09.08.29 高専カンファレンス in 東北 @福島高専

Page 85: A Hardware Development on FPGAs

実行!! 09.08.29 高専カンファレンス in 東北 @福島高専

Page 86: A Hardware Development on FPGAs

09.08.29 高専カンファレンス in 東北 @福島高専

Page 87: A Hardware Development on FPGAs

FPGAの場合

09.08.29 高専カンファレンス in 東北 @福島高専

Page 88: A Hardware Development on FPGAs

言語を選ぶ VHDL

Verilog HDL とか

09.08.29 高専カンファレンス in 東北 @福島高専

Page 89: A Hardware Development on FPGAs

エディタで ごりごり 書く

09.08.29 高専カンファレンス in 東北 @福島高専

Page 90: A Hardware Development on FPGAs

コンパイルして シミュレーション

もしくは FPGAに書き込む

09.08.29 高専カンファレンス in 東北 @福島高専

Page 91: A Hardware Development on FPGAs

どうやって 回路を書くの?

09.08.29 高専カンファレンス in 東北 @福島高専

Page 92: A Hardware Development on FPGAs

ソフトウェアの場合

09.08.29 高専カンファレンス in 東北 @福島高専

Page 93: A Hardware Development on FPGAs

プログラミング言語で記述

例)C, Javaとか 09.08.29 高専カンファレンス in 東北 @福島高専

Page 94: A Hardware Development on FPGAs

FPGAの場合

09.08.29 高専カンファレンス in 東北 @福島高専

Page 95: A Hardware Development on FPGAs

ハードウェア 記述言語 で記述

09.08.29 高専カンファレンス in 東北 @福島高専

Page 96: A Hardware Development on FPGAs

VHDL Verilog HDL

など 09.08.29 高専カンファレンス in 東北 @福島高専

Page 97: A Hardware Development on FPGAs

まず 書いてみよう!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 98: A Hardware Development on FPGAs

Step 1 Hello, World! 的なもの

09.08.29 高専カンファレンス in 東北 @福島高専

Page 99: A Hardware Development on FPGAs

= LEDチカチカ

09.08.29 高専カンファレンス in 東北 @福島高専

Page 100: A Hardware Development on FPGAs

module HELLO(CLK, RST_X, LED); input CLK; //入力ポート クロック信号 input RST_X; //入力ポート リセット信号 output LED; //出力ポート LEDに接続

reg [21:0] counter; //22bitの内部レジスタ

assign LED = counter[21]; //継続的代入文 //counterの21bit目をLEDに接続するイメージ

//always文 CLKやRST_Xの変化に合わせてどうなるか always @(posedge CLK or negedge RST_X) begin if(!RST_X) begin //リセット時 counter <= 0; end else begin counter <= counter +1; //1増える end end endmodule

09.08.29 高専カンファレンス in 東北 @福島高専

Page 101: A Hardware Development on FPGAs

ちかちか!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 102: A Hardware Development on FPGAs

波形

09.08.29 高専カンファレンス in 東北 @福島高専

Page 103: A Hardware Development on FPGAs

簡単でしょ?

09.08.29 高専カンファレンス in 東北 @福島高専

Page 104: A Hardware Development on FPGAs

Verilog HDLの 簡単な文法

09.08.29 高専カンファレンス in 東北 @福島高専

Page 105: A Hardware Development on FPGAs

reg [7:0] hoge 7番目がMSB 0番目がLSBの

8ビットのレジスタ (値の入れ物)

09.08.29 高専カンファレンス in 東北 @福島高専

7 6 5 4 3 2 1 0

Page 106: A Hardware Development on FPGAs

wire [7:0] fuga 7番目がMSB 0番目がLSBの 8ビット分の配線

09.08.29 高専カンファレンス in 東北 @福島高専

7 6 5 4 3 2 1 0

Page 107: A Hardware Development on FPGAs

代入: =

または <=

09.08.29 高専カンファレンス in 東北 @福島高専

Page 108: A Hardware Development on FPGAs

= ブロッキング代入

即時に値が反映される 09.08.29 高専カンファレンス in 東北 @福島高専

Page 109: A Hardware Development on FPGAs

<=

ノンブロッキング代入 ブロックの最後に まとめて反映される

09.08.29 高専カンファレンス in 東北 @福島高専

Page 110: A Hardware Development on FPGAs

Q) aが3,bが4のとき a = b; b = a;

の結果は? 09.08.29 高専カンファレンス in 東北 @福島高専

Page 111: A Hardware Development on FPGAs

A: aもbも4

09.08.29 高専カンファレンス in 東北 @福島高専

Page 112: A Hardware Development on FPGAs

Q) aが3,bが4のとき a <= b; b <= a;

の結果は? 09.08.29 高専カンファレンス in 東北 @福島高専

Page 113: A Hardware Development on FPGAs

A: aは4 bは3

09.08.29 高専カンファレンス in 東北 @福島高専

Page 114: A Hardware Development on FPGAs

他にも ありますが 時間が・・・

09.08.29 高専カンファレンス in 東北 @福島高専

Page 115: A Hardware Development on FPGAs

Step X オリジナル 計算機

09.08.29 高専カンファレンス in 東北 @福島高専

Page 116: A Hardware Development on FPGAs

例) MieruPC

09.08.29 高専カンファレンス in 東北 @福島高専

Page 117: A Hardware Development on FPGAs

FPGA: Xilinx

Spartan 3E 09.08.29 高専カンファレンス in 東北 @福島高専

Page 118: A Hardware Development on FPGAs

CPU: MIPS準拠 オリジナル プロセッサ

09.08.29 高専カンファレンス in 東北 @福島高専

Page 119: A Hardware Development on FPGAs

メインメモリ:52KB

キャッシュ: なし

09.08.29 高専カンファレンス in 東北 @福島高専

Page 120: A Hardware Development on FPGAs

補助記憶: MMC(SD) カード

09.08.29 高専カンファレンス in 東北 @福島高専

Page 121: A Hardware Development on FPGAs

Verilog HDLで フルスクラッチ

09.08.29 高専カンファレンス in 東北 @福島高専

Page 122: A Hardware Development on FPGAs

たった1000行

09.08.29 高専カンファレンス in 東北 @福島高専

Page 123: A Hardware Development on FPGAs

意外と簡単そう

09.08.29 高専カンファレンス in 東北 @福島高専

Page 124: A Hardware Development on FPGAs

MieruPCプロジェクト: 中身が見える

計算機システムを構築する 研究・教育プロジェクト

http://www.arch.cs. titech.ac.jp/mieru/

09.08.29 高専カンファレンス in 東北 @福島高専

Page 125: A Hardware Development on FPGAs

一緒に計算機 開発しようよ!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 126: A Hardware Development on FPGAs

まとめ 09.08.29 高専カンファレンス in 東北 @福島高専

Page 127: A Hardware Development on FPGAs

ソフトウェア 同様

ハードウェアも 手軽に開発可能

09.08.29 高専カンファレンス in 東北 @福島高専

Page 128: A Hardware Development on FPGAs

FPGAで オリジナルの ハードウェアが 実現できる!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 129: A Hardware Development on FPGAs

シミュレーション なら無料!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 130: A Hardware Development on FPGAs

オリジナルの ソフトウェア だけじゃなく

09.08.29 高専カンファレンス in 東北 @福島高専

Page 131: A Hardware Development on FPGAs

オリジナルの ハードウェアも

作ろう! 09.08.29 高専カンファレンス in 東北 @福島高専

Page 132: A Hardware Development on FPGAs

そして オリジナルの

計算機 を作ろう!

09.08.29 高専カンファレンス in 東北 @福島高専

Page 133: A Hardware Development on FPGAs

ソフトウェア +

ハードウェア = 最強

09.08.29 高専カンファレンス in 東北 @福島高専

Page 134: A Hardware Development on FPGAs

ご清聴 ありがとう ございました @shtaxx

09.08.29 高専カンファレンス in 東北 @福島高専

Page 135: A Hardware Development on FPGAs

画像の引用元 http://pc.watch.impress.co.jp/docs/2008/0811/intel.htm

http://www.superblog.jp/mt/archives/2007/08/ http://arstechnica.com/hardware/news/2008/02/sun-can-you-smell-

what-the-rock-is-cookin.ars http://www.fs-jpc.net/parts/cpu.html

http://av.watch.impress.co.jp/docs/20041221/nexx.htm http://commons.wikimedia.org/wiki/File:Fpga_xilinx_spartan.jpg

http://www.easyfpga.com/Products/EZ1CUSB/Images/ez1cusb_top_small.jpg

http://www.kumikomi.net/article/news/2007/05/30_01_p1.jpg http://www.atmark-techno.com/en/products/suzaku/suzaku-s

http://mierupc.com/product/fpgac.html http://www.digilentinc.com/Products/Detail.cfm?Prod=JTAG-USB

09.08.29 高専カンファレンス in 東北 @福島高専