リセットについての考察 のバックアップソース(No.1)

更新

[[公開メモ]]

#contents

* リセット信号の扱い [#nf87df7f]

FPGA 開発を始めた当初(半年前くらい?)、
リセット信号の取り扱いについてあまり深く考えておらず、
「何となくリセットが掛かりそうな回路」を書いて満足していました。

しかし、レーシングなどについて勉強してからよく考えてみると、
リセットには慎重な扱いが必要であることが分かってきて、
ここらで一度考え直そうと思い立ちました。

* 参考にした内容 [#y1087302]

- 小林芳直著「定本 ASICの論理回路設計」CQ出版社~
内容的にはちょっと古い気もしますが、レーシングやメタステーブル、スタティックハザードなど、
一目見ただけでは HDLコードに現れてこない注意事項について勉強するにはこれよりちゃんと書かれた本を
見つけられていません。
- http://marsee101.web.fc2.com/reset_of_fpga.html ~
主に回路規模の観点から同期リセットと非同期リセットの比較が行われています
- http://www.fpgarelated.com/usenet/fpga/show/40963-1.php ~
STARTUP_SPARTAN3 等のモジュールを使い GSR により FPGA を初期化する話題
- http://www.mofeel.net/210-comp-arch-fpga/9908.aspx ~
非同期リセットに関する話題
- http://www.xilinx.com/support/documentation/white_papers/wp272.pdf ~
リセット回路構成上の注意をまとめた Xilinx の White Paper
- http://www.xilinx.com/support/documentation/white_papers/wp275.pdf ~
FPGA のプリミティブの機能に合わせて HDL 記述に少し気をつけるだけで、
実質的には同じ動作をする回路を半分程度のサイズにできることがあるという話~
(Xilinx の White Paper)

* 同期リセットと非同期リセット [#f67ab6da]

良く知られるように、リセット信号を持つ回路の構成方法には、
非同期リセットと同期リセットがあって、
たとえば ISE の Language Template にも両方の形が収録されています。

同期リセットと非同期リセットのどちらが回路規模的にお得かは、
ASIC に実装するか、どのメーカの FPGA に実装するか、などにより、
かわってくるそうです。

ASIC などではリセットを使う回路と使わない回路とでは実際にゲート1つ分の
回路規模と遅延が差として現れるため、どのラッチにリセットを付けて、
どこに付けないかは、回路規模およびパフォーマンスに直に効いてきます。

これに対して Xilinx の FPGA では全てのラッチに同期リセットあるいは
非同期リセット用に使える SET/RESET (FDRSE: 同期) および PRE/CLR (FDCPE: 非同期) 
入力が備わってますので、ここに直接リセット信号を繋ぐ限り、
演算器の回路規模や回路遅延への悪影響はありません。
(もちろんリセットネットの配線リソースは消費します)

&attachref;

Counter: 57408 (from 2010/06/03), today: 18, yesterday: 0