トラ技78KマイコンでUSB-JTAGを作る

平成22年5月11日

新着情報

目次

JTAGとは何か

    JTAGとは、4本線のシリアル通信で、ICを一種のテストモードに入れてICのコアをつっつくものです。TCK、TDI、TMS、TDOの4つの信号を使います。

    JTAGを使うと、CPLDやFPGAに書き込んだり、バウンダリスキャンができたり、CPUのデバッグができます。

    78Kマイコンを使ってJTAGのハードウェアは難しくありません。4個のI/OポートをUSBからの指令によって上げ下げすればよいのです。

     

78KマイコンでUSB-JTAGの作り方78K-USB-JTAGの作り方

    基本的には右の図のように結線してください。

    ただし、注意点があります。78Kマイコンの各ポートは5V仕様になっています。5Vの信号が3.3V系のターゲットボードに加わるとダメージを与えることがあります。3.3V系のデバイスでお使いの場合は、以下のようにしてください。
     

      (a) I/Oのバッファを入れる

      74VHC245などのロジックICか、トランジスタを使って5V←→3.3V系の変換をしてください。
      参考回路を次の図に示します。

      78Kマイコン基板は5V系ですが、対象となるJTAG回路は3.3Vが多くなっています。
      そこで、レベル変換をしなければなりませんがこれが意外と難しいのです。

      5V→3.3V方向のレベル変換は、汎用ロジックの74AC32を使っています。74AC32の電源はターゲットボードからもらいます。74AC32の入力端子には、トラ技78Kマイコン基板の出力をつなぎますが、これは5V系なので、Hレベル出力時には74AC32の入力保護ダイオードがONしてしまいます。抵抗を入れているので許してください。

      それに対して3.3V→5V方向のレベル変換は安全なのですが、78Kマイコンの入力端子は0.7×Vddボルトの電圧が来ないとHレベルとして認識してくれません。TTLレベルではないのです。電源電圧は5.0Vなので、Hレベルとして認識されるには3.5V必要です。
      しかし、74AC32の電源は3.3Vなので、Hレベルを出力しても3.3Vにしかなりません。まぁ、若干足りない程度ならHレベルと認識してくれるので、許してください。

      より完全な回路にするならレベルシフトバッファを買ってくればいいのですが、そんなの秋葉原に売ってないし、万能基板にのりません。

      上の回路は一応動きますが、細かいことを言い出すと、完璧ではありません。
      どういう回路がベストは検討中です。

      (b) TCK,TDI,TMSに100Ωくらいの抵抗を入れる
      この方法は、ターゲットデバイス側のクランプダイオードをONさせる方法です。手軽ですが、危険が伴いますし、Spartan3Eなどが出す2.5VロジックのTDOを受信できません。(常にLとして認識されていまいます)

      3.3VのJTAG信号ならなんとかなると思いますが、さすがに2.5Vは苦しいですね。

      (c) 裏面のJ3をはずしてVIOの端子に3.3V(例えばC2から)を供給する。(本当はダメ)
       78KマイコンにはEVddという端子があります。

      この端子はI/O電源なのですが、NECさんによれば、コア電源と電圧を分けて異なる電圧にするような使い方はできない、とのこと。

      しかし、実際にはできてしまっているので、よいのか悪いのか・・

      右の図のように基板を加工します。

      • 基板裏面のJ3をカットして、VIOとVddを分離。
      • C2の片側から3.3Vの電源をもらい、VIOにつなぎます。

      これで、78K基板が3.3V出力になるのですが、本当はやってよいのかどうか、よくわかりません。

      しかし、USB-JTAGの開発ではずっとこの方法でやってきて、かなり長いこと使っていますが、問題は生じていません。78Kマイコンの奥深くに見えないダメージが・・・とかあるのかもしれませんが、これ専用にしてしまうのであればよいのかもしれません。

     (d) 基板を発売しています。

    バッファの電圧の問題などを解決し、さらにXP2以外のいろんなデバイスにも書き込めるようにした回路基板を発売しています。7,980円〜

特電ユニバーサルJTAGプログラマ

USB-JTAGのソフトウェア (LATTICE XP2専用)

    ここで紹介するのは、トラ技78Kマイコンや、XILINX,ALTERA,LATTICEのパラレルケーブルを使って、LatticeXP2に書き込みができるフリーソフトウェアです。

    LatticeのFPGA開発環境は、当然ながらA社やX社のダウンロードケーブルを使うことができませんが、このツールはXでもAでもLのケーブルでも動き、Lattice XP2にビットストリームを書き込むことができます。

    パラレルポートがあるパソコンをお持ちならば、今あるお手持ちのJTAGケーブルが使えます。

    パラレルポートがないパソコンならば、トラ技2008年8月号の付録基板を使ってUSB-JTAG変換アダプタをつくり、LATTICE XP2にビットストリームを書き込むことができます。

    ● ソフトウェアダウンロード V153  (平成22年5月22日) Windows2000,XP,Vista,7対応?

      VistaとWindows7に対応できたように思われます

    ● ソフトウェアダウンロード V152c  安定版 (平成21年4月19日) Windows2000,WindowsXP用

      平成21年4月11日 1.5.2a 最初のリリース

      平成21年4月12日 1.5.2b CSRAMモード対応

      平成21年4月19日 1.5.2c 78Kマイコンの検出アルゴリズム修正

使い方その1(78KマイコンでUSB-JTAGにする場合)

    最初に使うときの準備

      このツールを使うには、まずトラ技78KマイコンをパソコンのUSBポートに挿してください。

      デバイスドライバを要求されたら、トラ技8月号付録CD-ROMか、NECさんのページからダウンロードしてください。※(ソースコード 170KB)と書かれたリンクの中にデバイスドライバもあります。

      圧縮ファイルを解凍したら、MS-DOSプロンプトを起動してxp2jtagを実行します。初回起動時に、自動的に78kマイコンのフラッシュROMの内容を調べて、必要ならUSB-JTAGのファームウェアを書き込みます。TeraTermでトラ技BIOSのコマンドを打って・・といった操作は不要です。

      78Kマイコンへのプログラムの転送は全部自動的に行われます。


      (クリックで拡大)

    普段の使い方では、DOSプロンプトから次のように入力します。

    xp2jtag -auto ファイル名

    ディジタルデザインテクノロジの付録CD-ROMのサンプルを書き込むなら、

    xp2jtag -auto e:\DATA\tutorial\hdl_example\hdl_example.jed

    と入力します。

    C-SRAMモード(内蔵フラッシュを書き換えずにFPGAの揮発セルだけを書き換えるモード)では、

    xp2jtag -csram -auto e:\DATA\tutorial\hdl_example\hdl_example.jed

    と入力します。


    (クリックで拡大)

     


    (クリックで拡大)

    約78秒で書き込みが完了します。

     

使い方その2(XILINX、ALTERA、LATTICEのパラレルケーブルを使う場合)

     

    最初に使うときの準備

      ファイルを解凍したら、最初に1回、instdrv.exeを起動します。
      これでデバイスドライバをインストールされ、使用可能状態になります。

    普段の使い方では、DOSプロンプトから次のように入力します。

    xp2jtag -auto ファイル名

    XILINXのパラレルケーブルで付録CD-ROMのサンプルを書き込むなら、

    xp2jtag -cable prnprt -auto e:\DATA\tutorial\hdl_example\hdl_example.jed

    と入力します。

    ALTERAのパラレルケーブルで付録CD-ROMのサンプルを書き込むなら、

    xp2jtag -cable prnprt -port byteblaster2.txt -auto e:\DATA\tutorial\hdl_example\hdl_example.jed

    と入力します。

    C-SRAMモード(内蔵フラッシュを書き換えずにFPGAの揮発セルだけを書き換えるモード)では、

    xp2jtag -csram -cable prnprt -auto e:\DATA\tutorial\hdl_example\hdl_example.jed

    と入力します。

    LFXP2-5Eなら、14秒くらいで書き込みが完了します。


    (クリックで拡大)


    (クリックで拡大)


     

USB-JTAGのソフトウェア (汎用)

    JTAGのハードウェアは簡単ですが、ソフトウェアは難しいものです。

    なぜなら、JTAGによるデバイスの操作アルゴリズムは、デバイスごとに皆異なる上、どのメーカーも基本的に非公開としているからです。

    どのメーカーのFPGAデバイスにも対応させようとして製作したソフトウェアソフトウェアには2種類あります。 @ ユニバーサルJTAGプログラマのソフトウェア「J-Writer」。 A MITOUJTAG 体験版。どちらか一方の方法をご利用ください。

    @ J-Writerを使う方法

    J-Writerは、特殊電子回路株式会社から発売されているマルチベンダ対応のJTAGプログラマです。J-Writerのハードウェアは、このページで紹介した78K-USB-JTAGに、高性能バッファと+αを追加したものです。

    付属のソフトウェアには試用期限はなく、いつまでもお使いいただけます。

    詳しくはこちらをご覧下さい。価格は7,980円〜となっています。

