集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 7692|回复: 10

基于FPGA的数字视频转换接口的设计与实现

[复制链接]
weibode01 发表于 2010-11-17 11:09:49 | 显示全部楼层 |阅读模式
基于FPGA的数字视频转换接口的设计与实现


      引言

本文从实际应用的角度出发,采用FPGA作为主控芯片,设计了一款数字视频接口转换设备,该设备针对于MT9M111这款数字图像传感器产生的ITU-R BT.656格式数据进行采集、色彩空间变换、分辨率转换等操作,完成了从ITU-R BT.656格式数据到DVI格式数据的转换,使得MT9M111数字图像传感器的BT656数据格式图像能够以1280×960(60Hz)和1280×1024(60Hz)两种显示格式在DVI-I接口的显示器上显示,并且还具有图像静止功能,在系统空闲时的待机状态实现了整机的低功耗,适用于使用移动设备的工业现场。

  整体方案设计

  现实景物的采集与显示过程如图1所示。图像传感器MT9M111采集到现实景物后,将生成的ITU-R BT.656数据流由ITU数据输出端口发送给视频转换接口。视频转换接口将ITU数据输入端口送来的ITU-R BT.656数据流转换成TMDS数据流发送,通过DVI-I端口发送给显示终端显示。本设计方案中,MT9M111输出图像的分辨率为1280×960。




  图1 系统采集与显示过程

  在现实景物的采集与显示过程中,视频转换接口功能的实现通过以下步骤来完成:

  1) 对收到的ITU-R BT.ITU656数据流解交织;

  2) 对解交织后的数据流进行色彩空间转换;

  3) 将转换后的每个像素的RGB值写入存储器中;

  4) 从存储器中读出像素的RGB值,并将其转换成TMDS码元序列;

  5) 从存储器中读出像素的RGB值,并将其转换成VGA模拟信号值。

  硬件构架设计

  系统的硬件构架框图如图2所示。图像传感器输出的ITU信号(包括YCbCr数据流、行场同步信号和像素时钟)经ITU输入接口送入FPGA主控芯片。FPGA主控芯片对ITU信号进行解交织和色彩空间转换,再将转换后的每个像素的RGB值写入SDRAM存储器。再由FPGA主控芯片按照输出分辨率的要求从SDRAM存储器中读出像素的RGB值,并按照VGA的时序标准,将像素的RGB值发送给TMDS发送芯片和D/A芯片,由TMDS发送芯片提供视频数据的数字通道,由D/A芯片提供视频数据的模拟通道,共同汇集到DVI-I输出接口,传送到数字显示器或模拟显示器上显示。




  图2 硬件构架框图

  输出图像的分辨率要求FPGA与TMDS发送芯片之间传送数据的带宽在100M(像素/秒)以上,因此要求FPGA的速度足够快。同时由于FPGA与外围器件之间的互联比较多,因此要求FPGA的引脚数足够多。同时由于晶振提供的时钟频率为50MHz,满足不了100M以上的传输速度,因此需要FPGA内部带有锁相环。另外,为了实现系统脱机工作,要求FPGA支持配置芯片。最后,考虑到系统占用的面积和以后版本的升级,要求FPGA的内部资源尽量丰富。为此,系统最终选用了Altera公司Cyclone系列FPGA。

    考虑到视频数据的存储和显示是同时进行的,而SDRAM存储器是单端口器件,数据的写入和读出不能同时进行,故需要两块SDRAM同时进行乒乓操作来完成数据的连续读写。最终选用了MICron公司的型号为MT48LC2M32B2TG-6的SDRAM存储器;TMDS发送芯片选用的是Silicon Image公司的SiI164CT64型号。由于输出图像的分辨率要求FPGA与TMDS发送芯片之间传送数据的带宽在100M以上,这一数据流同时又要送入D/A芯片完成数模转换,因此要求D/A芯片的转换速率在100MHz以上。同时由于R、G、B的数据宽度都为8位,因此需要选用专用的图像D/A芯片,它需要具有R、G、B三路数据通道,每路的宽度至少为8位。根据以上要求,系统最终选定CSEMIC公司的CSV7123型号的图像D/A芯片。

  FPGA功能设计

  FPGA作为系统的主控芯片,是软件设计的核心。根据整体方案的设计思路,FPGA主控芯片的工作过程为:首先接收由图像传感器送来的ITU-R BT.656格式的视频数据流,经过解交织操作,将像素数据流中交织在一起的串行YCbCr值解成独立的并行YCbCr值。然后对解交织的YCbCr值进行色彩空间转换,转换成对应的RGB值。接着将此RGB值存入一块SDRAM存储器。与此同时,从另一块SDRAM存储器中读出像素的RGB值,并发送给TMDS发送芯片和D/A芯片,经过数字通道和模拟通道后,传送到DVI显示器或VGA显示器上显示。根据FPGA主控芯片的工作过程,设计的软件功能框图如图3所示。




  图3 软件功能框图图3中FPGA内部的工作时钟有两个,以图中的虚线为界,虚线左侧部分使用的时钟为图像传感器的54MHz像素时钟;虚线右侧使用的时钟是经过锁相环将晶振的50MHz时钟倍频成108MHz以后的时钟,其中108MHz的时钟是由输出图像的分辨率所决定的。两个时钟域通过异步FIFO相连。整个系统共分成6个模块:解交织模块、YCbCr转RGB模块、异步FIFO模块、乒乓操作模块、SDRAM控制器模块和VGA发送模块。此外,系统还可实现图像静止、系统待机、模式选择等功能。





  图像显示效果



  图4是输出图像分辨率为1280×960模式下的显示效果,图中显示器检测到的视频图像分辨率为1280×960








