历史上的今天
返回首页

历史上的今天

今天是:2025年01月31日(星期五)

2021年01月31日 | ARM嵌入式平台的VGA接口设计(ADV7120)

2021-01-31 来源:eefocus

大多数嵌入式产品的显示终端都选择LCD,但在某些需要大屏幕显示的应用中,工业级LCD的价格比较昂贵,且现有的大屏幕显示器(包括CRT显示器和LCD显示器)一般都采用统一的15针VGA显示接口.三星公司ARM9芯片S3C2410以其强大的功能和高性价比在目前嵌入式产品中得到广泛的应用.笔者在开发基于ARM嵌入式平台的血液流变测试仪的过程中,成功地利用高性能视频D/A转换芯片ADV7120,将S3C2410自带的LCD扫描式接口转换为VGA接口,使之能够驱动VGA接口的显示器.


1 VGA接口介绍


近年来,业界制定出了众多数字化的显示接口协议,较为典型的是DVI(Digital Visual Interface).由于数字接口的标准还未统一,厂商支持各自的标准,导致数字接口的标准迟迟未定.VGA接口是一个模拟信号接口.作为在显示领域多年的接口标准,直到今天它仍是所有显示终端最为成熟的标准接口,现在某些高端的电视也支持VGA接口.


15针VGA接口信号定义如表1所列.除了2个NC信号、3根显示数据总线和5个GND信号,比较重要的信号是3个RGB彩色分量信号和2个扫描同步信号HSYNC和VSYNC.VGA接口中彩色分量采用RS343电平标准.RS343电平标准的峰峰值电压为1 V.该标准定义的4个电平范围是:


白电平--+0.714 V;

黑电平--+0.054 V;

消隐电平--0 V;

同步电平---0.286 V.


2 S3C2410 LCD控制器简介


三星公司的ARM9芯片S3C2410功能强大,性价比高,在目前的嵌入式产品中得到了广泛的应用.S3C2410带有LCD控制器,可以很方便地控制驱动扫描式接口的LCD显示.


2.1 引脚功能信息


LCD控制器提供了扫描式数据传输引脚和时序控制引脚,具体描述如下:


VFRAME/VSYNC--LCD控制器和LCD驱动器之间的帧同步信号.该信号告诉LCD屏新一帧开始了.LCD控制器在一帧显示完成后立即插入一个VFRAME信号,开始新一帧的显示.


VLINE/HSYNC--LCD控制器和LCD驱动器之间的行同步脉冲信号.该信号用于LCD驱动器将水平线(行)移位寄存器的内容传送给LCD屏显示.LCD控制器在整行数据移人LCD驱动器后,插入一个VLINE信号.


VCLK--LCD控制器和LCD驱动器之间的像素时钟信号.LCD控制在VCLK的上升沿处送出数据,LCD驱动器在VCLK的下降沿处采样.


VM/VDEN--LCD驱动器的AC信号.VM信号被LCD驱动器用于改变行和列的电压极性,从而控制像素点的显示.VM信号可以与每帧同步,也可以与可变数据的VLINE信号同步.


VD[23:0]--LCD像素数据输出端口.


2.2 寄存器


S3C2410的LCD控制寄存器主要有




CDCON1寄存器、LCDCON2寄存器、LCDCON3寄存器、LCDCON4寄存器、LCDCON5寄存器.这些寄存器的设置与显示屏信息、控制时序和数据传输格式等密切相关,在设计中需要根据显示设备的具体信息正确设置这些寄存器才能使S3C2410正常控制驱动不同的显示屏.


2.3 内部结构


S3C2410的LCD控制器用来传输图像数据并产生相应的控制信号,由REGBANK(控制寄存器组)、LCDCD-MA(专用DMA)、VIDPCS(视频信号处理单元)、LPC3600和TIMEGEN(时序信号产生单元)组成,如图1所示.其中REGBANK包含17个可编程寄存器和几个256×16的调色板存储器,用来配置LCD控制器并设置相应的参数;而LCDCDMA提供了视频信号的快速传输通道,自动通过系统总线从系统帧缓存中取出视频数据并传输到视频信号处理单元;VIDPCS将专用DMA中取出的信号整形并提高驱动能力等处理后,输出到外部数据端口VD[23:0];TIMEGEN和LPC3600负责产生LCD所需要的控制时序.




