ZED Board (ZYNQ)のバウンダリスキャン
平成24年12月20日
XILINXのSoCを搭載した評価ボードがAVNETから発売されています。このZED Boardをバウンダリスキャンをしてみましょう。
ZED Boardとは?
ZED Boardというのは、XILINXのARM内蔵FPGAである「ZYNQ」の評価ボードです。ZYNQのXC7Z020 CLG484が使われているようです(※ただし、ZYNQの上にはヒートシンクがのっているので、シルクは見えません。)
写真1 ZEDボードの外観
ZED Boardには、USBのポートが3つ!! (PROG UART OTGと書かれている)もあります。1つはUSB-JTAG、一つはUSB-OTG、もう一つはUARTです。普段はUARTにつなげばいいそうです。
万能基板のようなランドはなく、10ピンのボックス型ピンヘッダが5個とメザニンがあるだけで、拡張性は高いとはいません。そのほか、VGAやHDMI出力、GbE、オーディオ端子があります。付属のSDカードを差し込んで電源をONすると、カードからU-bootが起動して、すぐにLinuxが起動します。
図2 ZEDボードのLinux
ZED Board.のWebサイトからサンプルデザインをダウンロードしてきても中にVHDLファイルはわずかしかないので、もはやFPGA評価ボードというよりはARMの評価ボードといった感じです。
ZEDボードをバウンダリスキャンしよう。
このARM内蔵のFPGA評価ボードを普通に使うのではなく、MITOUJTAGを使ってバウンダリスキャンしてみましょう。
まず、MITOUJTAGを起動してZED Boardを認識させます。すると、CORTEX A9と、ZYNQの本体認識されました。CORTEX A9のJTAG IDCODEは4BA00477、ZYNQのJTAG IDCODEは03727093でした。CORTEX A9はバウンダリスキャンできないので、小さな灰色の■で表示されます。
図3 ZYNQのバウンダリスキャン
基板のシルクをみると、U14,U19,W22番あたりの端子がLEDにつながっているようなので、ここをMITOUJTAGの画面上でクリックしてやります。
図4 LEDのようすを端子でみる
すると・・
と、このように操作することができました。
Linuxが起動するまでの端子のようす
次に、Linuxが起動するまでの各I/O端子の状態をみてあげることにしましょう。
図5 Linuxが起動するまでの端子の状態
リセットボタンを押すと、PS_SRST_Bという端子がLになります。その瞬間、INIT端子もLレベルを出力します。
その後、SDカードのSD-CMDとSD-D0が激しく動いて、なにやらデータを読み出している様子がうかがえます。10秒ほどすると、FPGAのDONE信号がL→Hにあがって、FPGAのコンフィギュレーションが完了したことがわかります。
同じタイミングで、こんどはDDR SDRAMの端子の状態を見てみます。FPGAが起動したくらいの時間(17秒目付近)からDDR2 SDRAMの信号が動き出しているのがわかります。
図6 Linuxが起動するまでのDDR SDRAMの状態
おそらく、ZYNQの中のARMがSDカードからブートプログラムが起動して、その起動シーケンスの中でFPGAのコンフィギュレーションを行っているのでしょう。つまり、ARMがメインで、FPGAはサブというわけです。
ZYNQのコンフィギュレーション
MITOUJTAGは書き込みをするだけではなく、書き込んだFPGAの端子の状態をモニタするということができることです。書き込んだデザインがちゃんと動いているかどうかをすぐに確認できます。
MITOUJTAG 2.40cと、それ以前のバージョンのMITOUJTAGでZYNQに書き込むには、パッチが必要です。
パッチはこちらのページ /download.html にある、
「書き込みアルゴリズムの更新 更新日:平成24年12月22日」を適用してください。
書き込みのやり方は百聞は一見にしかず。↓のビデオを見てください。LEDチカチカするためのbitファイルをJTAG経由でFPGAに転送しています。このように、iMPACTを使わずにXILINX 7シリーズのコンフィギュレーションが簡単にできるようになりました。
まとめ
このように、ZED Boardのデフォルトのデザインについては全く知識がないものの、端子の状態だけは自由自在に見たり操作することができました。MITOUJTAGを使えば、このようなことが簡単にできます。