guruguru123’s diary

かなり雑な作業日記です。

SDRAMコントローラの作成とRS232C通信ブロックとの接続

 以前SDRAMコントローラを作ろうとして失敗、その代わりにFPGA内部RAMを使っていた。しかし、SerDesを用いてAD9851用の大量データを蓄えるとなると容量が明らかに足りない。そこで改めてSDRAMコントローラを作成することにした。

今回はZPUinoのソースにあるSDRAMコントローラを参考に作成していった。

以前も書いたが、PapilioProに乗っているSDRAMはMT48LC4M16A2。4バンクでロウアドレス12bit、カラムアドレス8bitで指定し、1アドレスに16bit格納できる。なぜかPapilio Pro上のSpaltan6の配線図を見るとアドレス信号線が13本出ているため、このうち使わない13bit目は'0'としておく。

AD9851チューニングワードは40biであり、おそらく40bitに何ビットか情報を加えることになるため、16bitでは足りない。参考にするソースでは32bitを1セットにするためにカラムアドレスの下位1bitを使って実現していた。今回は練習として、このソースと同じく32bitを格納するとした。

SDRAMコントローラの記述が終わったので、前回使った、コマンド受付用RS232C通信ブロックを書き直した。確認用としてコマンドはrew1,rew2で書き込み、rer1,rer2で読み出しを行うとした。格納する32bitはキーボードから入力する。

rew1,rew2:このコマンドw受け付けた後、データが32bitになるまでデータを受け付 ける。32bitになったらreq_writeを立ち上げ、アドレスを有効にする。

rer1,rer2:このコマンドを受け付けたとき、req_readを立ち上げ、アドレスを指定する。このまま読み出し完了信号(data_validのアサート)を待つ。信号が来たらRS232C通信にてデータをPCへ送る。

動作テストを行ったところ、32bitが正常に書き込み、読み出しができた。

これをSetDesと連携して使って行きたい。