嵌入声纹特征的个人证件识读器

发布者:数据旅人最新更新时间:2007-02-02 来源: 电子设计应用关键字:编程  编译  条形码 手机看文章 扫描二维码
随时随地手机看文章
引言

SOPC可编程片上系统是一种独特的嵌入式微处理系统。首先,它是SoC,即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,以FPGA为硬件基础,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件系统在线可编程的能力。
本系统采用了Altera公司的Cyclone II FPGA开发平台和相应的开发工具Quartus II进行系统硬件部分的开发;利用Nios II IDE实现了语音识别算法的编译、链接、调试和运行;同时还应用了Altera公司独具特色的C2H加速工具,实现了语音算法程序的硬件加速,使系统性能得到了明显的提升。

此次设计采用了二维条形码进行语音特征的存储,一方面是考虑到二维条形码的成本很低,市场应用潜力巨大;另一方面,正因为在个人证件上拥有了二维条形码,系统可以脱离数据库的支持,变得更加灵活实用。

系统结构

本设计采用SOPC的可编程设计思想,以Cyclone II中实现的Nios II处理器为核心,系统架构如图1所示。

中心处理模块可以接收其他模块的数据,并进行处理,再将处理结果送到外部设备进行显示和报告。语音采集模块在用户注册和认证时采集用户口令(即语音),其中包含A/D采样、量化、编码等,并会将数字形式的数据送到中心处理模块等待处理。系统以串口扫描枪做为条码扫描设备,用于读取个人证件上嵌入声纹特征的二维条形码中的数据,这些数据是在用户注册时生成的。



图1 系统结构框图


本设计将SOPC设计与二维条形码数据存储相结合,不仅发挥了各自的特点,而且扩宽了应用领域。

系统工作流程分为注册和验证两个阶段。注册过程需要采集同一用户的多个语音,通过注册算法生成个人的生物特征,将其嵌入到二维条码中,再打印条码到此用户的个人证件上。这样的证件具备了唯一、不易复制等特点,从而提高了证件的安全性能。对证件进行验证时,先用条码扫描设备读取条码中的特征数据,然后现场采集证件持有人的语音,进行比对,给出验证结果。

硬件的具体实现

本设计以32位Nios II软核处理器为系统的核心部分,负责执行指令和数据运算。各种IP都可以通过SOPC Builder连接到Avalon总线上,其中包含用户自定义的外设。用户外设的编写需要符合Avalon总线的规范。

系统硬件结构如图2所示,包括CPU、UART、LCD、三态桥、片外存储器控制,以及各种输入/输出控制,这些IP都可以直接复用。这样的系统设计方法不仅模块化,而且大大缩短了系统设计周期。FFT运算模块不仅可以直接使用IP,还可以用C2H加速工具来提高系统性能。在此次设计中,FFT、DCT以及数据量较大的循环运算都采用C2H完成了硬件加速,效果较为明显。

Nios II软核处理器

Nios II是32位软核处理器,具有较高的性能。本设计在Altera的Cyclone II上实现了处理器的配置,可以通过添加用户自定义指令来增强系统设计性能,同时可以添加多个片内存储器来提高数据的处理能力。

串口通信

本设计用到的扫描枪通过串口(UART)连接到开发平台上,目的是对二维条形码中包含语音特征的数据进行读取,通过Avalon总线将数据传送到相应的片外存储器中等待处理。

Timer

本设计利用SOPC Builder工具将两个Timer挂到Avalon总线上。其中一个设置为在IDE中运行C程序时的系统时钟,另外一个用作计时器。算法程序中设置了多个时间戳(Timestamp),相邻两个时间戳内程序段的运行时间可以用这两个时间戳的差值来表示。时间戳的设置对程序运行没有影响。设置计时器的最终目的是:将完全的软件实现与用C2H加速后的程序运行时间进行比较。

语音采集和语音报告验证结果

