用FPGA设计LCD 转 VGA

这个东西其实是在上一个冬天就做完了,而且似乎已经产业化了,当时是为一位朋友做的,这个朋友再卖给产业化的人,就像流于俗套的故事一样,这个朋友拿到了钱,不过不像项目开始时说的那样与我有关。想想多年前一起吃喝拉撒的场景,叹了一口气抹去那些记忆,也只能算了。现在把这个设计写在博文博文中,一方面可以回忆回忆当时的设计思路,也希望可以为其他设计FPGA的兄弟姐妹们提供一点参考。

当时的写的ppt文档可在下列地址下载:

http://blogimg.chinaunix.net/blog/upfile2/101222213657.pdf

这个板子其实就是在烂大街的S3C2410的板子上加一片FPGA EP2C5,SDRAM和ADV7123。由于2410有LCD控制器,在LCD接口的外面加一片Video DAC,这个板子上的ADV7123就可以输出VGA信号,就可以接显示器了。但是当输出的分辨率过高,比如1024x768甚至更高的时候,LCD接口要求的带宽过高,这样就会影响2410上面的应用的运行速度。

因此就产生了这个设计,这个设计的目的就是让2410输出高分辨率低帧率的信号,比如[email protected],通过FPGA把输出的图像保存在其控制的SDRAM中,然后FPGA中的图像产生部分再把这些数据读出来,按照[email protected]的速度输出到ADV7123上。

这个设计对于心电监护这样的设备已经够用了,因为心电信号的更新低于20HZ,其实它适用于所有刷新率要求不高但是要接VGA显示器的场合。

系统的框架大概就是上面这个样子的了,LCD Receiver是从2410LCD接口接收数据的了,其实就是检测到HSYNC,VSYNC,VDEN后通过CLK将数据采集进来,然后存储到FIFO中,这部分的逻辑需要根据2410的LCD时序进行设计。使用FIFO有两个用处,一方面是匹配读写的速度,一方面是转换数据宽度,因为只是用2410 LCD输出数据中的8bit数据,即RGB332, 而SDRAM和RW Control 模块都是按照16bit进行操作的,因此可以通过一个8bit输入16bit输出的FIFO进行转换。

RW Control模块顾名思义,主要是进行SDRAM读写控制了,当收到dcfifo2的Almost Full的时候读取dcfifo2将其写入SRAM,当收到dcfifo1的Almost Empty的时候,读取SDRAM中的数据将其写入dcfifo1供VGA模块转换。dcfifo1是一个16bit输入8bit输出的FIFO,其功能和dcfifo2 正好相反。

其中的PLL、FIFO模块用的就是Altera Quartus中的现成模块,SDRAM用的也是altera的开源模块,就是ref-sdr-sdram-verilog.zip,在google搜索有一大堆,只要把其中定义总线宽度的地方改一改就差不多可以用了,其它的关于刷新时间之类的SDRAM的初始化参数则是在RW Control模块启动的时候发出命令,再让SDRAM控制模块传给SDRAM芯片的。

VGA产生模块从dcfifo1读取图像数据,产生相应的信号控制Video DAC。主要是要搞清楚前肩,后肩的概率,其实就是每一行(或一帧)后面和前面的间隙时间。输出的时钟频率尽量符合标准的规范。

就像所有的开发一样,设计只是其中很小的一部分,最大的一部分是调试。Altera SignalTrap相当于是一个免费的逻辑分析仪,虽然其存储深度和芯片内部的存储器大小相关,但是还是相当方便的。如何使用可以参考altera的application note。

参考资料

http://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-2613737244.20.P9tQJG&id=43634840829

时间: 2024-10-13 11:34:06

用FPGA设计LCD 转 VGA的相关文章

FPGA设计——VGA (Altera)

1. VGA概述 VGA(Video Graphics Array)是IBM在1987年推出的一种视频传输,具有分辨率高.显示速率快.颜色丰富等优点,在彩色显示器领域得到了广泛的应用.不支持热插拔,不支持音频传输. 2. VGA时序 下面以640*[email protected]为例说明VGA时序和FPGA设计,其他分辨率和帧率的可参考VESA中查找. 计算像素时钟pclk = 800*525*60 = 25200000,注意这里的HSYNC和VSYNC都是低电平有效,且HSYNC在数据行无效

FPGA设计经验谈

从大学时代第一次接触FPGA至今已有10多年的时间.至今记得当初第一次在EDA实验平台上完成数字秒表,抢答器,密码锁等实验时,那个兴奋劲.当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的.后来读研究生,工作陆陆续续也用过Quartus II,Foundation,ISE,Libero,并且学习了verilogHDL语言,学习的过程中也慢慢体会到verilog的妙用,原来一小段语言就能完成复杂的原理图设计,而且语言的移植性可操作性比原理

FPGA 设计如何进行面积优化(逻辑资源占用量优化)

FPGA面积优化 1 对于速度要求不是很高的情况下,我们可以把流水线设计成迭代的形式,从而重复利用FPGA功能相同的资源. 2 对于控制逻辑小于共享逻辑时,控制逻辑资源可以用来复用,例如FIR滤波器的实现过程中,乘法器是一个共享的资源,我们可以通过控制资源实现状态机,从而复用乘法器,当然这样也牺牲了面积. 3 对于具有类似计数单元的模块,可以采用全局的计数器,以减小面积.例如模块A需要256的循环计数,模块B需要1000的循环计数,那么我们就可以设计一个全局计数器,计数器位数为10,前八位供模块

FPGA设计流程

FPGA设计人体分为设计输入.综合.功能仿真(前仿真).实现.时序仿真(后仿真).配置下载等六个步骤,设计流程如图2所示.下面分别介绍各个设计步骤. 1 设计输入 设计输入包括使用硬件描述语言HDL.状态图与原理图输入三种方式.HDL设计方式是现今设计大规模数字集成电路的良好形式,除IEEE标准中VHDL与Verilog HDL两种形式外,尚有各自FPGA厂家推出的专用语言,如Quartus下的AHDL.HDL语言描述在状态机.控制逻辑.总线功能方面较强,使其描述的电路能特定综合器(如Synop

转载--关于FPGA设计数字信号处理电路的心得

FPGA使用的越来越广泛,除了可用于设计控制电路以为,数字信号处理电路更是FPGA的强项和难点.个人可以说才刚刚入门FPGA设计,也做过一些数字信号处理方面的电路设计,记录下个人心得体会. (一)善用MATLAB来为设计做充分的准备和验证. 在学习EDA课程的时候,我们往往都是按照要求,直接打开QuartusII,噼里啪啦开始疯狂敲代码,然后仿真--不对--再改再仿真--还不对--再改直到仿真结果正确为止.不错,这的确是人们先入为主的一种方法.但这只是我们学习HDL语言,学习使用开发工具时候比较

FPGA 设计中的流量,时滞,时序

FPGA 设计中的流量,时滞,时序 流量:每个时钟周期能够传输的数据位. 时滞:数据从输入到输出需要经历的时钟周期: 时序:两个元件之间的最大延迟,他决定系统的最高时钟速度. 1 采用流水线可以提高 流量: 例如计算X^3,迭代结构 流水线: 此时 流量=8/1 时滞=3 时序=乘法器延迟 2 如果要求低时滞则可以去掉寄存器 3 降低时序,提高时钟频率的方法 FPGA 设计中的流量,时滞,时序

影响FPGA设计中时钟因素的探讨【转】

Crazy Bingo Learn to walk first before you want to run- 影响FPGA设计中时钟因素的探讨 http://www.fpga.com.cn/advance/skill/speed.htm http://www.fpga.com.cn/advance/skill/design_skill3.htm 时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错

【转】 FPGA设计的四种常用思想与技巧

本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作种取得事半功倍的效果. FPGA/CPLD的设计思想与技巧是一个非常大的话题,由于篇幅所限,本文仅介绍一些常用的设计思想与技巧,包括乒乓球操作.串并转换.流水线操作和数据接口的同步方法.希望本文能引起工程师们的注意,如果能有意识地利用这些原则指导日后的设计工作,将取得事半功倍的效果! 乒乓操作“乒乓

08-FPGA状态机设计实例——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线--普利斯队长精心奉献 ? 实验目的:1.学习状态机的相关概念 2.理解一段式.两段式以及三段式状态机的区别以及优缺点 实验平台:芯航线FPGA核心板 实验原理: 状态机全称是有限状态机(finite-state machine,缩写:FSM)是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型. 状态机分为摩尔(Moore)型有限状态机与米利(Mealy)型有限状态机.摩尔状态机输出是只由输入确定的有限状态机(不直接依赖于当前状态).米利有限状态机的输出不止与其输入有关还于它的