フォト
無料ブログはココログ

MyList

« 中野四季の都市(セントラルパーク・ウエスト) | トップページ | マイケル・サンデル特別講義 »

2012年6月16日 (土)

urJTAG(2)

  urJTAGでバウンダリスキャンしてみる(2)

urJTAGを使ってLCMXO2280 breakout bordをバウンダリスキャンする。
urJTAGの設定はここを参照。

  1. IDレジスタを読む
    jtag> instruction IDCODE jtag> shift ir
    jtag> shift dr
    jtag> dr
    00000001001010001101000001000011
    jtag> idcode Reading 0 bytes if idcode
    Read 01000011 11010000 00101000 00000001 00000000 00000000 00000000 00000000
    jtag>

    jtag> instruction IDCODE ← インストラクションを指定:IDCODE
    jtag> shift ir ← インストラクションレジスタにセット
    jtag> shift dr ← バウンダリスキャンレジスタをシフト
    jtag> dr ← 
    バウンダリスキャンレジスタを表示

     データを読む場合の操作は、インストラクションを指定→インストラクションレジスタ(IR)をシフト→バウダリスキャンレジスタ(BSR)をシフト→BSRを表示
     データを書く場合の操作は、インストラクションを指定→IRをシフト→BSRに値をセット→BSRをシフト
    である。 
  2. ピンの状態を読み取る
     ピンの状態を読み取る場合には、SAMPLE/PRELOADコマンドを使用する。
    jtag> instruction SAMPLE/PRELOAD jtag> shift ir
    jtag> shift dr
    jtag> dr
    11111111111111111111111111111111111111111111111111111111111111111111111111111111
    11111111111111111111111111111111111000101100100010001111111111111111111111111111
    11111111111111111111111111111111111111111111111111111111111111111111111111111111
    11111111111111111111111111111111111111111111111111111111111111111111111111111111
    11111111111111111111111111111111111111111111111111111111111111111111111111111111
    11111111111111111111111111111111111111111111111111111111111111111111111111111111
    1111111111111111111111111111111111111111111111111111011111111111
    jtag>

    太字の部分がLEDが繋がっているポートである。
    良く見るとLEDは8個しかないのにデータが多い。
    回路図を見ると、
    8個のLEDは、CPLDのピンPB14D,PB15A,PB15B,PB15D,PB16A,PB16B,PB16C,PB16Dに接続されていることが分かる。
    Lcmxo2280_led
     これらのピンの素性はBSDLに記述されている。
    ---lcmxo2280c_cabga256.bsm---
    attribute BOUNDARY_REGISTER of LCMXO2280C_XXB256 : entity is
      :
    "413 (BC_7, PB16D, bidir, X, 412, 1, Z), " &
    "412 (BC_2, *, control, 1), " &
      :
    PB16DはBSRの413番目のレジスタに接続されている双方向のポートであって、方向の制御はBSRの412番目のレジスタで行うことを示している。
    つまり、入出力を行う際には、この2つのレジスタに値をセットする必要があるということである。
    ピンの制御を行う際にいちいち2ビット制御するのは面倒なのでsetコマンドを使う。
    PB16Dに"0"を出力したい場合には
    set signal PB16D out 1
    のように指定する。
    このLEDは"0"を出力すると点灯、"1"を出力すると消灯なので点灯させてみる。

    jtag> instruction EXTEST jtag> shift ir
    jtag> set siglan PB16D out 0
    jtag> shift dr

    EXTESTは指定したビット列を出力する命令である。
    set signalコマンドでPB16Dに"0"を出力する設定にして、BSRをシフトすることでビット列がピンに出力される。 
    Lcmxo2280_led7_on
  3. まとめて処理
    1ピンずつ手動で制御するのも面倒だし間違えることがあるので、決まった手順はスクリプトを作って自動的に制御させる。
    ---led1.txt---
    set signal PB14D out 1
    set signal PB15A out 1
    set signal PB15B out 1
    set signal PB15D out 1
    set signal PB16A out 1
    set signal PB16B out 1
    set signal PB16C out 1
    set signal PB16D out 1
    shift dr
    set signal PB14D out 0
    shift dr
    usleep 50000
    usleep 50000
    set signal PB15A out 0
    shift dr
    usleep 50000
    usleep 50000
    set signal PB15B out 0
    shift dr
    usleep 50000
    usleep 50000
    set signal PB15D out 0
    shift dr
    usleep 50000
    usleep 50000
    set signal PB16A out 0
    shift dr
    usleep 50000
    usleep 50000
    set signal PB16B out 0
    shift dr
    usleep 50000
    usleep 50000
    set signal PB16C out 0
    shift dr
    usleep 50000
    usleep 50000
    set signal PB16D out 0
    ---led1.txt---
    このようなファイルを作って
    jtag> cable ft2232
    Connected to libftd2xx driver.
    jtag> detect
    IR length: 8
    Chain length: 1
    Device Id: 00000001001010001101000001000011 (0x000000000128D043)
      Manufacturer: Lattice Semiconductors
      Part(0):         LCMXO2280-caBGA256
      Stepping:     0
      Filename:     c:\program files\urjtag\data/lattice/lcmxo2280c-cabga256/lcmxo2280c-cabga256
    jtag> instruction EXTEST jtag> script led1.txt jtag>

    LEDが1秒間隔で順に点灯する。
    Ledbar3_3
    ダウンロード LEDbar3.mp4 (975.6K)

« 中野四季の都市(セントラルパーク・ウエスト) | トップページ | マイケル・サンデル特別講義 »

JTAG」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: urJTAG(2):

« 中野四季の都市(セントラルパーク・ウエスト) | トップページ | マイケル・サンデル特別講義 »