FC2カウンター FPGAの部屋 XPS_TIMERをテスト
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

XPS_TIMERをテスト

いろいろ忙しい用事の合間にXPS_TIMERをテストしてみた。EDK8.1の時はOPB_TIMERをテストしてみた。まだ、詳しくデータシートを読んだわけではなく、私の予想に基づいてテストしてみた。
まずは、Spartan3E Starter Kit の電源を入れてビットファイルをコンフィグするためにXPSで Device Configuration -> Download Bitstream を実行する。
次にDebug -> Launch XMD... を選択し、XMDを立ち上げる。これでXMDが立ち上がる。xps_timer_1のベースアドレスは0x41c00000 だ。
ここでXPS_TIMERのデータシートからブロック図を転載する。
xps_timer_1_081222.png

アドレスマップを転載する。
xps_timer_2_081222.png

もう1つ、 Timer Control/Status Register 0 (TCSR0)の図を転載する。
xps_timer_3_081222.png

21ビット目のENALLはすべてのタイマーのイネーブル(1個のみなので、タイマー0のみだが)なので、これを立てるとタイマーがイネーブルになるはず。
XMDのウインドウでmwr コマンドを実行して、そのアドレスにデータを書き込む。ここでは、タイマーのベースアドレス+0番地 (Control/Status Register0) に 0x00000400 を1ワード分書き込む。これは、21ビット目のENALLを1にするためだ。
XMD_timer_chk_1_081221.png

次にmrd コマンドで0x41c00008番地 (Timer/Counter Register0) を見る。そうするとオール0だった。タイマーが動いていないのか?
XMD_timer_chk_2_081221.png

もう少しいろいろやってみたところ、タイマーのベースアドレス+0番地 (Control/Status Register0) にイネーブルを立てる前に、0x41c00004番地 (Load Register0) に値をロードしてから、Control/Status Register0 の26ビット目のLOAD0 に1を書き込む。そうすると、Load Register0 の値が、Timer/Counter Register0に書き込まれる。そうしてからControl/Status Register0 にイネーブルを立て、LOAD0 のビットを落とす。そうすると、Timer/Counter Register0 の値がアップカウントされ、0になると停止して、Control/Status Register0 の23ビット目のT0INT が1になっている。
xps_timer_4_081222.png

どうやらXPS_TIMERはそれなりに動いているようだ。OPB_TIMERの動作がわからないので、互換性が取れているかどうかは未知数だ。そのため、これは終わりにして、petalinux を試してみることにする。その前に、本来の目的であるISEでHDLファイルの下にEDKのプロジェクトをインスタンシエートできるかどうかを確かめてみようと思う。
  1. 2008年12月22日 06:04 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:5

コメント

.

PLBに拘りたいなら話は別ですが、こんな手はダメですか。
http://www.shirou.jp/blog1/?p=845
  1. 2008/12/22(月) 20:02:58 |
  2. URL |
  3. idlef50 #-
  4. [ 編集 ]

idlef50さん、情報ありがとうございます。やってみます。
  1. 2008/12/22(月) 21:26:48 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

OPB_TIMERは入ったのですが、OPBバスでマスタがないといわれてエラーです。結構面倒そうなので、とりあえず休止します。
  1. 2008/12/23(火) 11:53:52 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

.

OPB_TIMERを使用するときは、PLBV46 to OPB Bridgeが必要です。EDK 9.2ですが、バス接続とポート接続をしたら、ネットリストは生成できました。opb_v20_0のポート接続を忘れないように!
  1. 2008/12/23(火) 13:59:12 |
  2. URL |
  3. idlef50 #-
  4. [ 編集 ]

idlef50さん

そうか、PLBV46 to OPB Bridgeが必要なんですね。やってみます。情報ありがとうございました。
  1. 2008/12/24(水) 12:36:49 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/987-766c0311
この記事にトラックバックする(FC2ブログユーザー)