FPGA講習@北海道大学

FPGA講習@北海道大学
2010年9月29日
内田智久(IPNS, KEK)
午前前半 9:00-10:15
午前後半 10:30-11:45
午後 13:00-
目標
FPGA*技術を体験する
*Field Programmable Gate Array
サンプル回路を実際に動かしてみましょう!
FPGA講習@北海道大学
2
実習に使用するボード
これがFPGA
液晶パネルに文字を出力する回路を実装する
FPGA講習@北海道大学
3
内容
 前半
 イントロダクション
 FPGAの紹介
 デジタル回路の特徴
 放射線検出器への応用
 読み出しシステム
 GEMを使った2次元検出器への応用
 後半
 FPGA設計入門
 デジタル回路入門
 FPGAの基礎
 実習
 液晶に文字を表示
 簡単な回路を実装
FPGA講習@北海道大学
4
FPGAとは?
 Field Programmable Gate Array
 集積回路
 主にデジタル回路
 2×2 cm程度の大きさ
 ユーザーが回路をダウンロードして使用
 ソフトウエアの様に使用できる
 ソフトウエアではないので注意!
FPGA講習@北海道大学
5
デジタル信号とは?
電圧
電圧が高い状態
電圧が低い状態
時間
1つの信号線で0か1の2値を転送する事ができる
時間軸方向に展開できる事に注意!!!
FPGA講習@北海道大学
6
デジタル回路とは?
デジタル信号
デジタル信号
入力
デジタル回路
出力
2進演算する(ブール代数)
デジタル回路の代表コンピュータから分かるように
デジタル回路は数字を演算する
FPGA講習@北海道大学
7
デジタル回路の構成要素
全てのデジタル回路は
この4つの要素(回路)のみで構成されている
CPU, DSPなど一見複雑な回路もこの4つの組み合わせで設計可能
FPGA講習@北海道大学
8
ソフトウエアとハードウエア
 ソフトウエア
 命令を一つずつ逐次処理
 基本的に同時に処理できるのは一つだけ
 命令(データ)をダウンロードする
 ハードウエア
 固定された回路で処理
 同時に複数処理を行う事ができる
 FPGAの場合は論理回路情報をダウンロードする
FPGAは回路情報(結線情報)をダウンロードする
動く原理が異なる事に注意!
FPGA講習@北海道大学
9
アナログ回路とデジタル回路
最近、地デジなどデジタル化が流行っています。
アナログ回路とデジタル回路は
何が違うのでしょうか?
オーディオ装置を例に見てみます
FPGA講習@北海道大学
10
アナログ回路
針の振動を
電圧変化変換
電圧を増幅
電磁石に電圧を掛けて
振動させる
♪
♪
♪
レコード
アンプ
♪
♪
スピーカー
ここがアナログ回路!!
連続量(電圧)を連続量のまま処理する
(連続量を扱っている)
FPGA講習@北海道大学
11
デジタル回路
反射光の有無で
電圧に変換
演算と
アナログ値に変換
電圧を増幅
電磁石に電圧を掛けて
振動させる
♪
♪
♪
01011・・・
CD
信号処理
アナログ
アンプ
♪
♪
スピーカー
ここがデジタル回路!!
波高値
2進数演算する回路!!
(離散量を扱っている)
FPGA講習@北海道大学
12
デジタル回路とは?
 2値で動作する回路
 2進演算する回路
 電圧が高い時を“1”、低い時を“0”などとする
しかし、疑問が残る
FPGA講習@北海道大学
13
素朴な疑問
反射光の有無で
電圧に変換
演算と
アナログ値に変換
電圧を増幅
電磁石に電圧を掛けて
振動させる
♪
♪
♪
01011・・・
CD
信号処理
アナログ
アンプ
♪
♪
スピーカー
単に信号処理が増えただけ?
物事を複雑にしているだけでは?
何が嬉しいのか?
FPGA講習@北海道大学
14
何故、デジタル技術が多用されるのか?
世間ではデジタル技術が流行っています
しかし、例で見たように・・・
 デジタル回路の方が箱が増えている!
 何故、わざわざ処理を増やすのか?
