フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2006-8-20 20:07 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3088 |
XilinxのCPLD/FPGAでのレジスタの初期値に関する補足 そのまま動くといってもPost-Route Simulationした場合で、そのままですとCPLD/FPGAともBehavioral Simulationではカウンター値が不定になって意図した通りには動いてくれません。これはBehavioral Simulationが純粋にHDL記述情報のみでシミュレーションを行うためでデバイス固有の初期化にからんだ初期化動作は含まれないためです。
なのでVerilogの場合はinitialプロセスで少なくともカウンターの初期値は代入しておかないとカウンター値が不定のまま動かないことになります。 initialプロセスでレジスタを代入するとそのためのプロダクトタームが余分に消費されるのではという心配が沸きますが、RTL Viewerで見てもそれに該当する部分は見つかりません。レジスタの初期値は実はプロダクトターム外のCPLD/FPGAコンフィグレーションデータに反映されるからです。 ISEのUser Constraintsを作成する際にMiscのところのINIT ValueというところにFF等の初期値を設定するところがあります。これがおもしろくてデザインを入力すると自動的に該当するレジスタのリストが一覧で出てきます。各FFについて1か0を設定することが可能です。何も指定しないとデフォルトは0だと思われます。 実際にinitialプロセスでは何も代入せずにUser Constraintsで初期値を設定してPost-Route Simulationしてみるとレジスタの初期状態に設定した値が反映されていることが確かめられます。 このあたりの仕組みはXilinxの最新のCPLD/FPGAで確立したところのようでCPLDもFPGAもSRAM方式になりCPLDはFPGAとは少しアーキテクチャが違うFPGAとコンフィグレーションデバイスを一緒に内蔵したチップといった感じです。こうした傾向はALTERAもMAX IIから似たようなことをしてますね。ALTERAの場合はFPGAもCPLDもアーキテクチャはほぼ一緒ですが。 Xilinxの最新のデータシートを見るとCoolRunner-IIでもSpartan2Eでもレジスタの初期化にからんだ信号GSRは呼び名が一緒ですがそれ以前は違っていたようです。実際には今もCPLDとFPGAとでは少しアーキテクチャ上の差異があります。 Alteraの場合はいずれにせよinitialプロセス自身を論理合成ツールがサポートしていないのでレジスタは0リセットなのかなとふと疑問に思ってきました。もしかしたらXilinxのように設定できるのかもしれませんしできないのかもしれません。 |
フラット表示 | 前のトピック | 次のトピック |
投稿するにはまず登録を | |