Spartan3E Starter Kit

Spartan3E Starter Kitは、DDR SDRAM コントローラを作りたいがために、最初に出力のためのLCDの表示回路を作成、次にデータを入力するためにロータリーエンコーダー回路を作成して、最後に DDR SDRAM コントローラを作って、ロータリーエンコーダー回路、LCDの表示回路に接続してテストした。
いまややりたいと思っているのはSPIコンフィグのテストです。

Spartan3E Starter KitのLCD
(Spartan3E Starter KitのLCDをXilinxのプロセッサIP、PicoBlazeを使用して表示してみることにした)
Spartan3E Starter KitのLCD2
(Spartan3E Starter KitのLCDの使い方をSpartan3E Starter Kitの初めからコンフィグROMに入っているプロジェクトs3esk_startupのマニュアルを見てお勉強した)
スパルタン3EスターターキットのLCD表示回路1
(スパルタン3EスターターキットのLCD表示回路を作っているところだ。 LCDの上の列と下の列に右端から4つの16進数を表示する回路だ。ステートマシンを図示)
スパルタン3EスターターキットのLCD表示回路2
(PicoBlazeの入出力ポートの仕様)
スパルタン3EスターターキットのLCD表示回路3
(LCD表示回路も大分できて来た。アセンブラも書いて、シミュレーションをしてみた。シミュレーション波形を表示)
スパルタン3EスターターキットのLCD表示回路4
(結構PicoBlazeのアセンブラにバグがありましたが、LCDに表示できるようになりました)
スパルタン3EスターターキットのLCD表示回路5
(試せる様にスパルタン3EスターターキットのLCD表示回路のプロジェクトあり。足りないファイルを付加して、プロジェクトをインプリメントする方法)
スパルタン3EスターターキットのLCD表示回路まとめ
(仕様を示した。スパルタン3EスタータキットのLCDの初期化方法。PicoBlaze用の入出力ポートの仕様。PicoBlazeのプログラムの説明)
スパルタン3EスターターキットのLCD表示回路その後
(スタータキットのユーザーズマニュアルに書いてあるLCD操作タイミングとST7066Uのタイミングが違うのではないかというコメントをSimさんからいただいた。
確かにスタータキットのユーザーズマニュアルを見るとST7066Uを使っていると書いてある。ためしにST7066Uをターゲットにタイミングを書き換えてみた)

スパルタン3Eスタータキットのロータリーエンコーダ1
(スパルタン3Eのロータリーエンコーダの回路ができた。ロータリーエンコーダの回路の仕様を説明)
スパルタン3Eスタータキットのロータリーエンコーダ2
(スパルタン3Eスタータキットのロータリーエンコーダの回路の説明。スパルタン3Eスターターキットのロータリーエンコーダの回路のプロジェクトあり。)

Spartan3E Starter KitでのDDR SDRAMコントローラのテスト
(Spartan3E Starter KitでDDR SDRAMコントローラを作成中。トップのDDRtest.vhdのport map)
DDR SDRAMコントローラ回路の途中経過
(DDR SDRAMコントローラ回路は、以前Virtex2で作ってあったものをSpartan3Eに変更しているので、Spartan3Eには存在しないプリミティブを使用していた。Spartan3EではDCMの可変位相シフトが変更になった件)
Spartan3E Starter KitのDDR SDRAMコントローラについての疑問
(Spartan3E Starter KitのDDR SDRAMコントローラがISEでインプリメントできるところまで来たが、どうしてもMAPでエラーが出てしまう。Spartan3ではインプリメントできたが、Spartan3Eでインプリメントできない)
Spartan3E Starter KitのDDR SDRAMコントローラについての疑問2
(Spartan3E のライブラリの説明書にFDDRCPE(ASYNC set/reset)とFDDRRSE(SYNC set/reset)がないことがわかった。ODDR2を使ってgeneric mapでSYNCとASYNCを切り替えるのだそうだ。さらに入力もIDDR2があるようなのでこれを使うことにした。 これでも最初と同様にエラーが出てしまった)
Spratan3E Starter KitのDDR SDRAMコントローラまとめ
(Spratan3E Starter KitのDDR SDRAMコントローラがとりあえず動いてきた。Spartan3EでもFDDRCPE,FDDRRSEも使用できた。ODDR2でもどっちでも良いよう だが、Internal Errorの危険があるので、今のところFDDRCPE,FDDRRSEを使うことにした。DDR SDRAMコントローラのタイミングチャートあり。IOB内のIFD_DELAYを使用して、DDRデータをちょうど良いところまで遅延して、FPGA内 のクロックで受けることにした)
Spratan3E Starter KitのDDR SDRAMコントローラまとめ2
(DDR SDRAMの論理シミュレーション波形から動作を説明している)
Spratan3E Starter KitのDDR SDRAMコントローラまとめ3
(”Spratan3E Starter KitのDDR SDRAMコントローラまとめ”を良く見てみると、リード時のデータを3/4クロックずらすより、1/4クロックずらせて立下りエッジからデータをサンプ ルした方が受けられるIFD_DELAY_VALUEの値の幅が広くてよいと思った。シミュレーション波形で説明)
Spratan3E Starter KitのDDR SDRAMコントローラ(プロジェクト)
(Spratan3E Starter KitのDDR SDRAMコントローラのプロジェクト(VHDL)あり。DDR SDRAMコントローラの中のcontrollerはNGCファイルである。(つまりソースはない))
Spratan3E Starter KitのDDR SDRAMコントローラの説明
(Spratan3E Starter KitのDDR SDRAMコントローラの仕様の説明。シミュレーション波形で説明)
Verilog2001版DDR SDRAMコントローラーのインプリメント
(Verilog2001版DDR SDRAMコントローラーのインプリメントの仕方をキャプチャ図を使って詳しく説明。プロジェクトを作って、VHDLファイルを追加するところまで)
Verilog2001版DDR SDRAMコントローラーのインプリメント2
(Verilog2001版DDR SDRAMコントローラーのインプリメントの続き。使い方を説明)
inserted by FC2 system