FC2カウンター FPGAの部屋 2011年05月12日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Core i7 2600+H67チップセットとGTX460で3画面表示

職場で購入したCore i7 2600+H67チップセットパソコンには、NVIDIAのGTX460グラフィックボードが付いています。

これでGTX460で2画面+H67チップセットで1画面の3画面で使おうと思っていましたが、GTX460を活かすと、H67チップセットのグラフィックが死んでしまって、3画面になりませんでした。(今までは、PCIeにグラボを付けると内蔵GPUはディスエーブルされていたが、H67チップセットからはできるとの情報があった)

Sandy Bridge向けチップセットの機能を集約した「Intel Z68 Express」”の”CPU内蔵GPUとビデオカードを動的に切り替える「LucidLogix Virtu」”を読んで、もしかしてこれで行けるのかな?と思いやってみました。以前、iGPU Multi-Mobitorをイネーブルにしたことはあったんですが、3画面に出来なかったです。

今回はBIOSをアップデートしてやってみることにしました。マザーボードはASUSのP8H67-M PROです。
まずは、最新のP8H67-M PRO 1002 BIOSをダウンロードして、ユーティリティのASUS UpdateでBIOSを書き込み、リブートしました。
BIOS画面で、Advanced Modeにして、詳細->ノースブリッジから、iGPU Multi-Mobitorを有効にしました。(日本語モード)
H67_1_110512.jpg

これで起動させると、めでたく3画面表示ができるようになりました。良かったです。
1世代前のパソコンでは、グラボを2枚入れてあったのですが、1枚のグラボと内蔵GPUで3画面表示をすることができるようになりました。

なお、ASUSのユーティリティ(AI Suite II)を入れておくと、H67チップセットで出力している壁紙に黒い四角が出てしまいます。ASUSのユーティリティはアンインストールしました。それに、回転数の低い静音CPUファンが付いてると警告が出まくりです。
更にBIOSにもモニタがあって、CPUファンが数百回転だと立ち上がれないので、しきい値を200回転に落としました。
  1. 2011年05月12日 18:31 |
  2. パソコン関連
  3. | トラックバック:0
  4. | コメント:0

XUPV5-LX110T Development SystemでMIGを試す3(ISimでシミュレーション)

XUPV5-LX110T Development SystemでMIGを試す2”の続きで、シミュレーションを試みた。

ModelSimでシミュレーションを行うらしく、sim.do があったが、ISimでシミュレーションをやってみようということで、example_design\sim フォルダのddr_model.v, ddr2_model_parameters.vh, sim_tb_top.v, wiredly.v をプロジェクトに入れて、Simulationを試みた。
しかし、Activateコマンドを実行したところで止まってしまった。エラーログを下に示す。

sim_tb_top.\gen_cs[0].gen[0].u_mem0 .cmd_task: at time 20718860.0 ps ERROR: Activate Failure. Initialization sequence is not complete.


初期化シーケンスが悪いのか?と思い調べた。調査結果を下に示す。

1.    9129.485 ns     All banks PRECHARGE
2.    10111.985 ns        LOAD MODE        
    BA=2, EMR2 値は0000、1X refresh rate
3.    11094.485 ns    LOAD MODE
    BA=3, EMR3 値は0000
4.    12076.985 ns    LOAD MODE
    BA=1, EMR1 値は0004、Outputs Enable, RDQS Disable, DQS# Enable, OCD exit, Rtt=75Ω, Posted CAS# = 0, Output Drive Strength Full, DLL Enable
5.    13059.485 ns    LOAD MODE
    BA=0, MR 値は0742、Fast exit, Write Recovery = 4, DLL Reast = Yes, CAS Latency = 4, Sequential, Burst Length = 4
6.    14821.985 ns    All banks PRECHARGE
7.    15804.485 ns    REFRESH
8.    16786.985 ns    REFRESH
9.    17769.485 ns    LOAD MODE
    BA=0, MR 値は0642、Fast exit, Write Recovery = 4, DLL Reast = No, CAS Latency = 4, Sequential, Burst Length = 4
10.    18751.985 ns    LOAD MODE
    BA=1, EMR1 値は0384、Outputs Enable, RDQS Disable, DQS# Enable, Enable OCD defaults, Rtt=75Ω, Posted CAS# = 0, Output Drive Strength Full, DLL Enable
11.    19734.485 ns    LOAD MODE
    BA=1, EMR1 値は0004、Outputs Enable, RDQS Disable, DQS# Enable, OCD exit, Rtt=75Ω, Posted CAS# = 0, Output Drive Strength Full, DLL Enable
12.    20716.985 ns    Activate ここでエラーになる。ERROR: Activate Failure. Initialization sequence is not complete.
    BA=0, address=0000
13.    21691.985 ns    Write 当然、ここでもエラー。ERROR: Write Failure. Initialization sequence is not complete.
    BA=0, address=0000、データはFFFFFFFFFFFFFFFFと0000000000000000の繰り返し
14.    21699.485 ns    Write 当然、ここでもエラー。ERROR: Write Failure. Initialization sequence is not complete.
    BA=0, address=0004、データはFFFFFFFFFFFFFFFFと0000000000000000の繰り返し


