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

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

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

基于使用FPGA實現(xiàn)低延遲的成像系統(tǒng)

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-10-08 09:07 ? 次閱讀

目前商用領(lǐng)域的成像系統(tǒng)還是以嵌入式ASIC為主(成品時間快,性價比高),對于一些軍工、醫(yī)學(xué)等特殊領(lǐng)域還是以FPGA為主,在特殊領(lǐng)域里延遲是最先考慮的問題(成本不是主要問題),所以今天介紹一下使用FPGA實現(xiàn)低延遲的成像系統(tǒng),這里說明一下,整個系統(tǒng)調(diào)試比較麻煩(和sensor有關(guān)),很大可能調(diào)試不出圖像,所以大家只需要知道有這個架構(gòu)即可,有需求可以自己調(diào)試。

低延遲架構(gòu)

我們這次使用的是AMD-Xilinx FPGA,大部分的圖像處理都有IP可以使用,在官方文檔中有相關(guān)的架構(gòu),具體如下:

24321ce8-46a1-11ed-96c9-dac502259ad0.png

上面的架構(gòu)是比較通用的架構(gòu),官方也有例程可以參考,但是上面架構(gòu)多了一個VDMA,這就導(dǎo)致視頻傳輸?shù)臅r候有1到幾幀的延遲,這對于低延遲、高分辨率的情形肯定是不能容忍的。所以官方對于特殊情況建議使用下面的架構(gòu):

245f5fdc-46a1-11ed-96c9-dac502259ad0.png

去掉了VDMA,但是對于時鐘系統(tǒng)要去更高,對于視頻輸入輸出在不同時鐘域情況下是使用不了的,所以整體要求比較高。但是砍掉了VDMA和DDR,所以整體成本會低很多。關(guān)于沒有VDMA情況下的各個IP的設(shè)置及測試可以看下面的文章《不使用VDMA情況下使用AXI4總線實現(xiàn)視頻輸入輸出(低延遲首選)》。

FPGA系統(tǒng)架構(gòu)設(shè)計

我們還是參考上面的架構(gòu)來設(shè)計我們的系統(tǒng)。

當(dāng)我們與圖像sensor對接時,我們通常會以不同的格式接收圖像,例如 MIPI 、并行接口,在我們接收視頻之前,我們需要先配置sensor按照我們的需求運行。通常,sensor需要通過 I2C 或 SPI 進行配置。

這次演示的平臺:

7系列FPGA

MT9M114 sensor

24914e84-46a1-11ed-96c9-dac502259ad0.png

sensor 的接口非常簡單,可以分為視頻接口和配置接口(IIC)。

視頻接口由 10 位數(shù)據(jù)(分為 8 位和 2 位)、幀和行有效、像素時鐘和參考時鐘 (24 MHz) 組成。

配置接口由連接到sensor的 I2C 和 復(fù)位IO組成。

該解決方案的架構(gòu)如下:軟核處理器(MicroBlaze)通過 I2C 配置sensor。雖然圖像處理路徑將在 FPGA 中實現(xiàn),但由于這是一種低成本應(yīng)用,該解決方案不會使用 DDR 存儲器中實現(xiàn)外部幀緩沖區(qū),而是圖像處理流水線將完全在 FPGA 中實現(xiàn)。

Sensor中由于我們配置的是RAW數(shù)據(jù),所以還需要使用Sensor Demosaic和Gamma(基本成像IP)IP。

該設(shè)計還將使用軟核處理器來控制視頻時序和圖像處理路徑的其他相關(guān)配置任務(wù)。

Vivado 工程構(gòu)建

搭建MicroBlaze 系統(tǒng)

這一部分比較簡單,可以看看之前的文章《【Vivado那些事兒】MicroBlaze最小系統(tǒng)搭建及程序固化》

添加其他IP

整個系統(tǒng)需要的IP主要如下:

CAM 接口 - 此接口與 sensor接口連接,簡單處理數(shù)據(jù)(選擇RAW數(shù)據(jù)的位數(shù)),此IP非必須

Video to AXIS - 這會將并行視頻轉(zhuǎn)換為 AXI 流格式

Sensor Demosaic - 將代表 R、G 或 B 的 RAW 像素值轉(zhuǎn)換為 24 位 RGB 格式

Video Timing Generator - 生成輸出格式的視頻時序信號

AXI Stream to Video Out - 將 AXI Stream 轉(zhuǎn)換為并行視頻

AXI IIC - 連接到 MicroBlaze,用于配置sensor

AXI UART - 連接到 MicroBlaze,用于軟件調(diào)試

添加完后就可以連線了,完整的框圖應(yīng)如下所示。完整的工程在文章最后給出。

24bf2854-46a1-11ed-96c9-dac502259ad0.png

在 AXI Stream 中,使用 TUser 指示幀的開始,使用 TLast 指示行的結(jié)束。

IP的關(guān)鍵設(shè)置

Video to AXIS

252b045c-46a1-11ed-96c9-dac502259ad0.png

Sensor Demosaic

25a4807a-46a1-11ed-96c9-dac502259ad0.png

AXI IIC 設(shè)置

2605c56a-46a1-11ed-96c9-dac502259ad0.png

其他IP可以查看文章最后的工程查看。

資源使用率

在Arty S7-50 的總利用率如下所示。

2656a76e-46a1-11ed-96c9-dac502259ad0.png

SDK 中編寫軟件

生成 Vivado 硬件后,下一步就是編寫應(yīng)用軟件,用于配置sensor和視頻處理IP核。

因此,軟件中將執(zhí)行以下操作:

初始化 AXI IIC、VTC 和中斷控制器

設(shè)置AXI 相關(guān)中斷控制器 - 這包括三個中斷服務(wù)例程。IIC 發(fā)送、接收和狀態(tài)各一個。

在 VTC 配置輸出時序

通過 I2C 復(fù)位sensor并點亮 sensor板子上 LED

通過I2C讀取sensor-MT9M114的ID,來檢測相機是否存在(外圍設(shè)置是否正確)

通過 I2C 配置和初始化相機 - 這是最浪費時間的,好在有很多資料可以參考

初始化相機后,我們將能夠在 ILA 上看到視頻流。

調(diào)試過程中測量的FPGA和sensor之間的 I2C 通信信號。

26821912-46a1-11ed-96c9-dac502259ad0.png

使用 AXI UART 調(diào)試軟件:

27620ac2-46a1-11ed-96c9-dac502259ad0.png

一旦相機初始化,我們可以使用 ILA 采集信號:

27c5fabe-46a1-11ed-96c9-dac502259ad0.png

上圖顯示了 1280 像素的線寬。

AXI Stream 是一種單向總線,用于將數(shù)據(jù)從主機傳輸?shù)綇臋C,作為數(shù)據(jù)流,它不包含地址通道。為了通過 AXI 流控制流和傳遞視頻時序信息,我們使用了以下信號:

TReady - 當(dāng)準(zhǔn)備好接收數(shù)據(jù)時由下游外設(shè)斷言

TValid - 當(dāng)輸出數(shù)據(jù)有效時通過發(fā)送外設(shè)斷言

TUser - 為幀的開始發(fā)出

TLast - 為行尾標(biāo)志

28121b38-46a1-11ed-96c9-dac502259ad0.png

由于我們沒有 使用VDMA,所以 AXIS 流上的視頻輸出是一個連續(xù)塊,并且 TValid 在活動像素周期內(nèi)不會斷言和取消斷言。

我們可以通過使用圖像處理鏈的像素時鐘來確保 Tvalid 是連續(xù)的。

軟件部分還是參考最后的工程吧,除了sensor需要單獨編寫,其他都是由SDK自帶的例程修改而來。

總結(jié)

雖然上面的架構(gòu)和最后的設(shè)計比較簡單,但是調(diào)試起來還是很難得,只不過我寫的比較簡單,一旦出不來視頻,重點按照最開始官方架構(gòu)檢查PCLK。