图4 1280×960模式下的显示效果

本帖子中包含更多资源

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

x
xuxiang213 发表于 2011-4-20 09:28:25 | 显示全部楼层
想要fpga代码??QQ87122414
wanglong0201 发表于 2011-5-17 10:19:42 | 显示全部楼层
有电路图和代码没有?麻烦发到747118952@qq.com。。。跪求!。。。
zhuifeng1002 发表于 2011-6-13 23:33:22 | 显示全部楼层
谢谢楼主提供
linzhjbtx 发表于 2011-6-18 21:57:03 | 显示全部楼层
本帖最后由 linzhjbtx 于 2012-6-10 19:12 编辑

求fpga代码??QQ2695515277
zhixin888 发表于 2011-6-19 15:41:11 | 显示全部楼层
◆◆◆单片机培训视.频教程-ARM 2440-stm32视.频-dsp-CPLD-FPGA-PADS开发视.频-嵌入式系统开发◆◆

单片机视.频教程介绍
  这是一部学单片机革命性的视.频教程,每讲3小时左右,讲座从最基本的预备知识开始讲起,非
常详细的讲解KEIL编译器的使用,包括软件仿真,测定时间,单步
运行,全速运行,设置断点,调试,硬件仿真调试,变量观察等,
整个过程全部用单片机的C语言讲解,从C语言的第一个主函数
MAIN讲起,一步步一条条讲解每一个语法,每条指令的意思,即
使对单片机一巧不能,对C语言一无所知,通过本课程的内
容也可以让你轻松掌握51单片机的C语言编程设计,全新的讲课风
格跳过复杂的单片机内部结构知识,首先从单片机的应用讲起一步
步深入到内部结构,让学生彻底掌握其实际应用方法,把51单片机
的所有应用每个部分都讲解的非常仔细,教师在教室前面用电脑一
条一条写程序,旁边单片机实验板一个实验一个的演示,
给学员解释每条指令的意思及原理,通过十天的时间让学生完全掌
握单片机的C语言编程。全程的屏幕,声音,用屏幕录像,实验板
现象用摄像头拍摄,这部教程算是国内首个如此创新的以教师亲自
实践为主,学员现场写程序,直接下载到实验板看现象,讲单片机
的视.频教程,只要你认真看,认真听,保证很快让你学会单片机
------------------------------------------------------
目录如下:
一 ,预备知识
点亮一个发光管         单片机能做什么,基本电子知识,C51知识简介,点亮
一个发光管,如何申请免费芯片样品。
二,流水灯设计蜂鸣器发声         
简单延时程序、子程序调用、带参数子程序设计、流
水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继
电器,集电极开路的概念及应用
三,数码管显示的原理、
数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、
重点讲述工作方式2、中断概念及中断函数写法、定
时器中断应用
四,数码管的动态显示原理及应用实现          
动态扫描概念、定时器、中断加深
五,独立键盘、矩阵键盘的检测原理及实现       
键盘检测、消抖、键盘编码、
带返回值函数写法及应用
六,AD、DA的工作原理及实现       
模拟电压与数字电压的关系、
为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法
七,串口通讯原理及操作流程       
串口通讯工作方式、重点讲述最常用的10位数据通讯、
波特率概念及如何根据波特率计算定时器初值
八,IIC总线AT24C02芯片工作原理,IIC总线工作原理、
目前非常通用的一种通信机制
九,1602液晶显示原理及实现       
最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作
十,电路图绘制全过程       
最顶级电路板设计软件Altium Designer使用、
元件库、封装库设计、绘制原理图、错误检查、
生成PCB、手动、自动布线、送去加工
----------------------------------------------
◆◆AVR单片机视.频内容◆◆:

