加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 模塊化系統(tǒng)SoM:
    • 不用寫RTL的FPGA開發(fā)
    • KV260實(shí)例 – 踩坑總結(jié)
    • 小結(jié)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

我在隔離酒店,“做了”一個(gè)AI視覺加速器

2021/11/01
349
閱讀需 10 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

之前文章說過我回國(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ì)你有所幫助。

賽靈思

賽靈思

賽靈思(英語:Xilinx)是一家位于美國(guó)的可編程邏輯器件的生產(chǎn)商。該公司發(fā)明了現(xiàn)場(chǎng)可編程邏輯門陣列,并由此成名。賽靈思還是第一個(gè)無廠半導(dǎo)體公司(Fabless)。28nm時(shí)代,賽靈思提出All Programmable 的概念,從單一的FPGA企業(yè)戰(zhàn)略轉(zhuǎn)型為All Programmable FPGA、 SoC 和 3D IC 的全球領(lǐng)先提供商。且行業(yè)領(lǐng)先的器件與新一代設(shè)計(jì)環(huán)境以及 IP 完美地整合在一起,可滿足客戶對(duì)可編程邏輯乃至可編程系統(tǒng)集成的廣泛需求賽靈思于1984年創(chuàng)建于美國(guó)加利福尼亞州的硅谷,總部位于硅谷核心的圣何塞,并在科羅拉多州、愛爾蘭、新加坡 印度、中國(guó)、日本擁有分支機(jī)構(gòu)

賽靈思(英語:Xilinx)是一家位于美國(guó)的可編程邏輯器件的生產(chǎn)商。該公司發(fā)明了現(xiàn)場(chǎng)可編程邏輯門陣列,并由此成名。賽靈思還是第一個(gè)無廠半導(dǎo)體公司(Fabless)。28nm時(shí)代,賽靈思提出All Programmable 的概念,從單一的FPGA企業(yè)戰(zhàn)略轉(zhuǎn)型為All Programmable FPGA、 SoC 和 3D IC 的全球領(lǐng)先提供商。且行業(yè)領(lǐng)先的器件與新一代設(shè)計(jì)環(huán)境以及 IP 完美地整合在一起,可滿足客戶對(duì)可編程邏輯乃至可編程系統(tǒng)集成的廣泛需求賽靈思于1984年創(chuàng)建于美國(guó)加利福尼亞州的硅谷,總部位于硅谷核心的圣何塞,并在科羅拉多州、愛爾蘭、新加坡 印度、中國(guó)、日本擁有分支機(jī)構(gòu)收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

微信公眾號(hào)“老石談芯”主理人,博士畢業(yè)于倫敦帝國(guó)理工大學(xué)電子工程系,現(xiàn)任某知名半導(dǎo)體公司高級(jí)FPGA研發(fā)工程師,從事基于FPGA的數(shù)據(jù)中心網(wǎng)絡(luò)加速、網(wǎng)絡(luò)功能虛擬化、高速有線網(wǎng)絡(luò)通信等領(lǐng)域的研發(fā)和創(chuàng)新工作。曾經(jīng)針對(duì)FPGA、高性能與可重構(gòu)計(jì)算等技術(shù)在學(xué)術(shù)界頂級(jí)會(huì)議和期刊上發(fā)表過多篇研究論文。