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 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...