这是我第一次在公众号发布评测视频,之前也没做过视频,从录视频、剪辑、渲染真的是太麻烦了,PR咱也不会,用的是剪映,初次尝试,以开发板评测为主题,一共剪了两段,一个是模仿iPhone7 快闪107秒产品发布视频,40秒的视频周末剪了一上午。第二段是完整的开发板开箱评测视频,14分钟时长,我嫌太麻烦,中间几乎没有剪辑,如果觉得视频内容太长,可以看下后面的文字评测内容,要比视频介绍更详细。 初次录视频,大家多多支持。
视频1:开发板评测快闪
http://mpvideo.qpic.cn/0bc3xiaasaaa6eajzf6b5rrfbowdbg5aacia.f10002.mp4?dis_k=be1dec565f620645d343717673ca616b&dis_t=1671329243&play_scene=0&vid=wxv_2470639078380847105&format_id=10002&support_redirect=0&mmversion=false
视频2:开发板深度评测
http://mpvideo.qpic.cn/0bc3muaaeaaa5qalsdobefrfazodajsqaaqa.f10002.mp4?dis_k=f8db64318d05c88e88ca0321c72e20ab&dis_t=1671329243&play_scene=0&vid=wxv_2470803326872502272&format_id=10002&support_redirect=0&mmversion=false
无论你是否从事FPGA开发相关的工作,相信你对Xilinx的多核异构SoC——ZYNQ系列都有所了解,这款芯片开创性的将高速并行的FPGA和高性能的ARM处理器完美的结合在一起,实现了软件的可编程与硬件的可编程。
前一段时间,公众号发布了一篇关于创龙ZYNQ开发板试用申请的活动。我还没使用过ZYNQ芯片,所以也申请了一块板子玩一下,开发板其实很久以前就收到了,因为平时工作比较忙,经常加班到很晚,所以没有太多时间来进行评测,最近刚刚写完,前后差不多用了一个月的时间吧!一起来看下这款ZYNQ开发板评测吧!
在进行正式的开发板评测之前,我们先来了解一下这款板卡的设计者——创龙科技。
我对于这个名字并不陌生,早在大学期间,就了解过创龙的DSP开发板,后来毕业后做电力电子相关的工作,项目前期进行方案验证时,公司曾经购买过几款创龙的DSP+ARM开发板,无论是从板卡质量,还是售后技术支持,都做得非常不错,所以对创龙印象还是很深刻的。
创龙科技(Tronlong)始创于2013年,是国内领先的嵌入式产品平台提供商,业务主要涵盖工业核心板、工业评估板、项目服务。创龙科技专注于ARM、FPGA、DSP多核异构技术开发,是TI、Xilinx中国官方合作伙伴,产品线覆盖TI、Xilinx、NXP、全志、瑞芯微、紫光同创等厂商处理器平台,产品广泛应用于工业自动化、仪器仪表、能源电力、通信、医疗、安防等行业。
本次申请到的这款开发板是创龙的ZYNQ系列开发板,型号是:TLZ7x-EasyEVM-A1-S,核心板型号是:SOM-TLZ7x-S(邮票孔)。
ZYNQ(读音同zinc),是指Xilinx Zynq-7000 SoC产品,是Xilinx推出新一代全可编程片上系统,Xilinx官方对它的定义是:
SoCs with Hardware and Software Programmability。 包含软硬件可编程功能的 SoC。
Zynq-7000系列SoC,集成了ARM处理器的软件可编程性和FPGA的硬件可编程性,在单芯片上集成了CPU、DSP、ASSP以及混合信号功能,所以称之为FPGA或ARM处理器都是不准确的。
ZYNQ可分为Zynq-7000、Zynq-7000S和Zynq UltraScale+ MPSoC三大系列。
Zynq-7000系列配置的是28nm Artix-7架构的FPGA和单核ARM Cortex-A9处理器,6.25Gb/s的收发器,可以应用在电机控制、机器视觉等领域。
Zynq-7000S系列配置的是28nm Artix-7 或 Kintex-7架构的FPGA和双核ARM Cortex-A9处理器,6.6Gb/s 到 12.5Gb/s的收发器。可以应用在辅助驾驶系统、超高清电视等领域。
Zynq UltraScale+ 系列基于16nm工艺,拥有更小的厚度尺寸、更强的性能和更低的功耗,同时拥有更强大的处理器,双核/四核,GPU,视频编解码器(4K)等,可以应用在5G无线、ADAS和工业物联网领域。
系统启动方式为 PS 端加载 PL 端程序, PS 端和 PL 端可分别独立开发,PS和PL进行协同工作时,两者之间的通讯速度可达100Gb/s。
ARM处理器可以运行的操作系统:
基于ZYNQ独有的OpenAMP软件框架,可以实现双ARM核非对称使用方案,即一个ARM核运行Linux系统,另一个ARM核运行RTOS,如FreeRTOS,或者裸机跑,RTOS和FPGA端进行低延时的高速数据交换,从而满足低延时的实时任务需求,而跑Linux的ARM核可以作为更上层的应用,处理更复杂的业务逻辑。
OpenAMP,开源的非对称多处理框架。是Mentor Graphics 与Xilinx公司为了使在AMP系统的设计中开发出的RTOS和裸机程序,能够与开源Linux社区提供的接口进行互通讯,而共同通过的一个标准化的嵌入式多核框架。
相比于传统的FPGA或ARM处理器,ZYNQ系列SoC完美的将ARM和FPGA这两种完全不同的架构进行了融合,从而使两者优势互补,ARM具有比较强的事务管理功能,可以用来跑界面以及应用程序等,其优势体现在控制方面,而FPGA具有灵活的硬件级可编程性,强大的并行运算能力和较高的处理速度。
了解了一些预备知识之后,我们进入正题,开发板开箱!
板卡采用常见的白色纸盒进行包装,整体大小和A4纸差不多。
包装盒内部有泡沫进行缓冲保护,和常见的开发板一样,这款板子也使用防静电袋进行包装,可以很好的防止人体静电破坏板子。
开发板整体为邮票孔核心板+底板的设计方式,核心板和底板PCB都是常见的哑光绿色,沉金工艺。
底板整体尺寸为108mmx160mm,采用的是6层PCB设计,板厚1.6mm。
核心板尺寸为45x65mm,采用10层PCB设计,板厚1.2mm,评估板四角预留了4个安装孔位,并且已经安装好了防护的脚垫。
创龙ZYNQ评估板主要包括以下配件:
这款评估板的配件和资料非常齐全,初学者入门学习完全够用。
发货清单
创龙定制多合一USB读卡器
12v/2A的电源适配器
板卡附赠的闪迪16G内存卡
本次我们评测的这款创龙TLZ7x-EasyEVM-S评估板,采用核心板+底板的组合形式,核心板为邮票孔封装。
常见的核心板有两种连接方式:邮票孔和BTB连接器,两种连接方式各有优缺点。
如果是研发阶段,邮票孔会比较容易手工焊接,而连接器的引脚间距小,不太好焊接。
从维护角度来考虑,连接器的核心板拆卸简单,方便更换,而邮票孔比较麻烦。
从成本方面考虑,连接器需要额外增加成本,通常一块核心板需要至少2个连接器,而邮票孔核心板不需要考虑额外的成本。
从底板设计的角度考虑,邮票孔形式的核心板如果底面有元器件,还需要在底板上进行开槽处理,会占用一定的空间,而连接器就不存在这个问题,当然,在垂直方向上,邮票孔会比连接器占用更小的空间。
创龙的这款ZYNQ核心板,提供有邮票孔和BTB连接器两种封装形式,用户可根据项目的需求来进行选择。
我们这次评测的板卡核心板为邮票孔形式,共引出200个管脚,孔间距为1.0mm,核心板尺寸大小为45x65mm,采用10层PCB设计,板厚1.2mm,PCBA整体最高高度为3.0mm。
核心板正反两面均放置有元器件,一些主要的芯片,ZYNQ芯片、DDR、eMMC、NOR Flash、电源IC等放置在正面,大部分阻容元件放在了背面,而且采用的是0402封装,可以节省PCB空间和便于走线。
核心板PCB整体布局布线,严格按照高速信号的时序和阻抗要求进行设计,信号线等长设计,精度为100mil。
由于核心板正反两面均有元器件,这就意味着如果自己设计底板,需要将核心板背面元器件布局区域与底板封装重叠处进行挖空。
核心板基于Xilinx ZYNQ-7000系列XC7Z020异构多核处理器方案,片上集成了双核ARM Cortex-A9处理器(即PS端),和Artix-7架构28nm FPGA资源(即PL端),两者相互独立,可以由不同的工程师进行独立开发,启动方式为PS端加载PL端程序。
核心板板载USB PHY芯片,并通过邮票孔引出千兆网口、USB、CAN、UART等接口。
下面来详细看下核心板的硬件外设:
通过邮票孔引出的主要外设接口:
核心板的电源电路严格按照ZYNQ芯片要求的上电顺序进行设计,采用单路5V直流进行供电,上电顺序为:1V -> 1.8V -> 3.3V & 1.5V & BANK电源。
创龙ZYNQ系列核心板都按照国家标准进行了高低温测试,并取得CNAS机构的认证报告,可以稳定应用在工业产品中。另外核心板也通过了欧盟RoHS认证,可以应用在出口欧盟国家的产品中。
高低温认证报告(部分)
RoHS认证报告(部分)
来看一下核心板的细节实拍图。
ZYNQ芯片,集成ARM+FPGA的SoC。
SkyHigh的eMMC存储颗粒
旺宏的NOR Flash和镁光的DDR3颗粒
电源芯片
评估板底板采用6层PCB设计,大小为180x160mm,板厚1.6mm,四角预留4个安装孔位,并预先安装好了4个脚垫,可以对开发板起到一定的保护作用。
底板的基本硬件资源如下:
预留的可扩展接口如下:
来看一下底板的细节实拍图。
电源接口和开关
电源DC口和POR复位按键
复位、配置和用户按键
CAN收发器
CAN接口和SD卡接口
JTAG口,Xilinx官方标准2.0mm间距14P
网卡芯片
欧式连接器,可以外接创龙官方扩展模块
启动模式配置拨码开关,支持从JTAG、QSPI或SD卡进行启动
USB转双路UART,PL和PS端各1路
底板上的等长走线
底板硬件资源齐全,接插件、连接器、按键、开关接口等布局也很合理,电源电路还设计有过流、过压保护电路,所有的外部接口,如USB、网口、SD卡、按键等接口都使用了ESD防护芯片,型号为PUSB2X4Y和PRTR5V0U2X,可达到IEC61000-4-2的静电防护标准。
有点不足的是底板上的USB-OTG接口,为Micro-USB接口,如果直接设计为板载USB母座,会更方便使用一些。
开发板配套的资料非常齐全,主要包括:产品规格书、用户手册、软硬件资料、视频教程等。
硬件设计资料中提供了底板的原理图和PCB源文件,这一点给个好评,可以让用户很快的用于实际项目设计。
除了以上文件资料外,创龙官方还录制了免费的视频教程,涵盖创龙所有的板卡,是非常不错的学习资料。
创龙官方视频学习网站:www.digoboy.com
板卡的基本硬件资源了解完之后,我们来对板卡进行上电启动,简单测试一下板卡的硬件功能是否正常。
测试环境:
使用附赠的12v/2A电源适配器,连接开发板的DC电源口,并使用MicroUSB数据线连接开发板的串口到电脑,插入附赠的TF卡,并将拨码开关调到SD卡启动模式。
为了看到PS端完整的启动日志,我们先在电脑端打开串口助手,再接通电源,因为串口芯片的电源是来自USB接口,而不是直流电源,所以可以直接打开,串口配置为115200波特率,8位数据位,无奇偶校验。
一切准备就绪之后,打开电源开关,就可以在终端工具中看到PS端完整的启动日志了。
启动模式为SD卡启动
板卡型号:TLZ7x-EasyEVM-S
启动完成,可以看到已经自动登录,用户名和密码都是root
部分启动日志,当前Linux内核版本为4.9.0。
** Unable to read file uEnv.txt **
Copying Linux from SD to RAM...
3825680 bytes read in 410 ms (8.9 MiB/s)
18586 bytes read in 125 ms (144.5 KiB/s)
## Booting kernel from Legacy Image at 02080000 ...
Image Name: Linux-4.9.0-rt1-xilinx-g57b87eb
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3825616 Bytes = 3.6 MiB
Load Address: 02080000
Entry Point: 02080000
Verifying Checksum ... OK
## Flattened Device Tree blob at 02000000
Booting using the fdt blob at 0x2000000
Loading Kernel Image ... OK
Loading Device Tree to 17ff8000, end 17fff899 ... OK
到这里就完成了系统的上电启动。
为了以后可以不插SD卡也能启动,可以将系统一键固化到板载的ROM中。
执行以下命令,可以将操作系统固化到板载的eMMC和SPI Flash中:
/opt/tools/mkemmcboot.sh
执行脚本
耐心等待几分钟,固化完成
将评估板断电,取出SD卡,调整启动配置拨码开关为SPI启动模式,对应的拨码状态为100101
将开发板重新进行上电,查看启动日志为QSPI启动
执行如下命令,可以控制板载用户LED的亮灭:
//熄灭LED
echo > /sys/class/leds/user-led0/brightness
//点亮LED
echo 1 > /sys/class/leds/user-led0/brightness
我们还可以简单写一个脚本程序,来控制LED定时闪烁。
进入终端,新建脚本文件:
vi led_blink.sh
输入以下内容:
#!/bin/sh
while true
do
echo "点亮LED"
echo 0 > /sys/class/leds/user-led0/brightness
usleep 100000
echo "熄灭LED"
echo 1 > /sys/class/leds/user-led0/brightness
usleep 100000
done
给文件加上可执行权限:
chmod +x ./led_blink.sh
执行脚本,LED就会闪烁起来了:
使用板卡系统自带的DDR3测试命令,分别对DDR3执行读、写、复制数据,看看读写速度能到多少。
分别执行如下命令,对DDR进行读写100M数据文件速度测试:
//读速度测试
bw_mem M rd
//写速度测试
bw_mem M wr
//复制速度测试
bw_mem M cp
测试结果:
读速度约为640MB/s,写速度约为540MB/s,复制速度约为248MB/s。
评估板板载了一个千兆以太网卡芯片和网口座,可以进行以太网相关的开发,我们来进行简单的文件传输和SSH登录测试。
首先使用附赠的千兆网线将电脑的网口和板卡的网口进行连接,两者配置成同一网段,固定IP,测试两者的网络连通性,文件传输和速度测试。
电脑端配置为静态IP地址:192.168.10.11
开发板使用ifconfig命令,配置静态IP为:192.168.10.22
//1.查看当前的IP地址
ifconfig
//2.配置网卡的IP地址
ifconfig eth0 192.168.10.22
//3.查看配置后的IP地址
ifconfig
配置完成之后,开发板和电脑进行互相Ping测试,看通讯是否正常:
如果出现电脑能Ping通开发板,开发板Ping不通电脑的情况,需要检查电脑的公用网络防火墙是否处于关闭状态。
如果Ping测试没问题,我们就可以使用SSH登录开发板。
使用MobaXterm终端工具,新建一个SSH连接,主机地址为开发板的IP地址,登录用户名为root。
登录成功之后,会在左侧窗口显示开发板的文件目录,底部显示Linux系统的状态信息,如开机时间,RAM/ROM使用率,上下行网速等信息。
可以使用拖拽的方式,在开发板和电脑本地之间进行文件传输。
文件传输正常之后,我们使用iperf
命令进行千兆网口的网速测试,看看实际网速能达到多少。
iperf命令是一个网络性能测试工具,可以测试TCP和UDP带宽质量。同时也可以通过UDP测试报告网丢包率或者发包性能,是一个非常实用的工具。
使用MobaXterm终端工具,新建一个本地终端,执行以下测试命令。
本地新建一个服务端,电脑端执行:
//新建一个服务端,等待客户端连接
iperf -s -i
开发板作为客户端,连接服务器,开发板执行:
//此处填写电脑的IP地址
iperf -c 192.168.10.11 -i
耐心等待10s左右,会显示最终测试的网络速度。
可以看到速度大概为800Mbit/s左右。
上面我们配置的板卡静态IP地址仅仅在本次开机有效,系统重新启动之后,IP地址又会恢复为默认,所以我们可以将IP配置信息写入Linux系统的网络配置文件,这样每次启动就自动完成IP配置了。
Linux系统中,大部分的网络接口配置都可以在/etc/network/interfaces文件中设置,例如为网卡配置静态IP,设置路由信息,配置IP掩码,设置默认路由等
编辑interfaces配置文件:
cd /etc/network
vi interfaces
添加以下内容:
auto eth0
iface eth0 inet static
address 192.168.10.22
netmask 255.255.255.0
gateway 192.168.10.255
保存之后,执行以下命令重启网络
/etc/init.d/networking restart
这样,每次断电重启之后,开发板的IP就是我们指定的固定IP了。
其他板载外设,如eMMC、SD卡、USB OTG、SPI Flash读写、按键读取等硬件测试,可以参考评估板配套光盘资料中的2-1-评估板测试手册
文档进行操作,本文不再演示。
总的来说,这款板子还是非常适合作为学习ZYNQ开发的平台,包装很用心,配件也很齐全,可以满足大部分开发需求,而不用购买别的配件,板卡硬件设计也很专业,特别是单芯片双路串口的设计,非常实用,EMC防护做得很到位、用料很足,电源接口使用了TVS保险丝等保护、所有的外部接口也加了很多ESD防护芯片。
当然也有一些值得改进的地方,比如底板没有HDMI、DP等视频接口,如果想要做一些视频输入输出处理,运行Qt等GUI图形界面时,还需要购买额外的显示屏模块,或者HDMI/DP接口模块;底板上没有引出高速接口,比如光纤接口,PCIe接口等,如果有高速接口应用评估,可能不太方便;开发板上的OTG接口为MicroUSB接口,如果连接USB设备,还需要外接OTG转接线,如果直接是USB母座就方便多了;现在比较流行的USB接口通常为Type-C接口,如果串口USB做成Type-C接口通用性会更好一些;附赠的开发资料是使用光盘进行存储,所以如果想读取光盘的资料,还要找一台带光驱的台式机才行,资料可以换成U盘存储,或者存放在远程服务器方便用户下载,还可以及时的进行更新。
目前主流的FPGA集成处理器方案可分为两种:硬核和软核。关于硬核和软核的区别,可以查看之前发布的文章:FPGA硬核和软核处理器的区别。
先来看软核,Xilinx官方的Microblaze处理器,Altera官方的Nios II处理器,Microsemi(现Microchip)官方提供有51/ARMCortex-M1/RISC-V软核等等。
其他非官方的软核就更多了,比如ARM Cortex-M0/M3,各种开源的RISC-V处理器等等,我发过了一篇基于ARM DesignStart项目,在Xilinx Artix-7系列实现ARM Cortex-M3软核的文章,详解介绍了从软核IP获取,处理器搭建,到C代码编写,烧录和调试整个流程,有兴趣的朋友可以参考一下。
集成硬核处理器的FPGA就比较少了,硬核处理器架构主要是两大平台:ARM和RISC-V。
集成ARM硬核的FPGA芯片比较多,比如本篇文章评测的这款板子搭载的ZYNQ-7000系列SoC,集成了双核ARM Cortex-A9处理器。
还有比较小众的Altera的Cyclone V系列,也是集成的双核ARM Cortex-A9 处理器,不过没有ZYNQ系列知名度高。
其他还有集成ARM Cortex-M系列的FPGA平台,比如Microsemi SmartFusion一代和二代系列,集成了ARM Cortex-M3硬核,和STM32使用的是同一款内核,我刚开始工作时就使用的这款芯片,也是从这款芯片入门的FPGA,这款芯片在国内使用者非常少,主要是军工领域应用较多,资料非常稀缺,我在CSDN(ID:whik1194)上总结了系列入门教程,有需要的朋友可以参考。
集成RISC-V硬核的就屈指可数了,Microsemi(现Microchip)近几年新推出的集成RISC-V处理器的FPGA——PolarFire系列,片上集成了1个E51+4个U54 64位RISC-V内核,可以运行Linux操作系统,支持AMP非对称多处理器应用。
国产FPGA也有很多集成软核或硬核处理器的芯片,可以参考之前发的这篇文章:聊聊国产FPGA芯片选型。