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

发布者:hxcp18最新更新时间: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-02 20:27

编程和可配置工具开始决定微控制器的选择
今天半导体工艺几何尺寸的不断减小正在改变微控制器的经济学。新的嵌入式设计开发工具成本快速增长,但微控制器上的数字逻辑线路成本正不断下降。这使得提供具有更多外围的微控制器更具经济性,尤其是如果这些外围属于数字类电路、UART、CAN控制器和以太网MAC等。目前市场上带有更复杂外围的微控制器正不断出现。如果我们将闪存和RAM也看作是外围,那么今天许多微控制器的结构中90%以上的部分都是外围。 这里以目前销售的8051和许多衍生器件为例进行说明。10年前,8051几乎要被弃用,但是现在有许多新产品还在采用8051内核,为提高性能,其外围的数量和种类都有了显着增加。许多熟悉8051的工程师都在关注这些新产品。他们认为自己了解8051内核
[单片机]
<font color='red'>编程</font>和可配置工具开始决定微控制器的选择
单片机编译错误 error A45: UNDEFINED SYMBOL
问: MOV A,#FFH Power.asm(118): error A45: UNDEFINED SYMBOL (PASS-2) JBC P2.0,CXSM LJMP CIRCLE Power.asm(179): error A51: TARGET OUT OF RANGE NDIV4: DJNZ B,NDIV2 提示错误:Power.asm(285): error A45: UNDEFINED SYMBOL (PASS-2) CLR PSW.5 RET 答: MOV A,#FFH 后面的16进制数字,不能以字母开头。比如说 :B5H应该写成: 0B5H。FFH 0FFH
[单片机]
“2007瑞萨超级MCU模型车大赛”在京举行
由株式会社瑞萨科技冠名赞助的“2007瑞萨超级MCU模型车大赛”于2007年11月29日在北京邮电大学隆重举行。瑞萨科技会长兼CEO伊藤达先生、瑞萨半导体管理(中国)有限公司董事长山村雅宏先生和瑞萨科技MCU事业部部长武部秀治先生,将与教育部相关领导等共同出席当天的决赛。该大赛是首次由中国教育部举办的,旨在培养IT业界相关人才的赛事,同时它还是由中国教育部主办的 “全国大学生ITAT技能大赛”的比赛项目之一。 在本次大赛上,来自中国本土42所大学的71支参赛队(约300名大学生)通过自制搭载了瑞萨MCU 的“模型车”,完成在跑道中自动行进的比赛,优胜者将获得国家认可的由教育部正式颁发的IT技能认证证书。据透露,参赛队中包括了如清
[焦点新闻]
创建ARM Linux交叉编译环境实践
一、准备工作 首先需要一台运行Linux操作系统的PC以完成我们的编译工作。 其次要准备如下一些源文件。 1、源文件准备 binutils-2.14.tar.gz ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz gcc-core-2.95.3.tar.gz ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz gcc-g++2.95.3.tar.gz ftp://ftp.gnu.org/gnu/gcc/gcc-2.95
[单片机]
虹科HK-DAT90L数字可编程衰减器助力蜂窝设备测试
蜂窝网络 很多人都听说过蜂窝网络,打开你的手机,你就能看到蜂窝网络的设置选项,开启蜂窝数据就能使用你的4G/5G流量,那么蜂窝网络具体是什么呢? 蜂窝网络,又称为移动网络,它属于一种移动通信硬件架构,分为模拟蜂窝网络和数字蜂窝网络两种。它是由于构成网络覆盖的各通信基地台的信号覆盖呈六边形,从而使整个网络像一个蜂窝一样而得名。 最早在1947年,由美国的贝尔实验室提出了蜂窝移动通信的设想,在1977年,他们进行了这一技术的可行性验证,并且在1978年将这个技术在AMPS系统,即1G技术上得到了验证。 蜂窝网络主要由移动站,基站子系统和网络子系统三部分组成,其中,移动站就是网络终端设备,比如我们的手机;基站子系统包括我们日
[测试测量]
虹科HK-DAT90L数字可<font color='red'>编程</font>衰减器助力蜂窝设备测试
嵌入式Linux+ARMARM体系结构与编程(ARM汇编指令)
自己的一些简单的总结,也是最常用的ARM汇编指令,之后也会不断的补充完善。 1. 汇编系统预定义的段名 .text @代码段 .data @初始化数据段 .bss @未初始化数据段 需要注意的是,源程序中.bss段应该在.text之前。 2.定义入口点 汇编程序的缺省入口是 start标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点。 .text .global _start _start: 3 .word用法 word expression就是在当前位置放一个word型的值,这个值就是expression 举例来说, _rWTCON: .word 0x15300000 就是在当前
[单片机]
C51编程13-中断篇(外部中断)
CPU在执行的过程中,一般来说都是在执行主程序(main函数里面的代码)。如果希望处理其他的功能,可以通过查询的方式进行,判断是否需要处理或者通过中断的方式,进入中断服务函数程序里面执行。 前者是在主程序中判断条件是否成立,如果成立则执行其他功能,否则不执行;后者是CPU在执行过程中,判断是否有中断标志位,响应中断进入中断服务函数,执行相关功能。 MCS-51 单片机中,有两个外部中断(INT0与INT1),中断有两种方式低电平触发与负跳变(下降沿)触发。 下面通过讲INT0说明外部中断,INT1同理。 原理图: P0连接8个LED,INT0引脚连接一个按钮连接到地。 在中断系统中,INT0设计的寄存器中
[单片机]
C51<font color='red'>编程</font>13-中断篇(外部中断)
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

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