第一讲:开发板和软件的操作使用
1、介绍配件。
2、安装软件(ICC AVR 和AVR STUDIO)及其使用,括新建工程、程序下载,仿真调试;整板测试;板上资源。
3、着重介绍一下USB接口的仿真器。
第二讲:AVR单片机的概述和C语言的基础知识
1、AVR单片机的概述包括它的优点、片上资源。
2、C语言的基础包括电平特性、2进制与16进制的表示及转换、二进制数的逻辑运算,数据类型,运算符。
3、着重讲一下特有的BIT()操作,C中的各种语句。
4、介绍一下AVR单片机IO口的配置。
第三讲:点亮发光二极管、驱动蜂鸣器、继电器
1、首先讲解一下原理图上开关电路、复位电路、时钟电路;
2、讲解573工作原理,
3、首先点亮一个发光二极管,然后让一个二极管亮灭变化。
4、编写函数证明573的工作原理:锁住后不导通就不能再更新数据。
5、编写延时函数,软件仿真查看延时的精确时间
6  子函数的编写(分带形参和不带形参)。
7、编写流水灯函数。
8、蜂鸣器,继电器的工作原理并编写程序。
第四讲:数码管工作原理
1、共阴共阳数码管内部结构,显示原理。
2、用数字万用表标定数码管的段选和位选
3、编写程序使1个数码管上显示数字
4、编写程序在6个数码管上滚动显示数字
5、重点讲解动态显示,保持时间,以及扫描频率对闪烁和亮暗程度的影响。
第五讲:键盘检测原理(比较复杂)
1、键盘作用,检测原理,如何消抖,独立键盘检测程序编写。
2、矩阵键盘检测程序编写,涉及到返回值函数调用。
第六讲:1602液晶的使用
1、看手册,管脚、写指令和数据、时序图。
2、编写程序,显示光标
3、编写程序显示字,
4、编写程序,滚动显示字符
第七讲:中断、定时器的原理和应用(比较复杂)
1、中断的概念,AVR单片机的中断
2、定时/计数器1几种模式的寄存器配置
3、定时器1普通模式下实现秒表
4、CTC模式输出方波
5、快速PWM模式输出PWM信号
6、相位修正PWM模式输出PWM信号
第八讲:AD、DA简介及其应用
1、AD简介,AVR内部AD寄存器设置
2、编写程序控制AD读写电位器输出的模拟电压
3、SPI串行通信简介
4、DA简介,AD5300时序图
5、编写程序控制DA输出模拟电压使发光二极管亮度变化
第九讲:TWI(IIC)
1、TWI(IIC)协议简介
2、AVR单片机内部TWI寄存器简介,操作流程
3、具有IIC协议的数字电位器芯片AD5161的简介
4、编写程序用独立键盘控制AD5161输出不同的阻值
第十讲:异步串口UART的简介和程序的编写
1、UART简介
2、AVR单片机内部与UART相关的寄存器的配置
3、编写程序控制AVR单片机和电脑进行通信
4、讲解串行通信时数字和字符之间的区别
第十一讲:PS2键盘、DS1302的工作原理和程序的编写
1、AVR单片机外部中断的介绍
2、PS2键盘的工作原理
3、讲解程序,读取PS2键盘的按键值并在1602液晶上显示
4、DS1302的工作原理
5、讲解程序,控制1302工作并在1602液晶上显示时间
--------------------------------------------------
◆◆MSP430单片机视.频◆◆:

第一部分 硬件结构

第一讲 概述
第二讲 复位、中断和IO
第三讲 异步通信接口1
第四讲 异步通信接口2
  第五讲 定时器
第六讲 FLASH
第七讲 ADC12
第二部分 软件使用
第一讲 软件使用
第三部分 基础程序
第一讲 入门和低功耗
第二讲 时钟和IO
第三讲 比较器和定时器和ADC
第四部分 模块程序
第一讲 控制电路和流水灯
第二讲 键盘
第三讲 蜂鸣器和数码管
第四讲 1602液晶和电平转换
第五讲 EEPROM和18B20和DS1302
第六讲 RS232和RS485接口
第七讲 USB接口
第八讲 ADC和DAC
==============================
◆◆PIC 单片机 视.频◆◆
前言:时间:10分。
内容:MPLAB、PICC软件的安装、USB下载驱动安装。
Lesson1:时间:1小时44分。
内容:PIC单片机简介、软件使用方法、新建工程、软件调试、流水灯程序实现。
Lesson2:时间:27分。
内容:数码管的静态显示与动态显示原理及实现。
Lesson3:时间:53分。
内容:PIC单片机独立键盘检测原理及实现。
Lesson4:时间:45分。
内容:PIC单片机矩阵键盘检测原理及实现。
Lesson5:时间:46分。
内容:PIC单片机控制继电器原理及实现。
Lesson6:时间:2小时20分。
内容:PIC单片机控制DS18B20数字温度传感器原理及实现。
Lesson7:时间:53分。
内容:PIC单片机定时器0的使用方法。
Lesson8:时间:34分。
内容:PIC单片机定时器1的使用方法。
Lesson9:时间:32分。
内容:PIC单片机定时器2的使用方法。
Lesson10:时间:1小时01分。
内容:PIC单片机内部模数转换器AD的使用方法。
Lesson11:时间:1小时50分。
内容:PIC单片机内部SPI通信接口的使用方法。
Lesson12:时间:2小时12分。
内容:PIC单片机内部IIC通信接口的使用方法。
Lesson13:时间:53分。
内容:PIC单片机串行口使用。
===============================
【ARM培训视.频】课程主要内容

1.概念和基本工具:
嵌入式系统基本概念、嵌入式操作系统介绍
嵌入式系统开发的过程和基本结构
Linux基本操作命令的使用
常用工具使用:vi /gcc/gdb等
编写shell程序 和makefile文件结构

2.硬件结构及原理讲解:
ARM7~ARM9体系结构体系结构介绍
ARM7(9)TDMI处理器内核及指令集介绍
讲解SUMSUNG 44B0X 开发板原理图
讲解SUMSUNG 2410 开发板原理图
ARM开发工具ADS的使用

3.Linux部分:
Uclinux,mizilinux系统引导程序bootloader原理和实现过程:Uboot、vivi等
ARM系统空间划分及系统映射方法
bootloader内核下载模式实现 :tftp、Xmoden
linux操作系统原理及组成
介绍linux系统目录组织结构
linux 运行基理,系统运行过程
配置裁减编译linux内核

4.讲解Linux进程特性:
进程属性和状态转换;进程控制与调度;进程相关系统调用,构建守护进程
进程间通信: 进程通信的基本概念,管道、信号、消息队列、信号量、共享内存。
网络通讯接口,socket通信编程。
串口通讯程序和编程实践
多线程程序设计