問題なく初期化シーケンスが実行されている。

原因は何かと探ったら、ddr2_model.vのbaのインスタンスが3ビット、addrのインスタンスが14ビットだった。正しくはbaが2ビット、addrが13ビットで両方共最上位の1ビットの接続がなく、Xとなってしまった。これで、比較演算がうまくいかなくてDDR2 SDRAMモデル(ddr2_model.v)の初期化の認識がうまく行かなかったようだ。

sim.doを見ると、下のようにdefineされていた。

vlog +incdir+. +define+x512Mb +define+sg37E +define+x16 ddr2_model.v



Project NavigatorのDesignのSimulationラジオボタンをクリックして、シミュレーションモードに移行する。Simulation Behavioral Modelを右クリックして、右クリックメニューからProcess Properties...を選択して、ISim Propertiesダイアログを表示する。
-d オプションの欄にx512Mb sg37E x16 を書いてコンパイルし、シミュレーションしてみたが、ba, addrのビット数に変化はなかった。
XPUV5-LX110T_MIG_1_110512.png

次に、ddr2_model_parameters.vh に直接記述した。

`define x512Mb
`define sg37E
`define x16


その結果、ba=2ビット幅、addr=13ビット幅になって正常にシミュレーションが進むようになった。(図を追加)
XPUV5-LX110T_MIG_2_110513.png

Micron社のメモリモデルはdefineする必要があるのを忘れていた。

#ModelSimはdoファイルでwhen を使ってエラーテストも出来るみたいですね?同じようなことをISimでTCLでできないか?と思って、Helpを見てみたところ、isim condition コマンドで、できそうです。そのうちに試してみようと思います。
  1. 2011年05月12日 16:39 |
  2. XUPV5-LX110T
  3. | トラックバック:0
  4. | コメント:0

Spartan-3A Starter KitでMIGを使用する3(ボードの信号では生成できなかった)

Spartan-3A Starter KitでMIGを使用する2(MIGの生成)”でとりあえず、MIGを生成していみたが、Spartan-3A Starter Kitとピン配置があっていなかった。これでは使えないので、ピン配置をあわせる努力をしてみた。

ピン配置を合わせるには、FPGAのバンク3のピンのうち、Spartan-3A Starter KitのDDR2 SDRAMで使用していないピンをProhibitしてみようと思った。
まずは、PlanAhead のProject ManagerからIPのmig_v3_61_4を右クリックして、右クリックメニューからRe-customize IP...を選択する。(IPをダブルクリックしても起動しました)
MIG_30_110511.png

すると、MIGのダイアログが開く。
MIG_16_110507.png

設定を進めていって、Reserve Pinsのダイアログまで進めた。ここで、バンク3のSpartan-3A Starter KitのDDR2 SDRAM関連のピンだけをAvailable Pinsに残して、残りはReserved Pinsに設定した。
MIG_31_110511.png

これで設定を進めてみたが、Bank Selection For Controller 0 - DDR2 SDRAMのダイアログでエラーが出てしまった。Available PinsだけではMIGではDDR2 SDRAMコントローラを生成できないようだ。残念。。。
MIG_32_110511.png

さて、ここで手詰まりになってしまったので、どうするかだが、Spartan-3A Starter Kitに関しては、Spartan-3A/3AN FPGA Starter Kit Board Design ExamplesDDR2 MIG Reference Designがあるのでこれを使えば良いと思う。しかし、自分で作ったDDR2 SDRAMコントローラがあって正常動作しているので、わざわざリファレンスデザインを使うこともない。今回はMIGのユーザーデザインとのインタフェースを確認出来れば良い。

MIGでは、example_designとuser_designが生成されるが、Project Managerに入っているmig_v3_61_4.vはuser_designの方だった。example_designであれば、DDR2 SDRAMコントローラを制御するラッパーがかぶっているので、手っ取り早くテストをすることができる。次回からは、Project Managerのプロジェクトをexample designに入れ替えて、シミュレーションとインプリントを試してみようかと思う。
MIGの生成はProject NavigatorやProject Managerから生成するのではなく、CORE Generatorを単体で立ち上げて生成するのが良いと思う。その後、example_designとuser_designのどちらかをプロジェクトに入れて使用したい。やり方は、Virtex-5だが、”XUPV5-LX110T MIG Design Creation”辺りを参照のこと。

なお、ISE13.1で、既存のProject NavigatorのプロジェクトをPlanAheadのProject Managerプロジェクトに変更した記事を以下に示す。まだ、完全ではないようだ。タイミング違反などが出ているが、一応動作した。
PlanAhead13.1を試してみた1(インプリメント、シミュレーション)
PlanAhead13.1を試してみた2(実機にダウンロード)

もう1つ、Project Managerでやっていて不満な点は、Project Navigatorだったら、テストベンチのスケルトンファイルを生成してくれたのだが、Project Managerではその方法が見つからないことだ。便利に使っていたので、Project Managerでも生成出来れば良いと思う。(やり方をご存じの方は教えてください)
  1. 2011年05月12日 05:41 |
  2. MIG
  3. | トラックバック:0
  4. | コメント:0