<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何使用FPGA和CMOS制作一個低成本成像系統

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

并非所有成像系統都需要昂貴??梢灾苯邮褂贸杀緝灮?FPGA 和 CMOS 圖像傳感器來創建解決方案。

介紹

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

我們可以使用直接與 CMOS 傳感器連接的成本優化的 FPGA / SoC 來開發非常強大的圖像處理系統。這允許創建一種解決方案,該解決方案不僅可以實現成本目標,而且還可以實現緊湊和節能。

直接與傳感器接口是帶有照相機的接口,因為我們已經做了不同的先前。當我們與相機接口時,我們通過 HDMI、CameraLink 等接收視頻信號,這是相當直接的。

當我們與圖像傳感器連接時,我們通常會以不同的格式接收圖像,例如 MIPI 或并行格式,在接收視頻之前,我們需要首先配置成像器以按照我們的需要進行操作。

通常,成像器需要通過 I2C 或 SPI 進行配置,并且通過接口發送的命令數量可能很大。

為了演示我們如何將傳感器與成本優化的 FPGA 集成到該項目中,我們將研究集成

TDNext 1.26 兆像素 Pmod

藝術S7-50

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

與 TDNext Pmod 的接口非常簡單,可以分為視頻和配置兩個元素。

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

配置接口由連接到成像設備的 I2C 和 I2C IO 擴展器組成,用于生成對成像器的復位。

該解決方案的架構如下,將使用軟核處理器通過 I2C 配置成像器。然而,雖然圖像處理路徑將在 FPGA 內實現,但由于這是一個低成本應用,該解決方案不會在 DDR 存儲器中實現外部幀緩沖器,而是圖像處理流水線將完全在 FPGA 中實現。

該設計還將使用軟核處理器來控制視頻時序和圖像處理路徑的其他相關配置任務。

背景

TDNext 是一種彩色成像器,這意味著該成像器應用了拜耳模式,可以過濾每個像素的波長。這意味著在積分期間,每個像素僅累積紅色、綠色或藍色波長的光子。

poYBAGJ82SGAHOkGAALTWpfsG80479.png

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

Vivado 構建

我們需要做的第一件事是創建 Vivado 平臺,這將接收來自 TDNext Pmod 的圖像。

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

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

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

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

這將允許您選擇 Arty S7 板作為創建新 Vivado 項目的目標板。

安裝好電路板后,下一步是創建新項目、框圖并創建 MicroBlaze 系統。

隨著 MicroBlaze 系統的啟動和運行,下一步是添加視頻處理管道。處理鏈將使用以下 IP 塊

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

Video to AXIS - 將并行視頻轉換為 AXI Streaming 格式

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

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

AXI Stream to Video Out - 將 AXI Stream 轉換為并行視頻

ZED ALI3 控制器 - 驅動 10 英寸觸摸屏的 IP 模塊

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

AXI UART - 連接到 MicroBlaze,用于向用戶報告系統狀態

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

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

這將打開一個新項目并使您能夠選擇可比性選項卡并添加對 Spartan 7 設備的支持。重新打包設計并更新 Vivado 項目中的 IP 庫。

poYBAGJ82RuAZ3jQAAGrIe9RY-8288.png

一旦 IP 升級為支持 Spartan 7,我們就可以完成設計。完整的方框圖應如下所示。

pYYBAGJ82ReAWKW_AAHelCBCR9g634.png

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

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

poYBAGJ82RSAIia9AADYv24IV20010.png

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

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

IP 塊的關鍵定制是:-

視頻輸入到 AXI 4 流

poYBAGJ82Q-ACWyzAAIkWveXlPI578.png

傳感器去馬賽克設置

poYBAGJ82QuAdWeZAAHUD7uJlbk314.png

AXI IIC 設置

poYBAGJ82QiAemyrAAGOPwnhJKc834.png

在設計中我還加入了幾個集成邏輯分析儀(ILA),以實現系統狀態的內部監控和調試。

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

poYBAGJ82QOALby9AAIba2WXf7A697.png

我們可以使用額外的資源來實現使用 HLS 的圖像處理算法是必要的。如果我們想節省資源,我們可以使用 MicroBlaze 的最小占用空間并移除 ILA。

SDK 中編寫軟件

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

因此,該軟件將執行以下操作

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

設置中斷控制器以生成 AXI 相關中斷 - 這包括三個中斷服務例程。IIC 發送、接收和狀態各一個。

為 10 英寸顯示器配置 VTC 上的計時

通過 I2C 重置相機并點亮 PMOD 上的 LED

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

通過 I2C 鏈接初始化相機 - 這將需要幾秒鐘來編寫所有命令

為了初始化成像器,我已將 TDM114 示例設計提供的基于 Zynq 的庫轉換為可用于 AXI IIC 的格式。

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

pYYBAGJ82KyANCgeAAG-Ro3cUI0884.png

監控TDNext Pmod 背面的I2C 通信顯示Arty S7 和TDNext 之間的通信。

檢測到攝像頭后,應用程序將下載多個 I2C 攝像頭配置設置。

將使用 AXI UART 報告進度

pYYBAGJ82PeAMHk_AACxNDkx_qc378.png

一旦相機被初始化,我們就可以使用 ILA 來驗證成像器正在生成視頻,并且它是我們配置的分辨率。

我們通過使用 ILA 并直接檢查在 FPGA 中接收到的視頻來做到這一點。

pYYBAGJ82KOAaStaAAEP3SuNPys158.png

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

接收到的像素從并行格式轉換為 AXI 流。

AXI Stream 是一種單向總線,用于將數據從主機傳輸到從機,作為數據流,它不包含地址通道。為了控制流和通過 AXI 流傳輸視頻時序信息,使用以下信號

