根据FPGA的数字CMOS摄像机图像采集_第1页
根据FPGA的数字CMOS摄像机图像采集_第2页
根据FPGA的数字CMOS摄像机图像采集_第3页
根据FPGA的数字CMOS摄像机图像采集_第4页
根据FPGA的数字CMOS摄像机图像采集_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式课程设计课程题目 :基于 FPGA 的图像采集系统 课程成员:指导老师 :_基于 FPGA 的数字 CMOS 摄像机图像采集一、数据采集系统概述数据采集是指将以各种形式输入的被测信号, 包括语音信号、 温度信号、湿度信号、图 像信号等经过适当处理, 成为计算机可以识别的数字信号, 从而送入计算机进行存储处理的 过程,数据采集卡就是典型的基于数据采集系统原理的集成计算机扩展卡。如图 1 所示, 在数据采集过程中主要有几个关键部分 :(1) 输入信号的幅度较小或者过大,需要经过放大器 单元将输入信号幅度放大或者缩小 ;(2) 输入信号带有较大的噪声,需要经过一个硬件的模拟 滤波单元,将信号滤

2、波整形 ;(3)将信号送到 AD 进行模数转换 ;(4) 将信号传输到计算机; (5) 存储记录和处理数据。被测信号放大器模拟滤波A/D转换信号传输信号存储单元单元单元单元记录单元图 1 数据采集过程通常认为如果数字逻辑电路的频率超过 50MHz ,而且工作在这个频率之上的电路已经 占到了整个电路系统的三分之一以上,就称为高速电路。 相应的, 对于并行采样系统, 如果 采样频率达到 50MHZ ,数据量并行 8bit 以上 ;对于串行采样系统,如果采样频率达到 200MHz ,一般将这种采样系统也称为高速数据采集。 目前高速数据采集使用较多的采样频 率一般在 50M100MHz 之间。采集系统

3、分模拟系统和数字系统,大多数字采集系统中, CMOS 图像传感器是系统的成像部件, 它是系统的 “眼睛”,能够捕获高速运动物体的图像, 此模块是将采集的模拟图像转化为数字信号输出;图像处理模块是系统的中间缓存处理部分,此模块为了消除或降低前期采集携带噪声的影响, 提高图像质量, 将庞大的数据量进行压缩,以减小对存储介质容量的要求 ;数据传输模块是系统与外设搭建的桥梁,此模块是将实时采 集的数据高速传输,给外设提供信息。二、总体方案设计方案 1 :图像数据的传输通过 USB 总线技术完成系统的初始化以及将最终的传输信号准确无误 地传送到上位机上。 USB 技术具有简单化、 通用性、 可靠性、 热

4、插拔、 传输速率高等优点, 随之带来的是应用 USB 技术的复杂程度高、总线传输协议需要协调等问题。方案 2 :利用两片 SDRAM 进行图像数据的短时间存储并快速传输, SDRAM 是多 Bank 结构, 例如在一个具有两个 Bank 的 SDRAM 的模组中, 其中一个 Bank 在进行预充电期间, 另一 个 Bank 却马上可以被读取,这样当进行一次读取后,又马上去读取已经预充电 Bank 的数 据时, 就无需等待而是可以直接读取了, 这也就大大提高了存储器的访问速度。 其优点是设 计相对简单、不许考虑传输时转换总线的问题、较为可靠,缺点是 SDRAM 容量有限、传 输时序需要计算准确、

5、 SDRAM 经常刷新等。根据综合分析和考虑,我们选用相对简单方便的方案2 ,选择器件如下: FPGA 采用Altera 的 Cyclone EP2C35F484C8 ,视频采集芯片用飞利浦的 SAA7113 作为 A/D 转换单 元,两块型号为 K4S641632E 的 SDRAM 和 FPGA 构成图像帧存储及传输处理系统, ADV7125 是数模转换芯片,和计算机 VGA 显示器相连作为显示终端,系统整体框图如图 2 所示。图 2 视频监控系统整体框图 以上图像视频监视系统的大部分设计工作都集中在对 FPGA 的编程开发上,通过分析 可以确定出 FPGA 需要包含如下几个功能模块。(1

6、)视频接口配置模块:视频采集芯片SAA7113 具有多种采集方式,这里 FPGA 通过 I2C 总线对其内部寄存器进行配置,使其按照一定的格式进行采样。(2)异步 FIFO 模块:当 FPGA 接收 A/D 采样的视频数据时,由于 SAA7113 和 FPGA 一般在不同的时钟频率下, 这就会出现通常所说的异步时钟问题, 处理不当就容易出现亚稳态, 常用方法是在两者之间添加一块异步FIFO 。(3 )视频变换模块:对得到的数字视频流进行解码,识别出行、场同步信号,并且根据需 要选择采集图像的大小,进而变换成RGB 格式的图像数据,以便于后续显示。(4 )图像帧存读写模块:将解码后的数据经由一个