3 VGA接口设计


利用高性能视频D/A转换芯片ADV7120将S3C24l0自带的LCD扫描式接口转换为VGA接口,然后用带有VGA接口的显示器显示.


3.1 ADV7120简介


ADV7120是美国ADI公司生产的高速视频数模转换芯片,其像素扫描时钟频率有30 MHz、50 MHz、80 MHz三个等级.ADV7120在单芯片上集成了3个独立的8位高速D/A转换器,可以分别处理红、绿、蓝视频数据,特别适用于高分辨率模拟接口的显示终端和要求高速D/A转换的应用系统.


ADV7120的输入及控制信号非常简单:3组8位的数字视频数据输入端,分别对应RGB视频数据,数据输入端采用标准TTL电平接口;4条视频控制信号线包括复合同步信号SYNC、消隐信号BLANK、白电平参考信号REF WHITE和像素时钟信号CLOCK;外接一个1.23 V数模转换参考电压源和1个输出满度调节.只有4条输出信号线:模拟RGB信号采用高阻电流源输出方式,可以直接驱动75Ω同轴传输线;同步参考电流输出信号Isync用来在绿视频模拟信号中编码视频同步信息.


3.2 原理图设计


VGA接口的同步信号和LCD扫描式接口的同步信号是一致的.利用ADV7120可以方便地将S3C24l0的LCD扫描式接口转换成VGA接口,电路原理如图2所示.


S3C2410处理器接口中的同步扫描信号HSYNC和VSYNC直接接到VGA接口,VDEN信号(显示数据有效信号)则被用于控制ADV7120芯片.由于ADV7120对参考电平的要求精度很高,不能以电阻分压电路代替.在此采用了1.2 V电压基准芯片AD589来产生参考电压.该电路设计中需要注意的是,在PCB布板时要将模拟地和数字地分开.


4 S3C2410相关寄存器设置


以分辨率为640×480、刷新频率为60 Hz、16位彩色显示模式为例,根据图3所示VGA接口同步信号时序,介绍S3C2410中LCDCON1~LCDCON5寄存器的设置.


4.1 LCDCONl寄存器


LINECNT:行计数器的状态位.只读,不用设置.


CLKVAL:确定VCLK频率的参数.公式为VCLK=HCLK/[(CLKVAL+1)×2],单位为Hz.笔者所用的硬件系统HCLK=100 MHz,640×480的显示屏需要VCLK=20 MHz,故需设置CLKVAL=1.


MMODE:确定VM的改变速度.在此选择MMODE=O,为每帧变化模式.


PNRMODE:确定扫描方式.选择PNRMODE=0x3,为TFT LCD面板扫描模式.


BPPMODE:确定BPP(每像素位数)模式.在此选择BPPMODE=0xC,为TFT 16位模式.


ENVID:数据输出和逻辑信号使能控制位.选择ENVID=1,为允许数据输出和逻辑控制.


4.2 LCDCON2寄存器


VBPD:确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值,如图3,VBPD=t3/t6=1.02 mS/31.77μs=32.


LIN:确定显示的垂直方向尺寸.公式




IN=YSIZE-1=479.


VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,是帧数据传输后延迟时间和行同步时钟间隔宽度的比值,如图3,VFPD=t5/t6=0.35 ms/31.77μs=11.


VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值.如图3,VSPW=t2/t6=0.06 ms/31.77μs=2.


4.3 LCDCON3寄存器


HBPD:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内VCLK脉冲个数,如图3,VBPD=t7×VCLK=1.89 μs×25MHz=47.


HOZAL:确定显示的水平方向尺寸.公式HOZAL=XSIZE-1=639.


HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数,如图3,HFPD=t9×VCLK=0.94 μs×25 MHz=24.



4.4 LCDCON4寄存器

HSPW:确定行同步时钟脉冲宽度.描述行同步脉冲宽度时间内VCLK脉冲个数,如图3,HSPW=3.77μs×25 MHz=94.


4.5 LCDCON5寄存器


VSTATUS:垂直方向状态.只读,不用设置.


HSTATUS:水平方向状态.只读,不用设置.


BPP24BL:确定显示数据存储格式.此处设置BPP24BL=0x0,为小端模式存放.


FRM565:确定16位数据输出格式.此处设置FRM565=0x1,为5:6:5格式输出.


INVVCLK:确定VCLK脉冲有效边沿极性.根据屏幕信息确定,此处选择INVVCLK=0xl,VCLK上升沿到来时数据传输开始.


INVVLlNE:确定HSYNC脉冲的极性.由图3可知,为负极性,设置INVVLINE=0x1选择负极性脉冲.


INVVFRAME:确定VSYNC脉冲的极性.由图3可以看出,为负极性,故设置INVVFRAME=0x1选择负极性脉冲.


INVVD:确定数据输出的脉冲极性.根据屏幕信息确定,此处设置INVVD=0x0选择正极性脉冲.


INVVDEN:确定VDEN信号极性.根据屏幕信息确定,此处设置INVVDEN=0x0为正极性脉冲.


INVPWREN:确定PWREN信号极性.根据屏幕信息确定,此处设置NVPWREN=0x0为正极性脉冲.


INVLEND:确定LEND信号极性.根据屏幕信息确定,此处设置INVLEND=0x0为正极性脉冲.


PWREN




WREN信号输出允许.设置PWREN=0xl,允许PWREN输出.


ENLEND




END输出信号允许.设置ENLEND=0x1,允许LEND输出.


BSWP:字节交换控制位.根据各自需要设置,此处设置BSWP=0x0,禁止字节交换.


HWSWP:半字交换控制位.根据各自需要设置,此处设置HWSWP=0xl,使能半字节交换.


5 讨论与总结


S3C2410处理器能够驱动24位颜色模式的VGA接口,但当处理器数据总线负载过大时,显示效果就不太理想.具体分析所需数据带宽如下:


S3C2410处理器工作在640×480×60 Hz×24位(分辨率为640×480、刷新频率为60 Hz、24位色彩)模式下的数据带宽为:640×480×60×4/(1 024×1 024)=70.3MB/s(24位颜色实际占用32位数据量),这些数据都需要利用DMA方式通过系统的数据总线从SDRAM中获得.而S3C2410处理器在100 MHz的总线频率下,32位内存的峰值带宽是100×32/8=400MB/s,实际带宽也就100~200 MB/s.那么70.3 MB/s的显示数据对于S3C2410处理器过于沉重了,显示器的屏幕经常会出现短暂的黑屏.这是因为系统总线太忙,LCD扫描式接口的数据跟不上,扫描时钟的频率暂时变慢导致CRT显示器的同步信号不符合规范所致.若用16位颜色模式,则数据带宽减为640×480×60×2/(1 024×1 024)=35.2MB/s.实际测试中,工作在16位颜色模式下,可以正常显示60 Hz下的640×480的VGA图形.


综上分析,如果要支持高分辨率和高刷新率的显示,需要比较大的数据带宽,对处理器的频率和总线频率要求较高.目前的嵌入式处理器在这些方面有很大的限制,不过本设计可以完全支持16位色彩下640×480×60 Hz显示模式的CRT显示,并且如果采用LCD作为显示界面,LCD对刷新率的要求和CRT显示器不同,LCD可以在刷新率为30 Hz的情况下正常显示.本设计对解决基于ARM的嵌入式系统中大屏幕显示方面的问题有很大的实用价值和借鉴意义.


推荐阅读

史海拾趣

佰宏(BHFUSE)公司的发展小趣事

随着电子产品的不断升级和电路防护需求的提高,佰宏团队不断进行技术研发和产品创新。他们成功开发出了多种严苛环境下的客制化PPTC自恢复保险丝,满足了高精密高标准的电路防护需求。这一技术突破不仅提升了产品的竞争力,也为公司赢得了更多的市场份额。

First Switchtech公司的发展小趣事

