FrontPage

2009/04/26からのアクセス回数 21439

はじめに

ディジタル・デザイン・テクノロジにLattice XP2が付録として付いてきました。

1.jpg

残念ながら、

ためUrJtagを使ってプログラムを書き込むことにしました。

JTAGケーブルの選定

UrJtagは、 様々なJTAGケーブル をサポートしています。

しかし、

そこで、USB-Blasterの互換ケーブルを使うことにしました。 私は試していませんが、 世の中にはUSB-Blasterもどきというのもあるみたいです。

UrJtagのインストール

MacPortを使って、UrJtagをインストールします。 ターミナルから以下のコマンドを入力します。

$ sudo port install urjtag

これだけで、urjtagのインストールは完了です。ターミナルから使用する場合には、/opt/local/binがPATHにセットする必要があります。ホームディレクトリの.profileに以下の1行を追加してください。

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

UrJtagの動作確認

urjtagが正常にインストールできたかどうか確認します。USB-Blasterは、接続直後は不安定なので、USBに接続してしばらく待ちます。

UrJtagの使い方

urjtagの基本的な使い方を、トラ技2006年4月号の付録、ALTERAのCPLD Max II で調べてみます。

これが、MAX IIとHDL-CQ1の実験用ボードです。

scan.jpg

接続しているチップを調べるコマンドがdetectです。 UrJtagのdetectを実行します。

jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010100001000011011101 (0x00000000020A10DD)
  Manufacturer: Altera
  Unknown part!
chain.c(133) Part 0 without active instruction
chain.c(184) Part 0 without active instruction
chain.c(133) Part 0 without active instruction
jtag> 

メーカーがAlteraであることは認識しているようですが、チップはUnknown part!と 出力されます。

これは、UrJtagのデーターベースにMAX IIが登録されていないためです。

BSDLファイルからJTAG情報を抽出

今回のチップは、Altera EPM240T100です。

Googleで、EPM240T100 BSDLで検索して、EPM240T100のBSDLファイルをダウンロードします。 私は、ここからEPM240T100 のBSDLファイルをダウンロードしました。

BSDLファイルには、EPM240T100のチップ情報が定義されています。

次に、ダウンロードしたEPM240T100.BSD.txtをbsdlコマンドを使ってJTAG情報に変換します。

$ jtag
jtag> bsdl dump EPM240T100.BSD.txt
 signal GND(1)
 signal GND(2)
 signal GND(3)
 signal GND(4)
 signal GND(5)
途中省略
 bit 236 O ? IO27 235 1 Z
 bit 237 I ? IO26
 bit 238 C 1 *
 bit 239 O ? IO26 238 1 Z
jtag> 

dumpコマンドの結果をコピーし、epm240ファイルに保存します。

JTAG情報のセット

UrJtagのJTAG情報は、インストール先のxxxx/share/urjtag/以下に保存されています。 MacPortでインストールしたUrJtagの場合、/opt/local/share/urjtagになります。

JTAG情報は、製造会社名/型名/品番名のような階層構造になっており、MAX IIの情報は

/opt/local/share/urjtag/altera/epm240/epm240

に置くことにします。

このディレクトリは管理者権限でないとアクセスできないので、

$ sudo mkdir -p /opt/local/share/urjtag/altera/epm240/
$ sudo cp -p epm240 /opt/local/share/urjtag/altera/epm240/

次に、/opt/local/share/urjtag/altera/のPART情報にepm240の型情報をセットします。

BSDLに

attribute IDCODE_REGISTER of EPM240T100 : entity is
  "0000"&               --4-bit Version
  "0010000010100001"&   --16-bit Part Number (hex 20A1)
  "00001101110"&        --11-bit Manufacturer's Identity
  "1";                  --Mandatory LSB

と定義されていますので、0010000010100001がパート番号になります。

PARTSに以下の1行を追加します。

0010000010100001        epm240                  EPM240

次に、/opt/local/share/urjtag/altera/STEPPINGSにバージョン番号を登録します。

0000    epm240          0

これで、EPM240が正しく認識できるか調べてみましょう。

$ jtag

jtag > cable UsbBlaster
Connected to libftdi driver.
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010100001000011011101 (0x00000000020A10DD)
  Manufacturer: Altera
  Part(0):         EPM240
  Stepping:     0
  Filename:     /opt/local/share/urjtag/altera/epm240/epm240
jtag> 

今度は、EPM240として認識されました。これで完了です!