物事を単に複雑にしているように見える
何故、デジタル技術が多用されるのでしょうか?
放射線検出器でも同じです。
デジタル化されています。
FPGA講習@北海道大学
15
アナログ信号は繊細
波形に全ての情報が入っている
例えばGEM検出器の信号
歪んだら困る!
雑音で値が変わったら大変だ!
この様な綺麗な形のまま信号を処理するのは難しい!!
長距離伝送するだけでも難しい!
FPGA講習@北海道大学
16
アナログ信号は繊細
波形に全ての情報が入っている
例えばGEM検出器の信号
ノイズは世の中に溢れている!!
この様な綺麗な形のまま信号を処理するのは難しい!!
長距離伝送するだけでも難しい!
もちろん、伝送する事はできる。しかし様々な工夫が必要、
システム内の全ての信号に配慮するのは非常に大変、出来るかどうかも怪しい
FPGA講習@北海道大学
17
理想のデジタル信号
理想のデジタル信号
しかし、世の中そんなに甘くない・・・
この信号を実際に転送すると
どうなるでしょう?
FPGA講習@北海道大学
18
デジタル信号は強い!
ノイズに強い!
この様なひどい信号でもOK
Highと認識する領域
Lowと認識する領域
FPGA講習@北海道大学
ノイズにより間違った信号を入れると、間違った結果を出す
19
デジタル回路の長所
ノイズに強い
• 誤った処理をしない
• 高速動作が可能
• 記録が簡単
FPGA講習@北海道大学
20
デジタル回路の短所
信号数が多くなる
 1本で2値(0と1)しか伝送できない
 複数本で数字として意味をなす
 この本数がbit数
 8bitなら0から255まで表現できます
回路が大きくなる
 アナログ回路と比較すると圧倒的にトランジスタの数が多くなる
近年の微細化技術で問題にならなくなった
FPGA講習@北海道大学
21
デジタル回路のまとめ
デジタル回路は
ノイズに強く、2進演算をする
とは言え実際には信号線には電流が流れて電圧を検出して動作します
高速信号を扱う時は特にアナログ的な考えが必要ですが
今は忘れましょう!
FPGA講習@北海道大学
22
デジタル回路の構成要素
3種類の演算と記憶素子
O=A&B;
O=~I;
O=A|B;
全てのデジタル回路は
この4つの要素(回路)のみで構成されている
FPGA講習@北海道大学
CPU, DSPなど一見複雑な回路もこの4つの組み合わせで設計可能
23
再び、FPGAとは?
演算回路の接続情報をダウンロードできる集積回路
 集積回路




主にデジタル回路
2×2 cm程度の大きさ
幾つかのメーカーがある
数千円/個~
 ユーザーが回路をダウンロードして使用
 使うたびに異なる回路を動かす事ができる
 C言語などと同じようにテキストで回路を書く
 コンパイルしてダウンロードする
 FPGAメーカーが提供するツールを使用する
FPGA講習@北海道大学
24
結局、FPGAとは?
デジタルICを自分で作れる!!
それも簡単に!
自分が設計した回路を書き込むことが出来る
集積回路デバイス(IC)
昔は回路を作るのは大変だった・・・・・
FPGA講習@北海道大学
25
どんな所に使われているのか?
 家電の上位機種
 HDプレイヤーなど
 ネットワーク装置
 ルーターやスイッチなど
 産業用機器
 生産台数が尐ない製品はFPGAがほぼ間違いな
く搭載されている
 一昔前のコンピュータなら一つのFPGA内に
入ってしまう
FPGA講習@北海道大学
26
どんな事ができるのか?
Linuxが動く!!
Linuxが動く環境をFPGA内に構築できる
FPGA
47mm
Ethernetポート
Webサーバを動かしたり出来る
名刺より小さい
72mm
プログラム格納用メモリー
*CPUはFPGA内に組み込まれている
FPGA講習@北海道大学
27
放射線検出器にも使える
Ethernetポート
FPGA
ASIC
FPGA
Ethernetポート
2次元GEM検出器
この読みだしステムを例にFPGAが
どのように使われているのか見てみましょう!
FPGA講習@北海道大学
28
読み出しシステムの目的
見たい物理現象を選択し扱い易いデータにする
以下の点に注意しながらシステム動作を見てゆきます
 検出器信号の特徴は?
 どうすれば目的の現象を選択できるのか?
 最終データをどう扱うか?
FPGA講習@北海道大学
29
システム動作概要
デジタル値の電気信号
微弱なアナログ信号
検出器
目的の物理量を
電気信号へ変換
2次元検出位置など
読みだし
エレクトロニクス
デジタル値へ変換
イベント選択
PC
検出器
電源
PC
データを
保存、解析
Ethernet
読みだし
エレクトロニクス
FPGA講習@北海道大学
30
現在、多くのシステムは最終的にデジタルデータへ変換して処理を行っている
読み出しエレキ動作概要
q
数字へ変換される
V
検出器からの信号 処理しやすくされた
微弱なアナログ信号 アナログ信号
アナログ
信号処理
•増幅
•波形整形
デジタル化された
信号
デジタル化
•ADC
電圧などをデジタル数(多値)へ
•コンパレータ(ディスクリ)
信号が在るか無いかの2値
FPGA講習@北海道大学
これから箱を一つずつ見てゆきます
PCで処理できる信号
(Ethernet, USBなど)
デジタル
信号処理
•ノイズ除去
•イベント選択
•イベント計数
•PCとのインタフェース
31
動作復習
 検出器からの微弱なアナログ信号を処理
 デジタルデータをPCへ転送する