該工程主要參考架構(gòu)和架構(gòu)中時鐘域的處理,注意pCLK(像素時鐘)和ACLK的走向。

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

    關(guān)注

    1625

    文章

    21621

    瀏覽量

    601241
  • asic
    +關(guān)注

    關(guān)注

    34

    文章

    1183

    瀏覽量

    120225
  • 成像系統(tǒng)
    +關(guān)注

    關(guān)注

    2

    文章

    191

    瀏覽量

    13898
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA的B超成像系統(tǒng)圖像采集的原理和實現(xiàn)

    FPGA的B超成像系統(tǒng)圖像采集的原理和實現(xiàn) 1、引言 醫(yī)學(xué)超聲診斷成像技術(shù)大多數(shù)采用超聲脈沖回波法,即利用探頭產(chǎn)生超聲波進入人體,由人體
    發(fā)表于 04-21 10:02 ?1531次閱讀
    <b class='flag-5'>FPGA</b>的B超<b class='flag-5'>成像</b><b class='flag-5'>系統(tǒng)</b>圖像采集的原理和<b class='flag-5'>實現(xiàn)</b>

    ISPl362在基于FPGA的紅外成像系統(tǒng)中的應(yīng)用

    ISPl362在基于FPGA的紅外成像系統(tǒng)中的應(yīng)用
    發(fā)表于 08-12 12:23

    如何實現(xiàn)視頻采集與DVI成像設(shè)計?

    視頻采集是進行圖像及圖形處理的第一步,目前視頻采集系統(tǒng)一般由FPGA和DSP組成,FPGA作為視頻采集控制芯片,DSP作為圖像處理與成像控制芯片。隨著
    發(fā)表于 08-14 07:17

    怎么設(shè)計基于FPGA多波束成像的聲納系統(tǒng)?

    多波束成像聲納利用了數(shù)字成像技術(shù),在海底探測范圍內(nèi)形成距離一方位二維聲圖像,具有很高的系統(tǒng)穩(wěn)定性和很強的信號處理能力。但是由于數(shù)字成像系統(tǒng)數(shù)
    發(fā)表于 10-09 06:04

    【MPS電源評估板試用申請】基于FPGA的紅外熱成像系統(tǒng)

    項目名稱:基于FPGA的紅外熱成像系統(tǒng)試用計劃:申請理由本人從事紅外熱成像的研發(fā)工作,在公司主要負責(zé)基于FPGA的紅外熱
    發(fā)表于 06-18 13:45

    新手求助如何實現(xiàn)延遲變化的CPRI?

    如何利用低成本FPGA實現(xiàn)延遲變化的CPRI?
    發(fā)表于 04-30 07:03

    請問如何實現(xiàn)無線電信設(shè)備的延遲變化CPRI?

    請問如何實現(xiàn)無線電信設(shè)備的延遲變化CPRI?
    發(fā)表于 05-07 06:55

    怎么實現(xiàn)IGBT延遲導(dǎo)通時間測量系統(tǒng)的設(shè)計?

    本文從精簡結(jié)構(gòu),同時兼顧精度的角度出發(fā),提出一種基于時間測量芯片TDC-GP2來精確測量IGBT導(dǎo)通延遲時間系統(tǒng),用于測量IGBT的導(dǎo)通延遲時間,實現(xiàn)簡單且成本
    發(fā)表于 05-14 06:07

    基于FPGA的低成本延時成像系統(tǒng)設(shè)計方案資料分享

    考慮的問題(成本不是主要問題),所以今天介紹一下使用FPGA實現(xiàn)延遲成像系統(tǒng),這里說明一下,
    發(fā)表于 10-08 15:36

    FPGA的多路可控脈沖延遲系統(tǒng)設(shè)計

    FPGA的多路可控脈沖延遲系統(tǒng)設(shè)計 采用數(shù)字方法和模擬方法設(shè)計了一種最大分辨率為0.15 ns級的多路脈沖延遲系統(tǒng),可以
    發(fā)表于 03-29 15:09 ?2584次閱讀
    <b class='flag-5'>FPGA</b>的多路可控脈沖<b class='flag-5'>延遲</b><b class='flag-5'>系統(tǒng)</b>設(shè)計

    FPGA運行時重構(gòu)的延遲隱藏機制研究與實現(xiàn)

    FPGA運行時重構(gòu)的延遲隱藏機制研究與實現(xiàn)_劉偉
    發(fā)表于 01-07 19:08 ?0次下載

    基于FPGA多波束成像的聲納系統(tǒng)設(shè)計

    給出了一種基于FPGA的多波束成像聲納整機的硬件電路設(shè)計方案,介紹了該方案中各分系統(tǒng)的具體電路實現(xiàn),以Xilinx公司的FPGA芯片作為核心
    發(fā)表于 11-18 09:38 ?4035次閱讀
    基于<b class='flag-5'>FPGA</b>多波束<b class='flag-5'>成像</b>的聲納<b class='flag-5'>系統(tǒng)</b>設(shè)計

    基于Flash FPGA器件實現(xiàn)脈沖延遲控制系統(tǒng)的設(shè)計

    高分辨率的要求;模擬方法采用專用的脈沖延遲器件實現(xiàn)延遲控制,其缺點是抗干擾效果不好,容易產(chǎn)生抖動和電壓不穩(wěn)等問題。于是我們提出構(gòu)建數(shù)模結(jié)合的系統(tǒng),
    發(fā)表于 08-11 17:36 ?1253次閱讀
    基于Flash <b class='flag-5'>FPGA</b>器件<b class='flag-5'>實現(xiàn)</b>脈沖<b class='flag-5'>延遲</b>控制<b class='flag-5'>系統(tǒng)</b>的設(shè)計

    介紹一下使用FPGA實現(xiàn)延遲成像系統(tǒng)

    當(dāng)我們與圖像sensor對接時,我們通常會以不同的格式接收圖像,例如 MIPI 、并行接口,在我們接收視頻之前,我們需要先配置sensor按照我們的需求運行。通常,sensor需要通過 I2C 或 SPI 進行配置。
    發(fā)表于 10-08 09:05 ?999次閱讀

    采用FPGA實現(xiàn)醫(yī)療成像總結(jié)

    電子發(fā)燒友網(wǎng)站提供《采用FPGA實現(xiàn)醫(yī)療成像總結(jié).pdf》資料免費下載
    發(fā)表于 10-07 16:34 ?2次下載
    采用<b class='flag-5'>FPGA</b><b class='flag-5'>實現(xiàn)</b>醫(yī)療<b class='flag-5'>成像</b>總結(jié)