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

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

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

如何使用FPGA和CMOS制作一個(gè)低成本成像系統(tǒng)

科技觀察員 ? 來(lái)源:hackster.io ? 作者:hackster.io ? 2022-05-12 17:54 ? 次閱讀

并非所有成像系統(tǒng)都需要昂貴??梢灾苯邮褂贸杀緝?yōu)化的 FPGA 和 CMOS 圖像傳感器來(lái)創(chuàng)建解決方案。

介紹

開發(fā)嵌入式視覺系統(tǒng)不需要使用昂貴的 FPGA 或 SoC、大型幀緩沖存儲(chǔ)器和外部攝像頭。

我們可以使用直接與 CMOS 傳感器連接的成本優(yōu)化的 FPGA / SoC 來(lái)開發(fā)非常強(qiáng)大的圖像處理系統(tǒng)。這允許創(chuàng)建一種解決方案,該解決方案不僅可以實(shí)現(xiàn)成本目標(biāo),而且還可以實(shí)現(xiàn)緊湊和節(jié)能。

直接與傳感器接口是帶有照相機(jī)的接口,因?yàn)槲覀円呀?jīng)做了不同的先前。當(dāng)我們與相機(jī)接口時(shí),我們通過 HDMI、CameraLink 等接收視頻信號(hào),這是相當(dāng)直接的。

當(dāng)我們與圖像傳感器連接時(shí),我們通常會(huì)以不同的格式接收?qǐng)D像,例如 MIPI 或并行格式,在接收視頻之前,我們需要首先配置成像器以按照我們的需要進(jìn)行操作。

通常,成像器需要通過 I2C 或 SPI 進(jìn)行配置,并且通過接口發(fā)送的命令數(shù)量可能很大。

為了演示我們?nèi)绾螌鞲衅髋c成本優(yōu)化的 FPGA 集成到該項(xiàng)目中,我們將研究集成

TDNext 1.26 兆像素 Pmod

藝術(shù)S7-50

由于 Arty S7 不直接在板上提供 HDMI 或其他視頻輸出,因此本示例將使用 Avnet 10 英寸觸摸屏。然而,這是可選的輸出最終圖像的另一個(gè)選項(xiàng)是Digilent Pmod VGA。 該 Pmod 還可用于實(shí)施成本非常低的解決方案。

與 TDNext Pmod 的接口非常簡(jiǎn)單,可以分為視頻和配置兩個(gè)元素。

視頻接口由 10 位像素(拆分 8 位和 2 位 LSB)幀和行有效、像素時(shí)鐘和參考時(shí)鐘 (24 MHz) 組成。

配置接口由連接到成像設(shè)備的 I2C 和 I2C IO 擴(kuò)展器組成,用于生成對(duì)成像器的復(fù)位。

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

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

背景

TDNext 是一種彩色成像器,這意味著該成像器應(yīng)用了拜耳模式,可以過濾每個(gè)像素的波長(zhǎng)。這意味著在積分期間,每個(gè)像素僅累積紅色、綠色或藍(lán)色波長(zhǎng)的光子。

poYBAGJ82SGAHOkGAALTWpfsG80479.png

在積分時(shí)間完成時(shí),每個(gè)像素被讀出為 8 位或 10 位像素。該像素值稱為 RAW8 或 RAW10 像素。為了重新創(chuàng)建彩色圖像,使用去拜耳算法組合包含不同波長(zhǎng)像素的周圍像素的值。

Vivado 構(gòu)建

我們需要做的第一件事是創(chuàng)建 Vivado 平臺(tái),這將接收來(lái)自 TDNext Pmod 的圖像。

為了創(chuàng)建框圖,我們將主要使用 Vivado 庫(kù)中的 IP 核,但我們將使用攝像頭接口塊和 Avnet 庫(kù)中的輸出塊。

第一步是安裝板定義文件,這使 Vivado 能夠了解 Arty S7 的配置。

下載后,這些文件應(yīng)安裝在以下路徑下的 Vivado 目錄中:

《安裝路徑》/Vivado/《版本》/data/boards/board_files/

這將允許您選擇 Arty S7 板作為創(chuàng)建新 Vivado 項(xiàng)目的目標(biāo)板。

安裝好電路板后,下一步是創(chuàng)建新項(xiàng)目、框圖并創(chuàng)建 MicroBlaze 系統(tǒng)。