はっきりした事
微弱信号を処理してデジタルデータへ変換する
• 微弱信号の処理って?
• デジタルデータへの変換って?
次ページから入力1チャンネルとしてシステムを概観してみます
FPGA講習@北海道大学
32
アナログ信号処理
q
数字へ変換される
V
検出器からの信号 処理しやすくされた
微弱なアナログ信号 アナログ信号
アナログ
信号処理
•増幅
•波形整形
デジタル化された
信号
デジタル化
•ADC
電圧などをデジタル数(多値)へ
•コンパレータ(ディスクリ)
信号が在るか無いかの2値
FPGA講習@北海道大学
PCで処理できる信号
(Ethernet, USBなど)
デジタル
信号処理
•ノイズ除去
•イベント選択
•イベント計数
•PCとのインタフェース
33
検出器信号
先ずは検出器信号を一本抜き出してみてみる
(デジタル処理から複数信号を扱います)
GEM検出器の信号はどの様に生成されるのか?
検出粒子を荷電粒子に変換
GEMで電子数を増幅
この電子を検出する。どうやって?
FPGA講習@北海道大学
34
読み出し電極による読み出し
誘導電荷を使って信号と取り出す
GEM
- - - 増幅された電子塊 が近づく
電極中の自由電子が
移動する
読み出しエレキ
電極
-
-
-
-
-
-
-
-
-
-
-
-
-
読み出し基板
FPGA講習@北海道大学
35
電極からの電荷
Q
Qs
数fC
Ta-Ts: 電子塊が移動している時間
GEMと電極間の距離とガス中のドリフト速度
で決まる。数十ns
dQ/dt
数100pA
Ts
Ts: 電極から電子塊が
見え始めた時間
Ta
Ta: 電子塊が電極に
到着した時間
これは電気回路から見ると
非常に小さな信号
下手をするとノイズに簡単に
埋もれてしまうレベル
FPGA講習@北海道大学
36
検出器からの信号
 非常に小さい信号
 ノイズに埋もれてしまいそう
 特殊な電子回路でのみ処理できる
扱い難い
ノイズに埋もれなく、
普通の電子回路で扱える信号にしたい!
FPGA講習@北海道大学
37
ここで素朴な疑問
 何故、もっと検出器の増幅度を上げないの?
 増幅度には上限があります。
一般に電子回路で増幅する方が簡単だからです
特殊だろうがなんだろうが、
電子回路で扱える信号にしたら後は電子回路で処理する
FPGA講習@北海道大学
38
扱い易い信号とは?
 ノイズに負けない大きさの信号へ
 増幅して大きくする
 扱い易い波形に
 波形整形(シェーピング)
次にやる事は?
FPGA講習@北海道大学
39
デジタル化の位置
q
数字へ変換される
V
検出器からの信号 処理しやすくされた
微弱なアナログ信号 アナログ信号
アナログ
信号処理
•増幅
•波形整形
デジタル化された
信号
デジタル化
•ADC
電圧などをデジタル数(多値)へ
•コンパレータ(ディスクリ)
信号が在るか無いかの2値
FPGA講習@北海道大学
PCで処理できる信号
(Ethernet, USBなど)
デジタル
信号処理
•ノイズ除去
•イベント選択
•イベント計数
•PCとのインタフェース
40
アナログ信号は繊細
波形に全ての情報が入っている
歪んだら困る!
雑音で値が変わったら大変だ!
この様な綺麗な形のまま信号を処理するのは難しい!!
長距離伝送するだけでも難しい!
FPGA講習@北海道大学
41
デジタル回路の長所
ノイズに強い
• 誤った処理をしない
• 高速動作が可能
• 記録が簡単
FPGA講習@北海道大学
42
デジタル化する場所
検出器の近くでデジタル化する方が良い
フロントエンドでデジタル化
FPGA講習@北海道大学
43
デジタル化の意味?
 興味ある値を数字に変換
 出来るだけ早く変換した方が信号の劣化が尐ない
 離散値へ変換する
 連続値から離散値への変換により情報量は下が
る
 ノイズ耐性は非常に高くなる
デジタル化の方法について見てみます
FPGA講習@北海道大学
44
最も簡単なデジタル化
比較器(コンパレータ)、弁別器(ディスクリミネータ)
信号が有るか(1)、無いか(0)の2値へ変換
t
アナログ回路
からの信号
Vsig
Vout
Vref
Vref
出力
Vsig
基準電圧
Vout
入出力の関係
FPGA講習@北海道大学
45
GEM検出器はこれを使用している
デジタル信号処理の位置
q
数字へ変換される
V
検出器からの信号 処理しやすくされた
微弱なアナログ信号 アナログ信号
アナログ
信号処理
デジタル化された
信号
デジタル化
藤田さん(KEK)の講義
FPGA講習@北海道大学
ここから多チャンネルで考えます
PCで処理できる信号
(Ethernet, USBなど)
デジタル
信号処理
•ノイズ除去
•イベント選択
•イベント計数
•PCとのインタフェース
46
両面読み出し電極
表と裏に十字に交差するように配置した電極を使用する
GEM
- - - 増幅された電子塊 が近づく
読み出しエレキ
電極
-
-
-
-
-
-
-
-
-
-
-
- FPGA講習@北海道大学
-
-
-
-
-
-
-
-
-
-
-
47
-
2次元読み出しボード
話を戻して、GEM検出器の2次元読み出しについて考えます
表 120本
裏 120本
全信号の数 240本!!
FPGA講習@北海道大学
48
デジタル信号処理
デジタイズした240本の信号を処理する
 ノイズ除去
 2次元位置の確定
 到達位置推定
 コインシデンスを取る
 検出時間確定
 PC用データ生成
 決めたフォーマットに変換する
 ネットワーク処理
 TCP/IPを使用してPCへデータ転送
