PLDとFPGA

PLDとFPGA
リフレッシュ教育
2007/12
京都大学 小林和淑
1
PLD、FPGA
‹ PLD:
Programmable Logic Device
– プログラム可能な論理素子
‹ FPGA:
–
–
–
–
Field Programmable Gate Array
野外でプログラム可能な門の隊列?
Field: 設計現場
Gate Array: 論理ゲートをアレイ上に敷き詰めたLSI
MPGA: Mask Programmable Gate Array
» マスクでプログラムするゲートアレイ
– FPGA:
» 設計現場でプログラムするゲートアレイ
» 街中でプログラムするゲートアレイ
2
プログラマブルロジックデバイス
(PLD)
‹ 設計者が自由にその機能を変更できるLSIの総称
(広義)
– MPD:
– FPD:
マスクプログラマブル→製造時に変更
フィールドプログラマブル→その場で変更
‹ 小規模PLDの種類
– PLA:
PLA
Programmable Logic Array
» AND-OR アレイ
– PAL:
Programmable Array Logic
» ORアレイが固定
» 派生品として、GAL,
FPGA
PLD(製品名)
PLD
GAL PLD
PAL
GA
(MPGA)
3
FPGAの応用先
http://www.fpga.co.jp/nyumon2.html
プレステ用
エモーション
エンジン
Canopus社ビデオ
出力ボード
新幹線電光掲示板
Altera社
Cyclone
SONYの薄型テレビ用基盤
4
ポータブル機器への応用
‹
ザイリンクスは,シャープがウィルコ
ム向けに開発・製造している携帯情報
端末「W-ZERO3 シリーズ」に,米Xilinx,
Inc.のCPLD「CoolRunner-II」が採用されて
いると発表した。W-ZERO3 シリーズは
2005年12月に販売が始まっている。 今
回,シャープは上記のPLDを,同PDAの
キーボード・インタフェース,I/O拡張
機能などに使い,MCUの負荷低減と機
器の高機能化につなげたという。ザイ
リンクスは「CoolRunner-IIが低消費電力
なことは,採用の大きなポイントに
なった」と説明している。
出典:http://techon.nikkeibp.co.jp/article/NEWS/20060616/118270/
5
FPGA,PLDの歴史
‹ 参考資料
– 特許から見た「プログラマブル・ロジック・デバイ
ス(Programmable Logic Device:PLD)」の展望
– http://www.jpo.go.jp/shiryou/toushin/chousa/pdf/pld2000_1_12.p
df
6
PLDの変遷(参考資料1より)
7
PLDの構造
ORアレイ
固定のORアレイ
ORアレイ固定のものがPAL
ANDアレイ
PLA, PAL
ANDアレイ
マクロ
セル
DFFからの出力を
フィードバック
GAL, PLD
‹ PLA,
PALは組合せ論理回路主体
‹ GAL, PLDは順序論理回路
– カウンタ、制御回路等
8
FPLAの詳細構造
Vcc
‹ バイポーラトランジ
スタ
– まだ,CMOSのないこ
ろ
A
AND
アレイ
B
‹ 接続したくないとこ
ろのヒューズを溶断
‹ ヒューズは抵抗を持
つので,遅い
– PALは,高速化のため
にORアレイを固定化
C
Vcc
OR
アレイ
A+BC
AC+A
M.J.B.Duff, “Review of the CLIP Image Processing System”,
National Computer Conf., pp.1056-1060 (1978)
9
FPGA (Field Programmable Gate Array)
‹ フィールドプログラマブルな大規模集積回路
– ようは大規模なPLD
‹ 論理ゲートとフリップフロップをアレイ上に
敷き詰めて、その間の結線を自由に変更
– ただし論理ゲートそのものが内蔵されているとは
限らない
‹ コンフィグレーションデータを書き込むこと
により機能が変化する
10
FPGAの構造
‹ 組み替え可能な論理ブロック
‹ 論理ブロック間を接続する組み替え可能な配
線
論理
ブロック
論理
ブロック
論理
ブロック
配線
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
論理
ブロック
11
FPGAのプログラム記憶方式
FPGAの現在の構成(コンフィグレーション)を覚
えておく方法
‹
SRAM等の揮発性メモリに書き込む.
– もっともポピュラー
– 特別なプロセスを必要としない
– 基本特許はXilinx社が所有している
» Freeman特許(2006まで),Carter特許(2004まで)
» FPGAという商標はXilinxのみが使用できる。
‹
EPROM, EEPROM等の不揮発性メモリに書き込む.
– 電源を切っても消えない
‹
電圧をかけて, アンチヒューズを短絡させる.
– 書きこみは一度のみ
12
FPGAのプログラム方式:
SRAM
WL
BL
BL
To Switch
SRAM
‹ ロジックと同じプロセスで製造できる。
– 低コスト,最新プロセスの利用
‹
冗長度が大きい。
– 1SRAMセル: 6Tr
– さらに、デコーダ、センスアンプ等も必要
‹
電源を切ると消える(揮発性)
13
FPGAのプログラム方式(2)
揮発
>100G
OUT
Floating Gate
IN
A
B
open
EPROM,EEPROM
‹ 特殊なプロセスを要求
‹ 冗長度は小さい。
‹ 1Trのみ
不
A
B
Apply 16V
between A and B
Antifuse
‹ 小さくて高速
‹ 書き込みは一度だけ
14
SRAM方式FPGAの構造
‹ FPGA:
– 変更可能な組合せ回路
– 変更可能な配線
‹ 組合せ論理回路の基本はLUT(Look-Up
Table)
– 組合せ論理回路を1ビットSRAMの記憶内容で表現
‹ 配線の変更は
– トランジスタによるスイッチ
» スイッチのON,
OFFの情報もSRAMに格納
15
アイランド型FPGA
‹
構成部品
– CLB(Configurable Logic Block, 論
理ブロック)
» LUT: 可変論理
» FF: 順序回路
Wire Track
CB
SB
CLB
– SB(Switch Block, 配線接続ス
イッチ)
» 縦横の配線接続を切り替え
– CB(Connection Block, 入出力ス
イッチ)
» CLBと配線を接続
– Wire Track
» SB間の配線
16
CLB(Configurable Logic Block)
‹ LUT
– 可変論理を実現す
る
‹ DFF
– 順序回路を実現す
る
‹ セレクタ
– 順序回路動作と組
み合わせ回路動作
を切り替える
17
LUT(Look-up Table)
‹
‹
SRAM型FPGAの可変論理を実現
する。
A, B, C, Dの4ビット入力をワード
線とした1ビットのSRAM
– 入力数が増えるとSRAMが大きくな
る
– 小さいと効率が悪い
– これまでは4入力が主流
‹
‹
‹
SRAMの中身を書き換えること
で任意の論理を実現
(A|B)&(C|D)に対するLUT→
真理値表をそのまま表現すれば
よい。
設定値
18
LUT(Look-up Table)
‹
‹
SRAM型FPGAの可変論理を実現
する。
A, B, C, Dの4ビット入力をワード
線とした1ビットのSRAM
– 入力数が増えるとSRAMが大きくな
る
– 小さいと効率が悪い
– 微細化により入力ビット数が増え
る傾向にあり
‹
‹
‹
SRAMの中身を書き換えること
で任意の論理を実現
(A|B)&(C|D)に対するLUT→
真理値表をそのまま表現すれば
よい。
設定値
19
可変配線: スイッチマトリッ
クス
‹ SRAM型FPGAの可変配線を実現
‹ 全結線はコスト高かつ遅延大なので,斜めだ
けスイッチを配する。
任意の接続が可能
1交点あたり,
スイッチ6個
20
スイッチマトリックスの構造
‹ Fs(配線当たりの接続数)=3の各種スイッチ構
造
– Disjoint: 上下左右斜め同じ番号(前頁の構造)
– Universal: 上下左右は同じで斜めで一部番号を反転
– Wilton: 上下左右は同じで斜めで番号を変更
21
スイッチマトリックスの詳細
構造
‹
‹
‹
1ビット
SRAM
NMOS SW Typeは面積が小さいが配線
容量の増大とともにスイッチの抵抗に
よる遅延が大きくなる
Buffer Typeは高速だが,双方向にする
ために面積が非常に大きくなってしま
う。
– さて,NMOS SW Typeの何倍くら
い?
Buffer Typeの欠点を解消したスイッチ
の構造も提案されている[1]
[1] G. Lemieux, D. Lewis, `Circuit Design of FPGA Routing Switches'', ACM/SIGDA
International Symposium on FPGAs
22
XILINX XCシリーズの構造
A
スイッチマトリックス
CLB
CLB
CLB
B
C
ルックアップ
テーブル(LUT)
FF
(SRAM)
セレクタ
CLB
CLB
CLB
D
CLB
CLB
CLB
CLB
CLB
CLB
共通クロック
CLBの構造
縦横配線の接続
が変更できる
配線
CLB: Configurable Logic Block
スイッチマトリックス
23
ALTERA FLEXの構造(CPLD構
造)
行配線
論理素子(LE)
各交点には
配線を接続する
スイッチを配置
列配線
A
B
C
D
LUT
キャリー
チェイン
FF
セレクタ
LAB制御信号
(LAB内の全LE共通)
論理素子(LE)
論理アレイ
ブロック(LAB)
各配線は左右, 上下でそれぞれ
電気的につながっている
(上から下, 左から右まで1本の配線)
LABの構造
24
特許から見たSRAM型FPGA
‹
プログラマブル・ロジック・デバイス技術に関する特
許出願技術動向調査
http://www.jpo.go.jp/old/techno/pdf/pld.pdf
‹ Freeman特許
– LUT型FPGAの
基本特許
25
特許から見たSRAM型FPGA
(2)
‹ Carter特許
– CLE(Configurable Logic
Elements)の接続方法に関する特
許
‹ Altera社のLUT型FPGAは,X
ILINX社に特許侵害で訴
えられ,敗訴(和解)
‹ 他社は怖くて販売できない
26
Antifuse型FPGA (Actel Act1)
‹ プログラム可能なス
イッチ: 高電圧をかけて、 A
スイッチを溶着する。
– Fuseの反対の動作
– 動作時には低抵抗で高
速
‹ プログラム可能な論理
– マルチプレクサベース
– 2入力のさまざまな組合
せ論理が実現可能
>100G
B
open
A
B
Apply 16V
between A and B
SA
A0
0
A1
1
0
OUT
B0
0
B1
1
1
S0
SB
S1
27
Act1の構造
Antifuse
スイッチ
Logic
Module
28
マルチプレクサによる組合せ回
路
1
1
0
1
1
0
OUT
B
0
0
1
1
C
A
B
C
A
0
2入力の論理すべてと、3NANDと排他論理を除く3入力
の論理を実現。8入力までの論理も実現(一部のみ)
29
EPROM、EEPROM型FPGA
‹ E(E)PROM:
Electric(-Erasable) Programmable ROM
– 電気的に書きこみ(と消去)のできるROM
‹ EPROM(Floating-Gate MOS)の構造
Gate
Floating Gate
Gate
Source
Drain
Source
N+
N+
N+
P-
MOSFET
Drain
N+
P-
Floating-Gate MOSFET
ゲート電極を2つもつFET
30
EPROMのプログラミング
‹ Drain,
Gate間に高電圧(12V)をかけて、Drainから
Floating Gateに電子をジャンプさせる。
‹ 電子がFloatingゲートにたまることで、閾値が上
昇する。
– 常にOFFになる
IDS
Gate
Source
Not
Programmed
Programmed
Apply High Voltage
Drain
N+
N+
PVdd
31
EPROMによるProgrammable
Logic
Floating Gate
EPROMの回路図
シンボル
OUT
IN0
OUT
IN
Floating Gate
Unprogrammed
Unprogrammed
Programmed
IN OUT
1
0
0
1
X
1
IN1
IN2
IN3
Programmable
Inverter
Programmable
32
NOR
EEPROMとフラッシュメモリ
‹ フラッシュメモリ(Flash
Memory):
– EEPROMは高電圧をかけて書きこまないといけないが、
フラッシュメモリは通常の電圧で読み書き可能
– 書きこみも数千回可能。(EEPROMは数回から数10
回)
– 書きこみはバイト単位でできるが、消去はセクタ単
位でしかできない。1Mb Flash Memoryの場合、1セクタ
はアドレス10ビット分(1024ビット)
– 主な応用先:
» スマートメディア、メモリスティック等のメモリカード
» 携帯電話のソフトウエア格納用
33
NAND型とNOR型フラッシュメ
モリ
‹ NOR型:
小容量,高速,ランダムアクセス可能
‹ NAND型: 大容量,低速,消去はブロック単位
プログラムしな
いと常時ONに
NOR型FLASH
NAND型FLASH
34
FPGAの特性分類
プログラム方式
SRAM
EPROM
EEPROM
アンチヒューズ
再書込
○
△
○
×
不揮発性 動作速度 冗長度
×
遅い→速い
大
○
中
中
○
中
中
○
速い
小
‹ SRAM型のFPGAは最新のプロセス技術により、
スピード面での欠点は解消されている。
– 最新のものは、65nm銅配線プロセスを用いている。
35
銅配線プロセス
銅配線の威力
‹
銅配線の断面写真
アルミニウムの抵抗率は銅の1.6倍
36
微細化の効果(Xillinx資料より)
‹ 90nmプロセスと,300mmウェハで,130nm,
200mmと比べて,5倍の生産性
– 価格を1/5に
– 110nmは飛ばす。
‹ ITRSのロードマップの1.5年先を行く
大口径化の効果
微細化による効果
2.09
2.00
1.50
集 積 度の 向上 率
集積度の向上率
2.50
1.60
1.29
1.34
1.33
1.00
0.50
0.00
220
190
150
130
プロセステクノロジ(nm)
90
4.50
4.00
3.50
3.00
2.50
2.00
1.50
1.00
0.50
0.00
4.00
2.25
2.25
1.78
100
150
200
ウェハーの直径
300
37
微細化による効果
34W
8.5W
38
微細化により筺体を小型化
SCE 久多良木社長
39
FPGAベンダ
‹ 各社とも,1980年代半ば以降に創業されたベン
チャー企業(参考資料2参照)
‹ FPGAの2大ベンダは、XILINXとALTERA
– 2社で世界の5割から6割
‹ その他のベンダ
– Actel: antifuse型, Mars Path-Finderに搭載
– Lucent: PCIやATMコントローラを内蔵したFPGA
– Philips, Lattice: CPLD (Complex PLD)
40
FPGAベンダの売り上げ高
Texus Instruments
IBM
ST Microelectronics
NEC Electronics
2004
2003
Xilinx
Fujitsu
Toshiba
Xilinx, Alteraは,東芝,富士通,
NEC等の日本の大手とほぼ同じ規
模
Altera
Agere System
LSI Logic
0
0.5
1
1.5
2
2.5
3
3.5
FPGA/ASIC売り上げ高(10億ドル)
41
XILINXの製品マップ
CPLD
FPGA
ファミリ
XC9500
XCR3000
ファミリ
XC4000
SPARTAN
SPARNTAN-3
VIRTEX II
VIRTEX II Pro
VIRTEX 4
プログラム方式
Flash
EEPROM
プログラム方式
SRAM
SRAM
SRAM
マクロセル数
36-288MC
32-512MC
ゲート数
13k-85k
5k-200k
50k-5M
SRAM
40k-8M
SRAM
SRAM
200k-10M
200k-10M
特徴
安価(Glue Logic置き換え)
低消費電力
特徴
3.3V標準
ASIC代替
低価格かつ高性能
システムFPGAプラットフォー
ムFPGA
CPU内蔵(最大4つ)
CPU/DSP/Ethernet積載
42
ALTERAの製品マップ
ファミリ
ACEX
FLEX
プログラム方式
SRAM
SRAM
ゲート数
10k-100k
10k-250k
APEX 20k
SRAM
30k-1.5M
APEX II
Stratix
Stratix II
Excalibur
MAXII
Cyclone
Cyclone II
HardCopy II
SRAM
600k-3M
SRAM
300k-3M
SRAM
600k-7M
SRAM
100k
Flash
240-2.2k
SRAM
2k-20k
SRAM
4k-68k
FPGAデータから作成するASIC
特徴
安価かつ大容量
高速大容量
SOPC(System on a Programmable
Chip)
銅配線
大規模メモリ搭載
最新
CPUコア集積
高速大容量
ASICの置き換え
90nm, 300mmウェハ
43
FPGAの製品展開
‹ SRAM型FPGAは、LUTで実現する組合せ論理回路
だけでなく、メモリ,PLL,
回路まで内蔵する。
高速シリアル伝送
– Stratixでは,最大7Mbit
ROM, CAM(Content Addressable
Memory), FIFO, 乗算器等に使用できる
‹ さらに、CPUコアを内蔵。LSIの製造プロセス微
細化のおかげで、チップ全体の1/10程度でARM,
PowerPC等の32bitプロセッサが集積可能
‹ メモリは、RAM,
44
FPGAのメリット、デメリット
‹ メリット
– 設計のTAT(Turn-Around Time)が短い
– 論理設計とタイミングの検証のみで動作する. (物理
設計がいらない)
– 少数の製品に使用できる
– IP(Intellectual Property)が豊富
‹ デメリット
– スピードが遅い、チップ面積が大きい
– 量産時のコストが高い
» 同じ設計データを用いて安く量産できるサービスもある
(Hardcopy by ALTERA, EasyPath by Xilinx)
45
ストラクチャードASIC
‹ FPGAは,短納期だが,単価が高い,速度も遅い
‹ 専用のASICは,開発費が高く,納期も遅い
‹ ストラクチャードASIC(マスタスライスLSI)
– あらかじめ,チップ上にIP(部品)を組み込んでおき,
配線層のみでカスタム化する
» 構成部品が論理ゲートとメモリだけのものは,単なるゲートア
レイ
– 短納期,かつ単価が安い(FPGAより面積小),速度も速
い(FPGAのスイッチを単なる配線に)
‹ マスクなしで,EBによる直猫も
‹ 儲からないのか,各社撤退へ。FPGAには勝てない
46
HardcopyII
FPGA
Hardcopy II
LUT
LUT
‹
PLL
PLL
LUT
SWM
‹
Memory
LUT
SWM
Memory
SWM
SWM
10%のコストと,半分の消費電力でFPGAをASICに
FPGAとピン互換
47
論理設計
FPGAの設計法
回路図エントリ
HDL記述
nand2
A
B
C
module nand_g(C,A,B);
input A,B; output C;
assign C=~(A&B);
endmodule
論理合成
‹ 通常のLSIと同じ設計手
法を取る。
– LUTを直接設計するわけで
はない
この境界は厳密ではない
‹ FPGAの配置配線は各
FPGAベンダ配布のツー
ルにより行う
‹ HDLが書ければ,後はほ
ぼボタンを押すだけ!!
ネットリスト
module nand_g(C,A,B);
input A,B;output C;
nand2 I0(C,A,B);
endmodule
論理素子への
ゲートの割り当て
LSI用
CADツール
FPGAベンダ
提供ツール
LEの配置, 配線を
決定する
FPGAへの書込データ
の作成
48
CAD、FPGAベンダのツール
Mentor Graphics
Synplicity
Synopsys
ALTERA
XILINX
Actel
‹
‹
CADベンダ
FPGA Advantage
SynplifyPro
FPGA Compiler II
WorkView Office
FPGAベンダ
Quartus II
ISE
Libero IDE
統合ツール
論理合成ツール
回路図エントリ
回路図エントリ,論理合成
回路図エントリ,論理合成
回路図エントリ,論理合成
各社FPGAの無償ツールあり。大学向けのプログラム
もあり
See http://www.ベンダ名.com/
49
Verilog Simulator
‹
標準的なVerilog Simulator
– Cadence社 verilog-xl, ncverilog(高速なverilog simulator)
» VDECのメディアではIUS, LDVに含まれる
» 波形を見るのはsimivision
– Synopsys社 vcs
» VDECのメディアでは,vcsに含まれる
– Mentor Graphics社 modelsim
» VDECのメディアでは,Modelsim
» XILINX, ALTERAのFPGAソフトに機能限定版
– Plagmatic C社 GPL Cver
» GPLライセンスにより,フリーで利用可能
» Windows(cygwin), linux, Solaris, OS Xなどで動作
» 波形を見るのはgtkwave
– Veritakwin (菅原システムズ)
» 純国産Verilogシミュレータ
» 無料で使えるCQ版もあり
50
FPGA設計(演習内容)
‹ HDLからFPGAまで
Quartus II
RTL記述から回路
出力ファイル
への論理合成
RTL
記述
Quartus II
FPGA上の配置配線
をおこなう
出力ファイル
circuit.sof,pof
SRAMオブジェクトファイル
‹ FPGA搭載ボード
のデ
書バ
込イ
ス
へ
Power Medusa MU200-EC6S
FPGA: Altera社 Cyclone EP1C6Q240C8 (5980ロジックセル)
FPGA1個当たりの価格 1000円から2000円程度
51
HDLから回路図へ(論理合成)
module calc(decimal,plus,minus,equal,CLK,RST,CE,sign,overflow,out);
module calc(decimal,plus,minus,equal,CLK,RST,CE,sign,overflow,out);
input [9:0] decimal;
input [9:0] decimal;
input CLK,CE,RST,plus,minus,equal;
input CLK,CE,RST,plus,minus,equal;
output sign,overflow;
output sign,overflow;
output [6:0] out;
output [6:0] out;
wire [3:0] d;
wire [3:0] d;
wire [8:0] alu_out;
wire [8:0] alu_out;
reg [1:0] state;
reg [1:0] state;
reg [8:0] REGA, REGB;
reg [8:0] REGA, REGB;
reg [1:0] count;
reg [1:0] count;
reg add_or_sub;
reg add_or_sub;
assign d=dectobin(decimal);
assign d=dectobin(decimal);
always @(posedge CLK or negedge RST)
always @(posedge CLK or negedge RST)
begin
begin
if(!RST)
if(!RST)
begin
begin
REGA<=0;REGB<=0;count<=0;
REGA<=0;REGB<=0;count<=0;
add_or_sub<=0;
add_or_sub<=0;
state<=`DECIMAL;
state<=`DECIMAL;
end
end
else
else
回路図
HDLソース(一部)
52