在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

使用MATLAB Simulink和HDL編碼器創建自定義IP--AWB

OpenFPGA ? 來源:OpenFPGA ? 2023-11-13 09:27 ? 次閱讀

使用 MATLAB HDL Coder 和 FPGA 快速實現自動白平衡(AWB)

在此項目中,我們將使用 MATLAB Simulink 和 HDL 編碼器創建自定義 IP -- AWB。

MATLAB 設計

自動白平衡模塊的設計是使用 HDL Coder 在 MATLAB 和 Simulink 中創建的。HDL Coder能夠生成 HDL 文件,這些文件可以作為 IP 在我們的目標 FPGA 中運行。

AWB IP 設計旨在對每個時鐘 2 個像素求和,這些像素是從 Vivado 設計中的demosaic 輸出的 RGB 像素。

算法非常簡單,對每個幀的 RGB 通道進行求和并提供給微處理器。在微處理器中,像素的總和被劃分創建校正白平衡所需的校正因子。

除法是在 MicroBlaze 中完成的,雖然必須快速收集每幀的統計數據,但除法不必那么快,因此為了節省邏輯資源,利用 Microblaze即可完成。

整體設計如下

db127edc-81c2-11ee-939d-92fbcf53809c.png

像素求和旨在捕獲將傳入的 AXI 流像素數據分割為三個元素 R、G、B,然后在求和之前對這些像素中的每一個進行緩沖。求和塊的輸出也被記錄。

db2d799e-81c2-11ee-939d-92fbcf53809c.png

求和塊本身非常簡單。獲取輸入、有效和復位信號。復位信號連接到來自 AXI Stream 接口的 SOF 信號。而 AXI Valid 信號使能寄存器和累加。

db47e1a8-81c2-11ee-939d-92fbcf53809c.png

為了在每一幀結束時向微處理器生成 IRQ,我們使用了以下結構

db59c634-81c2-11ee-939d-92fbcf53809c.png

一旦 MicroBlaze 定義了系數數據,需要將其應用于后面幀像素。

db716aaa-81c2-11ee-939d-92fbcf53809c.png

然后將它們連接起來,為 AXI-stream提供最終的像素數據。

當然,也需要針對 AWB 算法中插入延遲進行平衡

db8eb434-81c2-11ee-939d-92fbcf53809c.png

完整的模塊設計如下:

dbaa8e34-81c2-11ee-939d-92fbcf53809c.png

MATLAB 測試

為了測試這個設計,我們將在 MATLAB 中創建了一個測試平臺,它提取圖像文件來提供算法

dbc9e82e-81c2-11ee-939d-92fbcf53809c.png

自定義 MATLAB 模塊用于輸入和接收圖像,設置的 M 代碼如下所示:

closeall
[im,im_map]=imread("awb_test_img.jpg");
im_rgb=ind2rgb(im,im_map);
im_rgb=uint8(im_rgb*2^8);
imshow(im_rgb);
vsize=size(im_rgb,1);
hsize=size(im_rgb,2);
div_val=16;
fori=13
means(i)=mean(mean(im_rgb(:,:,i)/div_val));
end
max_mean=max(means);
im_corr=im_rgb;
fori=13
corr(i)=max_mean/means(i);
im_corr(:,:,i)=im_rgb(:,:,i)*corr(i);
end
figure()
imshow(im_corr)

要運行模擬,我們首先需要做一些事情

dbe1d948-81c2-11ee-939d-92fbcf53809c.png

模擬輸入

dc06baba-81c2-11ee-939d-92fbcf53809c.png

浮點結果

dc33ad22-81c2-11ee-939d-92fbcf53809c.png

定點結果

dc577fe0-81c2-11ee-939d-92fbcf53809c.png

為了生成定點 HDL 解決方案,我們需要設置 HDL Coder生成器

dc8229de-81c2-11ee-939d-92fbcf53809c.pngdca5c650-81c2-11ee-939d-92fbcf53809c.png

Vivado 驗證

導出IP核后,我們可以將其導入Vivado IP庫并將其添加到演示項目中。

dcd012d4-81c2-11ee-939d-92fbcf53809c.png

為了簡化寄存器接口,我們使用 AXI GPIO 提供所需的系數。

dcefdef2-81c2-11ee-939d-92fbcf53809c.png

可以看到 AWB 提供 AXI Stream 輸入和輸出。

插入 AWB 后,接下來將在 Vitis 中的設計。

Vitis設計

算法非常簡單

Status=XGpio_Initialize(&Gpio5,XPAR_AWB_AXI_GPIO_5_DEVICE_ID);
Status=XGpio_Initialize(&Gpio6,XPAR_AWB_AXI_GPIO_6_DEVICE_ID);
Status=XGpio_Initialize(&Gpio7,XPAR_AWB_AXI_GPIO_7_DEVICE_ID);

exp_scale=0.8;

while(1){

r=XGpio_DiscreteRead(&Gpio5,1);
g=XGpio_DiscreteRead(&Gpio5,2);
b=XGpio_DiscreteRead(&Gpio6,1);

if(r>=g&&r>=b){
r_corr=1.0*32768*exp_scale;
g_corr=((float)r/(float)g)*32768*exp_scale;
b_corr=((float)r/(float)b)*32768*exp_scale;
}
elseif(g>=r&&g>=b){
r_corr=((float)g/(float)r)*32768*exp_scale;
g_corr=1.0*32768*exp_scale;
b_corr=((float)g/(float)b)*32768*exp_scale;
}
elseif(b>=r&&b>=g){
r_corr=((float)b/(float)r)*32768*exp_scale;
g_corr=((float)b/(float)g)*32768*exp_scale;
b_corr=1.0*32768*exp_scale;
}


XGpio_DiscreteWrite(&Gpio6,2,(int)r_corr);
XGpio_DiscreteWrite(&Gpio7,1,(int)g_corr);
XGpio_DiscreteWrite(&Gpio7,2,(int)b_corr);

總結

MATLAB HDL Coder 和 FPGA聯合開發,可以快速進行算法設計。

審核編輯:湯梓紅

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

    關注

    1629

    文章

    21736

    瀏覽量

    603387
  • matlab
    +關注

    關注

    185

    文章

    2976

    瀏覽量

    230475
  • 編碼器
    +關注

    關注

    45

    文章

    3643

    瀏覽量

    134519
  • Simulink
    +關注

    關注

    22

    文章

    535

    瀏覽量

    62400

原文標題:使用 MATLAB HDL Coder 和 FPGA 快速實現自動白平衡(AWB)

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PYNQ設計案例:基于HDL語言+Vivado的自定義IP創建

    作者:Mculover666 1.實驗目的 用HDL語言+Vivado創建一個掛載在AXI總線上的自定義IP核 2.實驗步驟 2.1.創建
    的頭像 發表于 12-21 16:34 ?3453次閱讀
    PYNQ設計案例:基于<b class='flag-5'>HDL</b>語言+Vivado的<b class='flag-5'>自定義</b><b class='flag-5'>IP</b>核<b class='flag-5'>創建</b>

    講解MATLAB/Simulink HDL使用入門

    我們將使用實例講解MATLAB / Simulink HDL 使用入門。
    的頭像 發表于 11-06 09:12 ?1369次閱讀
    講解<b class='flag-5'>MATLAB</b>/<b class='flag-5'>Simulink</b> <b class='flag-5'>HDL</b>使用入門

    使用USRP E310和MATLABSimulink進行原型設計和測試軟件定義的無線電

    原型,驗證和測試實際的無線系統。使用這種支持包用USRP?E310 SDR,您可以使用雙(2×2)發送實時的RF信號的工作,并接收流。您也可以實現自定義硬件設計,使用HDL編碼器?或嵌入式編碼
    發表于 12-21 07:56

    matlab自定義函數調用的方法

    matlab自定義函數調用的方法 命令文件/函數文件+ 函數文件 - 多
    發表于 11-29 13:14 ?88次下載

    SIMULINK線的處理/SIMULINK自定義功能模塊

    SIMULINK線的處理/SIMULINK自定義功能模塊     SIMULINK模型的構建是通過用線將各種功能模塊進行連接而構成的。用鼠標可以
    發表于 06-19 12:51 ?5329次閱讀

    EDK中PS2自定義IP

    Xilinx FPGA工程例子源碼:EDK中PS2自定義IP
    發表于 06-07 11:44 ?4次下載

    在NI Multisim中創建自定義元器件

    在NI Multisim中創建自定義元器件,NI Multisim雖然強大但芯片太少所以總結這方法
    發表于 07-20 17:21 ?0次下載

    利用SDSoC創建自定義硬件

    SDSoC是開發Zynq-7000 SoC應用程序的理想工具,當您可以在自己的定制板平臺上實現設計時,SDSoC變得更加強大。 有了這個視頻,看看創建自己的自定義硬件是多么容易..
    的頭像 發表于 11-26 06:25 ?2562次閱讀

    自定義sobel濾波IP核,IP接口遵守AXI Stream協議

    自定義sobel濾波IPIP接口遵守AXI Stream協議
    的頭像 發表于 08-06 06:04 ?3921次閱讀

    教程 2:添加特征-自定義配置文件創建

    教程 2:添加特征 - 自定義配置文件創建
    發表于 03-15 19:39 ?0次下載
    教程 2:添加特征-<b class='flag-5'>自定義</b>配置文件<b class='flag-5'>創建</b>

    教程 2:添加特征-自定義配置文件創建

    教程 2:添加特征 - 自定義配置文件創建
    發表于 07-06 18:50 ?0次下載
    教程 2:添加特征-<b class='flag-5'>自定義</b>配置文件<b class='flag-5'>創建</b>

    Vivado設計套件用戶指南:創建和打包自定義IP

    電子發燒友網站提供《Vivado設計套件用戶指南:創建和打包自定義IP.pdf》資料免費下載
    發表于 09-13 14:54 ?0次下載
    Vivado設計套件用戶指南:<b class='flag-5'>創建</b>和打包<b class='flag-5'>自定義</b><b class='flag-5'>IP</b>

    Vivado Design Suite用戶指南:創建和打包自定義IP

    電子發燒友網站提供《Vivado Design Suite用戶指南:創建和打包自定義IP.pdf》資料免費下載
    發表于 09-13 11:34 ?0次下載
    Vivado Design Suite用戶指南:<b class='flag-5'>創建</b>和打包<b class='flag-5'>自定義</b><b class='flag-5'>IP</b>

    如何在Matlab自定義Message

    自定義Message 當我們的 message 消息比較復雜時,通常要用到自定義的 message 消息,MATLAB 2020b以上的版本自帶了ROS Toolbox Interface
    的頭像 發表于 11-15 18:12 ?1297次閱讀
    如何在<b class='flag-5'>Matlab</b>中<b class='flag-5'>自定義</b>Message

    創建自定義的基于閃存的引導加載程序(BSL)

    電子發燒友網站提供《創建自定義的基于閃存的引導加載程序(BSL).pdf》資料免費下載
    發表于 09-19 10:50 ?0次下載
    <b class='flag-5'>創建</b><b class='flag-5'>自定義</b>的基于閃存的引導加載程序(BSL)
    主站蜘蛛池模板: 3344a毛片在线看| 午夜欧美精品久久久久久久久| 黄色美女网站在线观看| 好男人社区www在线资源视频| 手机看片中文字幕| 操视频网站| 深夜动态福利gif进出粗暴| 三级在线观看国产| 毛片三级在线观看| αv天堂| 天天天天天天操| 在线观看免费av网站| 日韩一级欧美一级在线观看| 久久99精品久久久久久久不卡 | 天天躁天天狠天天透| 91天天操| 亚洲国产精品婷婷久久| 韩国三级理论在线观看视频| 五月天婷婷色综合| 欧美极品第1页专区| 在线三级网址| 国产手机在线| 奇米色婷婷| 一级a毛片免费| 操美女视频网站| free性欧美video69| 欧美大全| 亚洲综合五月天欧美| 亚洲一区二区精品视频| 免费国产一区二区三区| 天天摸天天看| 狠狠gao| 欧美第一网站| 久久久夜| 成人中文字幕一区二区三区| 青草99| 久久亚洲精选| 涩涩高清无乱码在线观看| 国产精品嫩草影院午夜| 黄色网址中文字幕| 在线97|