首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的书签
我的微博
Search
1
在IC617中进行xa+vcs数模混仿
84 阅读
2
科普:Memory Compiler生成的Register file和SRAM有何区别?
74 阅读
3
virtuoso和empyrean alps模拟仿真和混仿教程
74 阅读
4
后仿中$setup,$hold与$setuphold
45 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
36 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vscode
linux
systemverilog
vcs
STM32
PyQT
EDA
FPGA
gvim
cadence
Alist
xilinx
UVM
uos
macos
package
MCU
risc-v
bennyhe
累计撰写
378
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的书签
我的微博
搜索到
168
篇与
的结果
2025-07-14
嵌入式系统数字图像采集接口电路设计 此博文包含图片 (2008-06-11 12:26:42)
摘要:本文介绍了两种用于嵌入式系统的数字图像采集接口方法,I/O接口和内存直接写入。在对采集速度要求不高的应用中,I/O接口方法可以简化接口电路设计,减少系统资源。对于要求实时进行图像处理的系统,直接写入内存法可以在不需要处理器干预的情况下,直接将图像数据写入系统存储区内,实现高速图像采集。关键词:嵌入式系统,图像采集,电路设计Abstract: In this paper, we present two different interfaces between digital a image sensors and a processor for embed systems, I/O mode and DMW (Direct Memory Write) mode. In I/O mode, processor can read image data through I/O port, and the interface is simple. In DMW mode, image data can be write into RAM directly while a processor is suspended.Key words: Embed System, Image Capture, Electronic Circuit一、引言随着半导体技术的飞速发展,具有图像功能的嵌入式应用愈来愈多。从数码相机、可视电话、多功能移动电话等消费产品到门禁、数字视频监视等工业控制及安防产品,图像采集和处理已成为重要的组成部分之一。图像采集需要进行同步信号的处理,比通常的A/D数据采集过程复杂,电路的设计也较为困难。传统PC上的图像采集卡都是在Philips、Brooktree等半导体公司提供的接口芯片基础上,由专业公司开发生产。在嵌入式系统中不同的处理器和图像传感器的信号定义及接口方式不同,没有通用的接口芯片。另外,利用系统中的现有资源设计图像采集电路,可以减少器件数量、缩小产品体积和降低系统成本。所以,通常嵌入式系统中要求自行设计图像采集接口电路。本文针对不同采集速度的要求,提出了两种图像采集接口电路的设计方法。目前市场上主流的图像传感器有CCD、CMOS两种器件,其中CMOS器件上世纪90年代产生,近年来得到了迅速发展。传感器的输出有模拟和数字两种。由于CMOS器件功耗小、使用方便,具有直接数字图像输出功能,作者在设计时选用了CMOS数字输出图像传感器件。其他方式器件的接口设计与此类似,将在讨论中说明。本文内容做如下安排:第二部分简述图像信号的特点;第三、四部分分别介绍I/O和内存直接写入两种接口设计方法;最后部分是讨论。http://www.eetchina.com/ARTICLES/2004AUG/4/2004AUG27_EMS_ID_DSP_TAONLINE121_F1.GIF二、图像信号介绍图1给出了采样时钟(PCLK)和输出数据(D)之间的时序关系。在读取图像数据时用PCLK锁存输出数据。除采样时钟(PCLK)和数据输出(D)外,还有水平方向的行同步信号(HSYNC))和垂直方向的场同步信号(VSYNC)。对于隔行扫描器件,还有帧同步信号(FRAME)。如图2,一帧包括两场。图2中窄的矩形条是同步脉冲,同步脉冲期间数据端口输出的数据无效。PLCK存在时,图像数据端口连续不断地输出数据。由于行之间以及场之间输出数据无效,在采集图像数据必须考虑同步信号,读取有效数据才能保证图像的完整性。http://www.eetchina.com/ARTICLES/2004AUG/4/2004AUG27_EMS_ID_DSP_TAONLINE121_F2.GIF三、I/O接口设计对于MCU、DSP处理器,I/O是最方便的访问方式之一。以I/O方式读取图像数据不仅可以简化电路设计,而且程序也很简单。但由于读取每一个像素都要检测状态,在处理器速度低的情况下,读取图像慢。在处理器速度快或图像采集速度要求不高的应用中,I/O接口方式是一个较好的选择。1、电路原理和结构在图像传感器和处理器之间,利用两个锁存器分别锁存状态和图像数据,处理器通过两个I/O端口分别读取。图3中,在采样时钟的上升沿数据锁存器保存传感器输出的图像数据,当处理器通过I/O口读取图像时,数据锁存器输出数据。其它情况下,锁存器输出处于高阻状态。处理器通过状态锁存器读取同步信号和图像就绪(Ready)指示信号。在数据锁存器保存图像数据的同时,状态锁存器产生Ready信号(从‘0’到‘1’)。处理器读取图像数据时,Ready信号自动清除(从‘1’到‘0’)。处理器读取状态时锁存器驱动总线,其他情况下输出处于高阻状态。http://www.eetchina.com/ARTICLES/2004AUG/4/2004AUG27_EMS_ID_DSP_TAONLINE121_F3.GIF2、图像读取流程要保证图像的完整性就必须从一场图像的第一行开始读取,对于隔行扫描输出的图像则必须从一帧的第一行开始读取。读取每行图像数据时,则从该行的第一个像素开始。因此,在读取图像数据前应先判断场和行的起始位置。图4是通过I/O接口方式读取图像数据的流程。读取每个像素数据前先查询数据状态,如果数据已准备好则读取数据。3、同步信号检测为了简化电路设计,用处理器直接读取同步信号,然后找出场和行的起始位置。http://www.eetchina.com/ARTICLES/2004AUG/4/2004AUG27_EMS_ID_DSP_TAONLINE121_F4.GIF从图2可以看出,处理器读取同步信号时,信号可能处在同步脉冲状态(‘1’)或正常状态(‘0‘)。对于那些同步信号反向的器件,则分别为‘0’和‘1’。如果信号处于同步脉冲状态,第一次检测到的正常状态就起始位置。如果信号处于正常状态,则首先检测到脉冲状态,然后用同样的方法确定起始位置。通过上述方法可以检测出场的起始位置和行起始位置。4、用VHDL设计锁存器在应用中,以上两个锁存器的功能和其他逻辑集中在一起,用可编程逻辑器件实现。下面分别为它们的VHDL表示。设DO(0-7)是锁存器输出端,DI(0-7)是锁存器输入端,DM(0-7)是中间状态,Data_R是数据读信号(低电平时有效),则数据锁存器的VHDL描述为:Process (reset, PCLK) -- 锁存图像数据BeginIf reset='0' thenDM<="00000000"; -- 清除数据Else if PCLK'event and PCLK='1' thenDM<=DI; -- 锁存数据End if;End process;Process (DM, Data_R) -- 读取图像数据BeginIf Data_R='0' thenDO<=DM; -- 输出图像数据ElseDO<="ZZZZZZZZ" -- 输出高阻End if;End process;进一步设数据有效状态为Dstatus, 状态读写信号为Status_R (低点平时有效),则状态锁存器的VHDL描述为:Process (reset, PCLK,Data_R) -- 数据有效状态控制BeginIf reset='0' or Data_R='0' thenDstatus<='0'; -- 清除状态Else if PCLK'enent and PCLK='1' thenDstatus<='1'; -- 设置状态End if;End process;Process (Dstatus, Status_R) --读取状态和同步信号BeginIf Status_R='0' thenDO0<=Dstatus;DO1<=VSYNC;DO2<=HSYNC;DO3<=FRAME;ElseDO<="ZZZZZZZZ"; -- 高阻状态End if;End process;四、内存直接写入接口设计在处理器速度较慢且图像数据输出的频率不能降低的情况下,采用上述I/O接口方法不能得到完整的图像。另外,有些应用中要求能够实时采集图像。为此,我们设计了高速数据图像采集方法―内存直接写入法。由于SRAM访问控制简单,电路设计方便,被大量嵌入式系统采用,本文以SRAM作为存储器。1、电路原理和结构内存直接写入方法通过设计的图像采集控制器(以下简称控制器)不需处理器参与,直接将图像数据写入系统中的内存中,实现高速图像采集。图5是接口结构图,当需要采集图像时,处理器向控制器发出采集请求,请求信号capture_r从高到低。控制器接到请求脉冲后,发出处理器挂起请求信号HOLD,使处理器的外总线处于高阻状态,释放出总线。控制器收到处理器应答HOLDA后管理总线,同时检测图像同步信号。当检测到图像开始位置时,控制器自动产生地址和读写控制信号将图像数据直接写入内存中。图像采集完成后,控制器自动将总线控制权交还处理器,处理器继续运行,控制器中与采集相关的状态复位。控制器可以根据同步信号或设定的采集图像大小确定采集是否完成。http://www.eetchina.com/ARTICLES/2004AUG/4/2004AUG27_EMS_ID_DSP_TAONLINE121_F5.GIF在图5中,控制器包括同步信号检测、地址发生器、SRAM写控制器、总线控制器和处理器握手电路等主要部分。同步信号检测确定每一场(帧)和每一行的起始位置;地址发生器产生写SRAM所需的地址;SRAM写控制器产生写入时序;总线控制器在采集图像时管理总线,采集完成后自动释放;处理器握手电路接受处理器命令、发总线管理请求和应答处理器。2、SRAM写控制时序采集图像过程中,控制器自动将数据写入到硬件设定的内存中。写内存时,控制器产生RAM地址(A)、片选信号(/CS)、读信号(/RD)和写信号(/WD),同时锁存传感器输出的数据并送到数据总线(D)上。每写入一个数据后,地址(A)自动增1。采集时/CS保持有效(‘0’)状态而/RD处于无效状态(‘1’)。地址A的变化必须与/WD和数据锁存器协调好才能保证图像数据的有效性。http://www.eetchina.com/ARTICLES/2004AUG/4/2004AUG27_EMS_ID_DSP_TAONLINE121_F6.JPG图6是控制器产生的SRAM信号时序图。用PCLK作为地址发生器的输入时钟,且在其上升沿更新地址值。同样,在PCLK的上沿锁存数据并输出到总线上。将PCLK反相,作为/WD信号,使得在/WD的上升沿地址和数据稳定,确保写入数据的有效性。3、控制器主要功能的VHDL描述描述控制器中全部功能的VHDL代码较长,而且有些部分是常用的(如计数器等)。图像采集状态产生和同步信号的检测是其中重要的部分。下面介绍这两部分的VHDL描述。图像采集状态 capture_s:处理器的采集请求信号capture_r使capture_s从‘0’到‘1’,场地址发生器(计数器)的溢出位vcount_o,清除capture_s。process (capture_r, reset, vcount_o)beginif reset='0' or vcount_o='1' thencapture_s<='0'; -- 清除else if capture_r'event and capture_r='0' thencapture_s<='1'; -- 置状态位end if;end process;同步信号检测:只有在采集状态capture_s有效时(‘1’)才检测场同步信号,场同步信号下降沿置场有效状态(vsync_s),场地址发生器溢出位vcount_o清除场有效状态。只有在vsync_s有效情况下才检测行同步信号,行同步信号下降沿置行有效状态(hsync_s),行计数器溢出信号hcount_o清除行状态。只有在行状态有效的情况下计数器才工作,且将数据写入RAM。Process (capture_s,reset,vcount_o, vsync)BeginIf reset='0' or vcount_o='1' or capture_s='0' thenVsync_s<='0'; -- 清除Else if vsync'event and vsync='0' thenVsync_s<='1'; -- 置状态位End if;End process;Process (vsync_s, reset, hcount_o, hsync)BeginIf vsync_s='0' or reset='0' or hcount_o='1' thenHsync_s<='0'; -- 清除Else if hsync'event and hsync='0' thenHsync_s<='1'; -- 置状态位End if;End process;五、讨论我们在基于TI公司的TMS320C3X系列DSP开发的嵌入式指纹图像处理模块中分别用上述两种方法成功实现了指纹图像的采集。采用I/O接口方式最关键的是要求处理器的频率远高于图像数据输出的频率。例如,如果处理的指令周期为20ns,读取每个数据需要10个指令周期,则数据的输出频率不能超过5MHz,它低于一般的CMOS图像传感器件最快的数据输出频率。例如国内使用较多的OV7610和OV7620,其正常输出数据频率为13.5MHz。在应用过程中,通常改变传感器中寄存器的设置值,降低其数据输出频率。本文选用的是CMOS数字输出图像传感器。对于模拟视频信号,在设计时应加同步分离和A/D转换电路。图像采集的数字接口和逻辑控制与本文相同。在我们系统中所采集的是单色图像,如果采集彩色图像逻辑设计是相同的所不同的只是数据宽度和后期处理方式。具体应用中可根据需求对上述设计进行修改以满足不同的要求。作者:林金龙北京大学软件学院嵌入式系统系Email:linjl@ss.pku.edu.cn
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
基于FPGA的视频图像画面分割器的设计 此博文包含图片 (2008-06-11 12:25:41)
基于FPGA的视频图像画面分割器的设计齐本胜,付富壮,杨书生(河海大学计算机及信息工程学院 江苏常州 213002)早期的多画面分割器设计使用了很多的模拟器件,这时的电路开发周期长,产品的调试,修改升级比较困难。成本较高。在这里采用FPGA芯片,完成图像的处理和电路各个部分工作的协调。从而提高系统的集成度和性能。1 系统工作原理系统结构如图1所示,从系统结构图可以看出,系统主要包括视频信号输入模块,视频信号处理模块和视频信号输出模块等3个部分组成。各个模块主要功能为:视频输入模块将采集的多路视频信号转换成数字信号送到FPGA;视频处理模块主要有FPGA完成,根据需要对输入的数字视频信号进行处理;视频输出模块将FPGA处理后的信号转换成模拟信号输出到显示器。 2硬件电路设计本设计是将多路视频信号最终实现在一个显示器显示的装置。硬件部分主要分为3个部分进行设计,第一部分是视频数据的采集,并转换成数字信号;第二部分是FPGA接收的多路视频信号,根据需要进行信号抽取和合成。还要通过模拟I2C接口对视频编解码芯片进行配置。第三部分是将合成的信号D/A转换后送显示器输出。其中视频采集部分主要由摄像头和视频解码芯片SAA7113组成。视频输出部分由视频编码芯片SAA7121组成。file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image1.jpg2.1视频解码模块该部分电路的主要功能是将输入的模拟视频信号转换成数字视频信号供FPGA器件处理,本设计选用的芯片是2片飞利浦的SAA7113H芯片,可实现4画面分割。SAA7113是Philips公司的一种高集成度视频解码芯片,他支持隔行扫描和PAL BGHI,PALN,PALM,NTSCM,NTSC N,NTSC4.43NTSC-Japan和SECAM多种数据输入格式,可通过其I2C接口对芯片内部电路进行控制该芯片具有如下特点: 支持4路模拟输入,内置信号源选择器;有2个模拟预处理通道;内置2个模拟抗混叠滤波器;2个片内9位视频A/D转换器;行/场同步信号自动检测;多种数据输出格式。经过芯片处理过的模拟信号以CCIR656标准[1]YUV4∶2∶2格式的形式输出送往FPGA处理。视频解码电路图[2]如图2所示。file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image2.jpg2.2 FPGA器件及PROMFPGA[3]芯片作为系统的核心处理芯片。经过SAA7113H模数转换后的信号输入到FPAG在数字领域对信号进行处理。根据画面分割的要求,FPGA对多路视频信号进行抽取,然后将抽取的信号存储到存储器SRAM中,然后把提取的各路视频数据合成一帧数据。并模拟I2C接口对视频编解码芯片进行初始化配置。本设计采用Spartan3系列中的XC3S400PQ208型号。这款芯片采用90 nm工艺,系统门数(System Gates)40万门,等效逻辑单元(Equivalent Logic Cells)8064,分布式RAM容量(Distributed RAM Bits)56 kb,块RAM容量(Block RAMBits)288 kb,专用乘法器(Dedicated Multipliers)5个,数字时钟管理单元(DCM)4个,最大的用户I/O数(MaximumUser I/Os)141个。工作频率高达200 MHz,足以完成设计需要。PROM主要负责向FPGA加载程序,因为FPGA内部的SRAM掉电时不能保存自身配置。本设计选用Xilinx公司用于Spartan3系列的专用PROM芯片XCF02S。FPGA的编程数据存储在PROM中。2.3 SRAMSRAM主要用于输出的暂存图像数据,由于视频数据量比较大,虽然FPGA为高速器件但是由于视频数据量比较大,视频数据的处理会造成视频延迟。造成显示器的视频画面的不连贯。本设计采用ISSI公司的IS61LV25616的SRAM。file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image3.jpg2.4视频编码模块SAA7121是视频编码芯片,主要功能是把标准YCbCr(CCIR 656)或者MPEG格式数据编码成复合视频输入信号(CVBS)或分离视频信号S-VIDEO。SAA7121支持NTSC-M,PALB/G和子标准,并具有Y,C和CVBS三个信号的数模转换器。基本编码函数由副载波生成、彩色调制和同步信号内插组成。SAA7121提供有I2C总线接口,可按主动方式或从动方式工作。视频编码电路如图3所示。file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image4.jpg3 软件设计对于不同路数的画面分割要求,软件编程复杂程度是不同的,但是编程的思想都是相同的。都是将需要实现的视频信号提取出来,然后再按照视频显示格式的要求重新合成新的一帧数据送视频编码模块,最终使得多路视频图像在一个显示器上显示出来。 下面以最简单的一种情况为例来说明视频合成的原理。输入视频信号为1路视频信号,要提取的也就是l帧数据的有效部分。而其他的数据部分,帧合成的时候插入。需要插入的数据包括:定时基准信号和消隐信号。程序流程图如图4所示。3.1 有效视频信号提取模块在有效视频选择模块,对经过SAA7113H芯片A/D转换成8位数据送FPGA,对其中的有效数据检测,通过检测每行的SAV信号,来判断那些是有效行数据,然后将有效行SAV后的1440个字节数据的行有效视频数据提取出来。file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image5.jpg3.2帧合成模块帧合成也就是根据画面分割要求按照帧格式重新组合成一帧数据。对于每一行数据,先判断是否有效行。对场消隐行,整行数据都再生插入;有效视频行,插入SAV,EAV和行消隐数据。再生的数据和存储器中的有效数据分时的输出到SAA7121视频编码芯片,然后输出到显示器。3.3仿真结果如图5所示为实现一帧视频数据抽取和合成Model-sim仿真[4]图,其中clock为系统时钟,reset为系统复位信号,ad_clock,ad_data,是经过SAA7113输出的8位数据。addr_r,sram_addr,wrt_sram_addr,分别是读写存储器地址,和经过分时选择后的存储器操作地址。sram_data是存储器数据,da_clock和da_data分别是送SAA7121的时钟和数据。从仿真波形可以看出对存储器读写时序是正确的。4 结 语多路画面分割器的原理都是一样的,只是要增加视频信号的路数,硬件上要多加A/D转换器和摄像头。软件方面,就要根据画面分割要求,要对多路视频信号进行抽取,然后合成一帧数据,再经过D/A转换器输出。视频路数越多则软件就更复杂一些。本文摘自《现代电子技术》
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
基于DSP的纸币号码识别系统 此博文包含图片 (2008-06-11 12:22:59)
基于DSP的纸币号码识别系统沈阳工业大学信息学院视觉检测技术研究所 苑玮琦,郑传琴1 引言近年来,钱币、特别是纸币被抢劫事件不断发生,严重影响了社会治安,也使银行在经济上受到了严重的损失。如果被抢劫的钱币不能在市场上流通,将从一个方面抑制银行抢劫事件的发生。其中一种解决方案是记录每一捆纸币的号码,将被抢劫的纸币号码建立一个数据库。在货币流通市场提供一种纸币号码自动识别装置,比如说与点钞机结合,将货币号码识别数据与被抢劫号码数据库比较,一旦有相同号码出现,便可确认目前流通的钱币为被抢劫的钱币,从而限制其流通,同时也有利于抢劫案件的侦破。另外,由于纸币号码的唯一性,通过识别纸币上的号码,可以帮助识别假币。国外有一种验钞打号机,可以对典型的纸币,比如美元、英镑等进行自动识别和号码打印,这种装置的典型识别速度为1张/秒。不过还没有点钞机附带号码自动识别装置的文献报道。近些年,国内也有一些单位研制开发纸币号码自动识别装置,例如南京航空航天大学开发了一种基于单片机的纸币号码识别系统[3],利用线阵CCD实现纸币图象的采集,利用单片机实现号码的定位与识别。其主要问题是难以提高号码的识别速度。哈尔滨工业大学开发了一种基于DSP的纸币号码识别系统[4],其识别速度为8张/秒,但该速度为在PC机上的仿真结果,实际样机没有实现。此外,该系统采用CIS(即接触式线型图象传感器)获得纸币图像信号,存在传感器磨损问题。针对以上情况,本文给出一种基于DSP的纸币号码识别系统,利用面阵CCD摄象机采集纸币号码图象,即每秒采集25幅图象,而目前的点钞机点钞速度为每秒十几张左右,从而可以实现与点钞机的配合使用。该系统由以下几个部分组成:(1)利用Philip公司专业视频解码器SAA7113实现纸币号码图像的数字化;(2)利用TI公司的数字信号处理器TMS320VC5410实现数字纸币号码图像的采集和处理;(3)利用TI公司的异步串行接口芯片TL16C550完成整个系统与PC机之间的通信。2 硬件设计原理http://www.eccn.com/xsj06/image/xsj061413_1.jpg基于DSP的纸币号码识别系统的工作原理:从面阵CCD摄像头摄取的纸币模拟视频图像,经专业视频解码器转换为数字图像。数字视频信号经图像缓存FIFO存入DSP的数据空间,作为后续图像识别的数据来源。视频解码器同时分离出行场同步信号和象素时钟参考信号,作为图像缓存模块的控制信号。为了保存和记录号码,经识别后的纸币号码数据存储在快速闪烁存储器FLASH中,或根据需要通过异步串口传送给PC机。复杂可编程逻辑器件CPLD在整个系统中起到全局逻辑控制和对采集的纸币图像实现开窗处理的作用。系统的总体结构框图如图1所示。3 图像采集模块3.1视频解码芯片SAA7113在系统中的应用SAA7113是一种高集成度并且支持隔行扫描、多种数据输出格式的视频解码器,内置的I2C界面提供了简单的对芯片内部电路的控制功能。对SAA7113的控制主要包括对输入模拟信号的预处理、色度和亮度的控制,输出数据格式及输出图象同步信号的选择控制等。在整个系统中对图象的识别处理主要是针对灰度图像进行的,在SAA7113所提供的多种数据输出格式中,RAW格式在8位输出管脚上直接输出与象素时钟相对应的象素灰度值,此种数据格式与其它格式相比对灰度图像的采集将更直接。http://www.eccn.com/xsj06/image/xsj061413_2.jpgSAA7113的输出RTS0和RTS1是多功能复用管脚,通过对子地址寄存器SA12写入不同的控制字,可将两输出管脚配置为行同步、帧同步、奇偶场同步等不同的信号。在本系统中将RTS0设置为行同步信号,RTS1设置为场同步信号,同时SAA7113还输出象素时钟的同步参考信号LLC。通过I2C总线协议对SAA7113的各个控制寄存器进行设置,使其满足系统要求。由于DSP芯片是处理型的器件,它的控制能力比较弱,通用I/O口比较少,而单片机具有很好的控制功能,因此对SAA7113的初始化工作使用AT89C51单片机来完成。AT89C51单片机内部无硬件I2C总线接口,在此将单片机的P1.0口设置为串行数据线SDA,P1.1设置为串行时钟线SCL,通过软件模拟I2C总线,对视频解码器SAA7113进行初始化,其硬件原理如图2所示。3.2使用CPLD实现对图像的开窗处理利用象素时钟LLC2和行同步信号HS实现行截取的VHDL程序:process(LLC2,HS)variable temp: std_logic_vector(10 downto 0);beginif(LLC2'event and LLC2='1') thenif(HS='1' ) then temp:=temp+'1';if(temp>80 and temp<241)then Href<='1';else Href<='0';end if; else Href<='0';end if; end if;end process;从SAA7113输出的数字视频图像为整幅图像,可是对识别有用的图像大小为40x200,为减少图像数据的存储量和处理量。通过调整CCD摄像头与点钞机之间的位置,利用视频解码器的行、场同步信号HS、VS和象素时钟参考信号LLC,使用VHDL语言,对感兴趣的图像区域进行开窗处理。具体做法为:在场信号VS为高的期间,对行信号HS进行计数, 使感兴趣的图像期间的场信号输出为高,在其它区域其场信号为低,这样得到新的场信号VREF。与场截取相类,利用行信号HS和象素时钟LLC2,得到新的行信号HREF。这样通过两个计数器实现了图像的开窗处理。本文给出了对图像进行开窗处理的框图,并给出了行截取的VHLD程序,对列的截取VHDL程序与行截取相类似。3.3利用DSP实现图像的采集http://www.eccn.com/xsj06/image/xsj061413_3.jpgSAA7113上电初始化之后将一直处于工作状态,其象素时钟参考信号LLC为27MHz,为象素时钟的二倍,即象素时钟为13.5MHz。这么快的时钟频率如果直接进行图像采集的话将出现数据丢失的现象。本文采用了先进先出阵列FIFO作为图像缓存,将图像数据先存入FIFO中,通过DSP读取FIFO中的图像数据,来完成图像的采集。CCD摄像头输出PAL制,场频为50Hz的视频信号,其行周期为64us,场周期为20ms。在本系统中图像大小为40x200,通过示波器可看到截取后的场周期为2.56ms,而DSP的读写周期为10ns,通过DSP的读写程序所需时间大约为3ms左右,与点钞机相连接,将有充足的时间实现图像的采集。由于FIFO是没有片选的,对FIFO控制主要是对其读写信号有效的控制。FIFO写有效经CPLD图像截取后的行场同步信号以及象素时钟信号来控制。在FIFO写完一场图像数据之后,利用半满信号作为DSP的中断信号,通过中断服务子程序将图像数据存入DSP的数据空间作为识别处理的数据来源。对FIFO的读控制通过将其映射到DSP的I/O空间来实现,为了与其它器件进行区分使用地址线A15和A14参与译码。当FIFO的读信号为高时,数据总线为高阻状态,从而实现总线隔离。http://www.eccn.com/xsj06/image/xsj061413_4.jpg4 DSP存储空间的设计DSP芯片由于其改进的哈佛结构,处理速度快,特殊的DSP指令和快速地实现各种数字信号处理算法的特点,广泛地应用于各种图像处理系统中。在本系统选用TMS320VC5410作为中央处理器,该芯片的读写周期为10ns,具有丰富的片上资源[2]。根据纸币号码图像大小和号码识别算法的要求,本系统在DSP外扩了一片64Kx16的RAM,其中0x0000—0x3fff的存储区映射到DSP的程序空间,0x8000—0xffff的存储区映射到DSP的数据空间。同时外扩了一片256Kx16的FLASH芯片SST39VF400A,根据DSP系统程序加载的特点,将FLASH地址为0x8000—0xffff的存储区在程序下载的过程中映射到DSP的数据空间,在程序加载的过程中映射到DSP的程序空间,其空间的区分通过DSP的通用I/O口XF来进行控制。FLASH的地址为0x0000—0x7fff和0x10000—0x1ffff和0x20000—0x2ffff的存储区映射到DSP的程序空间,作为识别的号码结果的记录存储而用。5 利用TL16C550实现与PC机之间的通信在图像采集调试及对号码的算法调试中,为了检验图像效果,需将图像在PC机中呈现出来。由于TMS320VC5410的串口是同步串行口,而与PC机通信却是异步串行收发,本文采用了异步串行收发器TL16C550来实现DSP与PC机之间的通信。TL16C550是TI公司生产的一种具有异步串行通信功能的大规模集成电路,通过对寄存器选择输入端A0、A1、A2的不同配置来实现对该器件的控制。在本系统中将其映射到DSP的I/O空间0x8000的地址,将DSP的地址线A2、A1、A0与550的寄存器选择控制引脚A2、A1、A0相连,即通过对DSP的I/O空间地址为0x8000-0x8007的空间进行寄存器的访问。在TL16C550中接收和发送使用的是同一个中断信号INTRPT,对数据的接收和发送通过使能不同的中断,通过中断方式实现系统与PC机之间的通信。6系统的软件设计采用手工编写的汇编语言程序虽然具有执行速度快的优点,但用汇编语言编写程序特别是识别算法的程序将是比较费时费力的[4]。为了提高程序开发的效率,采用TMS320C54x的C语言进行软件开发[5]。整个系统的软件流程图如图6所示:http://www.eccn.com/xsj06/image/xsj061413_5.jpg目前字符识别的算法很多,有背景特征点法,模板匹配法,结构特征分析判断法,神经网络识别算法等。结构特征分析判断法从字符的结构本身出发,检测号码的结构特征,具有快速分类的特点,根据系统速度的要求,本文对采集到的号码图像就采用了此种识别算法来完成纸币号码的识别。7结束语本系统通过使用TI公司的数字信号处理器实现纸币号码的采集,使用Altera公司的复杂可编程逻辑器件CPLD实现对图像的截取,图像采集效果非常好。该系统除有通用图像处理系统的功能外,特别适合动态图像的处理,具有极高的实时性。
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
SDRAM通用控制器的FPGA模块化设计 此博文包含图片 (2008-06-11 12:21:00)
SDRAM通用控制器的FPGA模块化设计天津大学精密仪器与光电子工程学院生物医学工程系 李刚 李智引言同步动态随机存储器(SDRAM),在同一个CPU时钟周期内即可完成数据的访问和刷新,其数据传输速度远远大于传统的数据存储器(DRAM),被广泛的应用于高速数据传输系统中。基于FPGA的SDRAM控制器,以其可靠性高、可移植性强、易于集成的特点,已逐渐取代了以往的专用控制器芯片而成为主流解决方案。然而,SDRAM复杂的控制逻辑和要求严格的时序,成为开发过程中困扰设计人员主要因素,进而降低了开发速度,而且大多数的基于FPGA的SDRAM控制器都是针对特定的SDRAM芯片进行设计,无法实现控制器的通用性。本文介绍一种通用SDRAM控制器的FPGA模块化解决方案。SDRAM控制逻辑复杂,命令种类多样,需要周期性刷新操作、行列管理的等多重操作。SDRAM首先要进行初始化操作。在上电后等待100ns,至少执行1条空操作,然后对所有页执行预充电操作,接着向各页发出两条刷新操作指令,最后执行SDRAM工作模式的设定LMR命令用来配置SDRAM工作模式寄存器。SDRAM工作寄存器可以根据具体应用的需要进行设置。初始后的SDRAM在得到了RAS、CAS、WE的值后开始执行相应的命令。在对SDRAM进行读、写过程中,必须要先进行页激活ACT操作,保证存储单元是打开的,以便从中读取地址或者写入地址,然后通过预充电PHC命令实现来关闭存储单元。在进行写操作时,内部的列地址和数据都会被寄存,而进行读操作时,内部地址被寄存,数据的存储则发生在CAS延迟时间(通常为1~3个时钟周期)后。最后,操作终止:当SDRAM顺次的进行读、写操作后,当到达到突发长度或者突发终止指令BT出现时,SDRAM将终止其操作。模块化的SDRAM控制器设计在SDRAM控制器的FPGA实现方案中,采用了:FPGA的自底向上的模块化设计思想,首先分析顶层模块的功能,再将其功能分类细化,分配到不同的子模块去实现,然后自底向上的先逐步完成各个子模块的设计,最后将子模块相互连接生成顶层模块。经过分析,SDRAM控制器应实现的功能有:为SDRAM提供刷新控制以保持SDRAM中的数据;对主机的命令进行仲裁,将下一步要执行的命令翻译成可与SDRAM连接的信号;为SDRAM的读、写生成数据路径。因此,根据SDRAM的指令操作特点将SDRAM控制器划分为接口控制模块、命令生成模块和数据路径模块三个主要模块(图1)。http://www.eccn.com/xsj07/image/xsj073613_1.jpghttp://www.eccn.com/xsj07/image/xsj073613_4.jpg下面,对其接口信号进行介绍,需要注意的是,为了实现该控制器的通用性,ADDR、DATAIN、DATAOUT、DQ、DOM信号设计成可根据SDRAM的容量改变的形式。与主机接口信号:CLK(系统时钟);RESET(系统复位);CMD2:0;CMDACK(指令应答信号);ADDRASIZE-1:0】(地址线);DATAIN/DATAOU[DSIZE-1:0;DM[(DSIZE/8)-1:0】(数据掩码)。与SDRAM接口信号:SA(地址线);BA(页地址);CS-N(片选信号);CKE(时钟使能信号);RAS、CAS、WE(命令控制信号);DQM(DSIZE/8)-1:0;DQ[DSIZE-1:0】(双向数据线)。各个模块的设计与实现接口控制模块接口控制模块主要实现的功能是将CMD[2:0]翻译成接口指令和对刷新计数器的控制指令。接口模块在工作过程中首先通过要通过状态机来完成对CMD[2:0]的翻译。在VHDL程序中声明一个用户自定义类型states,根据CMD[2:0】输入来决定状态的转移,完成对CMD[2:0】的解码,部分代码如下:http://www.eccn.com/xsj07/image/xsj073613_2.jpg另外,SDRAM需要周期性刷新操作以保持数据。在模块的程序设计中,刷新周期的控制通过一个计数器来完成,到达规定的计数周期数时,接口模块通过REF_REQ信号向SDRAM发出刷新请求。直到SDRAM完成刷新操作,发出REF_AcK刷新应答信号,计数器才重新赋值,开始下一次的计数。命令生成模块命令生成模块实现对输入的SDRAM指令请求进行仲裁判断的功能,并将仲裁后要执行的指令解码成sDRAM需要的RAS、CAS等信号,从而实现指令对SDRAM的控制。仲裁机制是SDRAM控制器设计不可或缺的一个环节。仲裁机制实现要遵循如下规则:·sDRAM在每一刻只有一个指令在执行;·先到的指令先执行,如果刷新请求到来时,其它命令正在执行中,要等到当前命令执行完成后,才能执行刷新指令;·其它指令和刷新请求同时到来时刷新操作先执行。经过仲裁判断后,指令将传入命令生成器。命令生成器不仅要把指令解码成SDRAM需要的RAS、CAS等信号,同时还要对命令执行的时间进行控制。下面的例程仅供参考。http://www.eccn.com/xsj07/image/xsj073613_3.jpg下面介绍输入的指令为writea和reada指令时模块所进行的操作。当SDRAM的writea和reada指令到来时,将引发一系列指令的执行,和其它指令相比需要更多的附加时间。所以,在这种情况下需要声明第二个移位寄存器rw_shift来完成这两个指令的附加时间的实现。rw_shift的工作原理和第一个移位寄存器command_delay是一样的,需根据读、写的时间决定rw_shift的位数。最后一个移位寄存器oe_shift用来为数据通道生成数据输入、输出使能信号oe。对于非页模式的读写来说,oe保持有效的时间取决于突发长度,需要注意的是,读操作时,oe有效的起始时间取决于CAS延时时间,而对于写操作,则在写指令开始时oe就是有效的。数据路径模块数据路径模块的作用是在writea和reada命令期间生成数据的路径。在用VHDL语言程序中,用简单的赋值语句就可以实现数据路径模块。通用性的实现根据SDRAM控制器的FPGA模块化设计方案生成的FPGA控制器易于修改和扩展,具有可通用的特性。在具体的应用中,针对不同的SDRAM,并不需要更改SDRAM控制器结构,只要根据datasheei中的sDRAM的容量将地址线数和数据的位数做相应修改,再依据SDRAM的时序和读、写速度更改接口控制模块中的时间信号的周期,如刷新周期、命令生成模块中移位寄存器的位数和初值等,这样就可以对不同的SDRAM进行控制。最后,生成的SDRAM控制器顶层模块如图2所示。为了证明该控制器设计方案的可行性和通用性,在Altera公司的Cyclone系列FPGA--EP1C6Q240C8中生成SDRAM控制器,根据数据手册中SDRAM的参数对控制器各模块的VHDL语言程序做相应的改动,实现了对三星公司的8MByte SDRAM K4S641632E和2MByteSDRAM K4S161622D的控制,均达到了100MHz的读、写速度。结语本方案采用的模块化思想为SDRAM控制器的开发提供了一种层次分明、易于扩展的设计思路。实验结果表明,该控制器设计紧凑,维护升级方便,易于实现对SDRAM的通用化控制,这无疑将极大的提高SDRAM应用的开发速度。
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
YUV标准 (2008-06-10 14:46:22)
Sensor出来的YUV数据是有固定的格式的,例如YUYV、YVYU、UYVY、VYUY,根据这些格式就可以分离它们得到Y、U、V分量。例如,如果出来的数据是YUYV格式的话,那么,数据buffer中的第一个字节就是第一个象素的Y值,第二个字节就是第一个象素和第二个象素的U值,第三个字节就是第二个象素的Y值,第四个字节就是第一个和第二个象素的V值,第五个字节就是第三个象素的Y值,。。。依次类推。YUV 4:2:2 每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。 下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] ------1存放的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 V3 ------2映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3] ----3这个是我在网上看到的,现在存到ram中的是第3种形式么?如果是第3种,那么第一个字节是Y0,第2个字节是U0+V1,即各4位,这样理解对不对?YUV开放分类: 网络、计算机、手机、色彩学、影像学目录? 概述? 优点作用? YUV主要的采样格式? 各种YUV格式(图)概述 YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。其中的Y,U,V几个字母不是英文单词的组合词,Y代表亮度,uv代表色差,u和v是构成彩色的两个分量。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有 Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的相容问题,使黑白电视机也能接收彩色电视信号。优点作用 YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。 采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。 YUV与RGB相互转换的公式如下(RGB取值范围均为0-255)︰ Y = 0.299R + 0.587G + 0.114B U = -0.147R - 0.289G + 0.436B V = 0.615R - 0.515G - 0.100B R = Y + 1.14V G = Y - 0.39U - 0.58V B = Y + 2.03U 在DirectShow中,常见的RGB格式有RGB1、RGB4、RGB8、RGB565、RGB555、RGB24、RGB32、ARGB32等;常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。 YUV主要的采样格式 主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值),每 2x2 个点保存一个 Cr 和Cb 值, 图像在肉眼中的感觉不会起太大的变化。所以, 原来用 RGB(R,G,B 都是 8bit unsigned) 模型, 4 个点需要 8x3=24 bites(如下图第一个图)。而现在仅需要 8+(8/4)+(8/4)=12bites, 平均每个点占12bites(如下图第二个图)。这样就把图像的数据压缩了一半。 上边仅给出了理论上的示例,在实际数据存储中是有可能是不同的,下面给出几种具体的存储形式: (1) YUV 4:4:4 YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。 下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] 存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3 (2) YUV 4:2:2 每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。 下面的四个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] 存放的码流为:Y0 U0 Y1 V1 Y2 U2 Y3 V3 映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3] (3) YUV 4:1:1 4:1:1的色度抽样,是在水平方向上对色度进行4:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存。 下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] 存放的码流为: Y0 U0 Y1 Y2 V2 Y3 映射出像素点为:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2] (4)YUV4:2:0 4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存。 下面八个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] [Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8] 存放的码流为:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8 映射出的像素点为:[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7] [Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7] 各种YUV格式(图) YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。表2.3中的YUY2到Y211都是打包格式,而IF09到YVU9都是平面格式。(注意:在介绍各种具体格式时,YUV各分量都会带有下标,如Y0、U0、V0表示第一个像素的YUV分量,Y1、U1、V1表示第二个像素的YUV分量,以此类推。) ¨ YUY2(和YUYV)格式为每个像素保留Y分量,而UV分量在水平方向上每两个像素采样一次。一个宏像素为4个字节,实际表示2个像素。(4:2:2的意思为一个宏像素中有4个Y分量、2个U分量和2个V分量。)图像数据中YUV分量排列顺序如下: Y0 U0 Y1 V0 Y2 U2 Y3 V2 … ¨ YVYU格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同: Y0 V0 Y1 U0 Y2 V2 Y3 U2 … ¨ UYVY格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同: U0 Y0 V0 Y1 U2 Y2 V2 Y3 … ¨ AYUV格式带有一个Alpha通道,并且为每个像素都提取YUV分量,图像数据格式如下: A0 Y0 U0 V0 A1 Y1 U1 V1 … ¨ Y41P(和Y411)格式为每个像素保留Y分量,而UV分量在水平方向上每4个像素采样一次。一个宏像素为12个字节,实际表示8个像素。图像数据中YUV分量排列顺序如下: U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 … ¨ Y211格式在水平方向上Y分量每2个像素采样一次,而UV分量每4个像素采样一次。一个宏像素为4个字节,实际表示4个像素。图像数据中YUV分量排列顺序如下: Y0 U0 Y2 V0 Y4 U4 Y6 V4 … ¨ YVU9格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个4 x 4的宏块,然后每个宏块提取一个U分量和一个V分量。图像数据存储时,首先是整幅图像的Y分量数组,然后就跟着U分量数组,以及V分量数组。IF09格式与YVU9类似。 ¨ IYUV格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个2 x 2的宏块,然后每个宏块提取一个U分量和一个V分量。YV12格式与IYUV类似。 ¨ YUV411、YUV420格式多见于DV数据中,前者用于NTSC制,后者用于PAL制。YUV411为每个像素都提取Y分量,而UV分量在水平方向上每4个像素采样一次。YUV420并非V分量采样为0,而是跟YUV411相比,在水平方向上提高一倍色差采样频率,在垂直方向上以U/V间隔的方式减小一半色差采样,如上图所示。
2025年07月14日
0 阅读
0 评论
0 点赞
1
...
18
19
20
...
34