FPGA講習@北海道大学
49
信号数の増大
 画像検出器は扱う信号数が多い
 チャネル数増大は最近の傾向
 実験の精密化
 処理回路の規模が大きくなる!!
 数百本も配線するのが大変
 出来るだけ尐ない部品で処理したい!
 大きさが大きくなると性能が落ちる
 信号の伝送劣化の影響など
集積回路化
FPGA講習@北海道大学
実際の検出器を見ながら話を続けます
50
集積化技術
 Application Specific IC (ASIC)





設計した回路をIC化する技術
アナログ、デジタル回路
高価な開発費、高性能
半導体工場で製造してもらう,
高性能
 Field Programmable Gate Arrays (FPGA)
 設計した回路をダウンロードして使用する技術
 デジタル回路
 安価な開発費、ほどほどの性能
約十ミリ角の中に詰め込んだ!
FPGA講習@北海道大学
51
集積回路の位置
q
数字へ変換される
V
検出器からの信号 処理しやすくされた
微弱なアナログ信号 アナログ信号
アナログ
信号処理
デジタル化された
信号
デジタル化
ASIC
PCで処理できる信号
(Ethernet, USBなど)
デジタル
信号処理
FPGA
FPGA講習@北海道大学
52
以前のシステム
~30cm
水平ストリップ64本 + 垂直ストリップ64本
NIM modules
大きい!
Pre-amps.
GEMチェンバー
16chs x 8
CAMAC modules
FPGA講習@北海道大学
GEMの大きさ=10cm x 10cm
53
現在のシステム
ノートPC
低電圧電源
高電圧電源
全エレキが
入っている
GEM
チェンバー部
150mm
510mm
FPGA講習@北海道大学
明日の実習で使用する
エレキはさらに新しい。
後で紹介
54
検出器システムの構成
電源ユニット
+2.5V, -2.5V, +3.3V, HV
PCに直接接続でき
データ処理が容易
Ethernet HUB
イベントデータ (TCP)
PC
制御命令 (UDP)
全ての操作はイーサネット経由で行う
FPGA講習@北海道大学
55
Block diagram
Analog monitor for a selected sig.
チェンバーから256ch
Event buffer
FE2009
(ASD)
GbE PHY
GbE
Sampler
at 10ns
SiTCP
Coincidence
unit
FPGA講習@北海道大学
56
ASICボードのブロック図
ASIC FE2009
チェンバーから
一つのASICに32個入っている
信号増幅
波形整形
比較器(デジタル化)
256
64
基準電圧
ASICを全部で8個使用している
FPGA講習@北海道大学
57
FPGAボードのブロック図
一つのFPGAに入っている!
ASICから
デジタル化信号
256
サンプラー
100MHz
パルス幅
フィルタ
ヒットパターン・データ
コインシデンス
回路
データ
フォーマット
ネットワーク
処理
コインシデンス・データ
Vth閾値設定
FPGA講習@北海道大学
58
New Readout Board
FE2009
LTCC KOA
(For ASICs)
-2.5V
(For ASICs)
FPGA
+3.3V
150mm
256 signal inputs
+2.5V
(For Digital Circuit)
Analog Sum Out
Reset In
Clock In
T0 In
Gigabit Ethernet
Port
FPGA講習@北海道大学
200mm
59
前半のまとめ
 ASIC, FPGA技術を使うと検出システムを小
型化できる
 高精度化、高機能化する事ができる
 特にデジタル回路はFPGAを用いれば簡単に
自分専用集積回路を作ることが出来る
FPGAは実験に有効なツールである!
FPGA講習@北海道大学
60
デジタル回路入門
FPGA講習@北海道大学
61
デジタル回路の構成要素
O=A&B;
O=~I;
O=A|B;
全てのデジタル回路は
この4つの要素(回路)のみで構成されている
CPU, DSPなど一見複雑な回路もこの4つの組み合わせで設計可能
FPGA講習@北海道大学
注意)2つの出力を直接接続してはいけない!!
62
組み合わせ回路
 記憶素子を使わない回路
 AND, OR, INVのみで表現可能
 入出力の関係を表で表すことができる
 入力信号のみで出力が一意に決定する
