2020.03.31

ZYNQ UltraScale+の新しい評価ボード TE0802

TrenzElectronic社から出ているTE0802というZYNQ UltraScale+の評価ボードを買いました。

Te0802_1

面白そうだから、思わず自分用に注文してしまいました。。

いままで個人の趣味でUltraScale+を使ってみるとなると、みんなUltra96一択でした。

確かにUltra96の他には、手ごろな価格のUltraScaleボードが無かったからでしょう。

 

でも、Ultra96一強の時代は終わりました❗❗

新しい低価格UltraScale+評価ボードの登場です。

その名も、TE0802-02-2AEU2-Aです。(覚えにくい💦

https://www.trenz.jp/product/TE0802-02-2AEU2-A

主なスペックは、

  • XCZU2CG-1SBVA484E
  • LPDDR4 1GB
  • ギガビットイーサ
  • USB3.0ホスト
  • M.2 SSD PCIe
  • Display port
  • VGA搭載
  • USB-JTAGとUSB-UARTをオンボードで搭載
  • 4桁の7セグLEDのほかLEDがいっぱい
  • ボタンやスイッチがたくさん
  • PMODが2個
  • 5V単一電源で動作
  • ファンレス

という感じです。

Ultra96と比べて良いなと思うところを赤色にしました。

まず、Ultra96は5Vじゃ動かないのですが、このボードは5V単一電源で動きます。12Vで細口の特殊なACアダプタを用意しなくていいんです!

それに、Digilent互換のUSB-JTAGとUSB-UARTを搭載しているので、書き込みもデバッグもコンソールも、他に何もいりません。

おまけに、使うかどうかわかりませんが、PCIeも付いています。ここにはM2のSSDを乗せるようですね。

FANもないので静かです。

Ultra96がZU3EGなのに対して、このボードはZU2CGと、少し規模が小さいのとGPUが乗っていない点が負けているところです。

Te0802_bot

GPUはありませんが、画像描画が目的でなければあまり関係ないのかもしれません。Ultra96と比べると周辺回路が充実しているので楽しめるでしょう。

 

それではさっそく動かしてみようとしたのですが、SDカードは付属していなかったので、Trenz社の製品ページに行き、Downloadsタブの中からTE0802-test_board-vivado_2018.3-build_07_20190830103019.zip をダウンロードしてきます。

Image2

この中のtest_board\prebuilt\boot_images\2cg_i1gb\u-boot\BOOT.binをSDカードに入れれば、U-bootまでは立ち上がります。

--------------------------------------------------------------------------------

Xilinx Zynq MP First Stage Boot Loader (TE modified)
Release 2018.3 Aug 30 2019 - 08:40:28
Device Name: XCZU2CG

--------------------------------------------------------------------------------
TE0802 TE_XFsbl_BoardInit_Custom
Reset Complete

--------------------------------------------------------------------------------
NOTICE: ATF running on XCZU2CG/silicon v4/RTL5.1 at 0xfffea000
NOTICE: BL31: Secure code at 0x0
NOTICE: BL31: Non secure code at 0x8000000
NOTICE: BL31: v1.5(release):xilinx-v2018.2-919-g08560c36
NOTICE: BL31: Built : 10:34:42, Aug 29 2019
PMUFW: v1.1


U-Boot 2018.01 (Aug 29 2019 - 10:32:05 +0000) Xilinx ZynqMP ZCU102 rev1.0

I2C: ready
DRAM: 1023 MiB
EL Level: EL2
Chip ID: zu2cg
MMC: mmc@ff160000: 0 (SD)
Using default environment

In: serial@ff000000
Out: serial@ff000000
Err: serial@ff000000
Board: Xilinx ZynqMP
Bootmode: SD_MODE
Net: ZYNQ GEM: ff0e0000, phyaddr 1, interface rgmii-id

Warning: ethernet@ff0e0000 using MAC address from ROM
eth0: ethernet@ff0e0000
U-BOOT for petalinux

ethernet@ff0e0000 Waiting for PHY auto negotiation to complete..........

無事U-Bootは起動したのですが、uImageがなく、ここから先の起動はできませんでした。

Te0802_2

ディジタル時計みたいなアプリが動いています。↑

 

アーカイブにLinuxの完全なイメージは含まれていなかったので、PetaLinuxで作るか、どこからかTrenz用Linuxを探してくるかしなければならないようです。

誰か腕試しにLinuxを移植してみませんか?

 

USB-JTAGが乗っているようなので、MITOUJTAGでも見てみました。

MITOUJTAG 3.4でなら、バウンダリスキャンができます。端子の状態も見えます。

Te0802_mj1

I/Oの状態を波形としても見ることができました。

Te0802_mj2

PLはコンフィグされていて、7セグLEDの信号とVGAの信号が激しく動いているようでした。

 

さて、こんな楽しそうな機能がいっぱいのTE0802を輸入して販売いたします。

価格は39,800円。

銀行振込もしくは代引きでご注文いただくと、送料無料です。

 

なお、ドイツの輸出規制にひっかかる商品のため、その都度輸出許可を得る必要があります。

輸出管理の関係上、弊社にストックしておけないので、納期はどうしても1週間くらいかかります。

ですが、頑張って輸出申請書類を書いて、取り寄せます。

 

外出自粛であまり外に出られないご時世ですので、自宅に籠ってUltraScale+のLinuxを極めるなんていうのも素敵な過ごし方ではないかと思います。

PCIeやPMOD、たくさんのLED・スイッチなど、Ultra96では楽しめない要素が盛りだくさんです。

気になったらぜひ見てみてください!

製品紹介ページはこちらです↓

https://www.trenz.jp/product/TE0802-02-2AEU2-A

 

※コロナウィルスの影響で国際輸送網に影響が出始めています。国際輸送が正常に機能している今週中にぜひともご注文ください。メーカーに在庫はたくさんあります。

 

| | コメント (0)

2020.03.28

Cosmo-Z 64chの裏面パネルに大きな穴あけ

いや~もう、このステップドリルビットというアイテムは神!

Cosmoz64_6

私はアルミ加工がめちゃくちゃヘタクソなのですが、このステップドリルを使うことで大きな穴をサクサクあけられるようになりました。

Cosmoz64_7

4mmの穴をあけたら、6mmの穴が開き、次に8mmの穴が開き・・・とい感じでどんどん大きな穴が開いていきます。

テーパーリーマーで汗だくになっていた今までは何だったの!?という感じです。

 

下敷き(ここでは適当な本)の上にアルミ板を乗せて手で固定してドリルで穴開けします。左手で固定して右手でドリルというスタイルは危険だから本当はいけないのでしょうけど。何度か切腹しそうになりました。従業員にはやらせられないですね。

ボール盤とかCクランプとか欲しいけど、置く場所がないし、1年に1回くらいしかアルミ加工しないので、仕方ない。

 

とりあえずこの、電動ドリル一本でここまで加工できました。

Cosmoz64_8

 

| | コメント (0)

2020.03.27

Cosmo-Z 64chに通電

秋葉原に行って、いろいろな小物類を買ってきて、配線をしました。

Cosmoz64_3

電源モジュールから出てくる配線をネジで固定するやつをはじめ、いろいろな小物を買ってきて組み立てました。

電源を入れたところ12Vで2.8Aくらい流れます。ドゥーンという音がするのが緊張感を高めます。

起動時に大きな電流が流れるようで、安定化電源を3Aにセットしていると起動できないこともあります。

GbEのハブは両面テープで電源モジュールの上に固定です。両面テープと言っても、超強力なやつで、つるつるの面同士でくっつけると二度と離れないくらい強力です。

2台の基板の同期をどう取るかを考えたところ、1台をメイン基板にして、

Cosmoz64_4

もう一台をサブ基板にすることにしました。

Cosmoz64_5

そして、メイン基板のGTXを2個使ってクロックと、リセット信号、トリガ信号を送ります。メインのGTXとサブのGTXはそれを受けて、クロックとリセットとトリガを受け取ります。

つまり、メインもサブもGTX経由で受け取ったクロックと、リセット信号、トリガ信号で動くようにするというわけです。

きっと大丈夫。このような感じで100台のカメラをクロック同期させた経験があります。

 

秋月でSMAコネクタと、千石で同軸を買ってきました。

| | コメント (0)

2020.03.26

Cosmo-Zの64ch版を開発中

Cosmo-Zの64ch版を開発しています。

Cosmoz64_1

一つの箱の中に、32chのCosmo-Zを2台入れています。ギガビットイーサのハブと、USBのハブと電源ユニットを入れて、外からは1台の装置に見えるようにするという考えです。

これで、125MHzで12bitで64chの同時サンプリングができるようになります。

Cosmoz64_2

2台の同期をどう取るか、排熱は大丈夫かなど、悩みは尽きません。

 

| | コメント (0)

2020.03.24

突然送られてきたLynsyn Liteを試してみた

SUNDANCEというイギリスの会社から突然、ボードが送られてきました。注文もしていないのに。

「きっと興味を持ってくれるだろう」みたいな手紙が添えられて。

 

Lynsyn1

電源電圧と電流を測定できるボードだそうで、普通に買うと日本円にして1万2千円くらいです。

Lynsyn2

ただの電圧電流測定ボードなら全く興味を持たなかったのですが、JTAGと書いてあるので、思わず動かしてみたくなりました。

 

XILINX JTAGとか書いてあるので、Vivadoから使えるのかしら?

Micro USBを差し込むとUSBシリアルとしてCOMポートが開けるのですが、キーを叩いても特に何も起きません。

JTAGコネクタに変換アダプタをかましてXILINXのPlatform Cable USBにつないでも、特に何も認識されません。

 

ソフトウェアがGitHubにあるらしく、

https://github.com/EECS-NTNU/lynsyn-host-software/releases

からLynsyn host software V1.2.1 というのをダウンロードしてきます。

解凍して、

Lynsyn3

まずは、このzadig-2.4.exeを実行するそうです。

実行してOptions→List All Deviceを実行。

Lynsyn4

こっ、これは、危険なやつじゃん!!

「USBのドライバを別のやつに置き換えるツール」という明らかに危険な香りのするツールを使ってドライバをインストールします。libusbにするんですね。

どんなUSBデバイスのドライバも置き換えられそうですね。

Lynsyn6

そして、lynsyn_viewer.exeを実行します。

サンプリングを開始して、10秒間、待ちます。

Lynsyn5

10秒くらいで波形が出てきますが、それまでの間何も出ないので不安になりますね。

特に何もつないでいないので、電源電圧の半分くらいの電圧が表示されています。

暇になったらUSBとかの電源でも見てみましょうか。

 

それから、XILINXのUSBから認識されるのではなく、このLynsynがUSB-JTAGになるという意味でした。

つまり、Lynsyn LiteをXVCサーバなUSB-JTAGにしてVivadoから接続し、他のボードをコンフィグしたりデバッグしたりできます。XVCサーバになれる他、SVFやXSVFを実行する機能があるそうです。

箱に書いてある「Sampling over JTAG (ARM Cortex A9, A53, A57) with up to 10kHz」のやり方はちょっと分かりませんでした。

| | コメント (0)

2020.03.23

Spartan-7のLUT使用率が100%近くなるとどうなる?

XILINX FPGAのLUT使用率がどこまでいけるかを試してみました。50%くらいでダメになるという噂や、80%くらいで配線が引けなくなるという噂があるので、どこまで本当かを検証してみました。

といってもLUTを埋め尽くすようなロジックを書くのは大変なので、MicroBlazeの標準的なデザインを使って、MicroBlazeの機能をポチポチと設定することで、最大のLUTを目指しました。

ツールはVivado 2019.2、FPGAはXC7S50CSGA324-1です。

回路はこんな感じです。

Design_20200323172201

MicroBlazeはMaximum Performanceに設定するとLUTの使用率が高くなります。そして、CacheのLineLengthを8→16にすると効率よくLUTを消費できます。その他、細かいオプションをON/OFFすることで、限界ギリギリのLUT使用率が達成できました。このSpartan-7には32600個のLUTがあるのですが、ちょっと油断すると32630とかになるので、影響の少なそうなチェックボックスをポチポチやって試行錯誤します。もちろん微調整すれば100%に限りなく近づけることもできますが、時間がかかるのでこのあたりで妥協します。

設定は以下のとおりです。

Cfg1 Cfg3 Cfg2 Cfg4 Cfg5

さて、論理合成をかけてみました。

結果は、LUT使用率97%です。

Util

Util2

最も遅い-1グレードなのでタイミングエラーは出ていますが、place & routeにかかる経過時間を見ても11分で終わっており、LUT使用率が97%とMAXであるのにそれほど長時間かかるわけではありませんでした。

Drc

使用率を図で見てみましょう。

Dev1

はいっ!ほぼ100%埋まっていますね。

拡大すると、

Dev2 

やっぱり、みっちりと詰まっています。

結論を言うと、

  • XILINXのSpartan-7はLUTの使用率が100%近くになっても、配線が引けなくなることはなかった
  • LUT使用率が100%近くになっても、配線が終わらないということはなかった

手を動かして実験してみるのは大事です。さもないと、思い込みから抜けられなくなります。

 

逆に、LUT 50%くらい配線が引けなくなるデザインって、どんななの?」って感じです。

めっちゃ遠いところの入力を使う巨大なテーブルを作りまくればできるのでしょうか?

 

<おまけ>

MicroBlazeだからLUT使用率100%近くでも配線が引けるようなチートがあるのではないか?と疑う人がいるかもしれません。

XILINXのホワイトペーパー wp496に、UltraScale+とArria10で比較した実験の結果が出ています。

 

まぁ、XILINX側の資料なのでXILINXが優勢と書いてあるのは当然なのですが、OpenCoresの中から重そうなコアをいくつか持ってきて、UltraScaleとArria10で勝負したというものですから、MicroBlazeを使ってLUT100%を狙うよりフェアですね。

Wp496

内容を詳しくは読んでいませんが、この表を見ると複雑な演算回路で80%以上のLUT使用率でも問題なく使えそうですね。

Wp496_2

XILINXのAnswer 66134によればこういう問題のことを「密集」というそうです。

https://japan.xilinx.com/support/answers/66314.html

密集をほぐすオプションの設定方法がいろいろと書かれています。

| | コメント (0)

2020.03.21

MPSSE-JTAGで一応バウンダリスキャンに成功

FTDI社のFT2232HにあるMPSSEを用いたUSB-JTAGをMITOUJTAGから使うためのプラグインを作りました。

一応、このように動いています。

Mpsse_jtag

分かってきたことは、DigilentのUSB-JTAGもMPSSEとしてオープンできるということです。Digilent USB-JTAGはMPSSEの上に1枚ラッパを掛けたものなのでしょう。

FTDIのアプリケーションノートAN_129では

ftStatus |= FT_SetLatencyTimer(ftHandle, 16);

と、LatencyTimerを16msに設定していますが、この値にすると毎秒20回くらいのバウンダリスキャンしかできず、遅くなります。

実際にはFT_SetLatencyTimer(ftHandle, 1)で十分なようです。1に設定すると1.6msに1回くらいのバウンダリスキャンができるようになります。Digilentのライブラリも1に設定しているように見えます。

これを0にすると、なぜだかキュルキュルーという音が聞こえるようになります。PCが鳴っているのかFTDIのチップが鳴っているのわかりませんが、0は良くないのでしょう。

MPSSEで苦労することは、FT_ReadでTDOから受信したデータを読み取るときに、最後の1バイトは配列の最後にシフトされた形で入っていますが、それを1つ前のバイトにコピーしてやらねばならないことです。しかも、JTAGのデータ長(bit)が8の倍数かどうかでシフトさせるかどうかが変わるので、

if(len & 7) {
    rx_buffer[bytelen-2] = rx_buffer[bytelen-1] >> (8 - (len & 7));
}
else {
    rx_buffer[bytelen-2] = rx_buffer[bytelen-1];
}

となります。

厄介ですね。

おそらくFT2232Hの中ではシンプルなステートマシンでJTAGの信号を作り出しているためなのでしょう。

 

一応、バウンダリスキャンができるようにはなったのですが、まだまだ不安定なので、データシートとにらめっこしながらデバッグを進めていくことにします。

| | コメント (0)

2020.03.20

Trenz社製品ページの検索機能が動くようにしたった

Trenz社にはいろいろなFPGAボードがあるのですが、本家のサイトが重すぎるので、いろいろな製品を見比べて自分に最も合う製品を探すのはとてもストレスがたまります。

そこで、Trenz社製品の検索ページを作りました。

https://www.trenz.jp/paramtable.html 

160種類くらいのボードをFPGAファミリや、メモリサイズ、イーサの有無、基板サイズなどで検索できます。

在庫と価格も一緒に表示されるので、購入のための選定に便利です。

たとえば、「ZUNQ UltraScale+でギガビットイーサのPHYも乗っているボードはないかな・・」と検索するときにはこんな感じで行います。

Paramtable2

FPGAボードだけではなく、ベースボードや、JTAG基板などのアクセサリも入れたので、ほぼ全製品が検索対象です。

 

面白いなと思うのは、ギガビットイーサを2個持っているTE0782とか、

Te0782

100Mイーサを2つとギガビットイーサを1つ、計3個持っているTE0729とか。

Te0729

うーん何に使うんだろう。個性的すぎますね。

ボードのサイズも入力しました。これはほぼ手作業です。

例えば40mm×50mmというのは、Trenz社の標準サイズなのですが、このサイズで検索にひっかかるボードは

4x5

TE600(Spartan-3)、TE0710、TE0711、TE0712、TE0713、TE0715、TE0720、TE0741、TE0820、TE0821、TE0823、と多岐にわたっています。それぞれどのような違いがあるのか・・という理解を深めるのにもこのページは役立つはずです。

 

我ながらデータベース+Webアプリがワキワキ動くのが面白いと思うので、お暇ならぜひ試してみてください。

https://www.trenz.jp/paramtable.html 

| | コメント (0)

«Trenz製品のパラメータ検索ページを作成中