JTAG総合情報サイト>MITOUJTAG開発日記

MITOUJTAG開発日記

MITOUJTAGの更新パッチ2.90をリリースしました

2015.10.02

お待たせしましたが。MITOUJTAGの更新パッチ2.90をリリースしました。

・MITOUJTAG BASIC用
https://www.tokudenkairo.co.jp/login2/getfile.php?target=MJBUpdate290

・MITOUJTAG Pro用
https://www.tokudenkairo.co.jp/login2/getfile.php?target=MJPUpdate290

今回の更新点は、

① ボタンが大きくなった

解像度の高いディスプレイでも操作しやすくなりました。

Mj290_1


あまり使われない機能は、ツールボタンのプルダウンの中に隠したので、よく使う機能が迷いにくくなりました。

Mj290_2

② 3D表示対応

新しく作られた「新規ウィンドウ」メニューの中から「3Dビューを開きます」を選ぶと、

 

Mj290_3_2

基板上のFPGAのようすが、3D表示が行われるようになりました。

Mj290_4

今までのMITOUJTAGの画面は、「これがBGAの端子で・・」と説明しなければ理解してもらえなかったのですが、3D表示なら説明しなくてもすぐにわかりますね。

ただ、この3D表示機能はまだまだ未完成なので、バグがたくさんあります。まともに使えるようになるには次の更新までお待ちください。

③ BUZZ機能

「その他のバウンダリスキャン」の中にある「EXTESTモード時に触った端子からトグル信号を出します」を選ぶと、

Mj290_5

カーソルの形が代わり、触った端子からHLHLHL・・・といった信号が出力されるようになります。

FPGAからコネクタなどが正しくつながっているかどうかを調べるのに便利だと思います。

 

FPGAやCPUがJTAGに対応しているかを一瞬で調べる方法

2015.07.30

あなたが使いたいFPGAやCPUがJTAGに対応しているかを一瞬で調べるページを作りました。

早速下記リンクをクリックしてみてください!

http://www.tokudenkairo.co.jp/jtag/devinfob.html

上のリンクをクリックして、開いたページの「部品名 」というところに、適当なデバイスの型番を入れてみてください。

例えば、XC7Z030と入れると、「9件の検索結果」と出てきますね。

Jtag_handan_3

そして、検索結果のプルダウンから「FBG484」のものを選ぶと・・

Jtag_handan_4

このように、部品のピン配置が出てくるのです。

は電源、●はGND。はI/Oの端子で、H/Lはランダムに出てきます。

この画面は、JavaScriptだけで動いているので、何もインストールする必要はありません。登録とかログインとかも必要ないので、気軽に試してみてください。

 

約7600種類のデバイスが登録されているので、あなたの使いたいデバイスもきっと見つかるはず。好きなメーカーのデバイスを眺めるだけでも結構楽しいですよ。

電源とGNDのピン配置は正しく出ているので、 FPGAのピン配置リファレンスとしても活用できると思います。

もちろん無料なで、ぜひ、お試しください!
http://www.tokudenkairo.co.jp/jtag/devinfob.html

 

MITOUJTAG V3を開発しています

2015.07.14

MITOUJTAG Version 3を開発しています。

「現代風」をテーマに、いままでの古風なデザインを一新するつもりでやっています。

MITOUJTAGは2003年に世界初のバウンダリスキャン可視化ツールとしてスタートしてから、そのときの発想のまま続けてきました。

でも、それもだんだん限界に近づいるのを感じます。

その間にたくさんの機能を追加してきたので、目的の機能がどこにあるかもわかにくくなってきました。12年前と比べるとパソコンの画面が大きくなった分、ボタンは小さくなって、押しにくい、探しにくいという声がよく聞かれるようになりました。

 

まず、ボタンを大きく、階層化してわかりやすくすることにしました。

Mjv3_1

すべてのアイコンを48pxサイズにしようとしたところ、画面からあふれてしまいます。ボタンが多すぎるのです。トップ画面のボタンの数を減らするかありませんね。だいいち、CLAMPとかINTESTとか使わないですよ。

よく使うアイコンだけを全面に出して、あまり使わないのは隠すことにしました。

 

例えば、ロジアナ画面を出したいときも、新しいスキャンビューを出したいときも、基本的に新規のウィンドウを作るわけなので、「新規ウィンドウ」→「ロジックアナライザ」というふうに操作するわけです。

だから、新規ウィンドウという中にまとめてしまいました。

▼を押せば出てくるので、問題はないでしょう。

Mjv3_2

 

