1. 初識(shí)XILINX
初識(shí)XILINX,是PYNQ-Z2。當(dāng)時(shí)剛學(xué)完學(xué)校的數(shù)字電路課程,對(duì)FPGA并不了解,學(xué)校課程也僅僅是用VHDL驗(yàn)證了一些基礎(chǔ)的FPGA實(shí)驗(yàn),例如生成一個(gè)n進(jìn)位序列碼。并不知道FPGA有這么廣闊的應(yīng)用。在一次王偉博士的培訓(xùn)上,我第一次接觸到了PYNQ。在講座中,我運(yùn)行了一個(gè)PYNQ的demo。通過(guò)USB攝像頭檢測(cè)邊緣處理。如下圖:
當(dāng)時(shí)給了我很大的震撼,瞬間對(duì)FPGA非常感興趣。王博士指點(diǎn)我,想學(xué)好FPGA,光會(huì)一點(diǎn)VHDL的皮毛并不夠,要對(duì)工業(yè)上最流行的VERILOG非常熟悉才行。雖然我們學(xué)校并沒(méi)有開(kāi)設(shè)關(guān)于VERILOG的課程,但我在圖書(shū)館借閱了相關(guān)的書(shū)籍首先進(jìn)行自學(xué),并在實(shí)際操作中補(bǔ)充自己。這一步也為之后全國(guó)FPGA大賽的個(gè)人能力測(cè)試建立了基礎(chǔ)。隨后,王博士開(kāi)展面向全系的VERILOG普及培訓(xùn),我非常有幸作為助教參與其中,給低年級(jí)學(xué)弟學(xué)妹開(kāi)展VERILOG基礎(chǔ)語(yǔ)法的講解。
隨后,XILINX公司推出ULTRA96板卡的試用申請(qǐng)。這對(duì)我來(lái)說(shuō)既是機(jī)遇,也是挑戰(zhàn)。不負(fù)一番努力,我通過(guò)了板卡的申請(qǐng)。收到板卡后,困難一直伴隨著我。因?yàn)閷?duì)LINUX系統(tǒng)并不熟悉,第一次讓設(shè)備連接網(wǎng)絡(luò)就花費(fèi)了我很長(zhǎng)時(shí)間。當(dāng)時(shí)網(wǎng)上并沒(méi)有現(xiàn)在對(duì)它的明確資料,靠著類似的設(shè)備樹(shù)莓派的經(jīng)驗(yàn)去一步步試著去配置,最后總結(jié)出多種聯(lián)網(wǎng)方法并和實(shí)驗(yàn)室同學(xué)分享。在此期間,我意識(shí)到要學(xué)好嵌入式技術(shù),必須對(duì)LINUX做到很熟悉。
2. 參加FPGA大賽
完成基礎(chǔ)的培訓(xùn)后,我報(bào)名參加了2019年的FPGA全國(guó)大學(xué)生競(jìng)賽。我們的項(xiàng)目是制作一臺(tái)基于STM32平臺(tái)的智能小車,可以通過(guò)車載攝像頭設(shè)識(shí)別障礙和到路線。利用ULTRA96強(qiáng)大的計(jì)算性能,運(yùn)行裁剪過(guò)的YOLO/SSD模型。實(shí)現(xiàn)識(shí)別的速度和精度的雙向贏。期間,訓(xùn)練模型對(duì)我來(lái)說(shuō)在初期也是一個(gè)很大的挑戰(zhàn),從第一次接觸Tensorflow到訓(xùn)練模型,遇到很多的問(wèn)題也得到了很多老師同學(xué)的幫助。
解決重重問(wèn)題后,我完成了我們比賽的所有準(zhǔn)備,來(lái)到南京答辯。因?yàn)榘蹇▽儆谧赃x題目組,所以在比賽的房間內(nèi)都是來(lái)自一些名校的研究生組合,無(wú)形中給了我很大壓力。在評(píng)委組驗(yàn)收的時(shí)候,暴露出識(shí)別幀數(shù)低下的問(wèn)題,評(píng)委也給出一些解決的建議。不負(fù)眾望,最終我取得了不錯(cuò)的二等獎(jiǎng),對(duì)我來(lái)說(shuō)也是非常的不容易。其實(shí),得到評(píng)委的肯定的評(píng)價(jià)比得知獲獎(jiǎng)更為開(kāi)心。
我比賽中的作品
3. 假期DNNDK SSD
在假期中,尋找到了當(dāng)時(shí)大賽時(shí)對(duì)障礙物識(shí)別幀數(shù)低的原因,通過(guò)對(duì)設(shè)備的調(diào)整,實(shí)現(xiàn)SSD模型15-20幀的識(shí)別速度。如下圖。
4. 參加X(jué)DF
因?yàn)閷?duì)XILINX非常感興趣,我自費(fèi)報(bào)名參加了XILINX的2019年XDF全球開(kāi)發(fā)者大會(huì)。參加本次大會(huì)讓我受到了很多啟發(fā)。我們向XILINX工程師詢問(wèn)了ULTRA96無(wú)法發(fā)揮完全性能可能的原因并進(jìn)行了探討,對(duì)之后解決這個(gè)問(wèn)題有了非常大的幫助。
在XDF的現(xiàn)場(chǎng)實(shí)驗(yàn)室,我們通過(guò)做官方VITIS例程,體會(huì)到了XILINX新一代集成工具VITIS的強(qiáng)大整合能力。因?yàn)榇筚惖脑?,我?duì)小車的相關(guān)技術(shù)非常感興趣。在AVANT的展臺(tái)上,
我發(fā)現(xiàn)了了AVANT的工程師用ULTRA96作為ROS(Robot Operating System)作為載體運(yùn)行激光雷達(dá)的運(yùn)行。
5. SLAM實(shí)時(shí)建模
這給我非常大的啟發(fā),依托ROS強(qiáng)大的外設(shè)庫(kù)支持、仿真能力和FPGA強(qiáng)大的運(yùn)算性能,可以實(shí)現(xiàn)更高性能的機(jī)器人底盤(pán)系統(tǒng)。下圖是我利用ROS對(duì)REALSENSE多攝像頭傳感器的仿真,實(shí)現(xiàn)SLAM實(shí)時(shí)建模我房間的一角。
6. PETALINUX鏡像
最近,認(rèn)識(shí)到要真正用好ZYNQ,必須掌握PETALINUX去定制所需要的系統(tǒng)。在這個(gè)過(guò)程中遇到了很多問(wèn)題。或許是計(jì)算機(jī)編譯的速度慢、或許是資源需要連接外網(wǎng)導(dǎo)致網(wǎng)速很慢,最終讓整個(gè)編譯過(guò)程無(wú)限變長(zhǎng)。為了解決這些問(wèn)題,付出了很多時(shí)間作為代價(jià)。連續(xù)2周的連續(xù)從早到晚的編譯,因?yàn)槲业牟僮鞑划?dāng),沒(méi)有把計(jì)算機(jī)放在通風(fēng)良好的地方。計(jì)算機(jī)的主板南橋因?yàn)殚L(zhǎng)時(shí)間過(guò)熱燒毀了,不過(guò)一切苦難克服之后都是值得的。通過(guò)大量的嘗試,不斷的成功和失敗。讓我越來(lái)越清楚PETALLINUX的運(yùn)行規(guī)則。最后,實(shí)現(xiàn)帶有DPU功能的定制鏡像的制作,如下圖:
圖像處理流程:
1.讀取圖像
2.將讀取的圖像數(shù)據(jù)格式轉(zhuǎn)換為AXI格式
3.將AXI格式的圖像轉(zhuǎn)換為OPENCV可以處理的Mat格式
4.通過(guò)HLS_OPENCV處理庫(kù)對(duì)圖像進(jìn)行處理
5.將處理完的圖像數(shù)據(jù)從Mat格式轉(zhuǎn)換為傳輸?shù)腁XI格式
6.將圖像的AXI轉(zhuǎn)換為圖像格式
7.將圖像進(jìn)行輸出
用到的HLS_OPENCV函數(shù)詳細(xì)參考官方指南UG902
展示一個(gè)簡(jiǎn)單的圖像處理結(jié)果:
8. VIVADO VITIS ULTRASCALE+MPSOC IP FPGA設(shè)計(jì)
VIVADO是FPGA設(shè)計(jì)最基礎(chǔ)的一環(huán)。它是一個(gè)功能強(qiáng)大的集成開(kāi)發(fā)環(huán)境,包含了綜合和實(shí)現(xiàn)的環(huán)境。VIVADO可以實(shí)現(xiàn)自動(dòng)管理運(yùn)行數(shù)據(jù),并可以方法運(yùn)行??梢詫?duì)多種硬件描述語(yǔ)言進(jìn)行綜合。VIVADO的出現(xiàn),提高了我們對(duì)FPGA的設(shè)計(jì)效率,簡(jiǎn)化了設(shè)計(jì)流程。
VIVADO項(xiàng)目設(shè)計(jì)流程:
1. 加入對(duì)應(yīng)板卡信息
2. 打開(kāi)VIVADO并新建工程
3. 選擇板卡并完成建立
4. Create Block Design
5. 添加PS、Pl核心及組件接口并連線
6. Create HDL Wrapper
7. 綜合并生存比特流
8. 輸出硬件描述文件
如下圖是Ultra96的板卡設(shè)計(jì)圖
VITIS是XILINX公司最新推出的統(tǒng)一軟件平臺(tái),它可以為邊遠(yuǎn)、云和混合計(jì)算應(yīng)用加速提供統(tǒng)一編程模型。利用與高層次框架的結(jié)合和完整的加速庫(kù),可以加快我們的設(shè)計(jì)效率。
下面是利用VITIS實(shí)現(xiàn)的一個(gè)終端FPGA串口輸出的仿真
VITIS流程:
1. 創(chuàng)建平臺(tái)項(xiàng)目
2. 輸入硬件描述文件并完成創(chuàng)建
3. 修改我們要用到的串口
4. 保存并重新BULID
5. 創(chuàng)建一個(gè)應(yīng)用項(xiàng)目
6. 選擇一個(gè)串口輸出模板并修改主函數(shù)
7. 保存并重建項(xiàng)目
8. 通過(guò)硬件仿真
下面分別為設(shè)備平臺(tái)和仿真結(jié)果:
-
FPGA
+關(guān)注
關(guān)注
1625文章
21628瀏覽量
601252 -
賽靈思
+關(guān)注
關(guān)注
32文章
1794瀏覽量
131126 -
激光雷達(dá)
+關(guān)注
關(guān)注
967文章
3921瀏覽量
189445
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論