ラベル FPGA の投稿を表示しています。 すべての投稿を表示
ラベル FPGA の投稿を表示しています。 すべての投稿を表示

2017年2月8日水曜日

ブートイメージからカーネル、rootfs、configを取り出す

image.ub ファイルからカーネル、rootfs、/proc/configを取り出す

SDSoC 2016.3に含まれる ZYBO 向け Software Platform からカーネル、 rootfs、/proc/config を取り出したかったので取り出した。

そもそも image.ub ってなんだ


ARMで使えるブートローダu-bootが扱うイメージフォーマットらしい。

$ mkimage -l image.ub
FIT description: PetaLinux arm uImage with single Linux kernel and FDT blob
Created:         Fri Nov 18 04:07:34 2016
 Image 0 (kernel@1)
  Description:  PetaLinux Kernel
  Created:      Fri Nov 18 04:07:34 2016
  Type:         Kernel Image
  Compression:  gzip compressed
  Data Size:    8747883 Bytes = 8542.85 kB = 8.34 MB
  Architecture: ARM
  OS:           Linux
  Load Address: 0x00008000
  Entry Point:  0x00008000
  Hash algo:    crc32
  Hash value:   252654ca
 Image 1 (fdt@1)
  Description:  Flattened Device Tree blob
  Created:      Fri Nov 18 04:07:34 2016
  Type:         Flat Device Tree
  Compression:  uncompressed
  Data Size:    13962 Bytes = 13.63 kB = 0.01 MB
  Architecture: ARM
  Hash algo:    crc32
  Hash value:   66629950
 Default Configuration: 'conf@1'
 Configuration 0 (conf@1)
  Description:  PetaLinux Boot Linux kernel with FDT blob
  Kernel:       kernel@1
  FDT:          fdt@1


カーネルを取り出す


まずこのイメージからカーネルを取り出す。 mkimage -l の結果から gzip compressed であることがわかっているので、 magic を頼りに探すと 240バイト目から gzip データがあることがわかる。 mkimage の結果からファイルは 8747883 バイトであることがわかる。

$ grep -P -a -b  --only-matching $'\x1F\x8B\x08' image.ub
240:

なので

$ dd if=image.ub of=linux.bin.gz bs=1 skip=240 count=8747883
8747883+0 records in
8747883+0 records out
8747883 bytes (8.7 MB, 8.3 MiB) copied, 6.91697 s, 1.3 MB/s

$ file linux.bin.gz
linux.bin.gz: gzip compressed data, was "linux.bin",
  last modified: Thu Nov 17 19:07:33 2016, max compression, from Unix


カーネルの中から gzip データを取り出す


さらにこのアーカイブの中にrootfsが含まれている。cpioフォーマットで入っているかと思い、cpioフォーマットのヘッダである"070707"をgrepしたら発見... と思ったがハズレだった。これはcpioアーカイブじゃなくてcpioアーカイブを探すプログラムが参照している文字列っぽい。ということは...

$ grep -P -a -b  --only-matching $'\x1F\x8B\x08' linux.bin
6278680:
8588960:
9923536:

gzip のヘッダらしきものが3つ見つかった。まずひとつ目は...

$ dd if=linux.bin skip=6278680 bs=1 | gzip -dc > hoge

gzip: stdin: decompression OK, trailing garbage ignored

toor@gpusv:~/zynq7/extract_initramfs$ file hoge
hoge: Linux make config build file, ASCII text

ASCIIだと!?

$ head hoge
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm 4.6.0 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_ARM_HAS_SG_CHAIN=y
CONFIG_MIGHT_HAVE_PCI=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_HAVE_PROC_CPU=y
CONFIG_NO_IOPORT_MAP=y

...config.gz だった。まあ、ついでなので保存。

$ mv hoge config


では次。

$ dd if=linux.bin skip=8588960 bs=1 | gzip -dc > hoge
gzip: stdin: decompression OK, trailing garbage ignored

toor@gpusv:~/zynq7/extract_initramfs$ file hoge
hoge: ASCII cpio archive (SVR4 with no CRC)