希望する状態を検出する
信号のコインシデンスを取ったりする
FPGA講習@北海道大学
63
問題1:XOR
A
B
O
A
B
O
L
L
L
H
L
H
L
H
H
H
H
L
基本要素を使って設計して(考えてみて)ください 5分間
AND, OR, INV
FPGA講習@北海道大学
64
基本的な考え方
 いろいろな考え方がありますが・・・
 今回は、Hを出力する条件に注目してみましょう
A
L
H
L
H
B
L
L
H
H
O
L
H
H
L
FPGA講習@北海道大学
ここに注目!!
65
ANDの気持ち
 入力信号から条件を抽出する
 INVと組み合わせる事で特定入力パターンの時のみ
出力する回路を設計できる
 例
 Aかつ~Bを抽出(~はINVの意味)
 気持ちとしては、Aかつ~Bの時のみ出力(H)
丸の位置が移動している
丸の気持ちは?
A
B
O
L
L
L
H
L
H
L
H
H
H
H
L
FPGA講習@北海道大学
この条件を抽出
こちらも作ってください
66
INVの気持ち
I
O
L
H
H
L
 出力にある丸の意味は?
 Lの時に有効
 有効になる極性が反転している
 負論理と言う
 電圧が低い時に有効になる信号(NIMなど)
 Lの条件抽出
FPGA講習@北海道大学
67
ORの気持ち
 入力信号を足す
 条件Aの時または条件Bの時に出力
 ANDと共に使用する事で初めて実用的な条
件抽出ができる
A
B
O
L
L
L
条件A
H
L
H
条件B
L
H
H
H
H
L
と言う事で、次ページのようになります
FPGA講習@北海道大学
68
設計したXOR
条件1: A=H & B=Lを抽出
条件1と条件2を足す
条件2:A=L & B=Hを抽出
FPGA講習@北海道大学
69
XORの気持ち
 入力AとBが異なる時にH
 A=HにするとBが反転する
A
B
O
FPGA講習@北海道大学
A
B
O
L
H
L
H
L
L
H
H
L
H
H
L
70
順序回路
 複雑な動作は順序回路を使う
 組み合わせ回路のみでは、できる事が限られる
 記憶素子を使う
 状態と状態間の遷移と言う概念(ステートマシン)
を導入できる
FPGA講習@北海道大学
71
D-type Flip Flop
この様な図をタイミングチャートと呼んでいます
記憶素子
CLK
D
Q
時間
D:入力
Q:出力
CLK:クロック入力
CLKの立ち上がりでDを取り込む
次の立ち上がりまで保持する
FPGA講習@北海道大学
72
順序回路
入力
組み合わせ
回路
D
Q
出力
(状態)
CLK
現状態(出力)+入力により次の状態(出力)が決まる
FPGA講習@北海道大学
73
状態遷移図
停止
状態を表す
DFFの現出力
矢印が遷移と
その条件を表す
CLR
ストップSW
現在の状態と入力から
次の状態が決まる
計測
休止
実際は状態に出力する数字を割り当てる
FPGA講習@北海道大学
74
同期回路
D Q
D Q
クロック単位で動作を考えれば良いので
設計が簡単
D Q
CLK
CLKが全てのDFFに入力されている
FPGA講習@北海道大学
75
カウンター(スケーラー)
CLK
Counter[1:0]
0
1
2
3
0
1
2
3
0
1
符号(複数信号)はこのように書く
例えば
次のCLKの立ち上がりまでに決定すれば
途中経過は考慮する必要なし
設計が簡単になった!!
実際は値が決まるまでに時間が掛かっている
FPGA講習@北海道大学
76
同期回路のタイミングチャート
CLK
遅延が書かれている
Counter[0]
前頁のタイミングチャート
0ビット目のみ
と言う意味
同期回路の長所は
遅延を考えなくて良い事である
CLK
遅延は書かない事が多い
Counter[0]
データシートなどを見るときに気をつけてください
FPGA講習@北海道大学
77
カウンターの状態遷移
カウンターの動作は
現在の状態(出力)に+1した値を次の状態にする
繰り返し
現在の状態(出力)
+
クロック
次の状態(出力)
外部入力
これを分かりやすく図にした物が状態遷移図
FPGA講習@北海道大学
78
状態遷移図
現在の状態と入力から
次の状態が決まる
状態を表す
DFFの現出力
0
Go to
矢印が遷移と
その条件を表す
CLR
CLR
Go to
3
CLR
1
Go to
Go to
2
これは便利なツールなのですが、ここでは書き方だけ覚えてもらえれば良いです
FPGA講習@北海道大学
79
ステートマシン
状態遷移図を回路にすると・・・・
入力
組み合わせ
回路
D
Q
出力
CLK
状態遷移図が書ければ回路にする事ができる
FPGA講習@北海道大学
80
FPGAと同期回路
 現在の設計は同期回路が一般的です
 FPGAは同期回路で設計する事を前提に設計
されています
 同期回路を上手に設計する事でFPGAの性能を
