一种基于FPGA的实时图像转换控制器设计

来源:本站
导读:目前正在解读《一种基于FPGA的实时图像转换控制器设计》的相关信息,《一种基于FPGA的实时图像转换控制器设计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《一种基于FPGA的实时图像转换控制器设计》的详细说明。
简介:介绍了XGA标准,设计了一种基于FPGA的XGA标准图像实时控制器,它将PAL制式的电视信号转换成XGA格式的信号。重点讨论了图像数据的结构转换过程及控制器的内部结构。

可编程逻辑器件FPGA由于具有开发简单、静态可重复编程和动态在系统编程的特点,已经成为当今应用最广泛的可编程专用集成电路(ASIC)。而XGA(eXtended Grophics Adapter)显示器因其输出信息量大、输出形式多样等特点已经成为目前大多数设计的常用输出设备,在FPGA的设计中可以使用很少的资源,就能产生XGA各种控制信号。

1 VGA原理和XGA标准

计算机显示器的显示有许多标准,常见的有VGA、SVGA、XGA等。常见的彩色显示器一般由阴极射线管(CRT)构成,彩色是由R、G、B三基色组成,用逐行扫描的方式进行图像显示。阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生R、G、B三基色,合成一个彩色像素。扫描时从屏幕的左上方开始,从左到右、从上到下进行扫描。每扫完一行,电子束回到屏幕的左边第一行的起始位置。在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使行扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。对于普通的VGA(Video Graphics Adapter(Array))显示器,其引出线共有五种信号:三基色信号(R、G、B);行同步信号(HS);场同步信号(VS)。

对于VGA显示器的这五种信号的时序驱动要严格遵循“VGA工业标准”,本设计中采用1024×768@60Hz的XGA标准。图1是XGA行扫描、场扫描的时序图,表1、表2分别为行扫描、场扫描的时序要求。

设计XGA显示控制主要注意两个问题:一个是时序驱动,这是完成设计的关键,时序稍有偏差,显示必然不正常,甚至会损坏彩色显示器;另一个是XGA信号的电平驱动(XGA信号的驱动电平是模拟信号)。

2 控制器的设计

2.1 控制器原理

本设计的数据源是PAL制式的电视信号,数据格式为YUV(4:2:2)格式。本设计以FPGA为平台,将原始的电视信号数据转换为RGB格式的视频信号,并使图像的分辨率由720×576提高到1024×768,达到XGA标准。设计可分为FIFO模块、双端口RAM控制模块、图像结构转换模块和色空间转换模块。设计选取的双端口RAM必须能存储两帧以上图像,以保证完成缓冲。当双端口RAM从一端写满一帧图像数据后,在写满下一帧数据前,开始从另一端读取第一帧数据;第二帧写满后再读取第二帧,直到第一帧的数据被第三帧数据完全覆盖,不断重复此过程。图像结构转换模块和色空间转换模块将PAL制式(分辨率720×576,场频50Hz,隔行扫描)的电视信号转换为XGA(分辨率1024×768,帧频60Hz,逐行扫描)标准的视频信号。

2.2 硬件实现

本设计中FPGA采用了Actel公司的APA150芯片。该FPGA芯片具有150 000个系统门,逻辑单元为6144个,内嵌36KB的双端口SRAM的2个锁相环PPL内核,最大支持242个用户I/O(I/O电压有3.3V和2.5V两种可供选择),支持3.3V、32bit、50MHz的PCI总线,系统时钟最高为32MHz。双端口RAM采用赛普拉斯半导体公司(Cypress Semiconductor Corp.)的CYD18S72V双端口RAM,该芯片容量为256K×72bit,其硬件框图如图2所示。

一种基于FPGA的实时图像转换控制器设计

一种基于FPGA的实时图像转换控制器设计

2.3 双端口RAM控制模块

2.3.1 双端口RAM简介

双端口RAM作为一种特殊类型的RAM,在一些高速数据采集与处理系统中得到了广泛应用。它具有两个独立的端口,各自均有一套相应的数据总线、地址总线和控制总线,允许两个端口独立、异步地对存储器中的任何存储单元进行存取操作。当两个端口同时对存储器中的同一单元进行存取操作时,可以由其内部仲裁逻辑决定优先权。

2.3.2 双端口RAM的控制

当两个端口对双端口RAM存取时,一般存在四种情况:(1)两个端口同时对不同地址单元读写数据;(2)两个端口同时对同一地址单元读出数据;(3)两个端口同时对同一地址单元写入数据;(4)两个端口同时读写同一地址单元,一个写入数据,另一个读出数据。

在(1)、(2)两种情况下,两个端口的存取不会出现错误,(3)、(4)种情况时会出现竞争现象。为避免因竞争而导致的通信错误,可采取“BUSY”功能输出或通过特殊的软件处理方法来解决。在本设计中,双端口RAM仅用来作为数据缓冲,一个端口输入,另一个端口输出,只要避免出现第四种情况即可。在实现时,将双端口RAM分成两个工作区,每个工作区可以存储一帧的图像数据。当输入端口输入的数据写满工作区1后,在写满工作区2前,通过程序控制输出端口反复从工作区1中读取数据;当工作区2写满后,在输入端口的数据重新写入工作区1、工作区1写满前,通过程序控制输出端口反复从工作区2中读取数据。多次重复上述过程,可以实现对图像数据的无差错存取。

在存储时,要将电视信号的一个奇场和一个偶场的行像素数据交错存储,这样就实现了由隔行到逐行扫描的结构转换。本设计中采用的双端口RAM为256K×72bit的存储器,而YUV数据格式为每个像素16bit数据,每行720个有效像素,每行像素占用160个地址,因此每帧图像占92 160个地址。