7、乒乓机制依次存放在两片RAM 中,每个里面刚好存放一幅图像,通过乒乓机制使得两块存储区域交替进行存储输入和显示输出, 避免等待,提高速度。(5 )VGA 控制模块:根据 VGA 的工业参数,产生相应的行同步和场同步信号,并在适当 时刻送入数据,经由 ADV7125 送 VGA 进行显示。图 3 描述了 FPGA 内部的各个主要功能模块。 系统上电时, FPGA 首先从外部 Flash 中 读取配置数据,完成自身的程序加载,进入工作模式状态。随后 I2C 配置接口模块完成对 SAA7113 的初始化, 初始化结束后, FPGA 等待采集图像的命令。 FPGA 收到采集命令后, 启动采集视频数据模

8、块、异步 FIFO 模块和视频解码模块进行解码,将数据轮换写到两个帧 存中,经通信模块送出,以上即为该系统的工作流程。下面主要针对 SDRAM 控制模块的图 3 FPGA 系统内部各模块整体框图三、SDRAM 控制模块系统要把每一幅图像数据存储到一个 SDRAM 里面供后续显示,由于 SDRAM 整个数 据的写入和读出都需要一定的时间,为了避免中间等待过程,采用两片等大的 SDRAM 交 替工作,一片在从 FIFO 向其写入时另一片向 VGA 输出,使用乒乓机制交换它们的工作性 质。这样问题的重点就集中在 FPGA 对 SDRAM 的读写控制模块上。3.1 SDRAM 概述之所以要用到 SDR

9、AM ,是因为它价格低、体积小、速度快、容量大,是比较理想的存 储器件。在基于 FPGA 的图像采集和集中显示系统中,常常要用到这种大容量、高速度的 存储器。但 SDRAM 的控制逻辑比较复杂,对时序要求也十分严格,这就要求有一个专门 的控制器,使系统用户能很方便地操作 SDRAM 。SDRAM 器件的管脚分为控制信号、地址和数据 3 类。通常一个 SDRAM 中包含几个 BANK ,每个 BANK 的存储单元是按行和列寻址的。 由于这种特殊的存储结构, SDRAM 有 以下几个工作特性。( 1) SDRAM 的初始化SDRAM 在上电 100200 s 后,必须由一个初始化进程来配置 SDR

10、AM 的模式存储器, 模式存储器的值决定 SDRAM 的工作模式。访问存储单位: 为减少 I/O 引脚数量, SDRAM 复用地址线, 所有在读写 SDRAM 时, 先由 ACTIVE 命令激活要读写的 BANK ,并锁存行地址, 然后在读写指令有效时锁存列地址。 一旦 BANK 被激活后,只有执行一次预充命令后才能再次激活同一 BANK 。 ( 2)刷新和预充SDRAM 的存储单元可以理解为一个电容, 总是倾向于放电, 因此必须有定时刷新周期 以避免数据全失。 刷新周期可由 (最小刷新周期 + 时候周期) 计算获得。 对 BANK 预充电或 者关闭已激活的 BANK ,可预充特定 BANK

11、也可同时作用于所有 BANK ,A10 、BA0 和 BA1 用于选择 BANK 。(3)操作控制SDRAM 的具体控制命令由一些专用控制引脚和地址线辅助完成。CS、RAS 、CAS 和WR 在时钟上升沿的状态决定具体操作动作,地址线和 BANK 选择控制线在部分操作动作 中作为辅助参数输入。由于特殊的存储结构, SDRAM 操作指令比较多,不像 SRAM 一样 只有简单的读写。根据系统要求,本设计选用 SAMSUNG 的 K4S6432 SDRAM 芯片。3.2 SDRAM 控制器总体设计SDRAM 控制器与外部的接口示意图由图 4 给出,控制器右端接口信号均为直接与SDRAM 对应管脚相连

12、的信号; 控制器左端的接口信号为与 FPGA 相连的系统控制接口信号其中, CLK 为系统时钟信号, RESET_N 为复位信号, ADDR 为系统给出的 SDRAM 地址信 号,DAIN 是系统用于写入 SDRAM 的数据信号, FPGA_RD 和 FPGA_WR 为系统读、 写请 求信号(1 为有效,0 为无效),SDRAM_FREE 是 SDRAM 的空闲状态标示信号 (0 为空闲, 1 为忙碌),FDATA_ENABLE 是控制器给系统的数据收发指示信号 (为 0 时,无法对 SDRAM 进行数据收发; 为 1 时,若是系统读操作, 则系统此时可从 DAOUT 接收 SDRAM 的数据

13、, 若是写操作,则系统此时可以通过 DAIN 发送数据给 SDRAM )。CLKSDRAM 控制器SDRAM CLKRESET NSA(SIZE-1:0)ADDR(SIZE-1:0)DA(SIZE-1:0)DAIN(SIZE-1:0)CKEFPGA WRCS NFPGA RDRAS NSDRAM 器件SDRAM FREECAS NWE NFDATA ENABLEDQ(SIZE-1:0)DAOUT(SIZE-1:0)DATE(SIZE-1:0)图4 总体设计框图和外部接口信号参照 SDRAM 的数据手册可知,它的指令译码对照表如表 1 所示。表 1 SDRAM 指令译码对照表命令CS_RAS_C

14、AS_WE_A10 AP空操作指令( NOP )0111X刷新指令( REF/SELF)0001X读写停止指令( BST)0110X模式设置指令( MRS )00000/1激活指令( ACTIVE )00110/1读指令( READ )01010带预充的读指令( READA )01011写指令( WRITE )01000带预充的写指令( WRITEA )01001预充指令( PRE)00100仔细分析 SDRAM 的各个接口信号、时序要求和工作模式,将该 SDRAM 控制器的内 部进一步细化为多个功能模块,结构组成如图 5 所示,包括系统控制接口模块、 CMD 命令 解析模块、 命令相应模块、

15、数据通路模块。系统控制接口模块用于接收系统的控制信号,进 而产生不同的 CMD 命令组合;CMD 命令解析模块用于接收 CMD 命令并解码成操作指令; 命令响应模块用于接收操作指令并产生 SDRAM 的操作动作;数据通路模块则用于控制数 据的有效输入输出。图 5 SDRAM 控制器的结构图3.3 SDRAM 系统控制接口子模块设计该模块主要包括初始化和系统指令分析功能。 其工作过程如下: 由计数器控制在系统上 电约 200 s 后,先进行 SDRAM 的初始化配置工作,由一个 Precharge all back 指令完成 对所有 BANK 的预充,接着是多个 Refresh 指令,然后是模式

16、配置指令 LOADMODE ,完 成 SDRAM 的工作模式设置。之后进行控制器的初始化配置工作,先发出指令 LOADREG1 给控制器载入模式字,再发出 LOADREG2 指令载入控制器的刷新计数器值,完成控制器初 始化配置。上述初始化过程结束后, 系统指令分析机制才可接收并分析系统的读写信号和地址信息, 以及从下个模块反馈回来的 CMD_ACK 信号,并产生对应的 CMD 命令和 SADDR 地址信 息给 CMD 命令解析模块。 通过程序设置, 实现了根据初始化配置的参数来确定在读写到特定时刻发出 Precharge 或者 Refresh 的 CMD 指令,从而简化了系统的控制。而每当收到

17、 CMD_ACK 为1时,表示CMD 指令已经发出并有效, 此时就要发出 NOP 命令(CMD=000 )。 要说明的是, SADDR 是分时复用的,在初始化载入模式时, SADDR 用以传输用户自己定 义的模式字内容; 而在正常的读写期间, SADDR 作为地址线传输 SDRAM 所需的行、列和 块地址。代码示例如附件 1.3.4 CMD 命令解析和命令相应子模块该模块首先对 CMD 指令进行判断,其结果解释输出相应的操作指令进行响应。例如,CMD 为 001 时,则会输出 do_read 信号为 1;CMD 为 010 时,则会输出 do_write 信号 为 1 ,在同一时刻,只会输出一

18、种有效的操作指令。然后该模块根据操作指令,做出符合SDRAM 读写规范的操作动作,来进行用户期望的操作;给出数据选通信号OE ,来控制数据通路模块(写操作 OE为 1,读操作时 OE为0)。此外,该模块把系统非复用的地址 ADDR 处理为 SDRAM 复用的地址,分时送给 SA 、 BA。程序中地址复用的方法为:assign raddr=ADDRROWSTART+ROWSIZE-1:ROWSTART;/raddr为行地址为 BANK 地址assign eaddr=ADDRCOLSTART+COLSIZE-1:COLSTART;/eaddr为列地址 assign baddr=ADDRBANKST

19、ART+BANKSIZE-1:BANKSTART;/baddr在程序中, WRITEA 和 READA 的 CMD 指令实际隐含了 ACTIVE 命令,所以该模块在 收到 do_write 或 do_read 指令后,会先进行激活动作,经过初始化配置规定的 CAS 延迟 时间之后再进行读写动作。此外,该模块内含用以预设某些模式参数的模式寄存器,主要包括 3 类:第 1 类是 SDRAM 模式控制寄存器,在 LOADMODE 指令时,将该寄存器的值送入 SDRAM 的模式 寄存器中,以控制 SDRAM 的工作模式;第 2 类是 SDRAM 控制器的参数寄存器 (LOAD_REG1 ),使得 SD

20、RAM 控制器的工作方式与外部的 SDRAM 器件的工作方式匹配; 第 3 类是 SDRAM 的刷新周期控制寄存器,该寄存器预设用户定义的自动刷新计数值,用 于 SDRAM 的刷新周期预设。上述 3 类寄存器的预设值都是系统控制接口模块在初始化时 通过 SADDR 传送给来的。收到各类操作指令后,该模块会反馈给 CMD 命令解析模块 cmdack 信号为 1,并最终反馈到系统控制接口模块的CMDACK 信号为 1 ,如果没有收到任何操作指令,则 cmdack=0 , CMDACK 信号为 0。代码示例如附件 2.3.5 数据通路子模块该模块受 OE信号的控制,使数据的进出和相应的操作指令在时序

21、上同步。 OE为 1时, 数据可由 DQ 脚写入 SDRAM ,OE 为 0 时, 数据可从 SDRAM 的 DQ 脚读出。 因为是内部 模块,所以应该尽量避免使用双向端口, 因此在这里 DQ 的输入输出作用分别用端口 DQIN 和 DQOUT 代替,在顶层模块调用时再使用 OE 信号实现三态双向传输。代码示例如附件 3.3.6 SDRAM 控制器顶层模块实际上在大型工程开发过程中很少用到图形编辑工具, 因为连接线较多不易连接, 容易 显得杂乱, 可读性和可移植性都不强。 因此大多数模块调用都是通过代码形式来调用的, 读 者要熟悉并习惯使用在程序中调用另一个子模块的方式。附件 4 是 SDRA

22、M 控制器顶层模 块代码示例,通过这种调用方式将其他子模块融合在一个统一的大工程下。四、系统测试与分析4.1 整体效果图正面效果图背面效果图4.2 摄影效果图( FPGA 面板按下 KEY1)4.3 拍照效果图( FPGA 面板按下 KEY2)附件 1 :部分源码library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_arith.all;entity control_interface is generic(ASIZE:integer:=32);port(CLK:instd_logic;RESET_N:instd_logic;C

23、MD:instd_logic_vector(2 downto 0);ADDR:instd_logic_vector(ASIZE-1 downto 0);REF_ACK:instd_logic;CM_ACK:instd_logic;NOP:outstd_logic;READA:outstd_logic;WRITEA:outstd_logic;REFRESH:outstd_logic;LOAD_MODE :outstd_logic;SADDR:outstd_logic_vector(ASIZE-1 downto 0);SC_CL:outstd_logic_vector(1 downto 0);SC

24、_RC:outstd_logic_vector(1 downto 0);SC_RRD:outstd_logic_vector(3 downto 0);SC_PM:outstd_logic;SC_BL:outstd_logic_vector(3 downto 0);REF_REQ:outstd_logic;CMD_ACK:outstd_logic;);end control_interface;-signal declarations signal LOAD_REG1 signal LOAD_REG2 signal REF_PER signal timer signal timer_zero signal SAADR_int signal CMD_ACK_int signal SC_BL_intarchitecture RTL of control_interface isstd_logic;std_logic;std_logic_vector(15 downto 0);signed(15 downto 0);std_logic;std_logic_vector(ASIZE-1 downto 0); std_logic;std_logic_vector(3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论