Spartan-6 LX9を使ったLPDDR SDRAMのハードマクロ実装(その1)
例のAVNET Spartan-6 LX9 MicroBoardにはLPDDR SDRAM(MT46H32M16)が載ってます。
Virtex-6と同様Spartan-6にもMCB(Memory Controller Block)が搭載されており、外部メモリを内蔵ハードウェアで駆動します。
MCBは通常はMIGツールを利用してGUIでリソースラッパーを生成して使用します。
◆参考文献
- ザイリンクス アンサー #35238
- テクニカルサポートセミナー
◆はじめに
ISEを起動します。自分は普段使いのISE Design Suiteが13.2ですが、12.xでも同様です。11.xでは後述する内容が既知のバグにより動作しませんので、アップデートをお勧めします。
また、MIGツールが日本語が含まれているフォルダを誤認識するようなので、なるべく半角英数字フォルダを使ってください。
◆プロジェクトの準備
※以降、作業用フォルダはC:\sp6lx9testとします。
Project navigatorを起動します。
File -> New Project ->
Name: lpddr_mig Location C:\sp6lx9test\lpddr_mig
Next ->
以下の項目を修正します。
Family: Spartan6 Device: XC6SLX9 Package: CSG324 … Preferred Language: (VHDLかVerilogかお好きなほうで)
◆MIGツールの使用
次にMIGツールの生成するIPコアを準備します
Project -> New Source...
New Source WizardでIP(CORE Generator & Architecture wizard)を選択し、File nameを「mymig」などとしておきます。
Next ->
View by function タブのMemories & Storage Elementsの項目の中のMemory Interface Generatorsの「MIG Vertex6 and Spartan6*1」
Next -> Finish
そうすると、しばらくたってMIGのオプション選択画面になる。
Next ->
次もNext ->
ピンコンパチ画面も面倒いのでそのままスキップ(ぉぃ Next ->
Memory Selection画面ではBank3*をLPDDRに指定。(なぜBank3*なのかは参考資料UG388「移行性とバンキング」のセクションを参照してください) Next ->
Memory Partでは、LX9マイクロボードに搭載されている「MT46H32M16XXXX-5」を選択。
Next ->
Next ->
Port ConfigurationではドロップダウンからTwo 32-bit bi-directional and four 32-bit undirectional portsを選択しますが、チェックはport0のみにします。
Next -> Next -> Next ->
System ClockをSingle Endにします。
Next ->
後編でシミュレーションをするので今回はAcceptにチェックしてNext -> Next -> Generate
これで、ラッパーその他のツールが生成されました。
Projects -> Add copy of source...
で、C:\sp6lx9test\lpddr_mig\ipcore_dir\mymig\user_design\rtlのフォルダに生成されてるRTLをプロジェクトにインプリメントしてですね…
「は?プロジェクト?つくってねーよ。わかんねーよいきなり言われてもラッパーなんてどんな風に書いてあるかわからんし」
UG416のp.36表1-7によると、プロジェクト設定を丸ごと作ってくれるバッチファイルがあるそうです。
でもその前に、環境設定パスが(LinuxはLD_LIBRARY_PATH)通っていなければなりませんので、
「マイコンピュータ」を右クリック→ プロパティ → 詳細設定 → 環境変数(N)
をクリックしてユーザー環境変数に
変数:PATH 値:C:\Xilinx\[_ise_version_]\ISE_DS\ISE\bin\nt\;
そうしたら、C:\sp6lx9test\lpddr_mig\ipcore_dir\mymig\example_design\par\
にある、
create_ise.bat
を実行するとISEプロジェクトを全部作ってくれる。ただし、creeate_ise.batを編集画面で確認し、この記述がなかったら追記する
call rem_files.bat
- ↓ここから
- ↑ここまで
いったんISE Project Navigatorを終了して、先ほどのparフォルダのtest.xise(またはtest.ise)をProject Navigatorで開く。
これで、Implement Designまでできるプロジェクトが完成したはず。(※もしこれでエラーが出たら、ライセンスキーがうまく取得できていないか、同じライセンスを2台以上のPCで使っていないか確認する。たぶんエラーメッセージにもそのようなことが書いてあるはず。)
*1:12.xでは単に「MIG」という項目になっている