色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

基于直方圖算法進(jìn)行FPGA架構(gòu)設(shè)計(jì)

454398 ? 來(lái)源:AI加速微信公眾號(hào) ? 作者:AI加速微信公眾號(hào) ? 2020-12-10 16:37 ? 次閱讀

引言

直方圖統(tǒng)計(jì)在圖像增強(qiáng)和目標(biāo)檢測(cè)領(lǐng)域有重要應(yīng)用,比如直方圖均衡,梯度直方圖。直方圖的不同種類和統(tǒng)計(jì)方法請(qǐng)見之前的文章。本章就是用FPGA來(lái)進(jìn)行直方圖的計(jì)算,并且利用FPGA的特性對(duì)計(jì)算過(guò)程進(jìn)行加速。安排如下:

首先基于直方圖算法進(jìn)行FPGA架構(gòu)設(shè)計(jì),這里主要考慮了如何加速以及FPGA資源的利用兩個(gè)因素;最后基于system Verilog搭建一個(gè)驗(yàn)證系統(tǒng)。

FPGA設(shè)計(jì)架構(gòu)

不論是圖像灰度直方圖還是梯度直方圖,本質(zhì)上是對(duì)數(shù)據(jù)的分布進(jìn)行計(jì)數(shù)。從FPGA角度來(lái)看,只關(guān)心以下幾點(diǎn):

1) 根據(jù)數(shù)據(jù)大小確定其分布區(qū)間,統(tǒng)計(jì)分布在不同區(qū)間的數(shù)據(jù)個(gè)數(shù),區(qū)間的大小可以調(diào)節(jié),比如灰度直方圖區(qū)間為1,梯度直方圖通常大于1;

2) 如何利用FPGA對(duì)直方圖統(tǒng)計(jì)進(jìn)行加速,以及如何考慮到芯片有限資源;

首先來(lái)考慮加速方式,直方圖統(tǒng)計(jì)過(guò)程用偽代碼表示為:

For(int i=0;i Index = get_index(data[i]);
Hist[index]++;
}

Get_index函數(shù)是為了確定數(shù)據(jù)屬于哪個(gè)區(qū)間,如果區(qū)間大小為1,那么index就是數(shù)據(jù)自身。如果區(qū)間是平均分布,那么就需要進(jìn)行數(shù)據(jù)的大小比較。如果區(qū)間大小是2的冪次,那么index只需要數(shù)據(jù)進(jìn)行移位得到。

FPGA在加速計(jì)算中最主要就是利用并行化和流水線,并行化就是將一個(gè)任務(wù)拆解成多個(gè)子任務(wù),多個(gè)子任務(wù)并行完成。而流水線是在處理一個(gè)子任務(wù)的時(shí)候,下一個(gè)來(lái)的子任務(wù)也可以進(jìn)行處理,處理模塊不會(huì)等待。流水線本質(zhì)上是對(duì)子任務(wù)也進(jìn)行“分割”,分割的每一塊可以在處理模塊中同時(shí)進(jìn)行。

統(tǒng)計(jì)N個(gè)數(shù)據(jù),可以將N分成M份,在FPGA上同時(shí)進(jìn)行M個(gè)統(tǒng)計(jì),用偽代碼表示為:

For(int k=0;k //并行化
For(int i=0;i Index = get_index(data[k][i]);
Hist[k][index]++;
}
}

如果區(qū)間不是2的冪次,就需要比較器,這樣并行M次,就需要M個(gè)同等比較器,這對(duì)資源消耗很大。因此目前設(shè)計(jì)僅僅支持2的冪次的區(qū)間。整個(gè)設(shè)計(jì)架構(gòu)如圖1.2。

圖2.1 流水線處理

圖2.2 直方圖統(tǒng)計(jì)架構(gòu)

主要分為以下幾個(gè)模塊:

1)statis:這個(gè)是核心計(jì)算模塊,統(tǒng)計(jì)數(shù)據(jù)分布。ram中存放直方圖統(tǒng)計(jì)數(shù)據(jù),地址對(duì)應(yīng)著數(shù)據(jù)分布區(qū)間。這里有一個(gè)問(wèn)題需要考慮,在對(duì)ram中直方圖統(tǒng)計(jì)數(shù)據(jù)計(jì)數(shù)時(shí),需要讀出然后計(jì)數(shù)。如果ram讀端口沒(méi)有寄存器,那么讀出來(lái)直接加1,再寫入。但是這樣并不好,因?yàn)閞am不經(jīng)過(guò)寄存器時(shí)序不好。所以增加了一級(jí)寄存器,這樣就造成了寫入的延時(shí),那么有可能下一次數(shù)據(jù)來(lái)臨也會(huì)讀取同樣地址的數(shù)據(jù),此時(shí)讀取到的直方圖數(shù)據(jù)就是還沒(méi)有寫入的。為了解決這個(gè)問(wèn)題,判斷進(jìn)入的前后兩個(gè)數(shù)據(jù)是否相同,如果相同就不寫入而繼續(xù)計(jì)數(shù),如果不同就寫入。并行多個(gè)statis模塊的代碼為:

genvar i;
generate
for(i=0;i

statis #(
.PIX_BW(PIX_BW),
.HIST_BW(HIST_BW),
.ADDR_BW(HIST_LEN_BW),
.BIN_W(BIN_W)

)u_statis(
.clk(clk),
.rst(rst),
.clr(clr),

.enable(1'b1),
.pix_valid(pix_valid),
.pix(img_i[i*PIX_BW +: PIX_BW]),

.hist_rd(branch_hist_rd),
.hist_raddr(branch_hist_raddr),
.hist(branch_hist[i*HIST_BW +: HIST_BW])
);

end
endgenerate

2)serders:這個(gè)是并轉(zhuǎn)串。M個(gè)statis模塊會(huì)產(chǎn)生M組hist結(jié)果,這些結(jié)果還要進(jìn)行求和,那么就要用到加法樹,如果M較大,會(huì)造成加法樹很大,多以這里加了serders可以調(diào)節(jié)加法樹資源。

3) addTree:加法樹。
module addTree #(
parameter DATA_BW = 32,//bit width of data
parameter TREE_DEPTH = 3,//depth of the add tree
parameter ADD_N = 4//add number
)
(
input clk,
input rst,
input [ADD_N*DATA_BW-1:0] adnd_x,
input [ADD_N*DATA_BW-1:0] adnd_y,
input adnd_valid,
output reg[DATA_BW-1:0] finl_sum,
output reg finl_sum_valid

);

reg [TREE_DEPTH-1:0]midl_valid;

genvar dept_i, leaf_i;
generate
for(dept_i=TREE_DEPTH-1;dept_i>=0;dept_i=dept_i-1)begin: ADD_DPET
localparam LEAF_N = 2**dept_i;

wire[DATA_BW-1:0] midl_sum[LEAF_N-1:0];

for(leaf_i=0;leaf_i

reg [DATA_BW-1:0] midl_add_x;
reg [DATA_BW-1:0] midl_add_y;

if(dept_i==TREE_DEPTH-1)begin
always @(posedge clk)begin
midl_add_x midl_add_y end
end
else begin
always @(posedge clk)begin
midl_add_x midl_add_y end
end

adder #(
.DATA_BW(DATA_BW)
)
u_adder(
.adnd_x(midl_add_x),
.adnd_y(midl_add_y),
.sum(midl_sum[leaf_i])

);

end

if(dept_i==TREE_DEPTH-1)
always @(posedge clk)begin
midl_valid[dept_i] end
else
always @(posedge clk)begin
midl_valid[dept_i] end

end

endgenerate

always @(posedge clk)begin
finl_sum end

always @(posedge clk)begin
if(rst)
finl_sum_valid else
finl_sum_valid end

endmodule

4) accum:累加器。如果加法樹沒(méi)有完成M個(gè)hist數(shù)據(jù)的求和,那么就需要通過(guò)累加器來(lái)完成。

o4YBAF9uDqWAayv7AAByjAeQGbU256.png

圖2.3 對(duì)ram的處理

驗(yàn)證結(jié)構(gòu)

1) img_trans:這個(gè)是隨機(jī)化圖像數(shù)據(jù)定義,主要通過(guò)SV中constraint來(lái)對(duì)圖像大小做一些約束;

class img_trans;

rand int img_w;
rand int img_h;
rand int img_blank;
rand logic[`PIX_BW-1:0] img[`MAX_IMG_W*`MAX_IMG_H];

constraint img_cfg_cnst{
img_w img_w > 0;
img_w % `PARALL == 0;
img_h img_h > 0;
img_blank img_blank >= 0;

}

extern function void write(input string f_name);

endclass

2) driver:產(chǎn)生image并且發(fā)送給DUT,同時(shí)通過(guò)mailbox發(fā)送給ref_model用于對(duì)比;
class img_obj;
logic [`PIX_BW-1:0] img_que[$];
endclass

class driver;

int img_w;
int img_h;
int img_blank;
logic [`PARALL*`PIX_BW-1:0] img;
logic [`PIX_BW-1:0] img_ele;
img_obj imgObj;
img_trans imgTrans;

extern task drive(mailbox img_mbx, virtual img_inf.test imgInf);

endclass

3) ref_model:自己統(tǒng)計(jì)直方圖和DUT的結(jié)果進(jìn)行比對(duì);

class ref_modl;

logic [`PIX_BW-1:0] img;
int addr;
img_obj imgObj;
int hist[`HIST_LEN];

extern task calc(input logic clk, mailbox img_mbx);
extern task comp(virtual img_inf.test imgInf);
extern task run(input logic clk, mailbox img_mbx, virtual img_inf.test imgInf);
extern function void clear();

endclass

o4YBAF9uDqeAUrozAAEPRvgT6Rs060.png

圖3.1 驗(yàn)證架構(gòu)圖

最后添加一下modelsim仿真波形文件和結(jié)果,純粹為了增加篇幅。

