enable信号万能説
ある処理ブロックを設計する場合,enable信号を付加するか選択する必要がある.
私は多くの場合,付加するようにしている.
付加しておいた方が処理を有効にするかを制御できるからである.
もちろん,制御信号が増えて制御部に負荷がかかることは覚悟の上である.
しかしながら,場合によってはenable信号を用意しない方が都合の良い場合がある.
データを他のブロックへ入力させるために,数クロック待機させるような場合である.
私の場合,入力データやenable信号によく用いている.
このような場合,数クロック待機してあとは垂れ流しで良い場合がほとんどである.
安全対策と思ってenable信号を付加しておくとそのenableは誰が制御するの?と余計な負荷が増えてしまう.
結局のところ,用途を考えて設計する必要がある.
enable信号の遅延
これは制御部の設計にも関わってくることだが,順序回路を扱っている以上,データはclockのタイミングで伝搬される.各処理ブロックでは,データ処理を有効にするために,enable信号を併用する.データが各処理ブロックに届くタイミングはそれぞれ異なるので,enable信号が必要になるタイミングもそれぞれ異なる.この各処理ブロックへのenable信号をどこで生成するのかが設計の上で問題となる.これはインテリジェンスの配置方法によって2つに分けられる.
- 制御部集中型
- 各機能ブロック分散型
配線遅延
配線による遅延は高い動作周波数においては重要な問題となる.
QuartusIIのシミュレーションにおける評価であるが,CycloneIIでは単純なIN-OUTに10ns近くの遅延が生じている.StratixIIIにおいてもIN-OUTに6ns程度遅延が生じる.もちろん同じプロセッサシリーズ内においても規模によって遅延時間は異なると思われるが,設計者としてはデバイスに依存されない回路を構成する必要がある.
自分で使用するenable信号は,自分で生成せず外部から入力してもらうこと.
不具合発生時には迷わずデバッグ用にoutput設定せよ
不具合発生時にこの値が知りたいといった場面が必ず出てくる.
そのような値は,たいてい内部の値でoutputピンに割り当てられていない.
シミュレーション設定で波形出力しようとしても無効化されて,出力できないこともある.
そのような時は,迷わずoutputピンを1つ追加せよ.
少しの労力を惜しんでも何も進展しない.
プログラム表記かプリミティブ表記か
HDLには,2つの表記法がある.
プログラム的な表記法とFFやMUXを用いた回路的な表記法である.
Verilogファイルを作成する場合,必ずどちらの表記をするかで迷う.
製作日数の見積
個人の能力の差はあると思うが,私の場合の基準は以下の通り.
こういう機能が欲しい.というところから始まって,入出力,動作,デバッグまで考えると妥当.
すんなり制御部だけ設計できればもっと短く完成できるかもしれないが,たいていの場合,各制御ブロックへの修正が入ってくるのでこのぐらい覚悟しておいた方がよい.
最終更新:2008年03月13日 13:12