特電ユニバーサルJTAGプログラマ

     

    A MITOUJTAG体験版を使う方法

    MITOUJTAG体験版 MITOUJTAG体験版1.5をお持ちの方は、万能JTAGプログラマがご利用いただけます。本ソフトウェアをインストールするには、まず最初にMITOUJTAG体験版1.5をインストールしてください。

    78K-USB-JTAG対応パッチとDOSプロンプト版書き込みツール ダウンロード

    上のリンクをクリックし、「MITOUJTAGサポートファイルダウンロード」という画面が出たら、「MITOUJTAG体験版」のシリアル番号を入力してください。ファイルのダウンロードが始まります。

    そのファイルを実行すると、次のような画面が現れるので、そのままインストールしてください。

    USB-JTAGのソフトウェアインストール画面

    特に何も問題なく、インストールできるはずです。

DOS版 USB-JTAG書き込みツールの使い方

    このページで提供するUSB-JTAGのソフトウェアは、SVFファイルを経由するような簡易的なものではありません。それぞれのJTAGデバイスの書き込みアルゴリズムをネイティブで実装しています。FPGAだけではなく、XILINX CPLDやROM、ALTERA CPLDに対してもネイティブ書き込みを実現しています。

    デスクトップに下のアイコンができているので、これをクリックすると、DOS版書き込みツールが起動します。

    USB-JTAGのデスクトップアイコン

    使い方は、以下のように入力します。

    JTAGチェーンにつながったJTAGデバイスを自動検出をしたい場合

     mjisp -cable trg78k -detect

    JTAGデバイスに書き込み(消去+書き込み+ベリファイ)したい場合

     mjisp -cable trg78k -auto 書き込みファイル名

     例)

      mjisp -cable trg78k -auto c:\test\hoge.bit   <= XILINX FPGAまたはROMに書き込む場合
      mjisp -cable trg78k -auto c:\test\hoge.mcs   <= XILINX ROMに書き込む場合
      mjisp -cable trg78k -auto c:\test\hoge.jed   <= XILINX CPLDに書き込む場合
      mjisp -cable trg78k -auto c:\test\hoge.pof   <= ALTERA CPLDに書き込む場合 
      mjisp -cable trg78k -auto c:\test\hoge.rbf   <= ALTERA FPGAに書き込む場合  

    JTAGデバイスに何もしない(BYPASS)したい場合

     mjisp -cable trg78k -bypass any

    ※ -cable trg78k という記述は、トラ技78KマイコンをJTAGケーブルとして使うためのオプションです。デフォルトではPocket JTAG Cableになっています。
    もしXILINX互換のParallelケーブルで使用したい場合には -cable prnprt と記述してください。

    ※ JTAGチェーンに複数のJTAGデバイスがつながっている場合、「-auto ファイル名」または、「-bypass any」の記述を列挙することで、個々のデバイスの動作を指定できます。

  例)

      mjisp -cable trg78k -bypass any -auto c:\test\hoge.bit  2番目のデバイスのみ書き込む
      mjisp -cable trg78k -auto c:\test\hoge.bit -bypass any  1番目のデバイスのみ書き込む

    より詳しい使い方はReadmeをご覧下さい。

Windows版バウンダリスキャンツール(MITOUJTAG体験版)

    MITOUJTAG体験版を起動したら、ケーブルの選択を行ってください。TRG78Kというケーブルが使えるようになっているはずです。

USB-JTAGを選択する

    TRK78Kを選択すると、78KマイコンのRAMに自動的にファームウェアが転送され、画面に下の図のようなアイコンが表示されます。

    USB-JTAGのアイコン

    上記のアイコンを一度クリックして網掛けで塗りつぶされた状態にしてください。

    その後、自動認識や、サンプリング、EXTEST、ロジアナ、デバイス書き込みなどがおこなえます。

    USB-JTAGでバウンダリスキャンしている
    (MAX2 EPM2210の端子の状態を観察しているところ)

     

書き込み対応デバイス

    XILINX:

    XC9500/XL,  Spartan2/2E,  Spartan3/3E/3A,  Virtex2/2Pro,  Virtex4,  Virtex5,  XC18V00,  XCF00S,  XCF00P,  CoolRunner2

    ALTERA:

    MAXII, Cyclone

    ※ バウンダリスキャンはすべてのJTAGデバイスに対応
    (ただし、当該デバイスのBSDLファイルが必要です)

使用時のようす

    boundary scan

     

DOS版書き込みツール

    jtag isp

chickens_back.gif 戻る

 

 Copyright(C) 2008 NAITOU Ryuji. All rights reserved. 無断転載を禁ず