共6条
1/1 1 跳转至页
[转帖][灌水]基于DSP的纸币号码识别系统
来源:国外电子元器件 作者:郑传琴苑玮琦 汤永华
摘要:给出了一种基于DSP的纸币号码识别系统的设计方法。该系统可通过视频解码器SAA7113将纸币号码图像转换成数字图像,并通过复杂可编程逻辑器件CPLD对SAA7113输出的数字图像进行开窗处理来减小DSP的图像数据处理量和存储量。该系统采用TI公司的TMS320C 54x系列DSP,可实现每秒25幅号码图像的视频采集速度,因此可为实现具有纸币号码自动识别记录功能的点钞机奠定基础。此外,该系统还提供与PC机通信的异步串行接口。
关键词:视频解码;DSP;CPLD;异步串口
近年来,钱币、特别是纸币被抢劫事件不断发生,严重影响了社会治安,也使银行在经济上受到严重损失。如果被抢劫的钱币不能在市场上流通,将从一个方面抑制银行抢劫事件的发生。其中一种解决方案就是记录每一捆纸币的号码,并用被抢劫的纸币号码建立一个数据库。与此同时,在货币流通市场提供一种纸币号码自动识别装置,比如说与点钞机结合,将货币号码识别数据与被抢劫号码数据库进行比较,一旦有相同号码出现,便可确认目前流通的钱币为被抢劫的钱币,从而限制其流通,同时也有利于抢劫案件的侦破。另外,由于纸币号码的唯一性,通过识别纸币上的号码,可以帮助识别假币。
目前,国外已有一种验钞打号机,可以对典型的纸币(比如美元、英镑等)进行自动识别和号码打印这种装置的典型识别速度为1张/秒。不过截止目前还没有点钞机附带号码自动识别装置的文献报道。近些年,国内也有一些单位研制开发纸币号码自动识别装置,其中南京航空航天大学开发了一种基于单片机的纸币号码识别系统,利用线阵CCD摄像机实现纸币图像的采集,再利用单片机实现号码的定位与识别。该方法的主要问题是难以提高号码的识别速度。此外,哈尔滨工业大学也开发了一种基于DSP的纸币号码识别系统,其识别速度为8张/秒,但该速度为在PC机上的仿真结果,实际样机还没有实现。此外,该系统采用CIS(即接触式线型图象传感器)来获得纸币图像信号,因而还存在传感器磨损问题。
针对以上情况,本文给出一种基于DSP的新型纸币号码识别系统,该系统利用面阵CCD摄像机采集纸币号码图像,每秒可采集25幅图像,而目前点钞机的点钞速度为每秒十几张左右,从而可以实现与点钞机的配合使用。该系统首先利用Philips公司的专业视频解码器SAA7113实现纸币号码图像的数字化,然后利用TI公司的数字信号处理器TMS320VC5410实现数字纸币号码图像的采集和处理,最后利用TI公司的异步串行接口芯片TL16C550完成整个系统与PC机之间的通信
关键词: 转帖 灌水 基于 纸币 号码 识别 系统 图像
1 硬件设计原理
这种基于DSP的纸币号码识别系统首先将从面阵CCD摄像头摄取的纸币模拟视频图像经专业视频解码芯片转换为数字图像。然后将数字视频信号经先入先出阵列FIFO存入DSP的数据空间,以作为后续图像识别的数据来源;视频解码芯片可同时分离出行、场同步信号和像素时钟参考信号,以作为图像缓存模块的控制信号;为了保存和记录号码,经识别后的纸币号码数据存储在快速闪烁存储器FLASH中,也可根据需要通过异步串口传送给PC机。复杂可编程逻辑器件CPLD在整个系统中的作用是控制全局逻辑和对采集的纸币图像实现开窗处理。该系统的总体结构框图如图1所示。
2 图像采集模块的设计
2.1 视频解码芯片SAA7113的应用
SAA7113是Philips公司的一种高集成度视频解码芯片,它支持隔行扫描和多种数据输出格式,可通过其I2C接口对芯片内部电路进行控制。该芯片具有如下特点:
●支持四路模拟输入,内置信号源选择器。
●有两个模拟预处理通道。
●内置两个模拟抗混叠滤波器。
●两个片内8位视频A/D转换器。
●行/场同步信号自动检测。
●多种数据输出格式。
对SAA7113的控制主要包括对输入模拟信号的预处理、色度和亮度的控制,输出数据格式及输出图像同步信号的选择控制等。整个系统对图像的识别处理主要是针对灰度图像进行的,对数字图像数据的采集只需采集图像的灰度值即可。在SAA7113所提供的多种数据输出格式中,RAW格式在8位输出管脚上直接输出与像素时钟相对应的像素灰度值,此种数据格式与其它格式相比对灰度图像的采集将更直接。
SAA7113的输出控制管脚RTS0和RTS1是多功能复用管脚,根据不同的系统要求,通过对子地址寄存器SA12写入不同的控制字可将两输出管脚配置为行同步、帧同步、奇偶场同步等不同的信号。本系统将SA12子地址寄存器设置为0xa7这样可将RTS0设置为行同步信号,RTS1设置为场同步信号。同时,SAA7113还可输出像素时钟的参考信号LLC,时钟频率为27MHz,该信号是像素时钟的二倍,即像素时钟为13.5MHz。CCD摄像头传送的信号为PAL制、场频为50Hz的视频信号,经视频解码芯片后,可以在RTS0和RTS1管脚上看到该图像的同步信号,其行周期为64μs,场周期为20ms。
通过I2C总线协议对SAA7113的各个控制寄存器进行配置可使其满足系统要求。由于DSP芯片是处理型器件,它的控制能力比较弱,通用I/O口比较少,而单片机则具有很好的控制功能,因此,对SAA7113的初始化工作可用AT89C51单片机来完成。AT89C51单片机内部无硬件I2C总线接口,可将单片机的P1.0口设置为I2C总线的串行数据线SDA,P1.1设置为I2C总线的串行时钟线SCL,然后通过软件模拟I2C总线并对视频解码芯片SAA7113进行初始化。
这种基于DSP的纸币号码识别系统首先将从面阵CCD摄像头摄取的纸币模拟视频图像经专业视频解码芯片转换为数字图像。然后将数字视频信号经先入先出阵列FIFO存入DSP的数据空间,以作为后续图像识别的数据来源;视频解码芯片可同时分离出行、场同步信号和像素时钟参考信号,以作为图像缓存模块的控制信号;为了保存和记录号码,经识别后的纸币号码数据存储在快速闪烁存储器FLASH中,也可根据需要通过异步串口传送给PC机。复杂可编程逻辑器件CPLD在整个系统中的作用是控制全局逻辑和对采集的纸币图像实现开窗处理。该系统的总体结构框图如图1所示。
2 图像采集模块的设计
2.1 视频解码芯片SAA7113的应用
SAA7113是Philips公司的一种高集成度视频解码芯片,它支持隔行扫描和多种数据输出格式,可通过其I2C接口对芯片内部电路进行控制。该芯片具有如下特点:
●支持四路模拟输入,内置信号源选择器。
●有两个模拟预处理通道。
●内置两个模拟抗混叠滤波器。
●两个片内8位视频A/D转换器。
●行/场同步信号自动检测。
●多种数据输出格式。
对SAA7113的控制主要包括对输入模拟信号的预处理、色度和亮度的控制,输出数据格式及输出图像同步信号的选择控制等。整个系统对图像的识别处理主要是针对灰度图像进行的,对数字图像数据的采集只需采集图像的灰度值即可。在SAA7113所提供的多种数据输出格式中,RAW格式在8位输出管脚上直接输出与像素时钟相对应的像素灰度值,此种数据格式与其它格式相比对灰度图像的采集将更直接。
SAA7113的输出控制管脚RTS0和RTS1是多功能复用管脚,根据不同的系统要求,通过对子地址寄存器SA12写入不同的控制字可将两输出管脚配置为行同步、帧同步、奇偶场同步等不同的信号。本系统将SA12子地址寄存器设置为0xa7这样可将RTS0设置为行同步信号,RTS1设置为场同步信号。同时,SAA7113还可输出像素时钟的参考信号LLC,时钟频率为27MHz,该信号是像素时钟的二倍,即像素时钟为13.5MHz。CCD摄像头传送的信号为PAL制、场频为50Hz的视频信号,经视频解码芯片后,可以在RTS0和RTS1管脚上看到该图像的同步信号,其行周期为64μs,场周期为20ms。
通过I2C总线协议对SAA7113的各个控制寄存器进行配置可使其满足系统要求。由于DSP芯片是处理型器件,它的控制能力比较弱,通用I/O口比较少,而单片机则具有很好的控制功能,因此,对SAA7113的初始化工作可用AT89C51单片机来完成。AT89C51单片机内部无硬件I2C总线接口,可将单片机的P1.0口设置为I2C总线的串行数据线SDA,P1.1设置为I2C总线的串行时钟线SCL,然后通过软件模拟I2C总线并对视频解码芯片SAA7113进行初始化。
2.2 用CPLD实现对图像的开窗处理
从SAA7113输出的数字视频图像为整幅图像,但对识别有用的图像大小只有40×200因此,为了减少图像数据的存储量和处理量,可以通过调整CCD摄像头与点钞机之间的位置,并利用视频解码器的行、场同步信号HS、VS和像素时钟参考信号LLC以及VHDL语言,来对感兴趣的图像区域进行开窗处理。具体做法是在场信号VS为高期间对行信号HS进行计数, 并在感兴趣的图像区间使场信号输出为高,而在其它区域使场信号为低,这样,就可得到新的场信号VREF。与此同时在行信号HS为高时,对像素时钟LLC2进行计数,当计数到需要的图像数据时,使行信号有效为高电平,而在其它期间使行信号无效为低电平以得到新的行信号HREF。这样,通过两个计数器就可实现对图像的开窗处理。图3给出了利用CPLD进行图像开窗处理的示意图,下面是行截取的VHLD程序(对列的截取与行截取相类似):
process(LLC2,HS)
variable temp:std_logic_vector(10 down to 0);
begin
if(LLC2'event and LLC2=′1′) then
if(HS=′1′) then temp=temp+′1′;
iftemp>80 and temp<241 then Href<=′1′;
else Href<=′0′;
end if;
else Href<=′0′;
end if;
end if;
end process;
2.3 利用DSP实现图像的采集
SAA7113上电初始化之后将一直处于工作状态,该芯片输出的像素时钟频率为13.5MHz,这么快的时钟频率如果直接进行图像采集的话将出现数据丢失现象。所以本文采用了先进先出存储器FIFO来作为图像缓存以将图像数据先存入FIFO,然后通过DSP读取FIFO中的图像数据,来完成图像的采集。FIFO芯片选用的是IDT公司的IDT72V06,该芯片的存储容量为16kB,读写周期为25ns,工作电压为3.3V。由于FIFO是没有片选的,所以主要是控制其读写信号的有效。当FIFO的读信号为高时,数据总线为高阻状态,从而实现与电路的总线隔离。FIFO写信号则通过CPLD图像截取后的行场同步信号以及像素时钟信号来控制,读FIFO时,可将FIFO映射到DSP的I/O空间,由于本系统中还有其它器件也是映射到DSP的I/O空间,为了与其它器件进行区分,笔者使用了地址线A15和A14进行译码。即在FIFO写完一场图像数据之后,利用半满信号作为DSP的中断信号,并通过中断服务子程序将图像数据存入DSP的数据空间以作为识别处理的数据来源。其中断服务子程序如下:
interrupt void FIFO_RD(void)
{
*(volatile u16 *)IFR=0x0000
for(i=0;i<8000;i++)
{
*(u16 *)(0x8000+i)=(port4000 & 0x00ff);
}
}
图5是本系统通过此程序采集到的纸币图像。
3 DSP存储空间的设计
DSP芯片采用了改进的哈佛结构,处理速度比较快。由于具有特殊的DSP指令和可快速实现各种数字信号处理算法等特点,因而可广泛地应用于各种图像处理系统之中。本系统选用TMS320VC5410作为中央处理器,该芯片的读写周期为10ns,且具有丰富的片上资源主要表现为:
●在程序空间有16k×16bit的片上ROM;
●具有64k×16bit的片上RAM,主要由4块2k×16bit的片上双访问程序/数据RAM和7块8k×16bit的片上单访问程序/数据RAM两部分组成;
●外扩程序空间为8M×16bit;
●外扩数据空间为32k×16bit。
从SAA7113输出的数字视频图像为整幅图像,但对识别有用的图像大小只有40×200因此,为了减少图像数据的存储量和处理量,可以通过调整CCD摄像头与点钞机之间的位置,并利用视频解码器的行、场同步信号HS、VS和像素时钟参考信号LLC以及VHDL语言,来对感兴趣的图像区域进行开窗处理。具体做法是在场信号VS为高期间对行信号HS进行计数, 并在感兴趣的图像区间使场信号输出为高,而在其它区域使场信号为低,这样,就可得到新的场信号VREF。与此同时在行信号HS为高时,对像素时钟LLC2进行计数,当计数到需要的图像数据时,使行信号有效为高电平,而在其它期间使行信号无效为低电平以得到新的行信号HREF。这样,通过两个计数器就可实现对图像的开窗处理。图3给出了利用CPLD进行图像开窗处理的示意图,下面是行截取的VHLD程序(对列的截取与行截取相类似):
process(LLC2,HS)
variable temp:std_logic_vector(10 down to 0);
begin
if(LLC2'event and LLC2=′1′) then
if(HS=′1′) then temp=temp+′1′;
iftemp>80 and temp<241 then Href<=′1′;
else Href<=′0′;
end if;
else Href<=′0′;
end if;
end if;
end process;
2.3 利用DSP实现图像的采集
SAA7113上电初始化之后将一直处于工作状态,该芯片输出的像素时钟频率为13.5MHz,这么快的时钟频率如果直接进行图像采集的话将出现数据丢失现象。所以本文采用了先进先出存储器FIFO来作为图像缓存以将图像数据先存入FIFO,然后通过DSP读取FIFO中的图像数据,来完成图像的采集。FIFO芯片选用的是IDT公司的IDT72V06,该芯片的存储容量为16kB,读写周期为25ns,工作电压为3.3V。由于FIFO是没有片选的,所以主要是控制其读写信号的有效。当FIFO的读信号为高时,数据总线为高阻状态,从而实现与电路的总线隔离。FIFO写信号则通过CPLD图像截取后的行场同步信号以及像素时钟信号来控制,读FIFO时,可将FIFO映射到DSP的I/O空间,由于本系统中还有其它器件也是映射到DSP的I/O空间,为了与其它器件进行区分,笔者使用了地址线A15和A14进行译码。即在FIFO写完一场图像数据之后,利用半满信号作为DSP的中断信号,并通过中断服务子程序将图像数据存入DSP的数据空间以作为识别处理的数据来源。其中断服务子程序如下:
interrupt void FIFO_RD(void)
{
*(volatile u16 *)IFR=0x0000
for(i=0;i<8000;i++)
{
*(u16 *)(0x8000+i)=(port4000 & 0x00ff);
}
}
图5是本系统通过此程序采集到的纸币图像。
3 DSP存储空间的设计
DSP芯片采用了改进的哈佛结构,处理速度比较快。由于具有特殊的DSP指令和可快速实现各种数字信号处理算法等特点,因而可广泛地应用于各种图像处理系统之中。本系统选用TMS320VC5410作为中央处理器,该芯片的读写周期为10ns,且具有丰富的片上资源主要表现为:
●在程序空间有16k×16bit的片上ROM;
●具有64k×16bit的片上RAM,主要由4块2k×16bit的片上双访问程序/数据RAM和7块8k×16bit的片上单访问程序/数据RAM两部分组成;
●外扩程序空间为8M×16bit;
●外扩数据空间为32k×16bit。
根据纸币号码图像大小和号码识别算法的要求,本设计在DSP外扩了一片64k×16bit的RAM,其中0x0000~0x3fff的存储区映射到DSP的程序空间,0x8000~0xffff的存储区映射到DSP的数据空间。而外扩一片256k×16bit的FLASH芯片SST39VF400A则可根据DSP系统程序加载的特点,将FLASH地址为0x8000~0xffff的存储区在程序下载的过程中映射到DSP的数据空间,而在程序加载的过程中映射到DSP的程序空间,其空间的区分通过DSP的通用I/O口XF来进行控制。FLASH地址为0x0000~0x7fff、0x10000~0x1ffff和0x20000~0x2ffff的存储区可映射到DSP的程序空间,以作为识别号码结果的记录存储之用。
4 利用TL16C550实现与PC机的通信
在图像采集调试及对号码的算法调试中,为了检验图像效果,可将图像在PC机中呈现出来。由于TMS320VC5410的串口是同步串行口,而与PC机通信却是异步串行收发的,因此本系统采用异步串行收发器TL16C550来实现DSP与PC机之间的通信。TL16C550是TI公司生产的一种具有异步串行通信功能的大规模集成电路芯片,对TL16C550的控制可通过对寄存器输入A0、A1、A2的不同配置来进行。
本系统使用IS和A15、A14的组合来作为TL16C550的片选信号,以将其映射到DSP的I/O空间的0x8000地址。将DSP的地址线A2、A1、A0与TL16C550的寄存器选择控制引脚A2、A1、A0相连,即可对DSP的I/O空间地址为0x8000-0x8007的空间进行寄存器访问。在TL16C550中接收和发送信号使用的是同一个中断信号INTRPT而通过使能不同的中断方式可实现系统与PC机之间的数据接收与发送。
5 系统软件设计
采用手工编写的汇编语言程序虽然具有执行速度快的优点,但用汇编语言编写程序特别是识别算法的程序将是比较费时费力。为了提高程序开发的效率,整个系统的软件可采用TMS320C54x的C语言进行编写。
上电复位之后,通过DSP片内掩膜的Bootloader程序,采用并行加载方法,可将下载到外部FLASH中的程序加载到DSP的内部程序空间,以提高程序的执行速度。然后初始化视频解码器SAA7113和DSP以使系统处于正常工作状态。先判断先进先出阵列FIFO的半满标志,然后利用DSP的采集程序开始图像的采集,接着对采集到的图像进行识别处理,便可通过显示程序将识别结果在PC机上显示出来
4 利用TL16C550实现与PC机的通信
在图像采集调试及对号码的算法调试中,为了检验图像效果,可将图像在PC机中呈现出来。由于TMS320VC5410的串口是同步串行口,而与PC机通信却是异步串行收发的,因此本系统采用异步串行收发器TL16C550来实现DSP与PC机之间的通信。TL16C550是TI公司生产的一种具有异步串行通信功能的大规模集成电路芯片,对TL16C550的控制可通过对寄存器输入A0、A1、A2的不同配置来进行。
本系统使用IS和A15、A14的组合来作为TL16C550的片选信号,以将其映射到DSP的I/O空间的0x8000地址。将DSP的地址线A2、A1、A0与TL16C550的寄存器选择控制引脚A2、A1、A0相连,即可对DSP的I/O空间地址为0x8000-0x8007的空间进行寄存器访问。在TL16C550中接收和发送信号使用的是同一个中断信号INTRPT而通过使能不同的中断方式可实现系统与PC机之间的数据接收与发送。
5 系统软件设计
采用手工编写的汇编语言程序虽然具有执行速度快的优点,但用汇编语言编写程序特别是识别算法的程序将是比较费时费力。为了提高程序开发的效率,整个系统的软件可采用TMS320C54x的C语言进行编写。
上电复位之后,通过DSP片内掩膜的Bootloader程序,采用并行加载方法,可将下载到外部FLASH中的程序加载到DSP的内部程序空间,以提高程序的执行速度。然后初始化视频解码器SAA7113和DSP以使系统处于正常工作状态。先判断先进先出阵列FIFO的半满标志,然后利用DSP的采集程序开始图像的采集,接着对采集到的图像进行识别处理,便可通过显示程序将识别结果在PC机上显示出来
共6条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |