博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FPGA设计——CMOS摄像与HDMI显示(DVP版)
阅读量:7209 次
发布时间:2019-06-29

本文共 4118 字,大约阅读时间需要 13 分钟。

1. 概述

本设计采用FPGA技术,将CMOS摄像头(DVP接口)的视频数据经过采集、存储、处理、帧率转换,最终通过HDMI接口显示在电视屏幕上。

2. 硬件系统框图

CMOS采用分辨率为1080p的摄像头芯片,FPGA采用ALTERA公司的CYCLONE IV,FLASH采用EPCS64,DDR2采用Hynix公司的1Gb内存条,HDMI采用Silicon Image公司的SiI9134。

3. FPGA逻辑框图

FPGA各部分逻辑模块如下图所示:

wKiom1frqhDzaH8lAACdIr4usXg507.jpg

CMOS Capture,采集CMOS摄像头视频数据;

I2C Master,配置CMOS芯片;

DDR2 Control,配置与控制DDR2芯片组,实现读写仲裁;

FIFO Write,将采集到的视频数据跨时钟域地写进DDR2中;

FIFO Read,将DDR2中的数据跨时钟域地读出给后续图像处理模块;

Frame Buffer,负责FIFO Write和FIFO Read的调度,实现帧率转换;

RAW to RGB,将原始RAW8数据转换成RGB888数据;

RGB to YCbCr,将RGB888数据转换成YCbCr444数据;

YC444 to YC422,将YC444的数据转换成YC422的数据给HDMI TX模块;

HDMI TX,将处理好的视频数据发送给HDMI PHY芯片,同时通过I2C接口配置HDMI PHY芯片。

4. CMOS配置

摄像头芯片支持最高1080p30帧的输出,参考寄存器配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
module i2c_cfg_par(
    
input  clk,
    
input  [07:0] lut_index,
    
output reg [23:0] lut_data
);
 
always @(*)
begin
    
case
(lut_index)
    
//27M input 67.5M output
    
'd0 :   lut_data <=  '
h3105_02;
    
'd1 :   lut_data <=  '
h0103_01;
    
'd2 :   lut_data <=  '
h3105_02;
    
'd3 :   lut_data <=  '
h0100_00;  
    
'd4 :   lut_data <=  '
h301e_b0;
    
'd5 :   lut_data <=  '
h320c_03;
    
'd6 :   lut_data <=  '
h320d_e8;
    
'd7 :   lut_data <=  '
h3231_24;  
    
'd8 :   lut_data <=  '
h320E_04;
    
'd9 :   lut_data <=  '
h320F_65;
    
'd10    :   lut_data <=  '
h3211_08;       
//x start
    
'd11    :   lut_data <=  '
h3213_10;       
//y start
    
'd12    :   lut_data <=  '
h3e03_01;          
    
'd13    :   lut_data <=  '
h3e01_46;
    
'd14    :   lut_data <=  '
h3e08_00;
    
'd15    :   lut_data <=  '
h3e09_10;  
    
'd16    :   lut_data <=  '
h3518_03;
    
'd17    :   lut_data <=  '
h3518_03;
    
'd18    :   lut_data <=  '
h5025_09;
    
'd19    :   lut_data <=  '
h3908_c0;  
    
'd20    :   lut_data <=  '
h3416_10;
    
'd21    :   lut_data <=  '
h3e0f_90;
    
'd22    :   lut_data <=  '
h3638_85;
    
'd23    :   lut_data <=  '
h3637_bf;
    
'd24    :   lut_data <=  '
h3639_98;
    
'd25    :   lut_data <=  '
h3035_01;
    
'd26    :   lut_data <=  '
h3034_ba;
    
'd27    :   lut_data <=  '
h3300_10;  
    
'd28    :   lut_data <=  '
h3301_18;
    
'd29    :   lut_data <=  '
h3308_38;
    
'd30    :   lut_data <=  '
h3306_34;
    
'd31    :   lut_data <=  '
h330a_00;  
    
'd32    :   lut_data <=  '
h330b_90;
    
'd33    :   lut_data <=  '
h3303_18;
    
'd34    :   lut_data <=  '
h3309_18;
    
'd35    :   lut_data <=  '
h331e_0e;
    
'd36    :   lut_data <=  '
h331f_0e;
    
'd37    :   lut_data <=  '
h3320_14;
    
'd38    :   lut_data <=  '
h3321_14;
    
'd39    :   lut_data <=  '
h3322_14;  
    
'd40    :   lut_data <=  '
h3323_14;
    
'd41    :   lut_data <=  '
h3626_03;
    
'd42    :   lut_data <=  '
h3621_28;
    
'd43    :   lut_data <=  '
h3f08_04;  
    
'd44    :   lut_data <=  '
h3f09_44;
    
'd45    :   lut_data <=  '
h4500_25;
    
'd46    :   lut_data <=  '
h3c09_08;  
    
'd47    :   lut_data <=  '
h335d_20;
    
'd48    :   lut_data <=  '
h3368_02;
    
'd49    :   lut_data <=  '
h3369_00;
    
'd50    :   lut_data <=  '
h336a_04;
    
'd51    :   lut_data <=  '
h336b_65;  
    
'd52    :   lut_data <=  '
h330e_50;
    
'd53    :   lut_data <=  '
h3367_08;
    
'd54    :   lut_data <=  '
h3f00_06;
    
'd55    :   lut_data <=  '
h3f04_01;
    
'd56    :   lut_data <=  '
h3f05_c8;
    
'd57    :   lut_data <=  '
h3905_1c;
    
'd58    :   lut_data <=  '
h5780_7f;
    
'd59    :   lut_data <=  '
h5782_0a;
    
'd60    :   lut_data <=  '
h5783_08;
    
'd61    :   lut_data <=  '
h5786_20;
    
'd62    :   lut_data <=  '
h5787_0c;  
    
'd63    :   lut_data <=  '
h5789_01;  
    
'd64    :   lut_data <=  '
h578a_0f;
    
'd65    :   lut_data <=  '
h5000_06;
    
'd66    :   lut_data <=  '
h3632_48;
    
'd67    :   lut_data <=  '
h3622_0e;  
    
'd68    :   lut_data <=  '
h3627_02;
    
'd69    :   lut_data <=  '
h3630_b4;
    
'd70    :   lut_data <=  '
h3633_94;
    
'd71    :   lut_data <=  '
h3620_42;
    
'd72    :   lut_data <=  '
h363a_0c;
    
'd73    :   lut_data <=  '
h3334_60;
    
'd74    :   lut_data <=  '
h303f_81;
    
'd75    :   lut_data <=  '
h501f_00;  
    
'd76    :   lut_data <=  '
h3b00_f8;
    
'd77    :   lut_data <=  '
h3b01_40;
    
'd78    :   lut_data <=  '
h3c01_14;
    
'd79    :   lut_data <=  '
h4000_00;
    
'd80    :   lut_data <=  '
h3d08_00;
//'h3d08_01;
    
'd81    :   lut_data <=  '
h3640_00;
    
'd82    :   lut_data <=  '
h0100_01;
    
'd83    :   lut_data <=  '
h303a_09;  
    
'd84    :   lut_data <=  '
h3039_66;
    
'd85    :   lut_data <=  '
h303f_82;
    
'd86    :   lut_data <=  '
h3636_88;
    
'd87    :   lut_data <=  '
h3631_90;
    
'd88    :   lut_data <=  '
h3635_08;
    
'd89    :   lut_data <=  '
h3105_04;
    
'd90    :   lut_data <=  '
h3105_04;
    
`endif
    
default 
:   lut_data <= 'h0000;
    
endcase
end
 
endmodule

5. 显示结果

电视显示1080p30的视频信号,图像中的色卡表明颜色显示正常。

本文转自 shugenyin 51CTO博客,原文链接:http://blog.51cto.com/shugenyin/1857492

转载地址:http://tpgum.baihongyu.com/

你可能感兴趣的文章
Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能
查看>>
Python数据可视化的10种技能
查看>>
一地鸡毛 OR 绝地反击,2019年区块链发展指南
查看>>
Kafka团队修改KSQL开源许可,怒怼云厂商
查看>>
今夏发布的Terraform 0.12将提供for循环和第一类表达式
查看>>
GitHub使用Electron重写桌面客户端
查看>>
Microsoft发布Azure Data Factory v2可视化工具的公开预览版
查看>>
周下载量过200万的npm包被注入恶意代码,Vue、Node项目恐受影响
查看>>
九大最热门的IT岗位,机器学习竟然不是第一
查看>>
Stack Overflow技术报告给开发者哪些启示
查看>>
Vue.js 由 1 到 2 的旅程 - (2)
查看>>
麻省理工学院研究人员设计出针对幽灵党和熔毁的DAWG方法
查看>>
Spark Summit EU重头戏:TensorFlow、结构化的流和GPU硬件加速
查看>>
Docker 上开发 nodejs
查看>>
ACM — Rightmost Digit
查看>>
更新:扫码即可实现丨用脚本快速查看自己被多少微信好友删除
查看>>
福利,一张图看懂IT售前工程师修炼之道
查看>>
CSS小技巧收藏
查看>>
SpringBoot应用之分布式会话
查看>>
[LeetCode/LintCode] Happy Number
查看>>