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

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

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

因此就产生了这个设计,这个设计的目的就是让2410输出高分辨率低帧率的信号,比如1024x768@20HZ,通过FPGA把输出的图像保存在其控制的SDRAM中,然后FPGA中的图像产生部分再把这些数据读出来,按照1024x768@60HZ的速度输出到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

http://www.cnblogs.com/ccjt/p/4376525.html

fpga驱动rgb液晶屏_用FPGA设计LCD 转 VGA 其实vga和lcd驱动 非常类似相关推荐

  1. fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...

  2. fpga驱动rgb液晶屏_以ARM+FPGA结构驱动高分辨率液晶显示设计与效果测试

    摘 要: 结合ARM操作灵活和FPGA实时处理的优点,提出采用ARM+FPGA结构驱动高分辨率RGB888液晶显示屏.ARM接口丰富.操作灵活可以满足客户操作方便的需求:FPGA模块采用FPGA+DD ...

  3. MCU驱动和RGB驱动的液晶屏的区别

    概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存.而MCU接口,STM32F407系列的控制器就整合了这个模块,包含6800和8080两 ...

  4. 单通道驱动LVDS驱动1080P液晶屏

    上周末把单通道LVDS驱动1080P液晶屏调通了.通过FPGA接收单8的LVDS输入,内部一个倍频,数据组合格式如下:

  5. STM32F103软件模拟SPI接口驱动ILI9486液晶屏

    STM32F103软件模拟SPI接口驱动ILI9486液晶屏 ILI9486的工作模式 ILI9486的SPI总线方式简介 ILI9486的3线SPI总线底层驱动配置步骤 ILI9486的工作模式 I ...

  6. arduino下载库出错_arduino的I2C通讯 3:驱动1602液晶屏

    上个推送,我们学习了I2C功能的基础知识.而且知道了使用很多器件都需要安装库.本次,我们一起来做一个实例,用arduino驱动1602液晶屏 1602代表屏幕有16列,2行.传统的驱动方式占用了大量的 ...

  7. 通过 I2C 驱动 LCD1602 液晶屏(51单片机)

    通过 I2C 驱动 LCD1602 液晶屏(51单片机) 硬件实物 原理图 3.程序 #include <reg51.h> #include <intrins.h>#defin ...

  8. stm32驱动rgb屏电路图_STM32直接驱动RGB接口的TFT数字彩屏设计

    STM32 直接驱动 RGB 接口的 TFT 数字彩屏设计 本文提出了一种由 STM32 的 FSMC 总线直接挂载 RGB 接口屏的方案,直接由一片 CPU(STM32F103VC) 来完成 TFT ...

  9. stm32 arduino 驱动jlx液晶屏

    stm32 arduino 驱动jlx液晶屏 1.说明 单片机这次用的是STM32F103C8T6,烧成arduino用,库还是我们的老朋友u8g2.液晶屏型号是JLX 240160G-676,SPI ...

最新文章

  1. 朴素贝叶斯--实战分析
  2. android获取屏幕的分辨率方法
  3. Android之TextView属性详解
  4. typra修改快捷键
  5. 系统更新win10服务器失败,win10更新失败?使用这三招轻松解决,远离更新失败的烦恼!...
  6. All Friends 极大团
  7. 最大k乘积的时间复杂度_惊,我还不会算时间复杂度!
  8. mysql 纵列转横列_mysql行列转换方法总结
  9. 熊猫直播显示连接服务器失败,熊猫直播提示加载失败,请按“菜单键”刷新解决办法...
  10. 影响世界的100个管理定律
  11. 环比计算分母为0怎么办?
  12. c 脚本语言作用,什么是脚本,脚本语言?
  13. 查询计算机软件运行的时间,BootTime(电脑运行时间查询)
  14. SparkStreaming实时数仓——日活
  15. Java AOP自定义注解
  16. SQLmap 扫描工具的使用
  17. ubuntu下修改mysql密码
  18. 第三章 软件需求分析
  19. 利用英超FPL数据分析球员第一期——曼联半程MVP
  20. 基础的网络服务器开发

热门文章

  1. python设计模式篇3---创建型模式
  2. 运行php代码报错如下Uncaught Error: Call to undefined function curl_init()
  3. 创新战略|工业企业如何应对颠覆式变革带来的挑战?
  4. 【matlab图像处理笔记4】【图像变换】(三)图像的霍夫变换
  5. Pycharm进入显示your license has expired解决方案
  6. 05 pyecharts 基本图表(示例代码+效果图)
  7. html弹性布局平均分配,flex弹性布局.html
  8. Windows 性能超越 Linux?
  9. 小程序抢购页面倒计时定时器
  10. 互联网产品都有哪些类型?