2.4 时序产生器模块

视频定时产生器产生正确显示图像所必需的同步信号——行同步信号、场同步信号。利用FPGA内部时钟锁相环倍频后的65MHz的主时钟,来产生符合XGA标准的视频信号,其分辨率为1024×768、帧频为60Hz。

行同步过程的时间以像素节拍为单位进行测量,用一个计数器控制。计数器对输出的像素进行计数,复位后从0开始,此时图像显示处于有效状态;计到1024时,开始进入行消隐前肩状态;计数到1048时,进入行同步状态;计数到1148时,进入行消隐后肩状态;计数到1343后,在下个像素节拍到来时计时器清零,重新进入图像显示有效状态。

场同步过程的时间以行节拍为单位进行测量,也用一个计数器控制。计数器对输出的行进行计数,复位后从0开始,此时图像显示处于有效状态;计数到768时,开始进入场消隐前肩状态;计数到771时,进入场同步状态;计数到777时,进入场消隐后肩状态;计数到805后,在下个像素节拍到来时计时器清零,重新进入图像显示有效状态。

2.5 FIFO模块

FIFO1(先入先出)是深度为1024、宽度为16位的异步FIFO,写时钟为YUV信号的输入时钟PCLK,读时钟为时钟发生器产生的主时钟MCLK。当输入的原始数据的行、场同步信号都有效时,该FIFO的写使能有效;当写地址计数器数到一半或计满时,触发读使能信号,使读使能信号在后面的360个读时钟周期内一直有效。由于读时钟频率大于写时钟频率,所以不会产生数据写满溢出的现象。

FIFO2、FIFO的设计与FIFO1类似,为深度为1024宽度为16位的异步FIFO,写时钟为主时钟。FIFO2、FIFO3在主时钟的同步下交替按行接收从双端口RAM中读出的数据,当快写满时停止从双端口RAM中读数据,同时FIFO的写使能信号无效,读使能信号有效。当快读空时,触发写使能信号,继续读取数据。

2.6 图像结构转换模块

该模块要完成分辨率的转换,以及帧频的转换。

2.6.1 分辨率的转换

原始信号的分辨率为720×576,目标分辨率为1024×768。转换的方案是:首先将原始信号做3:4的放大,使像素点数变为960×768,再将每行的两侧各补充32个0,这样既达到了1024×768的分辨率要求,算法也比较简单。考虑到一般只注意图像中间部分,对四周不是很关心,因此,在放大图像四周补0的做法不会影响图像的效果。

水平方向插值采用三次样条插值,垂直方向插值采用相邻两行内插算法,内插函数采用bisigmoidal[5]函数:

一种基于FPGA的实时图像转换控制器设计

式中,a是调节曲线特性的常数,?驻y是函数输入变量。采用临近两点y(n+1)和y(n)进行插值的公式如下:

一种基于FPGA的实时图像转换控制器设计

式中,K=h(Δy)。

为了避免非线性插值系数给电路设计带来的复杂性,将内插系数存储于查找表中,根据内插点与临近点的相对位置找到对应系数。

分辨率转换部分的框图如图3所示。

一种基于FPGA的实时图像转换控制器设计

在插值时,首先将第一行数据输入FIFO2,第二行输入FIFO3,两个FIFO交替将数据输入垂直插值器,垂直插值器按行输出垂直插值后形成的行数据,输入到水平插值器。FIFO共输入3行后,FIFO停止向垂直插值器一个节拍,垂直插值器将输出4行像素数据;水平插值器每读取3个像素数据时停止一个节拍,从而根据不同插值系数和临近点数据插出4个值,从而完成3:4的放大。在输出放大后的行数据时,在行的左端和右端各添加32个零点,这样就完成了分辨率的转换。

2.6.2 帧频的转换

PAL制式每秒奇偶共50场,经过双端口RAM的存储后整理为每秒25帧,要转换为能够满足每秒60帧要求的视频信号,最简单的办法就是复制帧。在本设计中,上一小节中转换分辨率后的数据传递给色空间转换模块的同时,存入一个存储器中,在下一帧数据处理完成前,将存储器中的数据再次传输指定的次数,从而完成帧频的转换。帧频比为5:12,所以每5帧做一次频率放大,第一帧、第三帧传输3次,其余各帧传输2次。

2.7 色空间转换模块

该模块接收到的信号是YUV(4:2:2)格式的信号,是16位数据线,而要将它转换成的RGB信号是24根数据线,就需要先将每个像素点上丢失的色差信号补回来,即16根数据线加宽到24根。格式转换过程如图4所示。

一种基于FPGA的实时图像转换控制器设计

接下来要完成的是由YUV到RGB的色空间转换,转换公式如下[6]:

一种基于FPGA的实时图像转换控制器设计

由此可得式(4):

一种基于FPGA的实时图像转换控制器设计

在计算时必须把它们都转换成整数,所以在程序中利用位移寄存器,让它们左移11位,计算后即可得到RGB数据。

采用FPGA技术设计的VGA图像控制器,大大减少了电路板的尺寸,充分应用了FPGA快速并行处理数据的特性(这是其他控制器所不可比拟的),在产生同步信号的同时送出像素数据,同时增加了系统的可靠性和设计灵活性。解决了嵌入式系统实时图像显示的问题,节约了成本,扩展了应用范围。

提醒:《一种基于FPGA的实时图像转换控制器设计》最后刷新时间 2024-03-14 00:55:52,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《一种基于FPGA的实时图像转换控制器设计》该内容的真实性请自行鉴别。