系统中,语音采集和语音报告验证结果部分均由Wolfson公司的WM8731L完成。WM8731L可以独立于Nios II软核处理器单独工作,其控制模块可按照I2C总线的时序编写。WM8731L内部含有A/D、D/A模块,同时具备较高的采样率和量化精度。本设计采用了8kHz的采样率,16位的量化精度。

在语音采集部分,由于A/D是串行数据输出,因此编写了串行到并行数据转换以及写SRAM控制的Verilog模块。语音报告结果部分通过GPIO与CPU进行数据、地址通信,将不同的语音按照不同的验证结果播放出来,这些语音的数据已经事先烧写进FLASH中。GPIO的控制可以通过Nios IDE来完成。类似地,播放语音部分由于从FLASH读出的数据是并行的,因此编写了并行到串行数据转换的Verilog模块。



图2 系统硬件结构


加速模块

首先,在Nios IDE下运行算法C语言程序,利用计时器找出程序运行的瓶颈环节。而后对瓶颈部分利用C2H工具进行硬件加速,从而提高系统性能。这部分主要包括FFT运算加速和循环运算加速模块。

软件流程

个人证件的验证流程如图3所示。验证分为两个基本过程,首先要读取条码中的数据,即用户登录;然后采集用户语音,即用户身份输入。经过特征比对,给出验证结果,由此可以说明用户现场所持证件是否属于其个人。

C2H硬件加速

Nios II C2H加速器可以将ANSI C源程序代码转换成用户自定义的硬件加速模块。利用C2H工具,开发人员首先在Altera Nios II处理器中开发和调试C语言算法,而后将分析出的C程序瓶颈代码转换成硬件加速模块。硬件加速模块被挂到Avalon总线上,作为用户外设来使用。由此实现了从软件运行算法到硬件加速处理的转换过程。需要注意的是,并不是所有的C代码都可以转换成硬件加速模块。C2H编译器的特点如下:

①支持大部分的ANSI C代码和C语言结构,如指针、堆栈、结构体、全局和局部变量、循环、函数调用等;
②C2H编译器可以将C语言的语法成分映射为硬件结构,而且用户可以控制这些硬件加速结构;
③由于IDE6.0整合了C2H工具,用户无需学习新的开发环境;
④C2H可以利用SOPC Builder将加速好的硬件结构自动连接到Avalon总线上,无需用户手动处理;
⑤C2H可以产生硬件结构、资源利用率等详细报告。

本设计中规定用户采集语音的时长约为1s,内容为“你好”。在这样的条件下,利用计时器计算从预处理到给出识别结果的程序运行时间。系统时钟频率设置为50MHz。通过试验,得出运行时间约为5s,这显然不能满足实际需求。对实验结果进行分析,发现程序运行耗时主要集中在预处理和特征提取这部分,将其称为“前端”。经过分析前端的代码运行情况,设计师发现程序运行时间较长的主要原因是该部分包含了大量的矩阵运算和循环运算。下一步工作就是分析程序的运行瓶颈。经过分析研究发现,本设计算法中的瓶颈主要集中在加窗、FFT和DCT等部分,它们的耗时一般占到整个程序运行的60%以上。若将这些环节加速成功,性能将有较大提升。



图3 验证过程软件流程图


图4中显示了在SOPC Builder中向Avalon总线加载C2H加速器和片内RAM的情况。图中显示了两个加速器:accelerator_ c2h_fft_fft和 accelerator_ c2h_fft_ham,分别对应FFT和加窗(汉明窗)的硬件加速运算过程,SOPC Builder并没有为这两个模块分配基地址。图4中最下方的4个片内RAM可以起到数据缓存的作用。SinRAM与CosRAM为FFT加速运算提供正弦和余弦的查找表数据,dataRRAM与dataIRAM分别用于存储FFT运算后生成数据的实部和虚部。


图4 C2H加速器和添加的片内RAM


本设计中FFT采用256点的运算。软件FFT与硬件加速FFT计算时间的比较如表1所示,其中V1、V2、V3是设计中同一用户注册时的3段语音(内容相同)。通过表1可以看出,完全软件计算时,FFT耗时大约为2s;利用C2H工具加速后,耗时仅约为0.01s,提速效果良好。而后再将算法程序中其它环节进行加速,则设计的整体性能是可以满足实际需求的。因此,C2H对运行在SOPC系统上软件算法的加速处理是十分有效的。

