一、軟件介紹
本系統(tǒng)采用了LATTICE的XP系列芯片,所用軟件為splever7.0,應(yīng)用本軟件有一個(gè)新加功能,可以用FPGA的底層資源生成一個(gè)簡(jiǎn)單CPU的框架,并且在軟件的庫(kù)里邊,有很多的模塊可以調(diào)用,例如GPIO接口,I2C接口等。本系統(tǒng)的設(shè)計(jì)使用的是I2C接口。
二、系統(tǒng)構(gòu)成
圖1 系統(tǒng)框圖
本系統(tǒng)(系統(tǒng)框圖如圖1)是采用FPGA進(jìn)行實(shí)時(shí)運(yùn)算。從cmos傳感器出來(lái)的數(shù)字信號(hào)首先經(jīng)過(guò)白平衡處理模塊,在這個(gè)模塊中,需要對(duì)圖象中的R、G、B的分量分別進(jìn)行計(jì)算,求出他們各自的均值。一般情況下,只有當(dāng)他們各自的均值為128或者129的時(shí)候,我們可以認(rèn)為圖象達(dá)到了白平衡的狀態(tài),當(dāng)然有一個(gè)前提就是要對(duì)一個(gè)白色的背景取圖。如果他們的均值不相等,或者沒(méi)有達(dá)到128或者129的值時(shí),給I2C模塊一個(gè)信號(hào),使之對(duì)傳感器的顏色分量寄存器進(jìn)行設(shè)置,直到完全為我們所期待的數(shù)值為止。
三、部分程序和接口
module send( reset_n,
clk,
vsync,
href,
data_in,
data_out);
input reset_n;
//系統(tǒng)復(fù)位信號(hào)
input clk;
//系統(tǒng)時(shí)鐘
input vsync;
//廠信號(hào)
input href;
//行信號(hào)
input [9:0]data_in;
//圖象數(shù)據(jù)
output [29:0]data_out;//色彩分量均值
reg [25:0]count_r;
always@(negedge clk or posedge posevsync)begin
if(posevsync)
count_r 《= 26‘h00000000;
else begin
if(hs_count》=10’d129&&hs_count《=10‘d640)
begin
if((pixcount》=11’d384&&pixcount《=11‘d895)&&row_odd_href)
begin
if(!row_odd_pix)
count_r 《= count_r + data_in;
else
count_r 《= count_r;
end
else
count_r 《= count_r;
end
else
count_r 《= count_r;
end
end
reg [26:0]count_g;
always@(negedge clk or posedge posevsync)begin
if(posevsync)
count_g 《= 27’h00000000;
else begin
if(hs_count》=10‘d129&&hs_count《=10’d640)
begin
if(pixcount》=11‘d384&&pixcount《=11’d895)
begin
if(row_odd_href)
begin
if(row_odd_pix)
count_g 《= count_g + data_in;
else
count_g 《= count_g;
end
else begin
if(!row_odd_pix)
count_g 《= count_g + data_in;
else
count_g 《= count_g;
end
end
else
count_g 《= count_g;
end
else
count_g 《= count_g;
end
end
reg [25:0]count_b;
always@(negedge clk or posedge posevsync)begin
if(posevsync)
count_b 《= 26‘h00000000;
else begin
if(hs_count》=10’d129&&hs_count《=10‘d640)
begin
if((pixcount》=11’d384&&pixcount《=11‘d895)&&(!row_odd_href))
begin
if(row_odd_pix)
count_b 《= count_b + data_in;
else
count_b 《= count_b;
end
else
count_b 《= count_b;
end
else
count_b 《= count_b;
end
end
reg [29:0]data_out;
always@(negedge vsync or negedge reset_n)begin
if(!reset_n)
data_out 《= 30’h0000000000;
else
data_out
《= {count_r[25:16], count_g[26:17], count_b[25:16]};
end
四、仿真圖形
系統(tǒng)的總體仿真圖如圖2
圖2 系統(tǒng)仿真圖
五、結(jié)論
采用FPGA對(duì)自動(dòng)白平衡進(jìn)行運(yùn)算的一個(gè)最大的優(yōu)點(diǎn)就是所有的操作都是實(shí)時(shí)進(jìn)行,不需要先緩存一整張圖象,所以中間沒(méi)有延時(shí),不僅運(yùn)算速度快,而且圖像的相質(zhì)還可以得到很好的改良。
-
傳感器
+關(guān)注
關(guān)注
2546文章
50508瀏覽量
751240 -
FPGA
+關(guān)注
關(guān)注
1625文章
21639瀏覽量
601359 -
芯片
+關(guān)注
關(guān)注
453文章
50267瀏覽量
421179
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論