2012年3月25日日曜日

SPIコントローラの作成 2

RTL作成が一応完了したのでMicronのデバイスモデルを使ってSimulationを始めた。
RTLはspi_reg と spi_io の2 モジュール構成に分けた。 spi_ioが実際の通信を行うモジュールで、
spi_reg はCPUが読み書きするレジスタモジュールだ。
そのレジスタ仕様と各モジュールのRTLを以下に示す。




以下はSimulationの様子

N25QモデルにRDID (Read Identification) Commandを発行してみたところ。
ターミナル画面にモデルが出力したログとspiモジュールが受信したデータ(波形のr_rxd)が
一致しており、転送はうまく行っている。


以下はReadコマンド(Standard SPI)の場合


以下はDOFR (Dual Output Fast Read)とDIOFR(Dual Input/Output Fast Read)の場合
DOFRはリードデータ転送のみがDual (2線)で行われるのに対して、
DIOFRはリードアドレス転送もDualで行われるので若干時間が短縮できる。


以下はQOFR(Quad Output Fast Read)とQIOFR(Quad Input/Output Fast Read)の場合
ターミナル画面のほうでERRORが出ているがこれは、QIOFRの場合はDummy clock cycleを10
以上の設定にしなければならないのだが8のままにしているためだ。


以下はStandard SPIからQOFRまでを通しで実行した場合


動作的には問題なさそうなので、実機検証に移行しようかな。

0 件のコメント:

コメントを投稿

ERROR: Failed to spawn fakeroot worker to run ...

なにかと忙しくてなかなか趣味の時間を確保できない。 ...orz  家の開発機のOSはLinux Mintなのだが、最近バージョンを22に更新したところ、myCNC用のpetalinuxをビルドできなくなってしまった。ビルドの途中で ERROR: Failed to spawn ...