そして、近いうちにバウンダリスキャンのビューは3Dになるでしょう。

↓これが目指すMITOUJTAG V3の姿です。

Mjv3_3

この新しいインタフェースがひととおり動くようになったら、MITOUJTAG V3としてリリースしたいと思います。

他にも、

  • 特電サーバ経由で、新しいデバイスのBSDLファイルを探しに行く機能
  • NAND Flash ROMへの書き込み対応
  • ALTERAやXILINXのUSBケーブルへの標準対応
  • ALTERAの内蔵BRAMを利用したロジアナ
  • デバイス自動認識の後、どういう操作をすればよいかをわかりやすくする
  • ボタン一発でTwitterに投稿できるようにする
  • 基板検査機能の強化

などを考えています。

どうぞ、ご期待ください。

OpenGLの勉強をしています

2015.07.11

最近、OpenGLの勉強をしています。和歌山大学の床井先生のページを読んでいろいろと実験していますが、2日目でここまでできました。

MITOUJTAG V3の画面

これは、MITOUJTAG(みとうジェイタグ)というソフトウェアの新しいバージョンを作ろうと、試しているところです。

MITOUJTAGというソフトウェアでは、JTAGバウンダリスキャンを使って端子の状態を見ることができますが、「BGAの端子が可視化できる」といっても、普通の人はピンと来ないと思います。

そこで、立体的なコンピュータグラフィックスを使って、直感的にわかりやすくしようと試行錯誤しています。

http://www.tokudenkairo.co.jp/jtag/

MITOUJTAGでMAX10は使えるか?

2015年7月7日(火)

ALTERAからMAX10という新しいCPLDが発表されました。CPLDといっても、大量のLUTとDSPブロックと不揮発性ROMを備えたFPGAのような構造です。

アルテラが出している「MAX 10 FPGA 評価キット」を入手したので、MITOUJTAGで使えるかどうかをテストしてみることにしました。10M08SAE144C8GESという型番のICが乗っています。

写真1 MAX10評価キット

まず、USB Blasterでパソコンと評価ボードをつなぎます。そして、MITOUJTAGを起動し、自動認識します。

図1 MITOUJTAGで何かが認識された

なにやら、ID=031820DDのデバイスが認識されます。しかし、Genericと出てきてMITOUJTAGはこのデバイスが何であるかを知りません。

そこで、ALTERAのWebサイトからBSDLファイルを探してくるのですが、altera.co.jpの中にはMAX10はおろか、MAX5のBSDLもありません。https://www.altera.co.jp/support/support-resources/download/board-layout-test/bsdl/_11491/bsd-11491.html

最初はここであきらめていたのですが、USのALTERAサイトにならあるかもしれないと思い、探してみると、ありました!

でも、なんと、144ピンQFPのBSDLファイルがないのです!

144ピンはピンが出ているからJTAGいらないだろう、って発想なのかもしれませんが、許せませんね!ないなら自分で作るしかない。

ここにMAX10のピン配置ファイルがあります。この中から10M08SAを探して開きます。

また、BSDLファイルは10M08DC256(16×16=256ピン)のがあるから、それを開きます。

つまり、

  • BGA256ピンのBSDLとピン配置
    と、
  • QFP144ピンのピン配置

からQFP144ピン用のBSDLファイルを作るというわけです。

具体的にどうやるかというと、「BGA256ピンもQFP144ピンも、中身のダイは同じでボンディングで区別されている」と仮定します。そして、両方のデバイスで同じ機能のピンを探します。

下の図を見てください。色は私が付けたものですが、BGA256ピンでL18nという機能のピンは、QFP144ピンで26番に対応することがわかります。なので、BGA256ピンのBSDLファイル中のF1と書かれたピンを26と書き換えてやればよいわけです。

図2 BSDLファイルを自分で作る方法

 

このようにして、10M08DC256ピンのBSDLファイルをもとに10M08SA 144ピンのBSDLファイルができました。ここに置いておきますので、興味のある方はもっていってください。

  • だれでも無償でダウンロードできるようにしておきました。
  • ただし無保証ですし、どうしても対応付けができなかったピンが5個ほどあるので、まだ未完成の代物と思ってください。

 

これをMITOUJTAGで読み込んでバウンダリスキャンをすると・・

あ、見えた!

ついでに波形も・・

ばっちりですね。

書き込みはできるのか?

そうしたら、今度は書き込みができるかどうかです。残念ながらMITOUJTAGは現在はまだMAX10の書き込みに対応していません。なので、SVFファイルを経由して書き込まなければならないのですが、QuartusII 15.0ではMAX10用にSVFファイルを作れません。

 