随着物联网、智能家居等新兴技术的兴起,First Switchtech公司(或类似公司)看到了跨界合作的新机遇。公司积极与智能家居厂商、物联网平台等合作伙伴开展深度合作,共同研发具有创新性的智能开关产品。这些产品不仅实现了开关的远程控制、智能联动等功能,还为用户提供了更加便捷、舒适的智能生活体验。通过跨界合作,First Switchtech公司成功拓展了业务领域,并在智能家居市场中占据了重要位置。

捷嘉电子(Chequers Electronic)公司的发展小趣事

在追求经济效益的同时,捷嘉电子始终不忘履行社会责任。公司积极参与各种公益活动,支持教育事业和环保项目。此外,捷嘉电子还致力于推动行业的可持续发展,通过研发节能环保产品和技术创新来减少对环境的影响。这些举措不仅提升了公司的社会形象,也为电子行业的可持续发展做出了积极贡献。

请注意,以上故事是基于目前所了解的信息进行的虚构创作,并非真实事件。如有雷同,纯属巧合。同时,“Chequers Electronic”并非一个已知的公司名称,因此假设其指的是名为捷嘉的某电子行业相关企业。如需更多信息或详细故事,请提供更多背景资料或具体要求。

Elpress AB公司的发展小趣事

Elpress AB公司成立于1959年,由一群具有前瞻性和创新精神的工程师在瑞典的克拉姆福什市创立。公司从成立之初就专注于电气连接系统的研发和生产,致力于为电力行业提供高效、可靠的解决方案。在初期,Elpress AB凭借其专业的技术能力和对质量的严格把控,逐渐在市场上赢得了客户的信赖。

Hei Inc Optoelectronic Division公司的发展小趣事
通过电子元件实现精确控制,可以更加灵活地调整加热时间、温度等参数,以适应不同材料和工艺的需求。
Cooper Tools(Eaton)公司的发展小趣事
无触点控制电路减少了机械触点的使用,避免了因触点磨损、氧化或接触不良导致的故障,从而提高了设备的整体可靠性和稳定性。

问答坊 | AI 解惑

到底如何上手学ARM

老手讲心得,新手讲迷惑 每个人都经历过初学阶段,有些很顺利,有些则很曲折,有些甚至还在徘徊!更有一些感叹!那就都在这说出来吧,说说自己的经历,自己难忘的经历!当作是一种回味,也给后来人一些经验和教训!   新手也要抓紧时间,有 ...…

查看全部问答>

51单片机实例35个-电路和软件

51单片机实例35个-电路和软件.rar …

查看全部问答>

阻抗匹配

文章对输入阻抗、输出阻抗和阻抗匹配做了介绍…

查看全部问答>

程控滤波器

本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 基于单片机控制的程控滤波器  …

查看全部问答>

说说你初学单片机的花费?

网上经常流传着十天学会单片机的教程,也广泛散布着各种各样的开发板。 请各位列举下你们初学单片机时的花费和经历吧,相信通过这种比较, 一方面,会议下自己当初学基础时候的艰难,另一方面,也能感受到电子类产品突飞猛进的速度, [ 本帖 ...…

查看全部问答>

{全}电子技术常用公式及应用

{全}电子技术常用公式及应用…

查看全部问答>

【Quartus】告警信息之PIN没有约束信息

Found pins functioning as undefined clocks and/or memory enables原因:是你作为时钟的PIN没有约束信息。可以对相应的PIN做一下设定就行了。主要是指你的某些管脚在电路当中起到了时钟管脚的作用,比如flip-flop的clk管脚,而此管脚没有时钟约束 ...…

查看全部问答>

串口乱码问题

我的单片机程序和上位机程序在开发板上都运行正常, 上位机用VB,单片机用51,波特率9600,开发板晶振11.0592M, 数据传输都正常, 但是在我自己手工做的板子上收不到信号, 后面发现我自己板子上的晶振为12M, 于是将12M晶振取下,换上11.0592M晶振 能 ...…

查看全部问答>

关于时钟DS1302的问题

            if(k3==0)   {  while(!k3);       timedata[0]--; if(timedata[0]<0)  {timedata[0]=59;} 请问这句代码有问题吗?为什么我timedata[0]小于0时,得不到5 ...…

查看全部问答>