5.Linux设备驱动:
uClinux内核模块及设备驱动程序开发
介绍linux驱动程序分类和各自操作系统上下层接口
驱动开发实例:蜂鸣器驱动、按键驱动开发、串口驱动、触摸屏驱动、网络驱动开发、USB驱动、液晶屏驱动等。
ARMlinux移植过程。
引导程序Uboot移植。
最小系统启动开发过程。
嵌入式文件系统移植:ramdisk、JFFS2、yaff

6.综合试验:
实现网络文件传输服务程序;
构建嵌入式WEB服务器;
移植mediaplay播放器
开发嵌入式视.频服务器,基于H.264协议
**************************************
另有
=====第一部分单片机相关======
1【单片机多媒体视.频教程】(汇编)非常经典
2【单片机入门与提高精品视.频教程】(汇编),非常适合初学者.
3【手把手教你学单片机 51单片机 C语言 视.频教程 从入门到精通 视.频】
4【数电/模电精品视.频教程】,非常适合初学者.
5【汇编语言精品视.频教程】,非常适合初学者.
6【单片机的C语言编程及电路设计培训视.频教程】
7【标准C语言入门与提高视.频教程】非常经典
8【AVR单片机入门与提高视.频】
9【MSP430单片机经典视.频】
10【PIC单片机经典视.频】
11【电路分析应用技术视.频】
======第二部分电路设计相关=========
【protel99se+DXP/2-0-04 视.频教程+实例】
【Protel(Altium Desinger)】电路设计视.频教程
【Cadence经典视.频教程】
【Orcad经典视.频教程】
【PowerPCB入门视.频教程】
=====第三部分嵌入式硬件部分========
1【ARM linux培训视.频】
2【手把手教你学ARM之LPC2103入门篇 视.频教程】
3【ARM STM32视.频教程 +配套工程源代码】
4【(基于2440开发板的视.频教程)嵌入式Linux视.频培训视.频】
5《学ARM和学单片机一样简单》视.频】
6【ARM嵌入式LPC22-0-0视.频教学视.频教程《嵌入式系统与结构》 】
7【ARM7嵌入式S3C44B0视.频教学《嵌入式微处理器原理及应用》】
8【ARM嵌入式视.频《嵌入式原理与应用》】
9【 台湾嵌入式培训】
10【嵌入式系统开发技术视.频】
11【Altera FPGA 视.频教程】
12【深入浅出玩转FPGA视.频】
13【EDA(CPLD FPGA)入门与提高视.频教程】
14【dsp入门与提高视.频教程】   
15【DSP多媒体教程】
16【vhdl应用技术视.频】
17【PLC精品视.频】                  
18【数控应用经典技术视.频】

=====第四部分嵌入式软件部分====
1,【Windows CE入门与提高视.频教程】       2,【Vxworks应用技术】
3,【linux编程入门与提高视.频教程】  4 【linux工程师软件开发视.频】
5,【eCos、uC/OS-II开发技术】             6,【C++编程入门与提高视.频教程】
7,【嵌入式仿真开发】
8,【JAVA开发视.频】                       9,【.net开发视.频】
→篇幅有限,更多内容请联系
Q_Q:7-5-9-7-3-7-8-3-3
Q_Q: 9_1_0_6_8_4_9_2_8
网站:www.zhixin365.net
MSN:jxb200200@hotmail.com
aifei6655 发表于 2012-1-9 22:24:24 | 显示全部楼层
还没看懂,先顶一下
aifei6655 发表于 2012-1-10 15:59:08 | 显示全部楼层
路过,学习。。。。。。
fenlido 发表于 2012-1-11 14:07:46 | 显示全部楼层
路过,学习。。。。。。
石头 发表于 2012-3-2 13:58:55 | 显示全部楼层
可以把一些资料发给我看一下吗  谢谢了  464484739@qq.com
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 17:34 , Processed in 0.065952 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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