加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 模块化系统SoM:
    • 不用写RTL的FPGA开发
    • KV260实例 – 踩坑总结
    • 小结
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

我在隔离酒店,“做了”一个AI视觉加速器

2021/11/01
371
阅读需 10 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

之前文章说过我回国了,结果还在酒店隔离的时候,就收到了赛灵思寄来的一个小玩具。开箱视频已经发到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学习路线,应该也会对你有所帮助。

赛灵思

赛灵思

赛灵思(英语:Xilinx)是一家位于美国的可编程逻辑器件的生产商。该公司发明了现场可编程逻辑门阵列,并由此成名。赛灵思还是第一个无厂半导体公司(Fabless)。28nm时代,赛灵思提出All Programmable 的概念,从单一的FPGA企业战略转型为All Programmable FPGA、 SoC 和 3D IC 的全球领先提供商。且行业领先的器件与新一代设计环境以及 IP 完美地整合在一起,可满足客户对可编程逻辑乃至可编程系统集成的广泛需求赛灵思于1984年创建于美国加利福尼亚州的硅谷,总部位于硅谷核心的圣何塞,并在科罗拉多州、爱尔兰、新加坡 印度、中国、日本拥有分支机构

赛灵思(英语:Xilinx)是一家位于美国的可编程逻辑器件的生产商。该公司发明了现场可编程逻辑门阵列,并由此成名。赛灵思还是第一个无厂半导体公司(Fabless)。28nm时代,赛灵思提出All Programmable 的概念,从单一的FPGA企业战略转型为All Programmable FPGA、 SoC 和 3D IC 的全球领先提供商。且行业领先的器件与新一代设计环境以及 IP 完美地整合在一起,可满足客户对可编程逻辑乃至可编程系统集成的广泛需求赛灵思于1984年创建于美国加利福尼亚州的硅谷,总部位于硅谷核心的圣何塞,并在科罗拉多州、爱尔兰、新加坡 印度、中国、日本拥有分支机构收起

查看更多

相关推荐

电子产业图谱

微信公众号“老石谈芯”主理人,博士毕业于伦敦帝国理工大学电子工程系,现任某知名半导体公司高级FPGA研发工程师,从事基于FPGA的数据中心网络加速、网络功能虚拟化、高速有线网络通信等领域的研发和创新工作。曾经针对FPGA、高性能与可重构计算等技术在学术界顶级会议和期刊上发表过多篇研究论文。