八方ふさがりかと思ったのですが、そうではなくて、MS-DOSプロンプトからQuartusIIのコマンドラインモードを使えば、SOFファイルやPOFファイルからSVFファイルが生成できることがわかりました。

具体的にどうやるかというと、quartus_cpf.exeを使います。quartus_cpf.exeはQuartus2の中のツールで、POF/SOFからSVFなど様々なファイルへと変換する機能があります。-

POFからSVFを生成する(内蔵ROMに書き込む)には、

C:\altera.0\quartus\bin64\quartus_cpf.exe -c -q 1MHz -g 3.3 -n p test.pof test_pof.svf

とします。cはファイルの形式を変換するためのオプションです。-qはTCKの速度、-gは電圧を指定します。-n pでPOF→SVFへの変換を行います。

こんな感じの画面がでて、変換に成功します。

SOFからSVFを生成する(不揮発性SRAM書き込み)には、

C:\altera.0\quartus\bin64\quartus_cpf.exe -c -q 1MHz -g 3.3 -n v test.sof test_sof.svf

とします。-n vがSOF→SVFへの変換を意味します。

あとは生成されたSVFファイルをMITOUJTAGのツール→SVFプレイヤーで読み込んで実行するだけです。

これでMAX10への書き込みができるようになりました。

実際にはSOF→SVFで作ったファイル(内蔵SRAM用)は5秒くらいで書き込めるのですが、POF→SVFで作ったファイル(内蔵ROM用)は10分くらいかかるので実用的ではありません。

近いうちにPOF→SVFの変換アルゴリズムを解読して、内蔵ROMに書き込むときにはMITOUJTAGがネイティブ対応できるようにしたいと思います。

MITOUJTAGでSPI ROMのアクセス

2015.05.13

MITOUJTAGのバウンダリスキャンを用いてSPI ROMへアクセスできるようになりました。

バウンダリスキャンというのは、JTAGを使ってFPGAの端子を(プログラムされている回路とは関係なく)パソコンから自由に操作する技術です。バウンダリスキャンを使うと、FPGAに何もプログラムされていなくても、パソコンからFPGAのI/O端子を自由に操作できるようになります。

下の図は、FPGAのI/OからSPI ROMアクセスを行っているときの波形ですが、これはFPGAの中のロジックで作り出されているのではなく、パソコンから遠隔操作されているわけです。

Mj_spi_1

このようにバウンダリスキャンを使えばSPIのROMでもセンサでも自由にアクセスできたのですが、この機能を使うにはプログラムを組んでコンパイルしなければならず、意外と面倒でした。

そこで、今回、SPIのコマンドを、ユーザが自由にプログラミングできるようにしました。コンパイルすることなく、実行することができます。

具体的には、このような簡単なコマンド列で大丈夫です

romid
romstat
REM "TEST Micron N25Q128"
REM "Read NV Configuration Register"
send 0xb5 0x00 0x00
REM "Write NV Configuration Register"
send 0x85 0x00
REM "Read Volatile Enhanced Configuration Register"
send 0x65 0x00 0x00 0x00
REM "Deep Power-down"
send 0xB9
romid
REM "Release from Deep Power-down"
send 0xab
romid

プログラムを書いてみたところです。今回はMicron社のN25Q128というSPI ROMを使用して、「NV Configuration Register」や「Volatile Enhanced Configuration Register」といったマイナーなレジスタを読んだり、ディープパワーダウンモードにしたりしています。

Mj_spi_3


実際に実行してみた結果

Mj_spi_2


でした。

DeepPowerDown等のマイナーなコマンドは、FPGAの回路でわざわざ試すのは非常に面倒ですが、上の画面のようにツールにコマンドを書けば動くというのであれば、手軽に試すことができます。

このように、JTAGをうまく使えば、ハードウェアでわざわざ作る面倒なものが、ソフトウェア感覚で手軽にできてしまいます。

sun

SPIアクセスに対応したMITOUJTAGは、下記のパッチを適用することでご利用可能になります。先日の2.63化パッチを当てたあとで適用してください。

MITOUJTAG Pro 2.63→2.63aへの更新パッチ(差分のみ。2.63専用)

 

BLOGANAの機能拡張を開発中

2015.04.15

MITOUJTAGのBLOGANA機能を拡張しています。

BLOGANA(ブロガナ)というのは、XILINX FPGA内のBlockRAMに波形データを溜め込む高速なロジアナIPのことです。BLOGANAを埋め込んだFPGAは、MITOUJTAGで波形を読み出すことができます。