圖3.2 modelsim仿真波形和結(jié)果

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    1629

    文章

    21754

    瀏覽量

    604234
  • 直方圖
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    7904
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于FPGA實(shí)現(xiàn)圖像直方圖設(shè)計(jì)

    簡(jiǎn)單,單采用FPGA來(lái)實(shí)現(xiàn)直方圖的統(tǒng)計(jì)就稍顯麻煩。若使用Xilinx和Altera的FPGA芯片,可以使用HLS來(lái)進(jìn)行圖像的加速處理。但這暫時(shí)不是我的重點(diǎn)。 用C語(yǔ)言實(shí)現(xiàn)
    的頭像 發(fā)表于 12-24 10:24 ?138次閱讀
    基于<b class='flag-5'>FPGA</b>實(shí)現(xiàn)圖像<b class='flag-5'>直方圖</b>設(shè)計(jì)

    ?ISP算法架構(gòu)分析介紹

    ),從結(jié)果上看就是將RAW數(shù)據(jù)轉(zhuǎn)換成壓縮后的RGB(一般)數(shù)據(jù),供后續(xù)CPU使用(識(shí)別、壓縮等)。 市面上很少有直接介紹ISP的書籍或者資料,今天我們主要是聊一聊ISP算法架構(gòu),這樣大家就能明白為什么很少有專用的書籍對(duì)這方面進(jìn)行
    的頭像 發(fā)表于 11-26 10:05 ?498次閱讀
    ?ISP<b class='flag-5'>算法</b>及<b class='flag-5'>架構(gòu)</b>分析介紹

    深入理解 Llama 3 的架構(gòu)設(shè)計(jì)

    最新的自然語(yǔ)言處理(NLP)技術(shù)和深度學(xué)習(xí)算法,旨在提供更加自然、流暢和智能的對(duì)話體驗(yàn)。 1. 核心組件 Llama 3的架構(gòu)設(shè)計(jì)可以分為以下幾個(gè)核心組件: 1.1 預(yù)處理模塊 預(yù)處理模塊負(fù)責(zé)將原始文本數(shù)據(jù)轉(zhuǎn)換為模型可以理解的格式。這包括文本清洗
    的頭像 發(fā)表于 10-27 14:41 ?576次閱讀

    邊緣計(jì)算架構(gòu)設(shè)計(jì)最佳實(shí)踐

    邊緣計(jì)算架構(gòu)設(shè)計(jì)最佳實(shí)踐涉及多個(gè)方面,以下是一些關(guān)鍵要素和最佳實(shí)踐建議: 一、核心組件與架構(gòu)設(shè)計(jì) 邊緣設(shè)備與網(wǎng)關(guān) 邊緣設(shè)備 :包括各種嵌入式設(shè)備、傳感器、智能手機(jī)、智能攝像頭等,負(fù)責(zé)采集原始數(shù)據(jù)
    的頭像 發(fā)表于 10-24 14:17 ?468次閱讀

    FPGA芯片架構(gòu)和資源有深入的理解,精通Verilog HDL、VHDL

    崗位職責(zé) 1.負(fù)責(zé)FPGA架構(gòu)設(shè)計(jì)、代碼編寫、仿真等; 2.協(xié)同軟、硬件工程師完成系統(tǒng)聯(lián)調(diào)和測(cè)試; 3.負(fù)責(zé)項(xiàng)目中FPGA設(shè)計(jì)的相關(guān)文檔編寫及維護(hù); 任職要求 1.碩士及以上學(xué)歷,電子、通信
    發(fā)表于 09-15 15:23

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

    處理窗口 對(duì)資源影響成倍增加 基于FPGA設(shè)計(jì)框架舉例: 1、灰度直方圖統(tǒng)計(jì) 直方圖是圖像的灰度分布統(tǒng)計(jì)的一種表示方法,統(tǒng)計(jì)目標(biāo)圖像中各個(gè)灰度點(diǎn)的像素個(gè)數(shù),很多對(duì)于圖像的調(diào)整算法
    發(fā)表于 06-12 16:26

    FPGA設(shè)計(jì)中,對(duì)SPI進(jìn)行參數(shù)化結(jié)構(gòu)設(shè)計(jì)

    今天給大俠帶來(lái)FPGA設(shè)計(jì)中,對(duì)SPI進(jìn)行參數(shù)化結(jié)構(gòu)設(shè)計(jì),話不多說(shuō),上貨。 為了避免每次SPI驅(qū)動(dòng)重寫,直接參數(shù)化,盡量一勞永逸。SPI master有啥用呢,你發(fā)現(xiàn)各種外圍芯片的配置一般
    發(fā)表于 05-07 16:09

    FPGA設(shè)計(jì)中,對(duì)SPI進(jìn)行參數(shù)化結(jié)構(gòu)設(shè)計(jì)

    今天給大俠帶來(lái)FPGA設(shè)計(jì)中,對(duì)SPI進(jìn)行參數(shù)化結(jié)構(gòu)設(shè)計(jì),話不多說(shuō),上貨。 為了避免每次SPI驅(qū)動(dòng)重寫,直接參數(shù)化,盡量一勞永逸。SPI master有啥用呢,你發(fā)現(xiàn)各種外圍芯片的配置一般
    發(fā)表于 04-11 18:29

    交換芯片架構(gòu)設(shè)計(jì)

    交換芯片的架構(gòu)設(shè)計(jì)是網(wǎng)絡(luò)設(shè)備性能和功能的關(guān)鍵。一個(gè)高效的交換芯片架構(gòu)能夠處理大量的數(shù)據(jù)流量,支持高速數(shù)據(jù)傳輸,并提供先進(jìn)的網(wǎng)絡(luò)功能。
    的頭像 發(fā)表于 03-21 16:28 ?563次閱讀

    交換芯片架構(gòu)設(shè)計(jì)

    交換芯片架構(gòu)設(shè)計(jì)是網(wǎng)絡(luò)通信中的關(guān)鍵環(huán)節(jié),它決定了交換機(jī)的性能、功能和擴(kuò)展性。
    的頭像 發(fā)表于 03-18 14:12 ?742次閱讀

    fpga芯片架構(gòu)介紹

    FPGA(現(xiàn)場(chǎng)可編程門陣列)芯片架構(gòu)是一種高度靈活和可編程的集成電路架構(gòu),它以其獨(dú)特的結(jié)構(gòu)和功能,在現(xiàn)代電子系統(tǒng)中扮演著至關(guān)重要的角色。FPGA芯片
    的頭像 發(fā)表于 03-15 14:56 ?786次閱讀

    fpga是什么架構(gòu)

    FPGA(現(xiàn)場(chǎng)可編程門陣列)的架構(gòu)主要由可配置邏輯模塊(CLB)、輸入/輸出模塊(IOB)以及可編程互連資源組成。
    的頭像 發(fā)表于 03-14 17:05 ?944次閱讀

    華為企業(yè)架構(gòu)設(shè)計(jì)方法及實(shí)例

    企業(yè)架構(gòu)是一項(xiàng)非常復(fù)雜的系統(tǒng)性工程。公司在充分繼承原有架構(gòu)方法基礎(chǔ)上,博采眾家之長(zhǎng),融合基于職能的業(yè)務(wù)能力分析與基于價(jià)值的端到端流程分析,將”傳統(tǒng)架構(gòu)設(shè)計(jì)(TOGAF)”與“領(lǐng)域驅(qū)動(dòng)(DDD)”方法相結(jié)合。
    發(fā)表于 01-30 09:40 ?905次閱讀
    華為企業(yè)<b class='flag-5'>架構(gòu)設(shè)</b>計(jì)方法及實(shí)例

    怎么用FPGA算法 如何在FPGA上實(shí)現(xiàn)最大公約數(shù)算法

    FPGA算法的優(yōu)點(diǎn)在于它們可以提供高度的定制化和靈活性,使得算法可以根據(jù)實(shí)際需求進(jìn)行優(yōu)化和調(diào)整。此外,FPGA還可以實(shí)現(xiàn)硬件加速,提供比傳統(tǒng)
    的頭像 發(fā)表于 01-15 16:03 ?2421次閱讀

    一文帶你了解FPGA直方圖操作

    度較低 對(duì)比度很高的圖像## FPGA功能分析 對(duì)于FPGA進(jìn)行直方圖操作的時(shí)候有兩種方式,一種是真操作,一種是偽操作:真操作就是將圖像緩存后進(jìn)行
    發(fā)表于 01-10 15:07
    主站蜘蛛池模板: 久爱精品亚洲电影午夜| 女的把腿张开男的往里面插| 护士一级片| 啦啦啦 中文 中国 免费 高清在线| 女警被黑人20厘米强交| 我年轻漂亮的继坶2中字在线播放| 亚洲视频欧美在线专区| GAY2022空少被体育生暴菊| 国产毛A片啊久久久久久A| 久久综合狠狠综合狠狠| 日韩亚洲国产中文字幕欧美| 亚洲日本欧美产综合在线| jk白丝袜美女被男人桶| 果冻传媒9CM在线观看| 欧美人与动牲交A免费| 亚洲黄色在线观看| japansemature护士| 狠很橹快播| 日本高清免费一本在线观看 | 韩国无遮羞禁动漫在线观看96| 男男h啪肉np文总受| 亚洲大片免费| xx69美国| 久久久久久久网| 午夜理论电影在线观看亚洲| 99久久免费国内精品| 娇妻被朋友玩得呻吟在线电影| 日本一本在线播放| 2020国产欧洲精品视频| 好姑娘BD高清在线观看免费| 久9视频这里只有精品123| 日本理伦片午夜理伦片| 在教室伦流澡到高潮H女攻视频| 国产99RE在线观看69热| 麻豆一二三区果冻| 亚洲国产免费观看视频| 成人18视频在线观看| 美娇妻的性奴史1一4| 亚洲精品第一国产综合| 闺蜜撬开我的腿用黄瓜折磨我| 免费观看成人毛片|