バウンダリスキャンを試してみる

先にEPM240が認識された状態から、バウンダリスキャンを実行します。

IDCODEのチェック

最初にIDCODEを出力してみます。

JTAGでの手順は以下の通りです。

  1. instructionにIDCODEを指定する
  2. irレジスタをシフトする
  3. drレジスタをシフトする
  4. drレジスタの内容を表示する

を実行した結果は以下の通りです。

jtag> instruction IDCODE
jtag> shift ir
jtag> shift dr
jtag> dr
00000010000010100001000011011101
jtag> 

drの値にdetectの出力でてた、

Device Id: 00000010000010100001000011011101 (0x00000000020A10DD)

の値がセットされていいます。

SAMPL/PRELOADコマンド

次にSAMPL/PRELOADコマンドを使って各ピンの状態を出力します。

jtag> instruction SAMPLE/PRELOAD
jtag> shift ir
jtag> shift dr
jtag> dr
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001
jtag> 

見やすいようにdrの出力を30ビット単位で区切ってあります。 MAX IIは、IOピンが80ピンで、各ピンの情報は3つのセルで 管理されています。 一番右下の値がLSBの値です。

ほとんどが001のパターンに対して

sample.jpg

だけ101となっています。これは、右下から数えて17ピン目の情報です。 EPM240T100.BSDファイルをみると

  --BSC group 16 for I/O pin 1
  "48  (BC_4, IO1, input, X)," &
  "49  (BC_1, *, control, 1)," &
  "50  (BC_1, IO1, output3, X, 49, 1, Z)," &

とあり、ピン番号1番の情報であることが分かります。

MAX IIに書き込まれているプログラムは、1番ピンに1を出力し、LEDを点灯させるサンプルプログラム なので、その値を正しくスキャンできていることが分かります。

EXTESTコマンド

次にEXTESTコマンドを使ってピンの出力を変えてみます。 HDL-CQ1ボードのLED7は、EPM240の37ピンです。 EPM240T100.BSDファイルをみると、

  --BSC group 70 for I/O pin 37
  "210 (BC_4, IO37, input, X)," &
  "211 (BC_1, *, control, 1)," &
  "212 (BC_1, IO37, output3, X, 211, 1, Z)," &

とあり、ちょうどdrの出力の上から10ピン目になります。 この値を001から101に変更して、出力値として1を送るとLEDは消灯するはずです。

jtag> instruction EXTEST
jtag> shift ir
jtag> dr 001001001001001001001001001101
001001001001001001001110001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001

001001001001001001001001001101
001001001001001001001110001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001
jtag> shift dr
jtag> 

(ビット列は、10ピン単位に改行してあります)

すると予想通り、LED7が消灯します。 (中央の緑のLEDが3個だけ点灯しており、一番下のLEDが 消灯しています)

extest.jpg

CPLDへの書き込み

UrJtagは、CPLDへの書き込み用にSVFフォーマットをサポートしています。

LatticeのツールでSVFファイルを作成

それでは、Latticeのツールが生成したプログラムからSVFファイルを生成する には、どのようにすればよいかご説明します。

このツールは、GoogleでLattice jed svf convertで検索し、

http://www.it.lth.se/digp/PDF_files/lattice/lattice_dcd.pdf

の中の、Fig. 2-1の図でSVFファイルへの変換をサポートしていることを見つけました。

手順は以下の通りです。

ispVM.jpg

Lattice XP2のBDSL情報

MAX IIと同様にLattice XP2のBSDLを取得し、JTAGファイルに変換します。

以下のファイルを参照してください。

プログラムの書き込み

最後に、SVFファイルをLattice XP2に書き込みます。

jtag> cable UsbBlaster
Connected to libftdi driver.
jtag> detect
IR length: 8
Chain length: 1
Device Id: 00000001001010011001000001000011 (0x0000000001299043)
  Manufacturer: Lattice Semiconductors
  Part(0):         lfxp2-5e-tqfp144
  Stepping:     0
  Filename:     /opt/local/share/urjtag/lattice/lfxp2-5e-tqfp144/lfxp2-5e-tqfp144
jtag> svf hdl_sample.svf
時間がかかりますが、そのまま待ってください
jtag> instruction BYPASS
jtag> shift ir
jtag> quit

これで、Lattice XP2をリセットすると、DL3の緑のLEDが点滅します。

コメント

この記事は、

選択肢 投票
おもしろかった 19  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc