[Suzaku:01160] SUZAKU-VでPLBペリフェラルの作り方(レジスタの使い方)

高橋 優樹 email@hidden
2008年 4月 25日 (金) 15:00:23 JST


情報通信機構の高橋と申します。お世話になっております。

SZ410のスターターキットを使って初等的なPLBインターフェースをCreate and
Import Peripheral(CIP) Wizardから作ろうとしているのですが上手くいきませ
ん。何が問題なのかご指摘いただければ幸いです。
基本的には、スターターキットガイドFPGA開発編(ver 2.3.1)の11章の内容に沿
って、それをさらに簡略化し、単純にソフトウェアからLEDに書き込みだけがで
きるようにしようとしました。
以下試した具体的な工程を記述します。ちなみに、開発環境はWinXPSP2+ISE9.2i
/EDK9.2iです。

1,SUZAKUのデフォルトのプロジェクトsz410-20080327からスタートしました。

2,CIPウィザードでPLB Peripheralコアのテンプレートを作成しました。その際、
IPIF serviceの設定でsoftware registerのみ有効にしました(割り込み制御は設
けませんでした)。そして、レジスタの数は一つとしました。それ以外はスター
ターキットガイドと同様です。なお、作ったコアの名前をcustum_ipとします。

3,できたテンプレートを編集しました。まず、新規にle_core.vhd(スターター
キットガイドでのsil00u_coreに相当)を作りました。この回路では、単に4ビッ
トの入力を受けて4ビットの出力にそのまま繋いでいるだけです。つぎに、user_
locig.vhd内でまず4ビットの出力nLEをつくり、先程つくったle_coreをよびだし
て、その入力にslv_reg0(4 to 7)をつなぎ、その出力をnLEにつなぎました。最
後に、最上位のcustum_ip.vhd内で新たに4ビットの外部出力nLEを設け、user_
logicを呼び出している箇所でuser_logicのnLEをcustum_ipのnLEに繋ぎました。
基本的に、slv_reg0(4 to 7)の内容を、user_logicとle_coreを経由して、
custum_ipの外部出力nLEにルーティングしているだけになっていると思います。

4,custum_ipのmpdファイルとpaoファイルをガイドを参考にして編集しました。
この自作コアをプロジェクトに追加し、ucfファイルを編集してnLEをLEDに繋げ
るようにしました。また、ipのメモリマップは0xFF0FD200から512バイトとしま
した。

5,ハードウェアを作り、次にライブラリとドライバを作ったところdriverフォル
ダ以下にcustum_ip用のサンプルコードができたのでこれをアプリケーションと
して登録し、BBootは起動しないようにしました。サンプルコードはipのベース
アドレスに対して読み書きしているだけのようです。

6,bitファイルをつくり、iMpactで書き込みをしました。アプリケーションは起
動し、端末上にメッセージは表示されるのですが、肝心のLEDは光りません。

以上です。レジスタの値ではなく、ロジックリテラルを繋げばLEDは光るのでル
ーティング自体は間違っていないと思います。やはり、レジスタの書き込み読み
込みが間違っているのだと思います。
なにぶん、FPGAをいじりだして日が浅く勘違いしている点もあるかもしません。
また、説明も長くなり、分かりにくいかもしませんが、何卒宜しくお願いいたし
ます。

-- 
情報通信研究機構
高橋 優樹





suzaku メーリングリストの案内