找回密码
 注册
关于网站域名变更的通知
查看: 445|回复: 4
打印 上一主题 下一主题

FPGA图像处理入门知识点来了!!VGA显示数字时钟 相关工程代码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-4-7 09:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
近年来FPGA越来越多的应用于图像处理领域。我们先了解一下图像处理的基础课题,图像的显示。显示器在接收图像信号时有多种接口,例如DVI,HDMI,VGA等。在做图像显示之前,我们先了解一些基础知识。
6 p1 m$ j8 |$ D: Y9 g$ u$ V" M, i3 l6 q) s/ |4 [' _$ J! H# N$ y
VGA
; y4 s8 A0 r# y* n' _6 O
; o" O3 @+ ^( Z% l$ oVGA(Video Graphics Array 视频图形阵列)是IBM 于1987年提出的一个使用模拟信号的电脑显示标准。VGA是最多制造商所共同支持的一个标准。个人电脑在加载自己的驱动程序之前,一般都支持VGA的标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有3排共15针,其中需要FPGA编程控制的只有5个信号,即R(红)、G(绿)、B(蓝)、HS(水平同步信号)、VS(垂直同步信号)。. ^; N# k. b# x0 |

- E8 \) U- X; [$ ?& m/ ~RGB* z/ f  _' t( O0 v
, m. i3 \; M( a
RGB (red、green、blue)即三基色,是色彩系统的一种。色彩系统是一种常用的表示颜色的方式。应用于计算机屏幕,分别有:RGB色彩系统、CMYK色彩系统、YIQ色彩系统、YUV色彩系统、YCbCr色彩系统等。根据人眼的结构,所有颜色都可看成是三个基本颜色——红(R),绿(G),蓝(B)的不同组合。在实际中用的最多的是RGB系统。
# w+ g* G3 S( K7 J* p( q+ D. f9 ~4 d( |' [. J- z) _0 w5 H
计算机屏幕的显示通常用的是这种系统。使用画图软件或PS软件时,特别是在保持图片时,经常被要求选择图片保存的格式,例如24位色或256色的等,这是什么意思呢?RGB颜色系统使用红绿蓝的不同组合来表示千万种色彩,其中红绿蓝有不同的比例,例如将红色从最淡到最红分成256个等级,如果每一级用一个数字来表示,则256级就需要一个8位位宽的二进制数来表示。同样,绿色,蓝色也可以这么划分。$ m6 l7 `. W  ^* c
, ]' _% q2 @9 U
这样的话,就需要使用3个8位位宽的二进制数来表示,即RGB888,也就是24(8+8+8)位色。24位色,所能表示的颜色数量为2^24 = 1677,7216种,相近颜色的区别可以很小,已经超过了人眼睛的辨识能力,所以也叫真彩色(人眼大约能辨识100万种颜色)。256色指的是图片只使用256种颜色来表示。可以是rgb233或rgb332。9 y3 b7 g( T& e5 r4 r6 ~  T& p" k6 Q
5 |5 K$ r2 H- j6 f( m+ G/ p
显示分辨率
  I6 ~! M" l3 d" T; B8 G
; B: S# [0 Y' T& M/ R$ R8 j显示分辨率。显示分辨率也称为像素分辨率,简称为分辨率,它是指可以使显示器显示的像素个数,通常用每行像素数乘每列像素数,例如:1024×768,表示显示器可以显示768行,1024列,共可显示786432个像素;分辨率为640×480,表示显示器可以显示480行,640列,共可显示307200个像素。* o9 V* f# c; u$ W( s, Y& \0 w, q  e

0 f' ?! {8 [. Z4 i/ y; k显然,分辨率越高,显示屏可显示的像素就越多,图像就越清晰。每个显示器都有自己的最高分辨率,并且可以兼容其它较低的显示分辨率,所以一个显示器可以用多种不同的分辨率显示。
" \- z9 ]6 l5 |, F9 j3 M2 t+ P! }; H+ g: ?' j" T
PPI) S* J3 n1 \" \- c' a
, }6 l6 c7 h9 K6 ^; E
PPI。(Pixels Per Inch)即像素密度,所表示的是每英寸所拥有的像素数量。因此PPI数值越高,即代表显示屏能够以越高的密度显示图像。当然,显示的密度越高,拟真度就越高。% b! a# W+ U+ h7 ?
2 u, f1 u1 f$ E5 k
多年前买手机的时候能听到一个词,“视网膜屏”,即分辨率超过人眼识别极限的高分辨率屏幕。视网膜(Retina)屏幕是手机公司”发明”的一个营销术语。屏幕的像素密度达到326像素/英寸(ppi),称之为“视网膜屏幕”。
! q# J$ s- q7 a: K1 j8 V$ f3 v( c% J; w4 J7 [( u2 ~% R- \$ K
刷新原理7 B+ d7 I$ h. g' y% T

/ z, N0 r# M3 t9 _显示器刷新原理。我们看到的显示屏的区域在刷新操作里叫做“显示区域”,但刷新操作会刷新一个比这显示区域要大的区域,整个被刷新或者扫描的区域叫做“扫描区域”。
% o  {' @" g1 j9 T! {/ a
2 e4 H" |' {# W* X! b, S扫描操作将整个行分成多个段,分别为水平同步段、扫描后沿、左边框(多数已经没有)、显示区域、右边框(多数已经没有)、扫描前沿,(垂直方向划分为垂直同步、扫描后沿、顶边框(多数已经没有)、显示区域、底边框(多数已经没有)、扫描前沿),这些段的长度在不同显示格式下不等,具体数值可以通过VESA的标准来查询。
$ f, ~2 r! \# Y6 E0 a) `* n; o: X" W( A2 Y
扫描操作从扫描区域的最左上角开始,一直向右扫描,遇到HSYNC为高时(也就是一行扫描完毕),扫描点回到最左边,开始新一行的扫描。这样一行一行往下扫描,当遇到VSYNC为高时(也就是一场扫描完毕),扫描点回到最开始位置。显示频率为60Hz时,每秒刷新60场。
1 d. U8 H, [1 Q; g- h' z, Y, T$ W/ Z$ B$ g
文字显示原理6 H' r, j# K+ t* [3 J
" a5 I/ Y9 E, n& e8 |1 }
文字显示原理。文字的显示,其实也是把文字当做图片,一个像素点一个像素点的来输出。
8 e' c4 F+ n$ f5 X/ g' ^* l- q2 x4 h  r
如果对正方形内字符的每一个像素点进行标记,哪些点应该显示白色,哪些点应该显示黑色,那么就可以在vga输出的时候,输出对应像素点的颜色值,也就能输出这个文字。
7 d( m' K, \9 e$ a! P: V6 Z: b& ~9 N7 Z" F8 y
如何得到这个字的像素点颜色值呢?这儿我们可以使用一些工具,比如“PCtoLCD2002”这个软件。
4 L# z3 o& W/ `! v
1 Y/ g; K) c% h  q' c* N# T. p7 q9 h
VGA显示
* O. ^/ K% ?5 C5 {/ J
$ I4 Y* k& L% i9 E' Z3 w# D" RVGA显示部分主要要做的是:% F0 p- m; b7 @4 t+ E2 z2 I+ \
1、取得字模,包括0-9,和“:” 共10个字符# U5 V2 \9 |% b) H) u
2、将字模按一定格式存入ROM。我在工程里使用的是128X64(高X宽)的字模,ROM中每个地址存字符的一行,也即ROM的位宽是64bit。但为了查询方便,并没有直接将字模依次存放进去,而是采用了如下的存放方法:
& s0 t4 U- t* `3 J; M1 _+ D. y% L* m1 m$ g9 k5 q3 Q. a
工程中我们取字模的时候,首先判断需要取哪个字符的字模,然后先查询到字模的首地址,再根据首地址依次加1来取出其他行的字模。这是因为VGA输出的时候,是一行行扫描的,也就是说字模需要一行行给出。这部分是整个项目的重难点,大家可以参考 《lookup_rom》模块的内容。
  W! a/ E) N) r6 C0 f
, z: I1 W+ }& M" V, i$ d3、改动VGA模块,使得可以输出显示区域的坐标XY值。也就是,当VGA扫描到显示区域的时候,把显示区域,也就是显示屏,的当前坐标输出出来。' U2 e1 k2 i7 Y* a2 s8 n( C! N: {% p
9 @# ~! o4 F: m# ?
4、控制模块。控制模块要根据VGA输出的XY值,以及字符想要显示的初始位置,确定要从rom中取哪个字符哪一行的字模。代码中当扫描到需要显示字符的那一行时,依次取出8个字符的所有该行要显示的字模,(比如,要显示的时间是 23:59:59,vga显示某一行时只需取8个字模里的同一行,其他行在vga扫描其他行的时候再取)。取出的字模拼接在一起,当X坐标到达位置的时候给出颜色值。
8 T; G* ~1 K  p0 r0 G* M
& j- h: d- f& ?8 }: m! r' r% }3 V7 l, B" x0 q  T3 [* {- ~

该用户从未签到

2#
发表于 2021-4-7 11:25 | 只看该作者
近年来FPGA越来越多的应用于图像处理领域。7 |' r% p0 I8 ?) Y# m1 u+ T: l

该用户从未签到

3#
发表于 2021-4-7 14:21 | 只看该作者
FPGA图像处理入门知识点* g  R# J; Y5 E% `7 ]* i2 w# B/ `

该用户从未签到

4#
发表于 2021-4-7 14:43 | 只看该作者
谢谢分享,学习了!

该用户从未签到

5#
发表于 2021-4-8 00:59 | 只看该作者
fpga真是强大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-14 05:38 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表