十分に発揮させることが出来る
 非同期回路設計は一般に難しいです
 慣れるまでは同期回路で設計しましょう
FPGA講習@北海道大学
81
FPGAの構造
目的:FPGAの動作原理を理解する
回路なのに何故書き換え可能なのか?
FPGA講習@北海道大学
82
Field Programmable Gate Array
(FPGA)とは
 柔らかいハードウエア
 主としてデジタル(論理)回路
 最近はアナログ回路もできるようになっている
 論理回路
 ソフトウエアの様にダウンロードして使用する
 通常回路情報を格納するROMが必要
 電源投入時に自動的に動作開始させる為
 毎回手動でダウンロードする時は必要ない
FPGA講習@北海道大学
83
動作原理
基本はSRAM+DFF
入力 0
出力
入力 1
SRAM
入力 2
Address 4bits
Data 1bit
入力 3
D
Q
CLK
RAMなので入力の全ての組み合わせの出力をテーブルを持たせる事ができる。
FPGA講習@北海道大学
84
4入力ANDの時
アドレス
0
1
2
3
4
5
6
7
データ
0
0
0
0
0
0
0
0
アドレス
8
9
A
B
C
D
E
F
データ
0
0
0
0
0
0
0
1
FPGA講習@北海道大学
この様なデータをSRAMに書いておけばよい
85
Slice
 SRAMはLUT (Look Up Table)と言います
 この組み合わせ+αをメーカー毎に名前を付
けています。
 XilinxではSliceと言います
 Sliceが4つでCLBと言います
 データをダウンロードするとは
 このLUTのデータを書き込むことです。
FPGA講習@北海道大学
86
SLICE
LUT
実際はLUT以外にもなる
DFF
Slice
FPGA講習@北海道大学
実際はD以外にもなる
87
CLBとSLICE
FPGA講習@北海道大学
88
FPGA全体の構成
FPGAの構成ブロック
•DCM
•CLB
•IOB
•Block RAM
•Multiplier
データシートを参照してください
ここでは複雑になるので、これ以上説明しません。
FPGA講習@北海道大学
89
まとめ: FPGA
 LUT+DFFの集合体
 回路を書き込むとは
 LUTデータを設定すること
 SRAMベースのFPGA
 電源を切るとデータが消える
 電源投入後に外部からデータをダウンロードする必要あり
 JTAG
 外部ROM
 不揮発性のフラッシュROMベースのFPGAもある
SRAMベースのFPGAが良く使われます
FPGA講習@北海道大学
90
実習
FPGA講習@北海道大学
91
実習内容
FPGA開発の流れを知る
サンプル回路
ツールを使って
FPGAデータを
生成
ボードで
動かしてみる
先ずは、一般的な話からはじめます
FPGA講習@北海道大学
92
開発の流れ
仕様検討
論理回路設計
論理シミュレーション
実
習
で
や
る
部
分
FPGAデータ生成
デバック
完成!!
どんな信号が来て、どんな信号を作るのか?
回路を考え、ハードウエア記述言語(HDL)で記述
設定した通りに動作するか、コンピュータ上で確認
ここでツールを使う
実際に動かしてテスト
FPGA講習@北海道大学
93
ツールがやってくれる事
HDLコード
Synthesize
Implementation
ISE
Generate
Programming file
Programmer
論理合成
4つの要素へ変換、最適化
配置
FPGA内の構造に合わせ
使う場所を決める
データ生成
論理情報データを生成
ダウンロード
ダウンロード
FPGA講習@北海道大学
94
作業ディレクトリ
 以下を作業ディレクトリとします
 C:¥Temp¥LCD
 作業ディレクトリの下にUSBメモリのデータを
