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
© Copyright 2024 Paperzz