结语

本文阐述了一种基于FPGA平台的应用设计实例,不仅能充分体现SOPC设计理念,而且与生物特征技术有机结合,发挥了二者的优势,具有广阔的应用前景。另外,本设计采用了Altera的C2H加速工具对软件算法进行硬件加速,实验结果表明利用这种方法进行设计效果明显。由于使用C2H工具对算法有一定的限制,因此某些情况下,用户自定义指令和用户外设仍然是不可或缺的设计方法。这几种设计手段的有机结合是FPGA设计的主要方向。

参考文献

1徐光辉,程动旭,黄如.基于FPGA的嵌入式开发与应用.北京:电子工业出版社,2006
2夏宇闻.Verilog数字系统设计教程.北京:北京航空航天大学出版社,2003
3 EDA先锋工作室.Altera FPGA/CPLD设计.北京:人民邮电出版社,2005
4 Nios II C2H Compiler User Guide
5 Quartus II Version 6.0 Handbook. Volume 5: Altera Embedded Peripherals
6 Quatieri, Thomas F. Discrete-time Speech Signal Processing: Principles and Practice.2004

关键字:编程  编译  条形码 引用地址:嵌入声纹特征的个人证件识读器

上一篇:DDR SDRAM在嵌入式系统中的应用
下一篇:基于嵌入式的无线条码扫描仪系统的设计

推荐阅读最新更新时间:2024-05-13 18:17

