目次
前
次
設計、開発プロセス
HDLで回路情報を記述するには、決まったルーチンがあります。
このルーチンプロセスは、だいたい次のようになります。
- 仕様検討
- ブロック図作成
- 入出力仕様決定
- ブロック記述
- シミュレーション
- 実装
- テスト
順番に各プロセスフェーズを紹介します。
仕様検討
仕様をよく理解し、CPLD、FPGAで実現できるかを検討します。
仕様を検討する場合、次の項目を頭に入れておきます。
- 電源電圧
- 利用可能な最高周波数
- 回路規模
- 利用環境(ノイズ耐性)
- 制御プロセッサの有無
1チップのCPLD、FPGAのゲート数が増え、最近では8ビットの
ワンチップマイコンの回路情報を3つ程度を簡単に入れられます。
最近は、CPLD、FPGAの認知度が上がっているため、何でも応用可能
と喧伝されていますが、デジタル回路であるCPLD、FPGAで実現する
よりも1チップのマイクロコンピュータやアナログICを使った方が
遥かに安価で高性能を実現できる場合もあります。
その辺を、よく検討します。実現方法は、唯一ではないはずです。
CPLD、FPGAで実現しない方がよい内容をリストします。
- アナログ処理
- アクティブフィルタ
- 汎用ロジックICの代用
- 浮動小数点演算
- 通信処理
反対に、CPLD、FPGAで実現した方がよい内容をリストします。
- 並列処理
- 積和演算
- 小規模シーケンサ
- 独自演算回路
- PID制御
ブロック図作成
仕様確定後に、ブロック図を作成します。
プログラムベースで設計、開発を始めた技術者の中には、いきなり
回路情報をコードで入力する方がいます。ソフトウエアでは、その
手法は通用するかも知れませんが、ハードウエアを記述する場合は
100%途中で挫折あるいは破綻します。
ハードウエアは、並列動作が基本なので、ひとつのブロックに着目
して最適化しても、全体では最適化されないことが多いのです。
また、回路規模が大きくなると、開発を5人程度で分担します。
その際、ブロック図がないと船頭がたくさんいる船と同じ状態に
陥ります。必ず、ブロック図を作成し、役割と責任分界点を明確
にします。
並列で動作している事実を忘れては、CPLD、FPGAのもつ特長が生きません。
ブロック図を作成し、各々のブロックで何を実現するのかを検討します。
実現内容を決めたら、ブロック間の信号線を極力少なくするように
動作を決めます。ブロック間を往来する信号線が多いと、配線に要
する領域が増え、遅延と処理の時間が増えます。
また、ブロック間の往来信号線が多いと、発生する熱が増えたり、
1チップの中に全回路を封入できな事態に結びつきます。
入出力仕様決定
ブロック図が完成すると、各ブロックの入出力仕様を決定します。
信号線は、漏れなく重複がないかを確認します。
各ブロックの入出力仕様を考えるには、プログラミング言語のC
で関数を定義するイメージです。Cの関数では、返値は1個のみ
ですが、CPLD/FPGAでは、複数の信号線を出力にできることと、
双方向の信号線を定義できるという違いがあります。
信号線では、正論理(Hに意味あり)か負論理(Lに意味あり)を
この時点で決めてしまいます。特に2つ以上のブロックで同じ信号
線を利用する場合、決めておかないとブロック内部を記述すること
もできなくなります。
入出力仕様を決定したならば、ドキュメントにまとめ、保存します。
全体のブロック図と各ブロックの入出力仕様がドキュメントになって
いると、不具合が発生した場合の原因追求に役に立ちます。また、
チップのテストを考える場合の資料になります。
ブロック記述
入出力仕様を決定後に、はじめて回路の動作を考えます。
回路動作決定は、開発の後半あたりにします。
それまで、要求仕様から実現仕様を策定するのに費やします。
各ブロックの内部は、ISE_WebPackの中にある雛形を参考に
記述していけばよいのです。VHDLの言語仕様、記述例等は、
ISE_WebPackの中に含まれるので、参照しながら、必要な内容
を付加、不要部分を削除という作業になります。
シミュレーション
各ブロック記述後、各ブロックのシミュレーションをします。
入出力仕様で信号線の内容が確定しているので、それに従って
シミュレータで動作を確認します。
ブロック間をわたっている信号線は、仮決めで遅延を含ませて
動作がおかしくならないかを確認します。
シミュレーションでは、理想状態、最悪状態の2つに限定して
動作を確認します。最悪状態にあるとき、該当ブロックがどう
いう振舞いをするのかがわかれば、その対策用回路を付加する
ための手がかりとなるからです。
各ブロックごとのシミュレーションが終了したならば、全体の
シミュレーションをしますが、コンピュータの性能によっては
時間がかかり過ぎるので、実機で確認する方が簡単です。
実装
各ブロックのシミュレーションで、理想状態、最悪状態を確認後
ダウンロードケーブルで、回路情報をCPLD/FPGAに転送します。
実装できない場合もあります。接続の仕方が間違っているとか
ケーブル内部で断線している等、様々な要因があるので正しく
回路情報をチップに実装できたかを確認する必要があります。
CPLDでは開発環境上で、ある程度の性能を判断できます。
FPGAの場合、回路をチップのどこに実装するかによって
性能が著しく変わることがあります。
テスト
実装後、動作しないであるとか、性能が足りないとわかることも
あります。そのためのテストが必要になります。
どこで足を引っ張っているのかは、千差万別ですが見落として
しまう内容をリストします。
- 電源電圧が規定範囲外
- 電源の電流容量不足
- 与えているクロック周波数が高過ぎる
- I/Oの電圧が規定範囲外
- 計測機器の接続忘れ
これらの見落としがない場合は、内部回路のどこかに問題が
あります。そこで、ドキュメントを利用し、1ブロックごと
に動作を確認します。
ブロックごとの動作確認には、信号線を使っていない余っている
ピンに接続し、外部の計測機器で測定できるようにするか、JTAG
の特性を活用してデバッグします。
目次
前
次