隨著 MicroBlaze 系統(tǒng)的啟動(dòng)和運(yùn)行,下一步是添加視頻處理管道。處理鏈將使用以下 IP 塊

CAM 接口 - 與 TDNext 視頻接口接口

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

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

Video Timing Generator - 生成輸出格式的視頻時(shí)序信號(hào)

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

ZED ALI3 控制器 - 驅(qū)動(dòng) 10 英寸觸摸屏的 IP 模塊

AXI IIC - 連接到 MicroBlaze 這將用于配置成像器

AXI UART - 連接到 MicroBlaze,用于向用戶報(bào)告系統(tǒng)狀態(tài)

如果我們使用 Pmod VGA,我們不需要使用 ZED ALI3 控制器 IP 塊。

在我們添加 Zed ALI3 和 CAM 接口之前,我們需要重新配置 IP 核,以便能夠包含在 Spartan 7 設(shè)計(jì)中。我們從 IP 目錄視圖執(zhí)行此操作,選擇所需的 IP 核并單擊 packager 中的編輯 IP。

這將打開一個(gè)新項(xiàng)目并使您能夠選擇可比性選項(xiàng)卡并添加對(duì) Spartan 7 設(shè)備的支持。重新打包設(shè)計(jì)并更新 Vivado 項(xiàng)目中的 IP 庫(kù)。

poYBAGJ82RuAZ3jQAAGrIe9RY-8288.png

一旦 IP 升級(jí)為支持 Spartan 7,我們就可以完成設(shè)計(jì)。完整的方框圖應(yīng)如下所示。

pYYBAGJ82ReAWKW_AAHelCBCR9g634.png

與之前基于異構(gòu) SoC 的示例不同,該示例使用外部幀緩沖區(qū)。此示例不會(huì)使用 VDMA 從外部幀緩沖區(qū)讀取和寫入,這種方法需要 AXIS 到 Video 和 VTC 的不同配置。

通常情況下,AXIS to video 配置為主控,VTC 不受控制。然而,在這種方法中,AXIS to video 被配置為從設(shè)備,并且 VTC 發(fā)生器時(shí)鐘使能受到控制。

poYBAGJ82RSAIia9AADYv24IV20010.png

這種方法允許 AXIS 到視頻 IP 模塊通過啟用和禁用 VTC 來(lái)控制同步的時(shí)序,因此它們與處理管道中的同步時(shí)序相匹配。

在 AXI Stream 中,幀的開始由 TUser 指示,行尾由 TLast 指示。

IP 塊的關(guān)鍵定制是:-

視頻輸入到 AXI 4 流

poYBAGJ82Q-ACWyzAAIkWveXlPI578.png

傳感器去馬賽克設(shè)置

poYBAGJ82QuAdWeZAAHUD7uJlbk314.png

AXI IIC 設(shè)置

poYBAGJ82QiAemyrAAGOPwnhJKc834.png

在設(shè)計(jì)中我還加入了幾個(gè)集成邏輯分析儀(ILA),以實(shí)現(xiàn)系統(tǒng)狀態(tài)的內(nèi)部監(jiān)控和調(diào)試。

項(xiàng)目完成后Arty S7-50的總利用率如下圖所示。

poYBAGJ82QOALby9AAIba2WXf7A697.png

我們可以使用額外的資源來(lái)實(shí)現(xiàn)使用 HLS 的圖像處理算法是必要的。如果我們想節(jié)省資源,我們可以使用 MicroBlaze 的最小占用空間并移除 ILA。

SDK 中編寫軟件

生成 Vivado 硬件后,下一步是編寫應(yīng)用軟件,該軟件將在視頻處理內(nèi)核上配置成像器和 IP 內(nèi)核。

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

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

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

為 10 英寸顯示器配置 VTC 上的計(jì)時(shí)

通過 I2C 重置相機(jī)并點(diǎn)亮 PMOD 上的 LED

通過 I2C 檢測(cè)攝像頭,我們正在尋找檢測(cè) MT9M114

通過 I2C 鏈接初始化相機(jī) - 這將需要幾秒鐘來(lái)編寫所有命令

為了初始化成像器,我已將 TDM114 示例設(shè)計(jì)提供的基于 Zynq 的庫(kù)轉(zhuǎn)換為可用于 AXI IIC 的格式。

相機(jī)初始化后,我們將能夠在連接到 AXI 流組件的視頻流的 ILA 上看到視頻。

pYYBAGJ82KyANCgeAAG-Ro3cUI0884.png

