ソフト屋がXilinx zynq-7000をさわってみた ～体験記～
千代浩司（せんだいひろし）
高エネルギー加速器研究機構
素粒子原子核研究所

Who Am I• 高エネルギー加速器研究機構 (KEK)
素粒子原子核研究所 技術職員 (先任技師)• ILC（物理）サーバー運用など• 実験データ収集システム関連– ネットワークスイッチテスト– DAQ-Middleware (http://daqmw.kek.jp/)• KEK職員数
教員: 356、技術職員: 167、事務職員: 160
2016-10-28

2

2016-10-28

3

2016-10-28

4

2016-10-28

5BeagleBone Black•512MB DDR3 RAM•4GB 8-bit eMMC on-board flash storage•3D graphics accelerator•NEON floating-point accelerator•2x PRU 32-bit microcontrollers•Ethernet•2x 46 pin headers

2016-10-28

6Zynq• CPU (ARM) + FPGA
• ARMでLinuxを動かし、LinuxからFPGAを使う– 外部の電子部品を制御– 電子部品と接続しないでハード的に高速処理

CPUFPGA

http://yuki-sato.com/wordpress/wp-content/uploads/2015/01/Screen-Shot-2015-01-11-at-19.19.44.png

2016-10-28

7

2016-10-28

https://japan.xilinx.com/content/dam/xilinx/imgs/block-diagrams/zynq-mp-core-dual.png

8zynq評価ボード• zybo (25000円くらい)• zedboard (50000円くらい)2016-10-28

92016-10-28

10zybo features•Xilinx Zynq-7000 (XC7Z010-1CLG400C)•28,000 logic cells•240 KB Block RAM•80 DSP slices•On-chip dual channel, 12-bit, 1 MSPS analog-to-digital converter (XADC)•650 MHz dual-core Cortex™-A9 processor•On-board JTAG programming and UART to USB converter•DDR3 memory controller with 8 DMA channels•512 MB x32 DDR3 w/ 1050Mbps bandwidth•128 Mb Serial Flash w/ QSPI interface•microSD slot (supports Linux file system)•High-bandwith peripheral controllers: 1G Ethernet, USB 2.0, SDIO
•Low-bandwidth peripheral controller: SPI, UART, I2C•Dual-role (Source/Sink) HDMI port
•16-bits per pixel VGA output port
•Trimode (1Gbit/100Mbit/10Mbit) Ethernet PHY•OTG USB 2.0 PHY (supports host and device)•External EEPROM (programmed with 48-bit globally unique EUI-48/64™ compatible identifier)•Audio codec with headphone out, microphone and line in jacks•GPIO: 6 pushbuttons, 4 slide switches, 5 LEDs
•Six Pmod Ports (1 processor-dedicated, 1 dual analog/digital)
2016-10-2811マイクロUSB
電源、UART、JTAG
LED

スライドスイッチ
2016-10-28

プッシュスイッチ
12

VGAHDMI

1GbE

microSD

2016-10-28

13ツールキット２種ためしてみた• xillinux http://xillybus.com/xillinux– 製品– 製品版そのもののデモ版がある– CPU部分でUbuntu 12.04 がうごく• Xilinux University Program
https://japan.xilinx.com/support/university/vi
vado/vivado-workshops/Vivado-embeddeddesign-flow-zynq.html– CPUはOSなしで動かす
2016-10-28

14

Xillinux (1)1. http://xillybus.com/downloads/xillinux-eval-zybo-1.3c.zip
http://xillybus.com/downloads/xillinux-1.3.img.gz をダウンロード
2. xillinux-1.3.img.gzをgzip -dで伸長してmicroSDカードにddコマン
ドでべた書き3. xillinux-eval-zybo-1.3c.zipを展開してxillydemo.bitを作る 。これがないと起動しない。Vivadoが必要。作り方：
http://xillybus.com/downloads/doc/xillybus_getting_started_zy
nq.pdf
4. xillydemo.bitをmicroSDカードに書く。
5. 起動。VGA, シリアルコンソールでUbuntuが起動してくる。ネットワークの設定をするとsshでもログイン可。
2016-10-28

15xillinux (2)6. 起動– FPGAになにもしない回路がはいっている– それ用のLinux デバイスファイル/dev/xillybus_audio/dev/xillybus_mem_8/dev/xillybus_read_32/dev/xillybus_read_8/dev/xillybus_smb/dev/xillybus_write_32/dev/xillybus_write_8

2016-10-28

16xillinux (3)7. /root/xillybus/demoapps で makeするとfifo
memreadmemwritestreamread
streamwriteというプログラムができる
2016-10-28

17

2016-10-28

18Ubuntu 12.04

2016-10-28

19

USBシリアルポートからアクセス

2016-10-28

20xillinux (4)端末を2個ひらいて• ./streamread /dev/xillybus_read_32 (32bitで読み出し）• ./streamwrite /dev/xillybus_write_32 とすると端末読み出し状態になり• ARM → FPGA → ARMとデータが流れる。
• この例では32ビット読み出しなので4回キーを押すとread側端末に表示される。
2016-10-28

21

/dev/xillybus_read_32, /dev/xillybus_write_32をつうじでデータを書き、読むプログラムを書いて測定。一度に書く大きさを変えて測定。
2016-10-28

22

TCP/IP (FPGAは使ってない)
iperf3: zybo → PC

2016-10-28

23

Xilinux University Program• https://japan.xilinx.com/support/university/vivado/viv
ado-workshops/Vivado-embedded-design-flowzynq.html• OSなしにCPUを使う例題• Day 1– Lab 1: Simple Hardware Design– Lab 2: Adding Peripherals in Programable Logic– Lab 3: Creating and Adding Your Own Custom IP• Day 2

– Lab 4: Writing Basic Software Applications (このへんでLEDチカチカできるようになる)– Lab 5: Software Debugging Using SDK

2016-10-28

24

Scientific Linux 7.2 (64ビット)
上にVivado SDKをセット (1)2016.1 および 2016.2サポートOS
Windows 7 および 7 SP1 Professional (64 ビット)、英語版/日本語版
Windows 8.1 Professional (64 ビット)、英語版/日本語版
Windows 10 Professional (64 ビット)、英語版/日本語版
Red Hat Enterprise Workstation 5.11 (64 ビット)
Red Hat Enterprise Workstation 6.6 ～ 6.7 (64 ビット)
Red Hat Enterprise Workstation 7.0 ～ 7.1 (64 ビット 注：7から64ビットのみ)
SUSE Linux Enterprise 11.3 および 12.0 (64 ビット)Cent OS 6.7 および 7.1 (64 ビット 注:7から64ビットのみ)
Ubuntu Linux 14.04.4 LTS (64 ビット)
とくに困難はないが、セットアップ途中で複数コアを100%使う（使いすぎ）

2016-10-28

25

2016-10-28

26

2016-10-28

27

2016-10-28

28

Scientific Linux 7.2 (64ビット)
上にVivado SDKをセット (2)• 以下のディレクトリができる/opt/Xilinx/Vivado/opt/Xilinx/SDK/opt/Xilinx/.xinstall/opt/Xilinx/Vivado_HLS/opt/Xilinx/Downloads/opt/Xilinx/DocNav/opt/Xilinx/xic/opt/Xilinx/Vivado_Lab• $HOME/.bashrc（使うシェルで違う）に追加：
source /opt/Xilinx/Vivado/2016.2/settings64.sh
export XILINXD_LICENSE_FILE=ライセンスサーバ（ライセンスサーバがあるのでそれを使った。個々にライセンスを取得することも可能）2016-10-28

29

PCとの接続はUSBケーブルのみ• 電源供給• CPUからの出力 (RS232C)• JTAGダウンロード
2016-10-28

30

JTAGで書けるようにするドライバが必要
2016-10-28

31

Scientific Linux 7.2 (64ビット)での設定• JTAGでデータをダウンロードできるようにする– Digilentサイト
https://reference.digilentinc.com/reference/software/
adept/start から
digilent.adept.runtime-2.16.5.x86_64.rpmdigilent.adept.utilities-2.2.1.x86_64.rpmを取得して yum localinstall digilent*.rpm• SDKで32ビットライブラリが必要– yum install zlib.i686– yum install libstdc++.i686
2016-10-28

32

Vivado: FPGA (1)2016-10-28

33

FPGA: Vivado (2)2016-10-28

34

SDK

UART出力2016-10-28

35

ダウンロード、起動

Process STDIO not connected to console

UART出力2016-10-2836別端末から/dev/ttyUSB1へRS232C通信するプログラムで接続(図ではcuコマンドを利用)
2016-10-28

37

cu -l /dev/ttyUSB1 -s 115200

2016-10-28

38

その他
• USBコネクタがmicro USB– さっそくおかしくしたようで電源が入らないことがある2016-10-2839

感想• ツールのセットがちょっと大変– わかってしまえば一直線• 配線するのにマウスでドラッグはへんなところにつないでしまわないか心配– validationありとはいえ– tcl プログラムを書けばOK？

• プログラムコードのようにgitなどで履歴を保存しておきたい
2016-10-28

40

まとめ
• zynq 評価ボードを使ってXillinuxおよびXilinux
University Programツールのセットアップ、試用をおこなった• Xillinuxでなにもしない回路のスループット測定、TCPスループットの測定• Xilinx University Programの紹介

2016-10-28

41