之前文章說過我回國(guó)了,結(jié)果還在酒店隔離的時(shí)候,就收到了賽靈思寄來的一個(gè)小玩具。開箱視頻已經(jīng)發(fā)到B站了,看過的朋友應(yīng)該知道,這里面其實(shí)是賽靈思的Kria KV260 Vision AI入門套件,從名字也可以看出來,這個(gè)東西是專門為視覺應(yīng)用而設(shè)計(jì)的開發(fā)套件。今天這篇文章,一來是簡(jiǎn)單介紹一下這個(gè)產(chǎn)品,更重要的,其實(shí)是聊聊我對(duì)這個(gè)小玩具的一些想法。一句話總結(jié),我從來也沒玩過這樣不用寫RTL就能開發(fā)的FPGA板卡。
先說開發(fā)板。我收到的其實(shí)有兩盒,一個(gè)是這個(gè)KV260的板卡,另外一個(gè)是一些必要的配件,比如HDMI線、SD卡、電源適配器、網(wǎng)線,以及一個(gè)攝像頭模塊。不過為了讓這個(gè)板子跑起來,最好還需要一個(gè)顯示器(帶HDMI或DP接口),也可以弄一個(gè)USB鍵盤、USB攝像頭等等。
但這兩個(gè)東西都不是必須的,我也看到過有人用網(wǎng)線、通過RTSP協(xié)議將視頻直接發(fā)到筆記本顯示器上,然后用支持RTSP的播放器打開就可以。我也沒有USB鍵盤,所以用串口UART進(jìn)行簡(jiǎn)單的命令傳輸,這里面有些坑,接下來會(huì)總結(jié)。有鍵盤的話,直接插到板子上輸命令就可以了。
模塊化系統(tǒng)SoM:
板卡設(shè)計(jì)的新思路
再說Kria KV260板卡,它其實(shí)有兩個(gè)部分,一個(gè)是FPGA卡本身,也就是由紅色風(fēng)扇覆蓋的部分。還有另外一部分就是母板base board或者也叫做carrier board。這個(gè)和我們平時(shí)常用的開發(fā)板有點(diǎn)不太一樣。當(dāng)然很多專業(yè)的FPGA開發(fā)板也有基于FMC接口的擴(kuò)展卡,但是FMC卡主要還是用來做IO的擴(kuò)展這些相對(duì)簡(jiǎn)單的功能,而KV260這個(gè)板卡、上面的這部分其實(shí)就是FPGA的主體,其他所有的接口部分都在下面的這個(gè)大板子上。
這種設(shè)計(jì)方法叫做SoM,也就是System on Module。它的本質(zhì)其實(shí)也是一種模塊化的方法,我們可以分別設(shè)計(jì)這些核心板和母板,來滿足不同應(yīng)用場(chǎng)景的需要。
比如對(duì)于開發(fā)板來說,肯定需要更多接口、更多的調(diào)試功能,所以就可以把母板的IO做的多一些,方便我們的開發(fā)。
另一方面,對(duì)于實(shí)際的應(yīng)用和部署來說,就不需要這么多的接口和調(diào)試功能了。那就可以用最小化的母板,只保留必要的功能。而上面的FPGA板卡保持不變。
同理,我們可以使用相同的母板,來開發(fā)不同的FPGA器件,只需要更換上面的板卡就可以了。特別是當(dāng)你用熟了底層這些資源之后,未來再有新的FPGA器件出來,就不用再買個(gè)新的板卡重新熟悉,直接換個(gè)FPGA板就行了,很方便。
具體到這個(gè)Kria KV260,上面的這個(gè)FPGA板卡叫做K26 SoM,它的主體就是一個(gè)Zynq UltraScale+的MPSoC。這是一個(gè)16納米的器件,包含4核ARM Cortex-A53處理器,以及圍繞它搭建的一系列SoC子系統(tǒng),包括嵌入式的GPU、內(nèi)存控制器,還有各種IO和總線控制單元等等。可編程邏輯部分,也就是PL,包含25.6萬個(gè)可編程邏輯單元,1000多個(gè)DSP單元,以及一個(gè)硬核視頻Codec,可以支持4K60幀的視頻編解碼。
另外這個(gè)K26 SoM有245個(gè)IO引腳,可以支持15個(gè)攝像頭、4個(gè)USB端口、以及40G以太網(wǎng),并且可以提供1.4Tflops的AI處理算力。
從這些性能指標(biāo)就能看出來,這個(gè)是特別針對(duì)視覺應(yīng)用進(jìn)行設(shè)計(jì)的SoM板卡。關(guān)于這個(gè)板子的所有具體的技術(shù)文檔我都會(huì)發(fā)到知識(shí)星球里,有興趣的朋友可以去看一下。
母板上有很多接口:以太網(wǎng)、4個(gè)USB3.0、HDMI、DP、JTAG、UART等等,應(yīng)該也很方便我們來進(jìn)行實(shí)際的開發(fā)和學(xué)習(xí)。
不過我覺得這個(gè)開發(fā)套件最大的特點(diǎn),并不僅僅是這種模塊化的硬件設(shè)計(jì)方法,更重要的是它的開發(fā)方法。
不用寫RTL的FPGA開發(fā)
玩過FPGA的朋友應(yīng)該都知道,F(xiàn)PGA開發(fā)起來非常麻煩,特別是和基于CPU或者GPU的這些軟件開發(fā)相比。比如我們要玩Raspberry Pi,直接接上電源連上外設(shè),然后開始寫python去開發(fā)就好了。
相比之下,F(xiàn)PGA完全是兩個(gè)概念,傳統(tǒng)的開發(fā)方法要用特別的硬件設(shè)計(jì)語言Verilog、VHDL或者SystemVerilog,這個(gè)學(xué)起來就很麻煩了;還要用特別的開發(fā)軟件,比如賽靈思的Vivado或者Vitis,這個(gè)也需要大量的學(xué)習(xí)成本。
不僅如此,F(xiàn)PGA的編譯和調(diào)試時(shí)間很長(zhǎng),一個(gè)普通大小的工業(yè)級(jí)FPGA設(shè)計(jì),編譯時(shí)間通常也需要幾個(gè)小時(shí)之久,這就勸退了很多開發(fā)者和應(yīng)用廠商。除此之外,開發(fā)者還得學(xué)習(xí)掌握相應(yīng)的仿真測(cè)試方法。在之前的文章里,我就專門總結(jié)了FPGA的學(xué)習(xí)路線,分成入門篇和進(jìn)階篇,有興趣的朋友們可以看一下。
總而言之,一方面FPGA有各種各樣的好處,比如微軟的腦波項(xiàng)目就使用FPGA來有效的加速他們的實(shí)時(shí)AI推斷;但另一方面。FPGA的學(xué)習(xí)和開發(fā)方法非常的復(fù)雜和繁瑣,這個(gè)也是制約FPGA大規(guī)模發(fā)展的最主要因素。
但是,這個(gè)KV260的開發(fā)方法就有很大不同,我們不需要Vitis、不需要使用RTL語言,就能很快跑起來一個(gè)視覺應(yīng)用。事實(shí)上,根據(jù)Xilinx的說法,第一次完整的配置可以在一個(gè)小時(shí)之內(nèi)完成。根據(jù)我的使用體驗(yàn),加上我的踩坑經(jīng)驗(yàn),一個(gè)小時(shí)的大概率可以完成系統(tǒng)完整配置。
KV260實(shí)例 – 踩坑總結(jié)
賽靈思有個(gè)專門的頁面,介紹配置KV260的全部操作,直到完成一個(gè)智能攝像頭應(yīng)用的運(yùn)行。令人欣喜的是,這個(gè)配置過程支持macOS,這在FPGA開發(fā)里還比較少見。具體的上手過程,可以看一下視頻。只不過這個(gè)運(yùn)行和配置過程中,有不少小坑,這里簡(jiǎn)單總結(jié)一下。
1、第4步:typo
這里有個(gè)typo,應(yīng)該是
$ ls /dev/tty.*
2、第4步:COM端口數(shù)量、波特率設(shè)置
在賽靈思的網(wǎng)頁里,說會(huì)出現(xiàn)4個(gè)端口。但至少在我的實(shí)操里,看到了4個(gè)COM端口。其中編號(hào)第二低的端口是UART口。
另外,這里需要注意波特率的設(shè)置,否則會(huì)出現(xiàn)亂碼。正確的命令如下:
$ screen /dev/tty.usbserial 115200
其中115200是正確的波特率。
3、第5步:使用Mac終端時(shí)會(huì)崩潰
在運(yùn)行這個(gè)命令的時(shí)候,使用Mac的默認(rèn)終端app會(huì)崩潰,無法完成正常的安裝。我后來使用了名叫serial的應(yīng)用,類似于putty。就可以正常走下去了。另外,只要安裝完一次之后,后續(xù)再使用Mac的終端就可以正常運(yùn)行接下來的命令了。
小結(jié)
從這個(gè)小實(shí)驗(yàn)可以看到,使用這個(gè)Kria KV260開發(fā)套件,可以很快的完成一個(gè)視覺加速應(yīng)用的實(shí)現(xiàn)。然后我們可以在這個(gè)基礎(chǔ)上添加我們自己的應(yīng)用,或者把這個(gè)作為參考,開發(fā)自己的加速設(shè)計(jì)。
在這個(gè)過程中,可以不接觸到FPGA的底層硬件內(nèi)容。如果你是個(gè)軟件開發(fā)者,可以利用這個(gè)平臺(tái)直接進(jìn)行上層軟件和算法的開發(fā)和加速,這個(gè)就大大降低了使用FPGA的門檻。這個(gè)過程也很有趣,同時(shí)也能慢慢接觸到軟硬件協(xié)同開發(fā)的知識(shí)細(xì)節(jié),并且鍛煉這方面的技能。
關(guān)于Kria KV260的全部學(xué)習(xí)資料,我都上傳到了知識(shí)星球,想要學(xué)習(xí)的朋友可以從這里開始。賽靈思也有很多線上和線下的官方培訓(xùn)課程,大家可以關(guān)注一下。也歡迎看看我之前寫的FPGA學(xué)習(xí)路線,應(yīng)該也會(huì)對(duì)你有所幫助。