自制51编程
AT89C51是一款应用最为广泛的8051 单片机 ,更重要的是他具有反复烧写(FLASH)的特性。一般情况下可重复烧写1000次,这样为初学者试验提供了一个廉价的平台。为了满足广大单片机爱好者动手的需要,本人利用半个月的时间,参考国外资料,实际设计制作成功一款简单的AT89C51/52/55单片机编程器。由于单片机编程时序不同,这一款编程器仅仅支持ATMEL公司的AT89C51, AT89C52, AT89C55芯片,不支持华邦或飞利浦兼容芯片。 对于很多像我这样一些不算太年轻的从80年代组装7管半导体收音机入门的电子爱好者来说,面对 单片机 似乎显得有点怯场,但是事实上我以为他甚至比组装一个收音机更简单: 以下是它的硬件电
[单片机]
自制51<font color='red'>编程</font>器
C51的编程规范说明
现在单片机的程序设计,C51已经得到广泛的推广和应用,算是单片机的主流设计程序,甚至可以说作为单片机开发人员必须要掌握的一门语言了。 作为一门工具,最终的目的就是实现功能。在满足这个前提条件下,我们希望我们的程序能很容易地被别人读懂,或者能够很容易地读懂别人的程序,在团体合作开发中就能起到事半功倍之效。在网上请求帮助时,如能以规范的写法贴出程序,网友会比较容易地明白你的问题,则会比较快的得到网友的帮助,否则让人看上半天也不明所以然,这样就达不到预期的效果了。因此,为了便于源程序的交流,减少合作开发中的障碍,希望大家能够探讨一下C51的编程规范。把各人认为好的建议提出来,然后做一个总结,作为一种大家一致认同的规范,我认为将会是一件很
[单片机]
MAX6870/MAX6871可编程电源特点及引脚功能和应用电路
1 特点及引脚功能   MAX6870/MAX6871 pdf,MAX6870/MAX6871 datasheet 1.1 特点     ●6路(MAX6870)或4路(MAX6871)可编程输入电压检测器:     1个高电压输入(+1.25 v~+7.625 V或+2.5 V~+13.2V门限);     1个双极性电压输入(±1.25 V~±7.625 V或±2.5V~±15.25 V门限);     4路(MAX6870)或两路(MAX6871)正电压输入(+0.5 V~+3.05 V或+1 V~+5.5 V门限);     ●4个通用逻辑输入;     ●2个可编程看门狗定时器;     ●8路(MAX6870)或五
[电源管理]
MAX6870/MAX6871可<font color='red'>编程</font>电源特点及引脚功能和应用电路
单片机编程教学班怎么选?
现在我们随便拿一个智能电子产品,不管是家里电器还是玩具,又或者是飞机大炮,基本都有单片机的应用。 市场需求大到让人发指,很多人以前完全不知道单片机是什么东西,自从接触到以后激发了强烈的兴趣。 每个男人心中都有一个”钢铁侠”梦,都希望自己能通过技术去改变世界。 不过,想要达到这种程度,我觉得要从小培养以外,还要异人的天赋才行。 这几年我看了很多大佬,能力超强,其实他们也是从零基础开始,我们碰到的问题他们当初也会碰到。 千万不要被电影误导,发一场烧就能成为天才,吃一颗大力丸就能改变基因。 要想成为大佬,自己必须一步一个脚印,从基础开始,以3、5、10年的周期去看,你能坚持下去肯定也是大佬。 到那个时候,你或许会到达另一个层次,物质已经
[单片机]
2440裸机编程之八 UART通用异步收发
S3C2440A 内部集成的UART(通用异步收发器)单元提供三个独立的异步串行I/O端口,也就是通常所说的串口。串口是用途广泛的通讯口,很多工业现场总线都以串口为基础。在这里,串口不仅可以用来与外部设备进行数据通讯,还可以用来观察系统的运行状况,例如前面已经使用过的利用串口终端工具观察程序运行情况的方法。 S3C2440A 的UART 单元提供三个独立的异步串行I/O 端口,每个都可以在中断或DMA 两种模式下工作。它们支持的最高波特率为115. 2 kbps。每个UART 通道包含2 个64 位FIFO 分别供接收和发送使用。 S3C2440A 的UART 具有以下可配置的参数项目:可编程的波特率,红外收/发模式,l 或2
[单片机]
2440裸机<font color='red'>编程</font>之八 UART通用异步收发
使用STM32CubeMX进行STM32F429 LCD编程<一> 全局配置
说明: 下面的程序均以STM32Cube_FW_F4_V1.16.0中的库为例。 STM32CubeMX版本号为STM32CubeMX 4.22.0。 LCD为1024 x 768 15寸液晶。 使用SDRAM作为LCD帧缓冲。 STM32CubeMX芯片引脚总配置图如下: 一.STM32F429 LTDC内部结构图: 层 FIFO 每层一个 64x32 位 FIFO。 PFC Pixel Format Convertor performing the pixel format conversion from the selected input pixel format of a layer to words. 执行
[单片机]
如何实现C51和汇编的混合编程
文中用到的编译器一律为keil 首先是一个范例,并从这个范例展开说明: ............ //C51 Code here #pragma ASM ............. //Here is the Assembler Code #pragma ENDASM ........... //C51 Code here 呵呵,其实C51和汇编的混合编程也就这么一回事。 但是我们还必须要做一些前提工作,首先在Project窗口中包含汇编代码(ASM)的C文件单击右键,选择“Options for ...”,然后点击“Generate Assembler SRC File”和“Assemble SRC File”
[单片机]
赛灵思推出系统性能最高、编译时间最快的ISE WEBPACK 9.1i设计套件
可免费下载并同时支持Windows和Linux平台的设计套件,能降低平均10%的动态功耗并提供扩展的FPGA器件支持 2007年1月30日,北京 - 全球领先的可编程逻辑解决方案提供商赛灵思公司(Xilinx, Inc.) (NASDAQ:XLNX) 日前宣布推出最新版本、可免费下载的逻辑设计套件——集成软件环境 (ISE) WebPACK 9.1i,目前用户可立即下载使用。这一新版本包含了使用广泛的赛灵思 ISE Foundation 软件 9.1i 版的所有特性,并可对嵌入式、数字信号处理 (DSP) 和实时调试设计流程进行全面支持。特别值得一提的是,ISE WebPACK 9.1i软件还包括了赛灵思新的 SmartCom
[新品]
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved