論理設計実習 第1回 実習の目的

「FPGA入門」
井口幸洋
[email protected]
http://www.iguchi-meiji.com/
2015/9/30
論理設計実習2006
1
本日の内容
• FPGAとは何か?
• Verilog-HDL最初の一歩
2015/9/30
論理設計実習2006
2
ソフトウェアのバグが原因で120億円
ascii24.com より抜粋
ソフトウェアの場合:
最近は,回収しないでネット
ワーク経由でバグの修正を
する手段がある.
しかし……..
ハードウェアでは,これもで
きない.
ハードウェアも書き換えが
できればなあ
2015/9/30
論理設計実習2006
3
米Intel、ICH6の不具合を確認
一部を回収・交換
MYCOMジャーナル 2004/6/26 Yoichi Yamashita より抜粋
• Intelが6月21日にリリースした最新チップセット「Intel
925X」「Intel 915G/P」に搭載されている「ICH6」に不
具合が確認された。起動時にBIOSの設定がデフォル
トにリセットされ、「起動できない」「システムがフリーズ
する/特異な振る舞いを起こす」などの症状が確認され
ている。
• 現在、Intelは被害の範囲を確認する作業を進めながら、
不具合のある製品の回収・交換に努めている。現時点
では、不具合は極めて早い段階にOEMやマザーボー
ドベンダーに出荷したロットのみで確認されている。
2015/9/30
論理設計実習2006
4
再構成可能デバイス
• 書き換えができるハードウェア→やり直しができ
るデバイス
• 1種類のデバイスで中身を書き換えるだけでさ
まざまな機能を実現
• 規則正しい構造
• 集積度を上げることが容易
• 最新のデバイステクノロジーを利用可能
• デバイス単価は高い→安いチップも出現
2015/9/30
論理設計実習2006
5
再構成可能デバイスの種類
• メモリ
• PLD (Programmable Logic Device)
– PLA (Programmable Logic Array)
– CPLD (Complex Programmable Logic Device)
– FPGA (Field Programmable Gate Array)
• 新しい再構成可能デバイス
– 動的再構成可能プロセッサ
• DRP (NEC), DAP/DNA (IPFlex), PipeRench (CMU), etc.
– LUTカスケード(九工大,明大)
こ本
の日
Fは
P最
G
A近
の盛
原ん
理に
を使
説わ
明れ
すて
るい
る
• FPGAとMPUの中間の性質を狙ったもの
2015/9/30
論理設計実習2006
6
FPGAの構造
• 書き換え可能な論理ブロック→論理関数を実現
• 論理ブロック間を指示通り接続する配線
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
配線
論理
ブロック
2015/9/30
論理
ブロック
論理
ブロック
論理設計実習2006
7
FPGA : Field Programmable Gate Array
・ユーザの手許でカスタム化(プログラム)可能なLSI
・カスタム化のためのLSIの試作期間や開発費が不要
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
小規模論理ブロックを規則的に配置し、
その周囲にはプログラム可能な配線を
配置したもの
・論理ブロックの形式には、
ルックアップテーブル、マルチプレクサ、
ゲートアレイなどのタイプがある。
・配線の交差点には、
SRAM、EEPROM、アンチヒューズ等
を利用したプログラム用デバイス(スイッチ)
が組込まれている。
SRAM:Static Random Access Memory
EEPROM:Electrical Erasable and Programmable
Read Only Memory
2015/9/30
スイッチ
論理設計実習2006
8
XILINX社Spartan-3 FPGAの詳細な構造
DCM (Digital Clock Manager)
IOB (Input Output Block)
•規則正しくアレイ状に並
んでいる.
•大規模で高速なチップ
が入手可能.
IOBs
CLBs
…
CLBs
CLBs
CLBs
IOBs
IOBs
CLB (Configurable Logic Block)
Block RAM
IOBs
2015/9/30
論理設計実習2006
Multiplier
9
CLB (Configurable Logic Block)
Left-Hand SLICEM
(Logic or Distributed RAM
or Shift Register)
Right-Hand SLICEL
(Logic Only)
COUT
SLICE
X1Y1
SLICE
X1Y0
Switch
Matrix
Interconnect
to Neighbors
COUT
CIN
SLICE
X0Y1
SHIFTOUT
SHIFTIN
SLICE
X0Y0
CIN
2015/9/30
1個のCLBには4個のSLICEが入っている
論理設計実習2006
10
SLICE (スライス)
論理関数を実現する
•2個のLUT (Look-Up Table),
•記憶用の2個のFF(フリップフ
ロップ),
•桁上げ用の論理回路
•四則演算用ゲート
•多入力マルチプレクサ
などで構成される.
左図は左側のSLICEM
2015/9/30
論理設計実習2006
11
SLICEで論理回路を実現する方法
• 組合せ論理機能を実現するLUTと、シーケンシャル
な論理機能を実現するプログラマブルなレジスタ 等
から成る(実際はもっと様々な機能が入っている)
Look-Up Table
D
Q
CE
CK
2015/9/30
論理設計実習2006
12
LUT (Look-Up Table)による
論理関数の実現
出力
Look Up Table
入力
3入力LUT(3-LUT)の例
ABC
Z
0
0
0
0
1
1
1
1
0
0
0
1
0
0
0
1
0
0
1
1
0
0
1
1
2015/9/30
0
1
0
1
0
1
0
1
真理値表
をそのまま
実現可能
0
0
0
1
0
0
0
1
論理設計実習2006
C1
SRAMで実現しても
良いが,小規模な場合
は以下のようにレジスタ
とMUX(マルチプレクサ)
で構成することが多い.
B 1
A 0
13
組合せ回路の実現
任意の4入力の論理関数までを実現可能
D-FFは未使用
Look-Up Table
D
Q
CE
CK
2015/9/30
論理設計実習2006
14
順序回路の実現
Look-Up Table
D
Q
CE
CK
2015/9/30
論理設計実習2006
15
D-FFだけ使用するとき
Look-Up Table
D
Q
CE
CK
2015/9/30
論理設計実習2006
16
論理ブロック間の配線
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
配線
論理
ブロック
2015/9/30
論理
ブロック
論理設計実習2006
論理
ブロック
17
可変配線スイッチマトリックス
• SRAM型FPGAの配線の構成を任意に変更可
SB:Switch Block(Switch Box)
スイッチマトリックス
2015/9/30
論理設計実習2006
任意の接続が可能
各交点の構造
18
配線の例
1bit レジスタ
1
On
Off
0
Off
0
0
Off
Off
0
On
1
トランジスタで構成されたスイッチのゲートに
1ビットレジスタを接続し,1/0を書込む.
2015/9/30
論理設計実習2006
19
5入力以上の論理関数の実現法
• 多段論理回路の合成法を利用可能
– 笹尾勤著,「論理設計(第3版)」近代科学社
第10章などの方法が利用可能
• 関数分解の利用
– 本日はこの方法のみを説明する
2015/9/30
論理設計実習2006
20
問題:3入力LUTを2個使って
5入力ANDを実現しなさい
2015/9/30
A2
A1
A0
D
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
左表のような真理値表を記憶させたLUTを
2個接続すれば実現可能
論理設計実習2006
21
関数分解を用いた
多段論理回路の実現
x1
x4 x5
00
01
10
11
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 x2
0 1 0 1 0 1 0 1 x3
0
1
0
0
0
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
0
0
1
0
1
0
0
0
1
1
0
表10.1 分解表 p.210
列パターンに注目!
f ( x1, x2 , x3 , x4 , x5 )
2015/9/30
論理設計実習2006
22
関数分解を用いた
多段論理回路の実現
x1
x4 x5
00
01
10
11
2015/9/30
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 x2
0 1 0 1 0 1 0 1 x3
0
1
0
0
0
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
0
0
1
0
1
0
0
0
1
1
0
青
緑
青
青
青
緑
緑
青
論理設計実習2006
青色と緑色の2パターンが
あるのがわかる.
23
2段の直列回路で実現可能か?
• 前段はx1, x2, x3 を入力して,次段に青か緑かを
教える(青を0,緑を1とする).
• 後段は,前段からの青/緑の種類とx4, x5 から必
要な計算を行えばよい.
2015/9/30
論理設計実習2006
24
関数分解による実現
x1
x4 x5
00
01
10
11
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 x2
0 1 0 1 0 1 0 1 x3
x1
3-LUTで実現
h
x2
x3
h( x1 , x2 , x3 )
0
1
0
0
0
1
1
0
x1
x2
x3
h
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
0
1
0
1
1
1
0
0
1
0
1
0
0
0
1
1
0
青
緑
青
青
青
緑
緑
青
2015/9/30
論理設計実習2006
25
関数分解による実現
3-LUT
2個で実現
x1
3-LUTで実現
h( x1 , x2 , x3 )
h
x2
x3
2015/9/30
x1
x2
x3
h
h
0
0
0
0
x4
0
0
1
1
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
0
g
x5
h
x4
x5
g
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
1
1
1
0
0
1
1
1
1
f ( x1 , x2 , x3 , x4 , x5 )
 g (h( x1 , x2 , x3 ), x4 , x5 )
論理設計実習2006
26
FPGA上での論理関数の実現法
• LUTで論理関数を実現
• 複数のLUTでより複雑な論理関数を実現
• LUT間の接続はプログラム可能な配線要素を
使用
– スイッチの構成情報は1ビットメモリ(レジスタ)で実
現する
2015/9/30
論理設計実習2006
27
FPGAの構成情報
(コンフィギュレーション)の記憶方式
• SRAM等の揮発性メモリに書き込む
– 一番よく用いられている方法(大規模FPGAは全てこれ)
– 電源投入時に外部よりコンフィギュレーションデータの転送が必要
• Flush Memory等の不揮発性メモリに記憶
– 一部のFPGAに用いられている.小中規模.
– 便利だが高価.
• 電圧をかけ、アンチヒューズを短絡させる
– 小規模FPGAの一部に利用.
– 出荷前テストが完全にはできない.
– 特殊用途(宇宙空間用)など
2015/9/30
論理設計実習2006
28
FPGAの現状(1)
• FPGAはLSIの大規模化に伴い、その用途を
広げてきた
• XILINX社,Altera社が代表的なベンダー
• 組込みメモリ,高速乗算器,DSPブロック,
MPUを内部に包含する大規模FPGAの出現
• システムすべてがFPGA上に載る時代
2015/9/30
論理設計実習2006
29
まとめ
• FPGA (Field Programmable Gate Array)
– 構造
– プログラム可能なハードウェアの原理
2015/9/30
論理設計実習2006
30
FPGAの現状(2)
• 階層的構造を持つ大規模FPGA
– XILINX社Virtex IV, Altera社Stratix II
• 商用の家電にも用いれる安価なFPGA
– XILINX Spartan-3, Altera Cyclone II
• 低電圧化、マルチ電圧化、低消費電力化
2015/9/30
論理設計実習2006
31
役に立つリンク
• 井口ホームページ
– http://www.iguchi-meiji.com/
– Logic Design Lab. 論理設計実習
• パスワード: fpga2006
• ポップアップブロッカをいれている時は、回避してください.
Google検索を使っている場合はctrlキーを押しながらOK
を押します.
• http://www.xilinx.co.jp
• http://www.ted.co.jp
• http://www.altera.co.jp
2015/9/30
論理設計実習2006
32
Altera社FPGAの構造例
IOE IOE
IOE IOE
IOE
IOE
IOE
IOE
IOE
IOE
2015/9/30
IOE IOE
IOE:I/O Element
IOE IOE
IOE IOE
ロウ・インターコネクト
カ
ラ
ム
・
イ
ン
タ
ー
コ
ネ
ク
ト
RAM
LAB:Logic Array Block
組込みメモリ
論理設計実習2006
論理関数を実現するブロック
33
LAB(Logic Array Block)
LE (Logic Element): 論理関数を実現するLUTと
D-FFなどで構成される.
Look-Up Table
Clear/Preset
Logic
D
PR
Q
ENA
CLR
ローカル・インターコネクト:同一ブロック内の配線
2015/9/30
論理設計実習2006
34
LE (Logic Element)
• ロジックの最小単位
• 組合せ論理機能を実現するLUTと、シーケンシャル
な論理機能を実現するプログラマブルなレジスタ 等
から成る(実際はもっと様々な機能が入っている)
• グループ化され、LAB(Logic Array Block)を構成
Look-Up Table
2015/9/30
Clear/Preset
Logic
論理設計実習2006
D
PR
Q
ENA
CLR
35