toor@gpusv:~/zynq7/extract_initramfs$ cat hoge | cpio -it | head
cpio: Substituting `.' for empty member name
.
dev
dev/pts
etc
etc/opkg
etc/opkg/arch
etc/rpm
etc/rpm/sysinfo
etc/rpm-postinsts
etc/network

今回は間違いなくinitrdイメージだ。

$ mv hoge initrd


目的な達成したけど、3つめはなんじゃらほい。
dd if=linux.bin skip=9923536 bs=1 | gzip -dc > hoge
gzip: stdin has flags 0xce -- not supported


これは有効なgzipじゃなかった。"070707" 同様に gzip をデコードするルーチンが参照している定数かも。

2016年10月16日日曜日

PYNQを買ったので遊んでいる(Project Inq)

久々にFPGAいじりをしています。

今回入手してしまったのはPYNQ。Xilinx Zynq7020シリーズを搭載した評価ボードで、あらかじめ用意されたイメージをSDカードに書き込んであげればJupiterからWebブラウザ経由でもいくらか操作を試せるというお手軽さがウリ。



届いたPYNQのパッケージ

秋葉原の職場に送ってもらったので、受け取ったら早々と部品やでヒートシンクと熱伝導シーツを調達。

SDカードにイメージを焼いて起動したら、当然とはいえ、普通にヘッドレスなARM7 Linuxマシンとして起動してきた。OSはUbuntu 15。 OpenCVは 3.1 で、FFmpegサポートも入った状態でコンパイルされている。……これは色々と便利なのでは?

試しにIkaLogでビデオファイルを解析させてみたら、あっけないほど簡単に動いた。

PYNQにはビデオキャプチャ利用を想定したHDMI Inputポートがあるので、これでキャプチャできるかは大変興味があるところ。Jupiter上でOpenCVの顔認識をするコードを途中まで実行したら、WiiUの画像がキャプチャできた。



ただしPYNQのbase.bitではDDCの応答内容に問題があるのかWiiUからビデオ信号が出てこない。このためHDMIマトリックススイッチやスイッチャーなどの機械を挟んでいる。また、720pだと色々安定していないような感じ……。過去に試していたとき、ZYBOではDigilentのdvi2rgbのEDIDを書き換えたらWiiUの信号を直接、安定して食えるようになったので、そのときの成果を持ってくれば解決するだろう。だいたい解決策は見えているので後回し。ちなみに以前ZYBOで実験していたときの写真がこちら。


Jupter で操作した内容を IkaLog の映像インプットとして使えるようクラスを追加して、とりあえずだけども対応完了。
https://github.com/hasegaw/IkaLog/commit/5b6b9ce55e1ae32e57c2dd6f05ae20aa00c9b3fd

HDMIのキャプチャは実現できたが、PYNQにはHDMI Outputもあるので、こちらにパススルーすると、PYNQがIkaLogマシン+ビデオキャプチャ+HDMIスプリッタを兼ねるという、いままでIkaLogを利用するにあたって必要となる3つのアイテムをワンボードで実現できることになる。

Pynqのドキュメンテーションを読んでいると、じつは上記の設定でHDMIパススルーも実現できていることがわかった。上記の設定を行うとOut側がIn側のバッファからデータを受け取るようなかたちでパススルーしてくれる(プロセッサは通していないと思う……フレームバッファは通しているかも?)

というわけで、数時間でできちゃったIkaLog+PYNQ(キャプチャ機能+映像のみスプリッタ機能)。

Pynqで動くIkaLog、Project Inqと命名。Pynqの利用用途として思いついてはいたけども、思った以上に簡単に実装できてしまった。ここまでの成果については下記 WIki ページを見ていただければ再現できるはず。
https://github.com/hasegaw/IkaLog/wiki/en_Installation_Pynq

これをしばらく動かしてみるといくつか課題が見えてくる。

一つ目の課題は、HDMI Outputから出力された映像がたまに縦にずれたりする。たぶんHDMI映像の伝送が、ARMのDDR3メモリに置かれたフレームバッファを介していて、IkaLogが走っているとメモリ帯域やバス幅が足りなくなるんじゃないかと疑っている。

二つ目の課題は、HDMIのスプリッタ機能といっても HDMI 信号を音無しの DVI 信号としてピクセル情報に落とし、それを DVI 信号として HDMI ポートから出しているだけなので、音が消えてしまう。もちろんレイテンシの問題もあるし、キャプチャ機能はそのまま使うとしても、 HDMI Input から入ってきた信号をできるだけ忠実に HDMI Output に出力するよう変更したい。

Xilinx FPGAなのでHDMIのシリアル信号をISERDESE2で受けて、出力するときはOSERDESE2で送信している(はず)。これらを直結すればナノ秒レベルのディレイでシリアル信号をそのまま伝達できるだろうけど、ビデオキャプチャ機能も必要なので、dvi2rgb IPと共存することは考えないといけない。

とりあえずPYNQについてきたbase.bitは忘れて、dvi2rgb -> rgb2dvi でパススルーするデザインを作ってみた。



WiiU の信号が直接映らないのは相変わらずだけども、画像がたまに縦に1ドット間延びするような現象は解決した。ARMプロセッサ側のDDR3メモリを介さずに、受け取った信号をそのまま送出しているからだろう。

でも、やはり音のデータは消えてしまっている。

手元に高速ビデオ・インターフェース HDMI&DisplayPortのすべて という書籍があった。


これを読み返してみると、オーディオ信号はVSYNC直後のブランク期間などに入っているとのこと。ここが現状どうなっているかを調べると、色々解決しそう。 dvi2rgb がブランク期間中の信号を捨ててしまっているのではないかという想像だ。もし信号が捨てられていない事が分かればラッキーで、今度は送出側 rgb2dvi が信号を捨てていると考えればよさそう。

Integrated Logic Analyzer を追加して信号を眺めてみる。





案の定 dvi2rgb がブランク期間中の信号をゼロでマスクしているようだ。この 000000 になっているところに、本当はオーディオ信号も乗っているはず。ここにあるはずの信号も含めて rgb2dvi の OSERDESE2 に流し込んであげれば、きっとオーディオ含めてスプリッタとして動作してくれるだろう。

とりあえずの調査はここまで。

2014年9月4日木曜日

Nexys 4 と ISE Design Suite で何か作ってみる(後編)

前編では、新しいプロジェクトを作って、プログラム可能なファイルを生成するところまでを見てみました。続いて実際に FPGA にプログラムしてみます。

■ Micro USB コネクタによる JTAG 接続

Nexys 4 を Micro USB ケーブルで開発機に接続します。このためには、あらかじめ Nexys 4 上のジャンパを設定しておきます。設定方法は Nexys 4 のリファレンスマニュアルに書いてありますが、参考までに引用しておきます。


JTAG を利用するには JP1 の真ん中の2本のピンをショートさせておきます。ジャンパの設定を終えたら Micro USB ケーブルで開発機に接続し、 Nexys 4 の電源スイッチをオンにします。

今回は VMware を使っているため、仮想マシンに USB ターゲットを接続します。



また、初回接続時は USB Serial のドライバがロードされるまでにしばらく時間がかかりました。 うまく接続できていれば、デバイスマネージャで COM ポートが確認できるはずです。


■ いざプログラム

Project Navigator に戻ります。先ほど実行した Generate Programming File の下にある、 Configure Target Device のツリーをひらき、 Generate Target PROM/ACE File をダブルクリックします。


下記の警告が表示されますが無視します。



ISE iMPACT というプログラムが立ち上がってくるので、ここで iMPACT Flows から Boundary Scan を選択し、左側ペイン内を右クリックしてショートカットメニューから Add Xilinx Device をクリックします。

 
FPGAのプログラムに使用したい .bit ファイル、つまり先ほど生成したロジックを含むファイルを選びます。ここでは test.bit ファイルがありますのでこれを選択します。



iMPACT の右側ペインに表示された Xilinx のチップアイコンを右クリックして、ショートカットメニューから Program を選択します。



上記操作で、 FPGA へのプログラムが開始され、プログラムが完了すると Program Succeeded という表示がなされます。

■ 動作テスト

FPGA へのプログラムが完了すると、 DONE LED(FPGA右上)が点灯し、組んだロジックが動作しはじめます。 SW0 と SW1 を操作すると、対応する LED が点灯/消灯するのが確認できます。



なお、今回は FPGA に通電後、 JTAG ケーブルを通じて直接プログラムしました。ボードの電源を落とすとプログラム内容は消えてしまいますので、改めてアップロードする必要があります(もしくはコンフィグレーション ROM に bit ファイルの内容を書き込んで、電源オン時に自動ロードされるようにします)。





Nexys 4 と ISE Design Suite で何か作ってみる(前編)

FPGA いじりをはじめるにあたって色々調べたのですが、とりあえず簡単なロジックを FPGA にプログラムするまでの手順、とくに今回買った Nexys 4 向けの具体的なものが見当たらなかったので、ここにメモがてら残しておくことにします。

今回は作業環境とライセンスの都合上 ISE Design Suite を使い、真っ白なプロジェクトから実際に Nexys 4 向けの bin ファイルを生成し、プログラムしてみます。

これ見れば誰でも FPGA いじり始められますね!みんなあそぼうず。



■ 新しいプロジェクトを作成する

まず ISE Project Navigator を起動し、 New Project... をクリックします。


次にプロジェクト名を指定します。今回は myproj1 としました。またプロジェクトの配置先フォルダを指定しました。プロジェクトの配置先フォルダに myproj1 というサブフォルダが作成され、その中にプロジェクト一式が保存されるようです。


次の画面ではターゲットの FPGA のモデルを指定します。 Nexys 4 の場合はリファレンスマニュアル(PDF)およびサイトの表記から XC7A100T-1G324C というチップだとわかりますので、これにあわせて選択します。なおスピードは -1 が遅い、 -3 が速いモデルで、 324C というのは 324 ピンの BGA パッケージであることを示しています。



■ 制約ファイルを追加する

プロジェクトが作成できたら、次に、プロジェクトに制約ファイルを追加します。 myproj1 を右クリックして Add Copy of Source... を選択します。右側に + マークが付いたアイコンがありますので、これを押してもよさそう。



Nexys 4 のサイトから入手した UCF ファイルを指定します。




■ 新しい VHDL ファイルを作成する

次に、プロジェクトに新しい VHDL ソースファイルを追加します。 New Source... をクリックします。

ファイルの種類として VHDLを選択しました。また VHDL ファイル名はとりあえず test.vhdl としてみます。



Define Module というダイアログが表示されますが、とりあえずここはそのまま。



ウイザードを終了すると、下記のようなからっぽのテンプレができています。



■ ロジックを書いてみる

早速何かかいてみます。 SW0 がオンだったら LED0 を点灯させ、 SW1 は逆にオフのときに LED1 を点灯させます。



■ 制約ファイルを編集する

ここで SW とか LED というポート(各2ビット)を使っていますが、このポートが FPGA のどのピンに対応しているかを示すため制約ファイルを編集します。 Nexys4_Master.ucf ファイルで以下の行を有効化します。

NET "sw<0>"            LOC = "U9"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_L21P_T3_DQS_34,                    Sch name = SW0
NET "sw<1>"            LOC = "U8"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_25_34,                            Sch name = SW1


## LEDs
NET "led<0>"            LOC = "T8"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_L24N_T3_34,                        Sch name = LED0
NET "led<1>"            LOC = "V9"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_L21N_T3_DQS_34,                    Sch name = LED1



■ 論理合成、 bit ファイルの生成

ここまでできたら下記スクリーンショット中の ▶ ボタンをクリックしてプロジェクトを Implement してみます。画面下部にログが表示されます。

 
Implement が終わったら、次は Generate を行います。 test - Behavioral (test.vhdl) を選択した状態で、下の Process: から Generate Programming Fileを選択します。



最終的に Process "Generate Programming File" completed successfully と表示され、先の Generate Programming File の左側に緑色のチェック印が出れば OK なようです。これでとりあえず FPGA にアップロードできそうなファイルができました。

■ 後半編へ

後編では、今回生成した bit ファイルをアップロードしてみます。

Nexys 4 サイトから入手できるファイル

今回買ってみた FPGA トレーニングキット Nexys 4 の使い方は、販売元の Digilent 社のサイトにいろんな情報や、デザインに使うためのファイルがあります。


■ サイトを覗いてみる



ページ上部は製品の仕様などが書かれていますが、このページのいちばん下を見ると、実際にいじくるために参考となる、必要となるファイルが置かれています。


■ サイトから入手できるファイル(特に大事なもの)


Nexys 4 reference manual
製品マニュアルです。先のブログ記事に購入したパッケージの写真をのせましたが、製品にはマニュアルが含まれていないので、このファイルをダウンロードして参照することになります。 FPGA への電源供給方法やプログラミング方法のほか、各種 I/O がどのような仕様になっているか等も解説されているので、このファイルを一通り見ると、このボードでどういう I/O ができるかは一通り判るようになっています。

Nexys 4 schematics
トレーニングボードの配線図。

Nexys4 Master UCF File for ISE designs
Nexys4 Master XDC File for Vivado designs
これらのファイルは制約ファイルと呼ばれるものだそうです。 Nexys 4 は ALTRIX-7 を載せたトレーニングボードですが、 FPGA から出ているピンからは各種 I/O に接続されています。制約ファイルには、この FPGA ピンと基板上の I/O の対応が記述されています。


■ 制約ファイルを見てみる
 
各ピンからどの I/O に接続されているかは先のリファレンスマニュアルや配線図をみるとわかるのですが、デザイン環境で作ったロジックを実際の I/O ピンに割り当てるための定義サンプルがこのファイルに含まれています。UCF ファイルは今回利用する ISE DS
 用、XDC ファイルは新しいデザイン環境である Vivado DS 用のファイルです。 UCF ファイルの中を覗いてみると

## Clock signal
#NET "clk"   LOC = "E3"    | IOSTANDARD = "LVCMOS33";                    #Bank = 35, Pin name = IO_L12P_T1_MRCC_35,                    Sch name = CLK100MHZ
#NET "clk" TNM_NET = sys_clk_pin;
#TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100 MHz HIGH 50%;

## Switches
#NET "sw<0>"            LOC = "U9"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_L21P_T3_DQS_34,                    Sch name = SW0
#NET "sw<1>"            LOC = "U8"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_25_34,                            Sch name = SW1
#NET "sw<2>"            LOC = "R7"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_L23P_T3_34,                        Sch name = SW2
#NET "sw<3>"            LOC = "R6"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_L19P_T3_34,                        Sch name = SW3
#NET "sw<4>"            LOC = "R5"    | IOSTANDARD = "LVCMOS33";        #Bank = 34, Pin name = IO_L19N_T3_VREF_34,                    Sch name = SW4


こんな感じの定義が並んでいて、上記の部分では水晶が E3 というピンに、スイッチは U9, U8, R7, R6, R5... というピンに繋がっていることがわかります。ここで先の Reference Manual を見てみましょう。こちらでもやはり、 E3 が 100MHz の水晶発振子に接続されていることが確認できます。



この制約ファイルは全てコメントアウト状態になっていますが、たとえば CLK の部分をコメントアウトするとVHDL などから CLK というピンが見えるようになり、 sw<0> 〜 sw<3> のコメントアウトを解除してあげた制約ファイルをプロジェクトファイルに追加すると、 から sw(0)〜sw(3)  という形で各ポートにアクセスできるようになります。

仮想マシン上で Vivado Design Suite が使えない

先日 FPGAトレーニングキットを買ったわけですが、さっそくひとつ目の罠にはまりました。仮想マシン上で Vivado Design Suite が使えないんです。。。これから Xilinx FPGA に手を出す方はお気をつけください。

Xilinx の開発環境はいま下記のふたつがあります。
  • Vivado Design Suite
  • ISE Design Suite

このうち ISE Design Suite は過去のバージョンのもので、2013年に機能追加を終えてメンテナンスフェーズに入っています。現在は Vivado Design Suite がメインストリームということのようです。

それで、新しい Vivado Design Suite をインストールしてみたのですが、動かしてみたら、まさかのライセンスがアクティベートできない罠にはまりました。

Vivado 2013.3 can't find license

Vivado DS, ISE DS ともに無償でダウンロード可能で、論理合成などの機能を無償で利用するためには Xilinx のサイトで登録の上 WebPack ライセンスを取得します。 ISE DS の無償ライセンスはフローティングライセンスが取得できるのですが、 Vivado DS の無償ライセンスはノードロックになっていて、しかもどうやら VMware の MACアドレスを検出して弾いているっぽいですね。。。。

私は MacBook Air 上で VMware Fusion を動かして Windows や Linux を動かしているので、上記の制限にひっかっかります。この制限は次期バージョンの 2014.03 で取り除かれる予定、とあります。

ちょっと触ってみた感じ新しい Vivado のほうがインターフェイスが良いし、複数のツールがひとつの開発環境に統合されているようで具合よいのですが、今回買った Nexys 4 は ISE DS でも対応できます。

先のディスカッションを見ると Xilinx の窓口に問い合わせをすると Vivado DS のフローティングライセンスを出して対応してくれたりするようですが、今回はとりあえず ISE DS にダウングレードして、通常フローで取得できるフローティングライセンスを使うことにしました。

2014年9月3日水曜日

FPGAトレーニングキットを購入

突然ですが FPGA トレーニングキットを買ってみました。

大学生時代は「ミドルウェアより下のレイヤには絶対手を出さないぞ」と思っていたのに、気付けば OS やら VMM のレイヤに取り憑かれ、就職して暫くまでは「ソフトウェアより下のレイヤには絶対に手を出さないぞ」と思っていたのに、気付けばドライバやらマイコンをいじりはじめ、と興味の対象が順番に低レイヤにおち続けている hasegaw です。今回はどうして FPGA 買っちゃったのかについてでもポロっと書いておこうかなと。

■ きっかけはまさかの Minecraft


ある日偶然ネット上でみかけたのが Minecraft 上でぷよぷよを実装しちゃったという動画でした。 Minecraft って全部正方形で構成されてる雑ゲーだと思ってたんですが、ここで Minecraft に対する認識を改め、 20 ドルほど出して Win/Mac の製品版ライセンスやら iOS 版のアプリやらを買い始めます。

解説動画もあったので見てみると、レッドストーン回路なるものがゲーム上に存在して、そこで論理回路が自在に組める仕組みになっているそうで(さすがに先の動画は素の Minecraft では厳しいようですが)。もちろん複雑なものを作るのは大変みたいですが、下手な”高レベルなブロック”を組み込むよりも、ゲーム上で論理回路を組めるようしておこうって発想はおもしろいですね。

■ 回路シミュレータで遊びはじめる


Minecraft で遊んでいたりもしたのですが、 iPad で使える数百円の回路シミュレータで遊んでいるうちにもっと大きな回路が書きたくなってきたりして、最初はブレッドボード上にでも組もうかと思ったのですが、回路が複雑になってくると配線引き回すのも大変なので結局 FPGA に移ることにしました。

■ FPGA トレーニングキットを購入

ハードウェアもロジックもまったくの素人ですが、今回買ってみたのは Digilent 社の Nexys 4 です。 ALTERA ベースだと DE0 などのボードが1万円前後で手にはいる?ようですが個人的には Xilinx ベースが良かったので、適当なボードを探していたら Digilent 社の Nexys 2/3 が入門向けとして良さそうでした。 Nexys 3 だと Spartan-6 が載っているということですが、これだと一世代古いチップになります。今は Nexys 4 という、 ARTIX-7 搭載モデルが出ていたのでコレにすることにしました。





まだド素人がボードを買っただけの状態ですけど、 Nexys 4 は前世代と比べると 7 セグやスイッチの数が倍増しています。また、購入前にいろいろ調べていると、 Nexys 3 だと 1080p のビデオ信号を出そうとすると性能が足りないっぽいので、どうせなら新しいモデルを買っておくことにしました。 Nexys 4 は Nexys 3 と比べて 4000〜5000 円ほどUPですが、 I/O が増えて FPGA クロックも高くなっていれば十分にその価値はあるんじゃないかと思います。

ついでに Nexys 4 だと別売の JTAG ケーブルを買ったり工作したりせずとも、 JTAG として使える Micro USB ポートがあります。つまりは手許の PC におもむろに USB 接続すると JTAG 接続状態になるわけです。 4000~5000 円の追加投資でここまで性能アップ&お手軽になるのなら全然アリですね。



Nexys 4 ピンポイントの情報源があまりなくて不安ですが、 Digilent のサイトからダウンロードできるマニュアルは丁寧(?)に書かれているので、ピンポイントな解説や書籍がなくてもいじれそうで安心しています。一点ひっかかるとしたら ARTIX-7 になると BGA パッケージしかないので、今後何か基板を製作しようと思ってもたぶん自分でパーツ実装できないという問題はありそうです。 FPGA パッケージひとつで1万円ぐらいするみたいだし。まあ、何か基板を製作するような事になったら、そのときは Spartan ベースでやるなりすればいいでしょう。



国内でも取り扱いがある代理店はいくつかあるようですが、結局 Digi-Key から買いました(本体価格 約31000円+諸経費にて合計38000円弱)。日本時間で金曜日の日中に注文したら、その夜にはミネソタから発送され、月曜日の日中にはヤマトが自宅まで配送してきてくれました。アメリカから通販したのって今回が初めてですが、72時間ぐらいで届いちゃうってすごいですね。

いままで経験がない分野なのでワクワクしてますが、果たしてどこまで遊べるか。。。。何かできたらまた書きたいと思います。