TReady - 準備好接收數據時由下游外設置位

TValid - 當輸出數據有效時由發送外設斷言

TUser - 為幀開始發出

TLast - 為行尾發布

第二個 ILA 可用于確保正確生成 AXI 流。

由于我們沒有 VDMA,重要的是 AXIS 流上的視頻輸出是一個連續塊,并且 TValid 在活動像素期間不會斷言和取消斷言。

pYYBAGJ82KOAaStaAAEP3SuNPys158.png

我們可以通過將像素時鐘用于圖像處理鏈來確保 Tvalid 是連續的。

poYBAGJ82J-AWoFXAAFx8SggFec340.png

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

poYBAGJ82JuAbGLgAABUrwoj6aU436.png

設備地址和標識符

pYYBAGJ82JeAWVkKAABqQjtvqfI093.png

應用程序的主循環可以在下面看到

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;
}

運行整個軟件應用程序使我捕捉到了我的會議徽章收藏的下面的圖像。

poYBAGJ82I2AI9E8AALmE8DmcFE419.png

我需要調整一些設置以增加集成時間,但是,基本圖像處理管道正在按我們的預期工作。

結論

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1608

    文章

    21355

    瀏覽量

    594335
  • CMOS
    +關注

    關注

    58

    文章

    5211

    瀏覽量

    233576
  • 圖像傳感器
    +關注

    關注

    68

    文章

    1763

    瀏覽量

    128926
收藏 人收藏

    評論

    相關推薦

    美光200萬像素CMOS成像傳感器

    ,通過使用CMOS成像傳感器數字成像技術保持低成本優勢。美光公司圖像部市場總監Farhad Rostamian說,這種新型傳感器能夠提供與傳統DSC器件相媲美的圖像質量。   美光公司
    發表于 10-26 16:48

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

    領域競爭激烈,價格大幅下降,令成本問題變得愈加敏感。因此,市場需要能即時滿足用戶需求,并具有低成本高性能的靈活器件,正是看準這市場趨勢,Cyclone IV FPGA應運而生。那么大
    發表于 07-31 06:59

    怎么設計基于FPGA多波束成像的聲納系統?

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

    請問怎樣去設計低成本CMOS圖像采集系統?

    基于STM8單片機的低成本CMOS圖像采集系統該如何去設計?CMOS圖像采集系統與其他嵌入式圖像采集系統
    發表于 06-01 07:27

    如何去制作低成本、有保護圈的FPV

    前言:入FPV的坑,買的五寸太大,飛起來就是移動的血滴子,有點害怕,所以想做個低成本、有保護圈的FPV練手??招谋牧希?.4V 2S 8520空心杯電機
    發表于 09-13 07:56

    基于FPGA低成本低延時成像系統設計方案資料分享

    1、基于FPGA低成本低延時成像系統設計  目前商用領域的成像系統還是以嵌入式ASIC為主(成
    發表于 10-08 15:36

    基于CMOS圖像傳感器的成像系統設計

    以OV5116CMOS 圖像傳感器為例,討論了基于CMOS 圖像傳感器的成像系統的電路設計方法及系統設計中應注意的問題;并通過對
    發表于 06-25 11:08 ?99次下載

    低成本高保真倒相箱的設計與制作

    選擇適用的中低音揚聲器是低成本高保真音箱的核心問題,只有找到一款價格低廉但性能較好的單元才有可能制作出滿意的音箱。我們希望一對音箱的總成本控制在300元之
    發表于 10-09 16:09 ?180次下載

    基于DSP和FPGA的多通道CMOS圖像監控系統

    為了提高系統的監控能力降低成本,提出了一種基于CMOS的多通道 視頻監控 方案。首先基于同步信號控制各路視頻同步,保證圖像質量。在此基礎上由DSP和FPGA產生控制切換信號,控制多
    發表于 08-05 15:20 ?74次下載
    基于DSP和<b class='flag-5'>FPGA</b>的多通道<b class='flag-5'>CMOS</b>圖像監控<b class='flag-5'>系統</b>

    基于FPGA與USB的CMOS圖像獲取與采集系統設計

    實現了基于FPGA與USB的CMOS圖像獲取與采集系統的設計。介紹了成像系統的結構、CMOS圖像
    發表于 09-22 16:53 ?23次下載

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

    基于FPGA低成本MIPI接口,專門針對視頻顯示器和攝像頭的。設計嵌入式系統DSI和CSI-2視頻接口的用戶現在即可采用低成本MIPI接口
    發表于 02-10 16:54 ?1.7w次閱讀

    基于MLX90620的低成本紅外熱成像系統設計_楊風健

    基于MLX90620的低成本紅外熱成像系統設計_楊風健
    發表于 03-19 19:08 ?55次下載

    AD7533:CMOS低成本10位乘法DAC數據表

    AD7533:CMOS低成本10位乘法DAC數據表
    發表于 04-17 09:38 ?11次下載
    AD7533:<b class='flag-5'>CMOS</b><b class='flag-5'>低成本</b>10位乘法DAC數據表

    低成本、高精度結構光3D成像系統開源分享

    電子發燒友網站提供《低成本、高精度結構光3D成像系統開源分享.zip》資料免費下載
    發表于 10-26 11:09 ?2次下載
    <b class='flag-5'>低成本</b>、高精度結構光3D<b class='flag-5'>成像</b><b class='flag-5'>系統</b>開源分享

    AMD進軍低成本FPGA市場,滿足邊緣應用需求

    雖然賽靈思主攻高端FPGA市場,但其對低成本FPGA市場的投入也不容小覷。此次發布的Spartan UltraScale+正是AMD進軍低成本FPG
    的頭像 發表于 03-10 10:06 ?627次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>