之前文章说过我回国了,结果还在酒店隔离的时候,就收到了赛灵思寄来的一个小玩具。开箱视频已经发到B站了,看过的朋友应该知道,这里面其实是赛灵思的Kria KV260 Vision AI入门套件,从名字也可以看出来,这个东西是专门为视觉应用而设计的开发套件。今天这篇文章,一来是简单介绍一下这个产品,更重要的,其实是聊聊我对这个小玩具的一些想法。一句话总结,我从来也没玩过这样不用写RTL就能开发的FPGA板卡。
先说开发板。我收到的其实有两盒,一个是这个KV260的板卡,另外一个是一些必要的配件,比如HDMI线、SD卡、电源适配器、网线,以及一个摄像头模块。不过为了让这个板子跑起来,最好还需要一个显示器(带HDMI或DP接口),也可以弄一个USB键盘、USB摄像头等等。
但这两个东西都不是必须的,我也看到过有人用网线、通过RTSP协议将视频直接发到笔记本显示器上,然后用支持RTSP的播放器打开就可以。我也没有USB键盘,所以用串口UART进行简单的命令传输,这里面有些坑,接下来会总结。有键盘的话,直接插到板子上输命令就可以了。
模块化系统SoM:
板卡设计的新思路
再说Kria KV260板卡,它其实有两个部分,一个是FPGA卡本身,也就是由红色风扇覆盖的部分。还有另外一部分就是母板base board或者也叫做carrier board。这个和我们平时常用的开发板有点不太一样。当然很多专业的FPGA开发板也有基于FMC接口的扩展卡,但是FMC卡主要还是用来做IO的扩展这些相对简单的功能,而KV260这个板卡、上面的这部分其实就是FPGA的主体,其他所有的接口部分都在下面的这个大板子上。
这种设计方法叫做SoM,也就是System on Module。它的本质其实也是一种模块化的方法,我们可以分别设计这些核心板和母板,来满足不同应用场景的需要。
比如对于开发板来说,肯定需要更多接口、更多的调试功能,所以就可以把母板的IO做的多一些,方便我们的开发。
另一方面,对于实际的应用和部署来说,就不需要这么多的接口和调试功能了。那就可以用最小化的母板,只保留必要的功能。而上面的FPGA板卡保持不变。
同理,我们可以使用相同的母板,来开发不同的FPGA器件,只需要更换上面的板卡就可以了。特别是当你用熟了底层这些资源之后,未来再有新的FPGA器件出来,就不用再买个新的板卡重新熟悉,直接换个FPGA板就行了,很方便。
具体到这个Kria KV260,上面的这个FPGA板卡叫做K26 SoM,它的主体就是一个Zynq UltraScale+的MPSoC。这是一个16纳米的器件,包含4核ARM Cortex-A53处理器,以及围绕它搭建的一系列SoC子系统,包括嵌入式的GPU、内存控制器,还有各种IO和总线控制单元等等。可编程逻辑部分,也就是PL,包含25.6万个可编程逻辑单元,1000多个DSP单元,以及一个硬核视频Codec,可以支持4K60帧的视频编解码。
另外这个K26 SoM有245个IO引脚,可以支持15个摄像头、4个USB端口、以及40G以太网,并且可以提供1.4Tflops的AI处理算力。
从这些性能指标就能看出来,这个是特别针对视觉应用进行设计的SoM板卡。关于这个板子的所有具体的技术文档我都会发到知识星球里,有兴趣的朋友可以去看一下。
母板上有很多接口:以太网、4个USB3.0、HDMI、DP、JTAG、UART等等,应该也很方便我们来进行实际的开发和学习。
不过我觉得这个开发套件最大的特点,并不仅仅是这种模块化的硬件设计方法,更重要的是它的开发方法。
不用写RTL的FPGA开发
玩过FPGA的朋友应该都知道,FPGA开发起来非常麻烦,特别是和基于CPU或者GPU的这些软件开发相比。比如我们要玩Raspberry Pi,直接接上电源连上外设,然后开始写python去开发就好了。
相比之下,FPGA完全是两个概念,传统的开发方法要用特别的硬件设计语言Verilog、VHDL或者SystemVerilog,这个学起来就很麻烦了;还要用特别的开发软件,比如赛灵思的Vivado或者Vitis,这个也需要大量的学习成本。
不仅如此,FPGA的编译和调试时间很长,一个普通大小的工业级FPGA设计,编译时间通常也需要几个小时之久,这就劝退了很多开发者和应用厂商。除此之外,开发者还得学习掌握相应的仿真测试方法。在之前的文章里,我就专门总结了FPGA的学习路线,分成入门篇和进阶篇,有兴趣的朋友们可以看一下。
总而言之,一方面FPGA有各种各样的好处,比如微软的脑波项目就使用FPGA来有效的加速他们的实时AI推断;但另一方面。FPGA的学习和开发方法非常的复杂和繁琐,这个也是制约FPGA大规模发展的最主要因素。
但是,这个KV260的开发方法就有很大不同,我们不需要Vitis、不需要使用RTL语言,就能很快跑起来一个视觉应用。事实上,根据Xilinx的说法,第一次完整的配置可以在一个小时之内完成。根据我的使用体验,加上我的踩坑经验,一个小时的大概率可以完成系统完整配置。
KV260实例 – 踩坑总结
赛灵思有个专门的页面,介绍配置KV260的全部操作,直到完成一个智能摄像头应用的运行。令人欣喜的是,这个配置过程支持macOS,这在FPGA开发里还比较少见。具体的上手过程,可以看一下视频。只不过这个运行和配置过程中,有不少小坑,这里简单总结一下。
1、第4步:typo
这里有个typo,应该是
$ ls /dev/tty.*
2、第4步:COM端口数量、波特率设置
在赛灵思的网页里,说会出现4个端口。但至少在我的实操里,看到了4个COM端口。其中编号第二低的端口是UART口。
另外,这里需要注意波特率的设置,否则会出现乱码。正确的命令如下:
$ screen /dev/tty.usbserial 115200
其中115200是正确的波特率。
3、第5步:使用Mac终端时会崩溃
在运行这个命令的时候,使用Mac的默认终端app会崩溃,无法完成正常的安装。我后来使用了名叫serial的应用,类似于putty。就可以正常走下去了。另外,只要安装完一次之后,后续再使用Mac的终端就可以正常运行接下来的命令了。
小结
从这个小实验可以看到,使用这个Kria KV260开发套件,可以很快的完成一个视觉加速应用的实现。然后我们可以在这个基础上添加我们自己的应用,或者把这个作为参考,开发自己的加速设计。
在这个过程中,可以不接触到FPGA的底层硬件内容。如果你是个软件开发者,可以利用这个平台直接进行上层软件和算法的开发和加速,这个就大大降低了使用FPGA的门槛。这个过程也很有趣,同时也能慢慢接触到软硬件协同开发的知识细节,并且锻炼这方面的技能。
关于Kria KV260的全部学习资料,我都上传到了知识星球,想要学习的朋友可以从这里开始。赛灵思也有很多线上和线下的官方培训课程,大家可以关注一下。也欢迎看看我之前写的FPGA学习路线,应该也会对你有所帮助。