メモリは多量の情報を整理して記憶するための構文で、内部構成要素の宣言リストで宣言を行います。
メモリは、書き込みを行った次のクロックで当該アドレスに値を記録します。
メモリの宣言方法は以下の通りです。
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を用いたメモリとの値の転送を行ないます。
以下に論理シミュレーション結果を示します。