ChipScopeやSignalTAPのようなものです。

しかし、いままでのBLOGANAでは、ビット幅が72bit、サンプリング長が最大1024に限られていました。それは、XILINXのBlockRAMが36bit幅で512Wordの深さで、4個まで使うようになっていたからです。

Blogana1


BLOGANAはSpartan-3のころに開発したので、当時はBlockRAMが貴重で、あまりたくさんのメモリをロジアナ用に使えなかったためです。

しかし、AXIバスの動作を見ようとしたりすると、72bitじゃ足りません。SATAのプロトコルを見ようとすると長さが1024では足りまさえん。BLOGANAの機能拡張が望まれてきました。

今のXILINX 7シリーズにはBlockRAMは売るほど入っています。これを有効に活用してみることにしました。

新しいBLOGANAのComponent定義はこうなりました。

entity blogana2 is
  generic(
    BIT_WIDTH     : integer := 72; --サンプリングする信号のBIT幅を指定(1以上、252以下で指定)
    SAMPLE_LENGTH : integer := 1024--サンプリングの長さ(word)を指定(1以上、8192以下で指定)
    );
  Port (    CLK         : in std_logic;
            TRIG        : in std_logic;
            USER_OP     : out std_logic_vector(19 downto 0);
            SAMPLE_EN   : in std_logic;
            DIN         : in std_logic_vector(255 downto 0); --BIT幅は常に256bit
            SAMP_FREQ   : in integer range 0 to 2147483647; -- サンプリング周波数
            BUSY        : out std_logic                     -- 必ずどこかに出力すること
            );
end blogana2;

入力データ幅は256ビット。(ただしサンプリングできるのは252bitまで)
データ長は8192まで拡張できるようにしました。

データ幅やデータ長はGenericで渡します。

このGeneric文で指定したパラメータを見て、BLOGANA内部のマクロとFOR文が、BlockRAMをこんな形や

Blogana2

こんな形

Blogana3


に並べてくれるというわけです。

最大で、252bit 8192Word(縦7個・横16個)並べることができます。この場合、112個の18K BlockRAMを使います。

Blogana4

それでもArtix-7のXC7A100T中のBlockRAMの約40%しか使いません。

実際にカウンタを作ってBLOGANA_DINのbit251~220につないでキャプチャしてみたところ、

Blogana5

ちゃんと動いているようなので、早速、実戦に投入してみます。

Cosmo-Zの波形Capture機能を実行したときの各部の波形を見てみます。

Cosmozcaptureblogana2

これは、16bit 8ch 2148ワードのデータをマルチプレクスしながらAXIインターコネクトに対して投げているところの波形です。

AXIバスや、周囲にの制御信号の動きを見る限り、ちゃんとキャプチャできているようです。

これからいろいろな波形を取ってデバッグしていきたいと思います。

 

MITOUJTAGに波形エクスポート機能を追加 

平成27年1月29日

MITOUJTAGのロジアナ機能で取った波形を、他のツールで読み込みできるよう、波形のエクスポート機能を作りました。

画面左のツリーでロジアナの項目を右クリックして、エクスポートを選ぶだけ。

Wave_export

ダイアログが開いて、そのままVCDファイルとしてエクスポートできます。

Wave_export2

 

VCDというのは、Value Change Dumpのことで、値が変換したときだけその値を記録するというファイル形式です。Verilogの一部として、IEEEで規格化もされている業界標準形式なのです。

実験として、楽天Koboの動作中のCPUの端子の状態をバウンダリスキャンで取得し、それをMITOUJTAGで見ましょう。

Kobobscan
 

Koboの画面をタッチしたり、ボタンをおしたり、いろいろいじくりまわしました。

そのときのCPUの端子をバウンダリスキャンでキャプチャして波形にしてみます。赤い波形は出力信号、緑の波形は入力信号です。

Kobomitoujtag

 

これをVCDでエクスポートします。VCDを読み込めるツールは、フリーのものではGTKWaveがあります。GTKWaveで波形にすると、

Kobogtkwave

GTKWaveは画面上のボタンなどがGTKなのでWindowsの標準的なものとはちょっと異なりますね。

 

他にVCDが読めるツールとしては、シェアウェアのVerilogシミュレータのVeritakなどがあります。普通にVCDをオープンできて、このように読めました。

Koboveritak

 

ここにKoboの動作時の波形ファイルを置いておくので、みなさん、よかったら試してみてください。

 

あと、MITOUJTAG2.6のロジアナを強化するパッチはこちらから無償でダウンロードできます。

 

お楽しみに!