8.メモリ

メモリは多量の情報を整理して記憶するための構文で、内部構成要素の宣言リストで宣言を行います。

メモリは、書き込みを行った次のクロックで当該アドレスに値を記録します。
メモリの宣言方法は以下の通りです。

mem メモリ名[メモリワード数][ビット幅]

宣言時にメモリの初期化を行うことも可能です。
メモリ初期化の方法は以下の通りです。

mem メモリ名[メモリワード数][ビット幅] = {0番地のデータ, 1番地のデータ, … ,X番地のデータ}

メモリはレジスタと同じ転送方法を使います。
メモリ書き込む場合は”:=”の転送を使用します。
メモリを読み込む場合は”=”の転送を用います。
例として、read/write 可能な、幅4ビット/256ワードのメモリを記述する場合、
以下の例題39のようになります。

【例題39.メモリ使用例】
declare ex39 {
   input in[4], adr[8] ;
   output f[4] ;

   func_in write ;
   func_in read ;
}
module ex39 {
   mem m[256][4] ;

   function write m[adr] := in ;
   function read  f = m[adr] ;
}

mem m[256][4]で定義するのは1ワード4ビット、256ワードのメモリです。
この例題は制御入力端子read,writeを用いたメモリとの値の転送を行ないます。
以下に論理シミュレーション結果を示します。