0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA的HLS圖像處理IP核設(shè)計(jì)

454398 ? 來(lái)源:北郵世紀(jì)學(xué)院 ? 作者:徐知?jiǎng)?/span> ? 2020-11-05 15:56 ? 次閱讀

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功能的定制鏡像的制作,如下圖:

7. HLS 圖像處理IP核設(shè)計(jì)

VIVADO HLS工具可以將C語(yǔ)言高級(jí)綜合為硬件。

原理框圖如下:

圖像處理流程:

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é)果:


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21628

    瀏覽量

    601252
  • 賽靈思
    +關(guān)注

    關(guān)注

    32

    文章

    1794

    瀏覽量

    131126
  • 激光雷達(dá)
    +關(guān)注

    關(guān)注

    967

    文章

    3921

    瀏覽量

    189445
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Vivado中FFT IP的使用教程

    本文介紹了Vidado中FFT IP的使用,具體內(nèi)容為:調(diào)用IP>>配置界面介紹>>IP
    的頭像 發(fā)表于 11-06 09:51 ?187次閱讀
    Vivado中FFT <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用教程

    芯驛電子 ALINX 推出全新 IP 產(chǎn)品線,覆蓋 TCP/UDP/NVMe AXI IP

    符合 IEEE802.3 標(biāo)準(zhǔn)的完整協(xié)議棧,支持高達(dá) 9000 字節(jié)的 MTU,特別適用于需要 大規(guī)模數(shù)據(jù)傳輸和實(shí)時(shí)視頻處理 的應(yīng)用場(chǎng)景。 10GbE TCP/IP 協(xié)議棧 IP
    的頭像 發(fā)表于 10-30 17:39 ?185次閱讀
     芯驛電子 ALINX 推出全新 <b class='flag-5'>IP</b> <b class='flag-5'>核</b>產(chǎn)品線,覆蓋 TCP/UDP/NVMe AXI <b class='flag-5'>IP</b> <b class='flag-5'>核</b>

    如何申請(qǐng)xilinx IP的license

    在使用FPGA的時(shí)候,有些IP是需要申請(qǐng)后才能使用的,本文介紹如何申請(qǐng)xilinx IP的license。
    的頭像 發(fā)表于 10-25 16:48 ?151次閱讀
    如何申請(qǐng)xilinx <b class='flag-5'>IP</b><b class='flag-5'>核</b>的license

    FPGA圖像處理領(lǐng)域的優(yōu)勢(shì)有哪些?

    FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)在圖像處理領(lǐng)域具有顯著的優(yōu)勢(shì),這些優(yōu)勢(shì)主要體現(xiàn)在以下幾個(gè)方面: 一、高并行處理能力
    發(fā)表于 10-09 14:36

    優(yōu)化 FPGA HLS 設(shè)計(jì)

    優(yōu)化 FPGA HLS 設(shè)計(jì) 用工具用 C 生成 RTL 的代碼基本不可讀。以下是如何在不更改任何 RTL 的情況下提高設(shè)計(jì)性能。 介紹 高級(jí)設(shè)計(jì)能夠以簡(jiǎn)潔的方式捕獲設(shè)計(jì),從而
    發(fā)表于 08-16 19:56

    FPGA設(shè)計(jì)經(jīng)驗(yàn)之圖像處理

    今天和大俠簡(jiǎn)單聊一聊基于FPGA圖像處理,之前也和各位大俠聊過(guò)相關(guān)的圖像處理,這里面也超鏈接了幾篇,具體如下:
    發(fā)表于 06-12 16:26

    FPGAIP使用技巧

    FPGAIP使用技巧主要包括以下幾個(gè)方面: 理解IP的概念和特性 : IP
    發(fā)表于 05-27 16:13

    基于FPGA的實(shí)時(shí)邊緣檢測(cè)系統(tǒng)設(shè)計(jì),Sobel圖像邊緣檢測(cè),FPGA圖像處理

    算法 ,利用乒乓操作和 SDRAM 緩存圖像,可以實(shí)時(shí)提取視頻圖像的邊緣特征。文中對(duì)比了 MATLAB 和 FPGA處理效果,由于 FPGA
    發(fā)表于 05-24 07:45

    關(guān)于FPGA IP

    ,這就是IP。 IP一般原廠做一些資源開(kāi)放,定制的IP一般就要收費(fèi)了。像做
    發(fā)表于 04-29 21:01

    FPGA圖像處理之CLAHE算法

    FPGA圖像處理--CLAHE算法(一)中介紹了為啥要用CLAHE算法來(lái)做圖像增強(qiáng)。
    的頭像 發(fā)表于 01-04 12:23 ?2335次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>圖像</b><b class='flag-5'>處理</b>之CLAHE算法

    FPGA優(yōu)質(zhì)開(kāi)源模塊-SRIO IP的使用

    本文介紹一個(gè)FPGA常用模塊:SRIO(Serial RapidIO)。SRIO協(xié)議是一種高速串行通信協(xié)議,在我參與的項(xiàng)目中主要是用于FPGA和DSP之間的高速通信。有關(guān)SRIO協(xié)議的詳細(xì)介紹網(wǎng)上有很多,本文主要簡(jiǎn)單介紹一下SRIO I
    的頭像 發(fā)表于 12-12 09:19 ?2030次閱讀
    <b class='flag-5'>FPGA</b>優(yōu)質(zhì)開(kāi)源模塊-SRIO <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有著很多的有用且對(duì)整個(gè)工程很有益處的IP,比如數(shù)學(xué)類的IP,數(shù)字信號(hào)處理
    的頭像 發(fā)表于 12-05 15:05 ?1478次閱讀

    FPGA圖像處理方法

    圖像細(xì)節(jié)。 FPGA 圖像處理方法 1、圖像增強(qiáng) 兩大方法:空間域方法和時(shí)間域方法(以后再詳述) 2、
    的頭像 發(fā)表于 12-02 13:15 ?1036次閱讀

    FPGAIP學(xué)習(xí)的正確打開(kāi)方式

    本帖最后由 jf_25420317 于 2023-11-17 11:10 編輯 FPGA開(kāi)發(fā)過(guò)程中,利用各種IP,可以快速完成功能開(kāi)發(fā),不需要花費(fèi)大量時(shí)間重復(fù)造輪子。 當(dāng)我們面對(duì)使用新
    發(fā)表于 11-17 11:09

    使用Vivado高層次綜合(HLS)進(jìn)行FPGA設(shè)計(jì)的簡(jiǎn)介

    電子發(fā)燒友網(wǎng)站提供《使用Vivado高層次綜合(HLS)進(jìn)行FPGA設(shè)計(jì)的簡(jiǎn)介.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 09:33 ?0次下載
    使用Vivado高層次綜合(<b class='flag-5'>HLS</b>)進(jìn)行<b class='flag-5'>FPGA</b>設(shè)計(jì)的簡(jiǎn)介