コピーしてください
FPGA講習@北海道大学
95
ISEを使ってみましょう!
ISE Project navigatorを立ち上げて下さい
アイコンをダブルクリック!
または、
全てのプロブラム->
Xilinx ISE Design Suite 10.1->
ISE->
Project Navigator
FPGA講習@北海道大学
96
プロジェクトファイルの作成
File
FPGA講習@北海道大学
97
プロジェクトファイルの作成
プロジェクト名と作業ホルダの指定
②
①
HDLで記述するのでこのまま
FPGA講習@北海道大学
98
プロジェクトファイルの作成
デバイスの指定
使用するデバイスを選択する
FPGA講習@北海道大学
99
プロジェクトファイルの作成
新たしいソースファイル
ここでは予めソースファイルがあるので
このまま次へ
FPGA講習@北海道大学
100
Verilogソースファイルの指定
FPGA講習@北海道大学
101
ソースファイルの指定
/Temp/LCD/*.Vを指定してください
FPGA講習@北海道大学
102
ソースファイルの指定
チェックを外して下さい
毎回指定したファイルを参照するようにします
チェックをするとWorkディレクトリ(ISE)にソースファイルがコピーされ、そのコピーしたファイルを使用するようになります。
FPGA講習@北海道大学
103
バージョン管理する場合などにはソースも保存する必要があるので、この様な機能があります。
ソースを書き換えたのに動きが何も変わらない!と、はまっている時はここを確認するのが良いです。
確認画面
FPGA講習@北海道大学
104
取り込んだファイルの確認
FPGA講習@北海道大学
105
プロジェクトの初期画面
こうなりましたか?
FPGA講習@北海道大学
106
実装モードの確認
Implementation
実装モード
Topモジュールに品が付いている
品はTopモジュールとして認識されている意味
Topモジュールを選択してグレーアウト
このモジュールに対してツールを実行すると言う意味
Sourceが
選択されている
FPGA講習@北海道大学
107
さっそくコンパイルしてみましょう!
Implementで
右クリック
Runを選択
エラー後など
やり直す時は
Rerun All
FPGA講習@北海道大学
108
コンパイル
進捗が
ここで分かる
ここにエラーなどの
メッセージが表示される
FPGA講習@北海道大学
109
コンパイル結果
こうなればOK
エラー等で失敗すると
×印になる
FPGA講習@北海道大学
110
ピンの指定
FPGA講習@北海道大学
111
ピン・アサイン
 ツールは信号名を知りません
 ピンを割り当てる必要があります
 ピン情報入力ツールPACE
 注意
 一度Implementプロセスが終わらないとピンリス
トが自動的に出てきません。
 ピンを入力する時はコードのエラーチェックを兼ね
てISEを実行しましょう
FPGA講習@北海道大学
112
ピンリスト(1)
Name
LOC
I/O Std.
Drive Str.
Termination
Slew
LED[0]
F12
LVTTL
8
SLOW
LED[1]
E12
LVTTL
8
SLOW
LED[2]
E11
LVTTL
8
SLOW
LED[3]
F11
LVTTL
8
SLOW
LED[4]
C11
LVTTL
8
SLOW
LED[5]
D11
LVTTL
8
SLOW
LED[6]
E9
LVTTL
8
SLOW
LED[7]
F9
LVTTL
8
SLOW
OSC
C9
LVCMOS33
SW_RST
K17
LVTTL
PULLDOWN
FPGA講習@北海道大学
113
ピンリスト(2)
Name
LOC
I/O Std.
DCE_UART_RD
R7
LVTTL
DCE_UART_TD
M14
LVTTL
DTE_UART_RD
U8
LVTTL
DTE_UART_TD
M13
LCD_DB[4]
Drive Str.
Termination
Slew
8
SLOW
LVTTL
8
SLOW
R15
LVCMOS33
4
SLOW
LCD_DB[5]
R16
LVCMOS33
4
SLOW
LCD_DB[6]
P17
LVCMOS33
4
SLOW
LCD_DB[7]
M15
LVCMOS33
4
SLOW
LCD_E
M18
LVCMOS33
4
SLOW
LCD_RS
L18
LVCMOS33
4
SLOW
LCD_RW
L17
LVCMOS33
4
SLOW
SF_CE
D16
LVCMOS33
4
SLOW
FPGA講習@北海道大学
114
ピンリスト(3)
Name
LOC
I/O Std.
Drive Str.
SW[0]
L13
LVTTL
PULLUP
SW[1]
L14
LVTTL
PULLUP
SW[2]
H18
LVTTL
PULLUP
SW[3]
N17
LVTTL
PULLUP
FPGA講習@北海道大学
Termination
Slew
115
PACEの起動
ダブルクリック
FPGA講習@北海道大学
116
UCFの新規作成確認
UCFファイルを新規に作成して良いか聞いてくるのでYes
FPGA講習@北海道大学
117
UCFファイルとは?
 User Constraint File




ユーザーの要求を記述するテキストファイル
ここではLCD.ucf
以前はテキストで直接書いていた
PACEは入力支援アプリ
 制約例
 ピン配置
 タイミングなど
 ユーザーが指定することはUCFに書く
FPGA講習@北海道大学
118
PACE起動画面
FPGA講習@北海道大学
119
ファイルの指定
UCFファイルとNGDファイルを指定する
FPGA講習@北海道大学
120
PACE起動画面
ダイの表示
プロジェクト作成直後は
ピンリストが生成されない
ピン(Pad)の表示
FPGA講習@北海道大学
121
ピン情報入力
入出力信号(ピン)名
ピン位置
信号の電気的仕様を入力
注意) QFPのピン位置はP12の様に先頭にPが必要
FPGA講習@北海道大学
122
Driverの強さ、ターミネーション
Driverの強さ
終端の種類
信号の状態遷移速度
PULLUP:抵抗を通して電源に接続
PULLDOWN:抵抗を通してGNDに接続
KEEPER:状態を保持
FPGA講習@北海道大学
123
保存して終了
保存したらPACEを閉じる
FPGA講習@北海道大学
124
タイミング制約
 動作周波数
 同期回路でよく使われる制約
 通常、設計時に動作させたい周波数がある
 満たされているかをツールが計算しレポートする
FPGA講習@北海道大学
125
Create Timing Constraints
FPGA講習@北海道大学
126
起動画面
FPGA講習@北海道大学
127
ダブルクリック
クロックの設定はGlobal
FPGA講習@北海道大学
128
クロック周期の設定
50MHzなので
20nsecと入力
FPGA講習@北海道大学
129
タイミング制約設定終了
閉じる
保存するのでYes
FPGA講習@北海道大学
130
もう一度実行
 ピン配置を考慮したファイルを生成します
 再度、実装モードの確認!!
FPGA講習@北海道大学
131
再度コンパイル
UCFが変更されたので
Implement Designが?になった
再度Implementを実行してください
FPGA講習@北海道大学
132
データファイルの生成
FPGA講習@北海道大学
133
Generate Programming File
 よく使うFile形式は2つあります
 BIT
 デバック時に良く使う
 電源投入後、毎回手動でダウンロード
 注意点
 FPGA Start-Up Clock=JTAG clock
 MCS
 ROMに書き込むデータ
 注意点
 FPGA Start-Up Clock=CCLK
 ここではBINを使ってみましょう
FPGA講習@北海道大学
134
Start Up-Clockの設定
Process View
Generate Programming File
右クリック→Properties
FPGA講習@北海道大学
135
FPGA Start Up-Clockの設定
JTAGを選択
Startup Option
を選択
MCSファイルを生成する時はStart-Up
ClockをCCLKに設定
FPGA講習@北海道大学
136
ファイルの生成
Process View
Generate Programming File
左クリック→Run, Rerunで生成
これでBITファイルが生成されました
FPGA講習@北海道大学
137
FPGAへダウンロード
FPGA講習@北海道大学
138
Configure device
 データをダウンロードする。
 ボードのダウンロードモードをJTAGにする
 3E-starter kit: J30-M1のみ接続
 ボードの電源を入れる
 USBケーブルを接続、ドライバのインストール
FPGA講習@北海道大学
139
USBドライバのインストール
FPGA講習@北海道大学
140
USBドライバのインストール
FPGA講習@北海道大学
141
USBドライバのインストール
FPGA講習@北海道大学
142
USBドライバのインストール
FPGA講習@北海道大学
143
USBドライバのインストール
何度か同じ事を聞いてくるかもしれません
前回と同様にインストールしてください
FPGA講習@北海道大学
144
Configure device
ダウンロード・ツール
iMPACT
右クリックRUNで
iMPACTを立ち上げる
FPGA講習@北海道大学
145
確認画面
最初なのでImpact用プロジェクトファイルが無いのでOKを押す
FPGA講習@北海道大学
146
iMPACT起動画面
JTAG使用
自動検出
FPGA講習@北海道大学
147
JTAG検出結果
検出された接続が表示
ダウンロードする
ファイルを割り当てる
ここで画面が変わる
FPGA講習@北海道大学
148
Configure device
使用するFPGA
S3e_evlcd.bitを指定
デバイス毎にダウンロードデータを指定する
FPGA講習@北海道大学
149
Configure device
ダウンロードしないデバイスはBypass
FPGA講習@北海道大学
150
書き込みパラメータを設定
書き込み後Verifyするか
Read backを禁止するか
など設定できる
特に設定しなくてOK
FPGA講習@北海道大学
151
確認
この文字が出ていることを確認
文字が無い時は
この辺の余白で左クリックする
FPGA講習@北海道大学
152
Program
プログラムするチップの図の上で右クリック
右クリック
ダウンロードファイルを変更したくなった時
はここで変更できる
FPGA講習@北海道大学
153
Configure device
成功しましたか?
FPGA講習@北海道大学
154
IMPACTの終了
終了しましょう!
設定を残すためにYesを選択
FPGA講習@北海道大学
155
完了!!
何か動いていますよね?
終わったら、一人ずつ自分の名前を表示するように変更して
再度動かしてください。
FPGA講習@北海道大学
156
ASCIIコード
FPGA講習@北海道大学
157
予備課題1
サンプルコードのLED[0]を書き換えて設計した
XOR回路を実装してください
DIP_SW[0]
LED[0]
DIP_SW[1]
AND回路の記述 assign O=A&B;
括弧も使えます assign O= (A&B);
OR回路の記述 assign O=A | B;
INV回路の記述 assign O= ~IN;
FPGA講習@北海道大学
158
予備課題2
LEDを下の様に点灯させる回路を設計してください
約1秒
約1秒 2進数で0から255まで表示する
初めに戻り繰り返す
FPGA講習@北海道大学
159
参考文献等の情報
 Verilog-HDLを学びたい方
 小林優、“入門Verilog記述” CQ出版社
 小林 優+hdLab開発グループ 著、“HDL独習ソ
フトで学ぶCQ Endeavor Verilog HDL”CQ出
版社
 無料セミナー
 FPGA販売代理店が主催している
FPGA講習@北海道大学
160