監(jiān)控TDNext Pmod 背面的I2C 通信顯示Arty S7 和TDNext 之間的通信。

檢測(cè)到攝像頭后,應(yīng)用程序?qū)⑾螺d多個(gè) I2C 攝像頭配置設(shè)置。

將使用 AXI UART 報(bào)告進(jìn)度

pYYBAGJ82PeAMHk_AACxNDkx_qc378.png

一旦相機(jī)被初始化,我們就可以使用 ILA 來(lái)驗(yàn)證成像器正在生成視頻,并且它是我們配置的分辨率。

我們通過使用 ILA 并直接檢查在 FPGA 中接收到的視頻來(lái)做到這一點(diǎn)。

pYYBAGJ82KOAaStaAAEP3SuNPys158.png

上圖顯示了 1280 像素的線寬,這正是我們所期望的。

接收到的像素從并行格式轉(zhuǎn)換為 AXI 流。

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

TReady - 準(zhǔn)備好接收數(shù)據(jù)時(shí)由下游外設(shè)置位

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

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

TLast - 為行尾發(fā)布

第二個(gè) ILA 可用于確保正確生成 AXI 流。

由于我們沒有 VDMA,重要的是 AXIS 流上的視頻輸出是一個(gè)連續(xù)塊,并且 TValid 在活動(dòng)像素期間不會(huì)斷言和取消斷言。

pYYBAGJ82KOAaStaAAEP3SuNPys158.png

我們可以通過將像素時(shí)鐘用于圖像處理鏈來(lái)確保 Tvalid 是連續(xù)的。

poYBAGJ82J-AWoFXAAFx8SggFec340.png

該項(xiàng)目中使用的庫(kù) API 如下,但包含 IIC 配置數(shù)據(jù)的 camera_initial.h 除外。Xilinx 根據(jù)硬件配置提供所有其他頭文件。

poYBAGJ82JuAbGLgAABUrwoj6aU436.png

設(shè)備地址和標(biāo)識(shí)符

pYYBAGJ82JeAWVkKAABqQjtvqfI093.png

應(yīng)用程序的主循環(huán)可以在下面看到

int main()

{
u32 Status;
XIic_Config *iic_conf;
XVtc VtcInst;
XVtc_Config *vtc_config;
XVtc_Timing vtcTiming;
XVtc_SourceSelect SourceSelect;
XV_demosaic_Config *mosaic_config;
init_platform();
printf("www.adiuvoengineering.com S7 Imager example\n\r");
mosaic_config = XV_demosaic_LookupConfig(XPAR_XV_DEMOSAIC_0_DEVICE_ID);
XV_demosaic_CfgInitialize(&mosaic,mosaic_config,mosaic_config->BaseAddress);
XIntc_Initialize(&InterruptController, int_dev);
SetUpInterruptSystem();
iic_conf = XIic_LookupConfig(IIC_dev);
Status = XIic_CfgInitialize(&iic, iic_conf, iic_conf->BaseAddress);
if (Status != XST_SUCCESS) {
printf("XIic initial is fail \n \r") ;
return XST_FAILURE;
}
XIic_SetSendHandler(&iic, &iic, (XIic_Handler) SendHandler);
XIic_SetRecvHandler(&iic, &iic, (XIic_Handler) ReceiveHandler);
XIic_SetStatusHandler(&iic, &iic,(XIic_StatusHandler) StatusHandler);
vtc_config = XVtc_LookupConfig(XPAR_VTC_0_DEVICE_ID);
XVtc_CfgInitialize(&VtcInst, vtc_config, vtc_config->BaseAddress);
vtcTiming.HActiveVideo = 1280;
vtcTiming.HFrontPorch = 65;
vtcTiming.HSyncWidth = 55;
vtcTiming.HBackPorch = 40;
vtcTiming.HSyncPolarity = 0;
vtcTiming.VActiveVideo = 800;
vtcTiming.V0FrontPorch = 7;//8;
vtcTiming.V0SyncWidth = 4;
vtcTiming.V0BackPorch = 12;
vtcTiming.V1FrontPorch = 7;
vtcTiming.V1SyncWidth = 4;
vtcTiming.V1BackPorch = 12;
vtcTiming.VSyncPolarity = 0;
vtcTiming.Interlaced = 0;
memset((void *)&SourceSelect, 0, sizeof(SourceSelect));
SourceSelect.VBlankPolSrc = 1;
SourceSelect.VSyncPolSrc = 1;
SourceSelect.HBlankPolSrc = 1;
SourceSelect.HSyncPolSrc = 1;
SourceSelect.ActiveVideoPolSrc = 1;
SourceSelect.ActiveChromaPolSrc= 1;
SourceSelect.VChromaSrc = 1;
SourceSelect.VActiveSrc = 1;
SourceSelect.VBackPorchSrc = 1;
SourceSelect.VSyncSrc = 1;
SourceSelect.VFrontPorchSrc = 1;
SourceSelect.VTotalSrc = 1;
SourceSelect.HActiveSrc = 1;
SourceSelect.HBackPorchSrc = 1;
SourceSelect.HSyncSrc = 1;
SourceSelect.HFrontPorchSrc = 1;
SourceSelect.HTotalSrc = 1;
XVtc_RegUpdateEnable(&VtcInst);
XVtc_SetGeneratorTiming(&VtcInst,&vtcTiming);
XVtc_SetSource(&VtcInst, &SourceSelect);
XVtc_EnableGenerator(&VtcInst);
XIic_Reset(&iic);
PCA9534_CTRL ();
Detect_Camera();
Soft_Reset_Camera();
Initial_Camera();

XV_demosaic_Set_HwReg_width(&mosaic,0x500);
XV_demosaic_Set_HwReg_height(&mosaic,0x31f);
XV_demosaic_Set_HwReg_bayer_phase(&mosaic,0x1);
XV_demosaic_EnableAutoRestart(&mosaic);
XV_demosaic_Start(&mosaic);
while(1){
}
cleanup_platform();
return 0;
}

