[[FrontPage]]

#contents

2009/04/26からのアクセス回数 &counter;

** はじめに [#tc11b2ce]
ディジタル・デザイン・テクノロジにLattice XP2が付録として付いてきました。

&ref(1.jpg);

残念ながら、
- なひたふさんが、
[[Window用の書き込みソフト>http://www.nahitech.com/nahitafu/trg78k/78kjtag.html#xp2jtag]]
を公開されていますが、Mac OS Xでは使えません
- Lattice XP2用のUSB接続のダウンロードケーブルが入手が難しいため、VM Wareでは書き込めない

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

** JTAGケーブルの選定 [#jf4d9d0b]
UrJtagは、
[[様々なJTAGケーブル>http://urjtag.svn.sourceforge.net/viewvc/urjtag/tags/URJTAG_0_10/web/htdocs/book/_system_requirements.html#_supported_jtag_adapters_cables]]
をサポートしています。
- Xilinx parallel cable等のパラレルポート用のJTAGケーブル
- JTAGKeyやOlimex ARM-USB-JTAG等のFT2232を使ったUSBケーブル
- Altera USB-Blaster, Xilinx Platform USB Cable

しかし、
- Macにはパラレルポートはありませんし、
- LeopardではD2XXドライバとVCP(仮想COMポート)ドライバは同時に使用できないため、FT2232を使ったUSBケーブルはそのままでは正常に動作しません。詳しくは、
[[MacOSXでFTDIのBit-Bangモードを試す>http://arms22.blog91.fc2.com/blog-entry-148.html]]
を参照してください。

そこで、[[USB-Blasterの互換ケーブル>http://www.hdl.co.jp/altera/tb/]]を使うことにしました。
私は試していませんが、
世の中には[[USB-Blasterもどき>http://sa89a.net/mp.cgi/ele/ub.htm]]というのもあるみたいです。

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

#pre{{
$ sudo port install urjtag
}}

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

#pre{{
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
}}

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

- USB-Blasterを接続
- urjtagを起動(jtagと入力)し、
- jtag>プロンプトが表示されたらcable UsbBlasterと入力します
#pre{{
$ jtag

UrJTAG 0.9 #1359
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable UsbBlaster
Connected to libftdi driver.
jtag> 
}}
のようにConnected to libftdi driver.が表示されたら、urjtagがUsbBlasterを正しく
認識できています。

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

&ref(scan.jpg);

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

#pre{{
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情報を抽出 [#w4d242e6]
今回のチップは、Altera EPM240T100です。

Googleで、EPM240T100 BSDLで検索して、EPM240T100のBSDLファイルをダウンロードします。
私は、[[ここ>http://www.altera.co.jp/support/devices/bsdl/max2/max2-index.jsp]]からEPM240T100
のBSDLファイルをダウンロードしました。

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


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

#pre{{
$ 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情報のセット [#ic8176e1]
UrJtagのJTAG情報は、インストール先のxxxx/share/urjtag/以下に保存されています。
MacPortでインストールしたUrJtagの場合、/opt/local/share/urjtagになります。

JTAG情報は、製造会社名/型名/品番名のような階層構造になっており、MAX IIの情報は
#pre{{
/opt/local/share/urjtag/altera/epm240/epm240
}}
に置くことにします。

このディレクトリは管理者権限でないとアクセスできないので、
#pre{{
$ 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に
#pre{{
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行を追加します。

#pre{{
0010000010100001        epm240                  EPM240
}}

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

#pre{{
0000    epm240          0
}}

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

#pre{{
$ 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として認識されました。これで完了です!


** コメント [#jf947abc]
この記事は、

#vote(おもしろかった,そうでもない,わかりずらい)

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


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