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