2012年4月6日金曜日

SPIコントローラの作成 3

DigilentのAtlysやAvnetのMicroboardで使われているSPI Flash ROMのN25Q128用の
SPI コントローラを作っている。  RTLは一応完成しMicronのSimulation モデルを使っての
Simulationでも動作確認できたので、Atlysボードで実機デバッグをやってみることにした。
手始めに Standard SPI モードでRDID (Read Identication)コマンドを発行してみたのだが、
読めない。。。 何度試してみてもオール0が読めてしまう。コントローラの動作周波数を1MHz程度
に下げてみたりしたのだが、やはり読めない。Readコマンドも同様で読めない。
コントローラを止めてSPI I/Fの各信号を直接ソフトウェアから制御できるようにして、ソフト的に制御
してみてもやはり読めない。
Flash ROMのDQ1と接続しているSpartan6のピンにPULLUP属性をつけた場合、オール1が読め
るので、どうやらFlash ROMのDQ1ピンがドライブされずHi-Zのままになっているようだ。
デバイスが壊れているんだろうか?? でも、FPGAのコンフィグレーションは出来ている。
そこで、iMPACTでSPI FlashのReadbackやID情報の取得が出来るか試して見たところ、
IDCODEがオール0で読めてしまい、エラーとなることがわかった。
現象的には一致している。


でも、FPGAのコンフィグレーションは出来るんだよなー。
ボードの電源をONにすると、出荷時に書き込まれている回路情報でFPGAはコンフィグレーションされ、UART I/Fに文字列が送信されたりボタン類を操作するとLEDが点滅したりする。
この機能を果たす回路情報は他ならぬFlash ROMからFPGAに読み込まれている筈だ。????

うーむ。。。解らん。

解った!!

FPGA コンフィグレーション時にQIO-SPIモードに設定されるようだ。
QIO-SPIモードでRDIDコマンド(MIORDID)を発行したらリードできた。
なるほど、そういうことか。 やた!! 一歩前進だ。





0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 22

今使用しているモータードライバはDM556Dというものだが、このドライバはMicro Stepが 800 [pulse/rev] 〜 40000 [pulse/rev]の範囲で設定できる。 Mi...