• 検索結果がありません。

4.3 設計モジュール

4.3.1 メモリコントローラ (SRAM,DRAM)

行列計算などにおいて、多くのデータを扱うにはメモリが必要である。昨年はSRAM をメモリコントローラとして、データの記憶が可能になった。そして、本研究ではそ のメモリコントローラにDRAMも追加し、さらに大容量のデータを記憶できるよう にした。つまり、SRAMおよびDRAMを使用するためのメモリコントローラを設計 した。

このコントローラのentityの構成を表4.2に、制御信号の構成を表4.3に、VHDLソー スを付録1に示す。

信号名 用途 対象 方向

CLK クロック 共通 in stdlogic

RESET リセット 共通 in stdlogic

ADRS アドレスバス 共通 out stdlogicvector(16downto0)

SRAMADRSBUF アドレスレジスタ SRAM in stdlogicvector(16downto0)

ROWADRSBUF 行アドレスレジスタ DRAM in stdlogicvector(11downto0)

COLADRSBUF 列アドレスレジスタ DRAM in stdlogicvector(11downto0)

DATA データバス 共通 inout stdlogicvector(31downto0)

WRDATA 書き込みデータ 共通 in stdlogicvector(31downto0)

RDDATA 読み込みデータ 共通 out stdlogicvector(31downto0)

SCS チップセレクト SRAM out stdlogicvector(3downto0)

SOE アウトプットイネーブル SRAM out stdlogic

SWE ライトイネーブル SRAM out stdlogic

DWE ライトイネーブル DRAM out stdlogic

DRAS 行アドレス指定 DRAM out stdlogicvector(3downto0)

DCAS ライトイネーブル DRAM out stdlogicvector(3downto0)

MEMSTATESEL 動作選択 共通 in stdlogicvector(2downto0)

WRCYCLE ライト終了 共通 out stdlogic

RDCYCLE リード終了 共通 out stdlogic

RFCYCLE リフレッシュ終了 DRAM out stdlogic

4.2: entityの構成

信号名 用途 ステート数

SWRITECYCLE SRAM書き込みサイクル 3

SREADCYCLE SRAM読み込みサイクル 3

CONTREADCYCLE SRAM連続読み込みサイクル 1

DWRITECYCLE DRAM書き込みサイクル 6

DREADCYCLE DRAM読み込みサイクル 6

DREFCYCLE DRAMリフレッシュサイクル 6

DRDWRCYCLE キャッシュ書き込みサイクル 10

4.3: 制御信号

このentityは昨年設計されたSRAMコントローラに、DRAMの入出力に関わる部

分を追加した。そして制御信号はDRAMに関するサイクルを4つ追加した。VHDL ソースはステートマシン、ステート制御、アドレス指定の3つのprocessから構成さ れている。そして、ステートマシンによりシステムクロックに同期して動作するよう になっている。

このコントローラのステートは表4.3より、以上のようなステート数で構成されて

いる。CONT READ CYCLE1クロックごとにアドレスを与え、そのたびにDATA

SRAMから読み込んでいる。そして、キャッシュ書き込みサイクルはDRAMの読 み込みサイクルとSRAMの書き込みサイクルを連続して行なっており、DRAMから 読み込んだデータはFPGAのレジスタに一時的に格納し、SRAMへ書き込まれる。

4.5に各サイクルのタイミングを示す。

SCS

STOP ADDRESS

CLK

DATA SWE

S_WRITE1 S_WRITE2

SCS

STOP ADDRESS

CLK

DATA SOE

S_READ1 S_READ2

a. 書き込みサイクル(SRAM) b. 読み込みサイクル(SRAM)

SCS

CONT_READ SOE

DATA CLK

ADDRESS ADRS 1 ADRS 2

DATA 2 DATA 1

c. 連続読み込みサイクル(SRAM)

ADDRESS CLK

STOP DWE

DRAS

DCAS

DATA

ROW COLUMN

D_WRITE1 D_WRITE2 D_WRITE3 D_WRITE4 D_WRITE5

d. 書き込みサイクル(DRAM)

ADDRESS CLK

STOP DWE

DRAS

DCAS

DATA

ROW COLUMN

D_READ1 D_READ2 D_READ3 D_READ4 D_READ5

e. 読み込みサイクル(DRAM)

CLK

DRAS

DCAS

STOP REFRESH1 REFRESH2 REFRESH3 REFRESH4 REFRESH5

f. リフレッシュサイクル(DRAM)4.5: 各サイクルのタイミング(2)5 以下に各サイクルのステート毎の動作について説明する。

a. 書き込みサイクル(SRAM)

ステートS WRITE1SCSを立ち下げてアドレスを指定し、ステートS WRITE2

SWE を立ち下げて、SRAMにデータを書き込む。

b. 読み込みサイクル(SRAM)

ステートS READ1SCSを立ち下げてアドレスを指定し、ステートS READ2

SOEを立ち下げ、SRAMからデータを読み込む。

c. 連続読み込みサイクル(SRAM)

この場合はステートは1CONT READのみ。アドレスを別の番地に変える ことでデータも連続的に読み込む。

d. 書き込みサイクル(DRAM)

ステートD WRITE1のクロックの立ち下がりで行アドレスを指定する。そして、

ステートD WRITE2のクロックの立ち上がりでRASを立ち下げて行アドレス

を指定する。このステートの立ち下がりでは列アドレスを指定し、書き込み許 可を与えるためにWEを立ち下げる。次のステートD WRITE3ではCASを 立ち下げる。て列アドレスを指定する。DRAMへデータを書き込んだ後は、ス

テートD WRITE4R ASを立ち上げ、クロックの立ち下がりでWEを立ち

上げる。、そして、ステートD WRITE5CAS を立ち上げる。

e. 読み込みサイクル(DRAM)

RAS およびCASのステート動作に関しては、上のD WRITED READ

5ファイル名: a:./g/write.eps,b:./g/read.eps,c:./g/contread.eps, d:./g/Dwrite.eps,e:./g/Dread.eps, f:./g/Drefresh.eps

置き換えれば良い。WEは立ち上げたままにする。データはステートD READ4 の時にDRAMからFPGAのレジスタへ読み込ませる。

f. リフレッシュサイクル

ステートREFRESH2CASを立ち下げ、REFRESH3R ASを立ち下げる。

これによりリフレッシュで行なわれる。各信号の立ち上げはCASREFRESH4

で、R ASREFRESH5のときに行なう。

また、リフレッシュサイクルについては、CASビフォアR ASリフレッシュを使用 している。そのため、ADDRESSには何もデータを入力する必要がなく、RASCAS だけを動作させればよい。このリフレッシュサイクルを15.6s毎にDRAMに与える ように設計する。例えば、システムクロックが4MHzのときは64クロック毎に、2MHz のときは32クロック毎、10MHzのときは156クロック毎にリフレッシュできるよう にする。