運(yùn)行整個(gè)軟件應(yīng)用程序使我捕捉到了我的會(huì)議徽章收藏的下面的圖像。

poYBAGJ82I2AI9E8AALmE8DmcFE419.png

我需要調(diào)整一些設(shè)置以增加集成時(shí)間,但是,基本圖像處理管道正在按我們的預(yù)期工作。

結(jié)論

很容易創(chuàng)建一個(gè)視覺處理系統(tǒng),它直接與成像器一起工作,而不是相機(jī)。隨著處理鏈的顯著減少,這通常允許更具成本效益和潛在的響應(yīng)更快的解決方案。

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

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600458
  • CMOS
    +關(guān)注

    關(guān)注

    58

    文章

    5639

    瀏覽量

    234828
  • 圖像傳感器
    +關(guān)注

    關(guān)注

    68

    文章

    1850

    瀏覽量

    129348
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Altera、Lattice、Xilinx角逐低成本FPGA市場(chǎng)

    據(jù)報(bào)道,Altera、Lattice、Xilinx等可編程邏輯供應(yīng)商又掀起低成本FPGA的競(jìng)爭(zhēng),都力圖角逐低成本FPGA市場(chǎng),在未來(lái)的等
    發(fā)表于 07-29 00:11 ?1765次閱讀

    美光200萬(wàn)像素CMOS成像傳感器

    ,通過使用CMOS成像傳感器數(shù)字成像技術(shù)保持低成本優(yōu)勢(shì)。美光公司圖像部市場(chǎng)總監(jiān)Farhad Rostamian說,這種新型傳感器能夠提供與傳統(tǒng)DSC器件相媲美的圖像質(zhì)量。   美光公司
    發(fā)表于 10-26 16:48

    什么是Altera系列低成本Cyclone IV FPGA?

    領(lǐng)域競(jìng)爭(zhēng)激烈,價(jià)格大幅下降,令成本問題變得愈加敏感。因此,市場(chǎng)需要能即時(shí)滿足用戶需求,并具有低成本高性能的靈活器件,正是看準(zhǔn)這市場(chǎng)趨勢(shì),Cyclone IV FPGA應(yīng)運(yùn)而生。那么大
    發(fā)表于 07-31 06:59

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

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

    請(qǐng)問怎樣去設(shè)計(jì)低成本CMOS圖像采集系統(tǒng)

    基于STM8單片機(jī)的低成本CMOS圖像采集系統(tǒng)該如何去設(shè)計(jì)?CMOS圖像采集系統(tǒng)與其他嵌入式圖像采集系統(tǒng)
    發(fā)表于 06-01 07:27

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

    1、基于FPGA低成本低延時(shí)成像系統(tǒng)設(shè)計(jì)  目前商用領(lǐng)域的成像系統(tǒng)還是以嵌入式ASIC為主(成
    發(fā)表于 10-08 15:36

    采用低成本FPGA實(shí)現(xiàn)高效的低功耗PCIe接口

    白皮書 :采用低成本FPGA實(shí)現(xiàn)高效的低功耗PCIe接口 了解個(gè)基于DDR3存儲(chǔ)器控制器的真實(shí)PCI Express (PCIe) Gen1x4參考設(shè)計(jì)演示高效的Cyclone V
    發(fā)表于 02-26 10:04 ?73次下載
    采用<b class='flag-5'>低成本</b><b class='flag-5'>FPGA</b>實(shí)現(xiàn)高效的低功耗PCIe接口

    基于FPGA與USB的CMOS圖像獲取與采集系統(tǒng)設(shè)計(jì)

    實(shí)現(xiàn)了基于FPGA與USB的CMOS圖像獲取與采集系統(tǒng)的設(shè)計(jì)。介紹了成像系統(tǒng)的結(jié)構(gòu)、CMOS圖像
    發(fā)表于 09-22 16:53 ?23次下載

    基于賽靈思FPGA低成本MIPI接口IP

    基于FPGA低成本MIPI接口,專門針對(duì)視頻顯示器和攝像頭的。設(shè)計(jì)嵌入式系統(tǒng)DSI和CSI-2視頻接口的用戶現(xiàn)在即可采用低成本MIPI接口
    發(fā)表于 02-10 16:54 ?1.7w次閱讀

    基于MLX90620的低成本紅外熱成像系統(tǒng)設(shè)計(jì)_楊風(fēng)健

    基于MLX90620的低成本紅外熱成像系統(tǒng)設(shè)計(jì)_楊風(fēng)健
    發(fā)表于 03-19 19:08 ?55次下載

    高效、低成本FPGA 器件:Spartan-7 FPGA

    賽靈思 Spartan?-7 系列提供了系列高效、低成本FPGA 器件。這些器件經(jīng)過專門設(shè)計(jì),能滿足低成本市場(chǎng)的特殊需求。 摘要 Spartan?-7
    發(fā)表于 11-16 15:15 ?9079次閱讀
    高效、<b class='flag-5'>低成本</b>的 <b class='flag-5'>FPGA</b> 器件:Spartan-7 <b class='flag-5'>FPGA</b>!

    個(gè)簡(jiǎn)單且低成本的驅(qū)蚊電路設(shè)計(jì)

    低成本驅(qū)蚊電路僅使用個(gè)IC,即CMOS類型4047。這種用途非常廣泛的IC可以連接到多種工作模式,包括這里使用的多諧振蕩器或非穩(wěn)態(tài)電路。
    的頭像 發(fā)表于 05-14 14:25 ?2215次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>簡(jiǎn)單且<b class='flag-5'>低成本</b>的驅(qū)蚊電路設(shè)計(jì)

    低成本、高精度結(jié)構(gòu)光3D成像系統(tǒng)開源分享

    電子發(fā)燒友網(wǎng)站提供《低成本、高精度結(jié)構(gòu)光3D成像系統(tǒng)開源分享.zip》資料免費(fèi)下載
    發(fā)表于 10-26 11:09 ?2次下載
    <b class='flag-5'>低成本</b>、高精度結(jié)構(gòu)光3D<b class='flag-5'>成像</b><b class='flag-5'>系統(tǒng)</b>開源分享

    CMOS圖像傳感器的FPGA邏輯設(shè)計(jì)解析

    CMOS成像系統(tǒng)是基于CMOS圖像傳感器的種適用于機(jī)載應(yīng)用環(huán)境的圖像采集系統(tǒng)??捎行Ы鉀Q機(jī)載復(fù)
    的頭像 發(fā)表于 09-19 10:15 ?1606次閱讀
    <b class='flag-5'>CMOS</b>圖像傳感器的<b class='flag-5'>FPGA</b>邏輯設(shè)計(jì)解析

    AMD進(jìn)軍低成本FPGA市場(chǎng),滿足邊緣應(yīng)用需求

    雖然賽靈思主攻高端FPGA市場(chǎng),但其對(duì)低成本FPGA市場(chǎng)的投入也不容小覷。此次發(fā)布的Spartan UltraScale+正是AMD進(jìn)軍低成本FPG
    的頭像 發(fā)表于 03-10 10:06 ?984次閱讀