2019-07-10 (水) 10:54:17

はじめに

FPGAを使った基板設計を考えます。

ストップウォッチ01を例にします。

25MHz程度のマイコン基板の設計経験があることを前提とします。

「FPGAはピン配置が自由」と私自身述べてきましたが、では一体どう自由なのか、どう考えてればいいのか、本当にそのメリットは何なのかを説明していきたいと思います。

マイコン基板との違い

FPGAを使う理由にまとめました。

専用ピンを把握する

自由に使えない、または制限のあるピンがいくつかあります。

ピンアサインはMachXO2の「ピンアサイン」ファイル(xls)を参照してください。

そのピンが実際に目的どおりに使えるかどうかを確認するには、HDLの記述をし実際に論理合成(コンパイル)することです。

もし、入力専用ピンに出力信号を接続すれば、論理合成ツールは「接続できない」エラーを返してきます。

以下のピンは専用ピンとして把握しておく必要があります。

  • 電源ピン
  • JTAGピン
  • コンフィグピン
  • クロック入力
  • N.C.

詳しくはMachXO2にまとめました。

おおまかな部品配置を決める

OpenOffice?.org Draw、Microsoft Visio等を使って部品サイズを正しく入れておけば、実際の基板のイメージがつきやすくなり、入る、入らないのミスが少なくなります。

以下の部品の配置を考えます。

  • FPGA LCMXO2-1200HC5TG144C
  • 7segLED C-551SRD
  • 5φLED OSDR5113A
  • タクトスイッチ DTS-6-V
  • 電源ジャック 2DC0005D100
  • 電源レギュレータ LP38691DT3.3
kiban1.png

外形サイズは概算です。FPGA周辺にパスコンを入れると、ちょっと広がりそうな気がします。

あと7segの抵抗も入っていません、ま、位置関係を見ます。

以上の検討から、FPGAの上側に7segとLED出力、右側にスイッチ入力がくる予定になります。

今回は7segをトランジスタ等で増幅せず、スタティック点灯をさせます。

1ピンあたり10mA流すとして、合計280mA流れます。本当に流せるのでしょうか。

まず「1ピンあたり10mA」について、HandBookの10-3ページの記述では、「4,8,12,16,24」mAに設定できるようです。

合計電流については、HandBook3-8ページに

The average DC current drawn by I/Os between GND connections, or between the last GND in an I/O bank and the end of an I/O bank, as shown in the logic signal connections table shall not exceed n * 8mA. Where n is the number of I/Os between bank GND connections or between the last GND in a bank and the end of a bank.

とあります。

GNDに挟まれたI/Oにおいて、そのI/Oの合計はピン数×8mA流せます。

例えば

I/O  I/O  I/O  VCC  GND  I/O  I/O  I/O  I/O  I/O  I/O  VCC  GND

とあるとすると、GNDに挟まれたI/Oは6本あります。これらのI/Oは合計で48mA流せます。ですから、割り当て方法としては

I/O  I/O  I/O  VCC  GND  I/O  I/O  I/O  I/O  I/O  I/O  VCC  GND
                         4mA  4mA 24mA  8mA  4mA  4mA   

と設定することができます。

この制限をうまく利用して、I/Oを駆動させます。

fpga_powr.png

今回はLEDを接続することを考え、12mA流すときにそれぞれのGNDで囲まれたグループでとれる本数を考えます。

HDLを合成してみる

以上の条件を踏まえて、HDLを合成してみます。

ピンアサイン表から、

7segLED
BANK0112,114,126,128,132,138,140,142
BANK174,76,82,84,86,92,94,96
BANK238,40,42,44,47,49,55,57
BANK31,3,10,12,14,20,22,24
タクトスイッチ
96,98
LED
BANK326
BANK270

電流容量でここまで気にするなら、素直にバッファなり、トランジスタアレイなりつけたほうがいいと思いました。

ピン番号を連続させていないのは、基板製作のときにやりやすいと思い、1つずつ空けました。また、スルーホール、パスコン等が載ると思われるGND、VCCの横も使わないようにしました。

