双目立体视觉摄像头模块开发搭建,含源代码、电路图
// 1-bit pixel value, come from BW image buffer
input [11:0] Hcnt, // 0-1599 来自VideoTimmingCtl的HCNT_O
input [10:0] Vcnt, // 0-899 来自VideoTimmingCtl的 VCNT_O
output reg[11:0] center_h, // 0-1599,中点横向坐标
output reg [10:0] center_v // 0-899,中点纵向坐标
);
reg [20:0] num; //亮点区像素总数
wire [19:0] h_num; //亮点区像素总数的一半
reg [20:0] num_cnt; //亮点区像素总数计数
reg [11:0] h_cnt; //中点横向坐标计数
reg [10:0] v_cnt; //中点纵向坐标计数
reg [20:0] center_line_sum; //中间一行的有效像素横坐标和
reg [20:0] center_line_sum_cnt; //中间一行的有效像素横坐标和计数
reg [10:0] center_line_num; //中间一行的有效像素总数
reg [10:0] center_line_num_cnt; //中间一行的有效像素总数计数
assign h_num= num[20:1];
//有效区间
reg en;
always@(*) begin
if(Hcnt>0 && Hcnt<1599 && Vcnt>0 && Vcnt<899)
en<= 1;
else
en<= 0;
end
//亮点区像素总数计数
always@(posedge pclk) begin
if(Hcnt==1 && Vcnt==0) //扫描到像素点(1,0)处时
begin
num_cnt<= 0;
end
else
if(din==1 && en==1) num_cnt<= num_cnt+1;
else num_cnt<= num_cnt;
end
//中点纵坐标计数
always@(posedge pclk) begin
if(num_cnt<h_num) v_cnt<= Vcnt;
else v_cnt<= v_cnt;
end
//中间一行有效像素横坐标和
always@(posedge pclk) begin
if(Hcnt==1 && Vcnt==0) //扫描到像素点(1,0)处时
begin
center_line_sum_cnt<= 0;
end
else
if(Vcnt==center_v && en==1 &&din==1)
center_line_sum_cnt<= center_line_sum_cnt + Hcnt;
else
center_line_sum_cnt<= center_line_sum_cnt;
end
//中间一行的有效像素总数
always@(posedge pclk) begin
if(Hcnt==1 && Vcnt==0) //扫描到像素点(1,0)处时
begin
center_line_num_cnt<= 0;
end
else
if(Vcnt==center_v && en==1 &&din==1)
center_line_num_cnt<= center_line_num_cnt + 1;
else
center_line_num_cnt<= center_line_num_cnt;
end
//除法器
wire rfd;
wire [10:0] fractional;
wire [20:0] quotient;
div Divider (
.rfd(rfd),
.clk(pclk),
.dividend(center_line_sum),
.quotient(quotient),
.divisor(center_line_num),
.fractional(fractional)
);
//一帧结尾赋值
always@(posedge pclk) begin
if(Hcnt==1598 && Vcnt==899)//扫描到像素点(1598,899)处时
begin
num<= num_cnt;
center_v<= v_cnt;
center_h<= quotient[11:0];
center_line_sum<= center_line_sum_cnt;
center_line_num<= center_line_num_cnt;
end
end
endmodule
软件部分:PC上在Processing环境中开发了一个3D动画界面,通过立方体模拟红外光点的三维位置。该程序接收从开发板经由UART协议发来的光点坐标,并将结果显示在窗口中。
FPGA 双目摄像头 立体视觉 UART数据传输 相关文章:
- 利用FPGA和新技术,使LCD进入HDTV市场(08-27)
- 基于DSP和FPGA的电视观瞄系统设计(09-02)
- FPGA与SRAM相结合完成大容量数据存储(09-03)
- HDTV接收机中Viterbi译码器的FPGA实现(09-09)
- 基于FPGA的液晶显示接口设计 (09-26)
- 解决硬盘驱动器能耗难题(10-13)