MySOC USBHostとLCD制御を組込( 4)
 メモリアクセスとアッセンブラの修正

 SPU81用のアッセンブラをVisualBasic6 で作ったのですが、Mifファイルのフォーマットがどうも自信が有りません。正しいMifファイルを参考にしたか、どうにも不安です。そこで、アルテラQuartusUにメモリ初期化ファイル(.mif .hex)作成ツールが有ると判ったので、メモリ初期化ファイルを調べます。そして、メモリを初期化して読み出して見ます。

 以下の内容を整理した物をここに置きます
 SPU81アッセンブラプログラムのソースをプロジェクトごとここに置きます
 SPU81アッセンブラプログラムの実行ファイルをここに置きます

●アルテラQuartusUのメモリ初期化ファイル(.mif .hex)作成ツールを使って
 メモリ初期化ファイルを調べます。

 QuartusUのメモリ初期化ファイル作成ツールで、アドレスとMSBとLSBが識別出来る単純なデータを設定してファイルを作り、その内容を調べました。
 次は、そのフローと作成したデータです。
 不安は的中です。アドレスの設定とデータの区切りが間違っていました


●SPUアッセンブラの修正の概要

 上で調べた内容でSPUアッセンブラを修正しました。

 SPUアッセンブラを修正して、アッセンブルした結果とアッセンブルリストを次に示します。
 アッセンブルした結果は、アドレスの設定とデータの区切り修正出来ています。
 又、デバッグ時にプログラムを追うが不便なためアッセンブルリストを追加しました。
 参考として、インテルHEXフォーマットとモトローラSフォーマットの解説を記録します。








●初期化ファイルで初期化したメモリが読み出せない

 早速初期化ファイルでメモリを初期化して、メモリを読み出しました。
 メモリは、最も単純な構成です。データ入出力、アドレスとライトコントロールとクロックの入力だけの構成です。軽い気持ちで調べたらメモリ出力がハイインピーダンス(Z)です。単純な構成なので不具合の原因がわかりません。スッタモンダして調べたら、MMem_bb.v ファイルを削除すると正常なデータが出るようになりました。次に、不具合の波形と、正常な波形を記録します。



●初期化ファイルで初期化したメモリを読み出す

 ModelSimでメモリ出力 q の内容と初期化データを比べると正常に読み出されています。




ホームへ戻る