クロックは内蔵オシレータを使う予定なのでこの設計では考慮していないですが、いくつか開いています。

以上の内容で実際に論理合成を行ってみます。

もし、入力専用ピン、出力専用ピンなど条件に合わない設定があった場合、この段階でエラーが出ます。

論理合成後、エラーが出ない場合でも注意しなければならない点があります。

記述の間違い等により、入出力ピンがそもそも最適化により削除されてしまう場合です。

err1.png

このとき、左図のように、「消費スライス数1」というのはちょっとありえないので、どこかに間違いがあると考えられます。


err2.png

「Design」−「Generate Hierarchy」をクリックします。すると、左図のような記述したHDLの階層構造が表示されます。

この中で黄色で表されているのがワーニング、赤で表されているのが、エラーがある部分です。

今回のエラー内容は、モジュール同士を接続するのに「wire文」でワイヤの宣言が抜けており、そのネットが存在しない->モジュールがいらないと判断され、最適化されてしまったようです。

回路設計

これにより、大まかなピンアサインが決まりました。

部品ライブラリの作成

schlib1.png

機能名でまとめる方法。信号は把握しやすく、回路図上きれいにまとまる。


schlib2.png

部品レイアウトどおりに作成する方法。信号名がまとまっていない場合はありますが、描画した通りの配線になります。

部品ライブラリ作成は、後者がいいと思います。

理由は、ピンアサインの詳細を回路図上で検討しやすいからです。

同一パッケージに複数の容量があり、どの容量を選択するか決めていないときは、有効なユーザI/Oの一番少ないものを選択し、回路設計を行います。

これは同じパッケージでもユーザI/O数の違い(ユーザI/Oとして利用できるものと、N.C.になっているもの)があり、そこだけピンコンパチでなく、部品交換のネックになります。

そのため、回路設計の段階では一番I/O数の少ない部品を使います。

I/O数が足りない状況であれば、その段階でピンコンパチでないことを把握した上で、I/O数の多い部品に変更します。

電源部分

sch01.png icon_pdf.gifsch01.pdf schfile.gifsch01.schfile

VCC、VCCIO、GNDを結線します。

今回VCCとVCCIOは同電位ですが、以後違う設計もあり得ますので、基本的に分けて描画します。

sch02.png icon_pdf.gifsch02.pdf

すべてのVCC、VCCIOに1個のパスコンを繋ぎます。検討に応じて、パスコンを削除することができます。

7seg部分

sch03.png icon_pdf.gifsch03.pdf

7segLEDを配置します。今回スタティック接続にしました。そのため、各抵抗には270Ωを使います。

sch04.png icon_pdf.gifsch04.pdf

上記の各グループで取れる本数を考慮し接続してみます。

基板設計

使う部品のライブラリは作成済みとします。

pcb01.png icon_pdf.gifpcb01.pdf

部品を配置します。上で大まかに決めていますのでその通りに置いてみます。

※7segLEDの抵抗を入れ忘れました。後日修正します。

7segLEDのネットが入り組んでいるので、変更します。

pcb02.png icon_pdf.gifpcb02.pdf

すっきりしましたが、一部(赤で囲ったところ)結線が集中していますので、さらに修正します。

このとき、上で検討した各ピンからとれる電流値を越えないようにします。

pcb03.png icon_pdf.gifpcb03.pdf

基板設計を続けます。

pcb04.png icon_pdf.gifpcb04.pdf

この記事は役に立ちましたか?

選択肢 投票
役に立った 25  
役に立たなかった 10  
コレジャナイ! 2  

(画像の文字列を入力して下さい)

添付ファイル: fileschlib2.png 1401件 [詳細] fileschlib1.png 1362件 [詳細] fileerr2.png 1177件 [詳細] fileerr1.png 1425件 [詳細] filekiban1.png 618件 [詳細] fileuart2.png 615件 [詳細] fileuart3.png 594件 [詳細] fileuart1.png 665件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-10 (水) 10:54:17 (74d)