基于USB与DSP的指纹识别系统的设计实现
PDIUSBDl2是Philips公司推出的一款特点突出的USB接口芯片。完全遵从USBl.1协议,其内部集成有串行接口引擎(SIE)、320字节多结构FIFO存储器、收发器(Transceiver)和电压调节器。它可以工作在5V或者3.3V的工作电压下;具有8位数
据总线,且有完全自治的DMA传输操作。它还具有可控制的软件连接(SoftConnect)功能,可以保证在微控制器可靠初始化之后再连接上USB总线。多中断模式实现批量和同步传输,在批量和同步模式下可实现1MB/S的数据传输率。PDIUSBDl2高集成度、高可靠性和宽范围工作条件的特点,可以非常方便地兼容大部分DSP的工作环境。
3 软件设计
3.1 固件设计
固件编程(firmware programming)是USB数据传输系统中终端设备程序设计的重要部分,微处理器通过固件程序与计算机进行数据交换。由于采用不带MCU内核的USB接口芯片,所以关于USBl.1协议规范的实现都必须靠DSP(TMS320VC5402)控制PDIUSBDl2芯片完成:在DSP(TMS320VC5402)的平台上编写程序,以完成USBl.1规范所要求的标准请求及用户根据产品需要自己定义的请求。
当设备连接到主机后,主机通过给PDIUSBDl2的端点0发送包含标准USB请求的控制传输(即Setup包),PDIUSBDl2产生一个中断给MCU(1NT0),MCU通过读PDIUSBDl2的中断寄存器和最后一次传输状态寄存器来对每一个请求做出响应,并通过PDIUSBDl2的端点0回送请求信息。主机从返回的信息中读取描述数据(包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符),分配和载入一个设备驱动程序并对设备进行配置。设备配置完成后,就可以使用配置中支持的端点传输数据。固件程序结构如图2所示。
3.2 设备驱动
在Win32系统中,把每一个设备都抽象为文件,此时的应用程序只需通过几个简单的文件操作APl函数,就可以实现与驱动程序中某个设备的通信。
PC机的驱动程序由Philips公司提供。用VC++6.0通过调用API函数,编写PC的应用程序。这样即可实现PC机对DSP(TMS320VC5402)指纹取像系统的控制以及图像的传输。主要使用的API函数是DeviceIOControl()、ReadFile()、WriteFile()。其中DeviceIOControl()用于PC(主机)向DSP图像采集系统发送请求;ReadFile()和WriteFile()分别用于从图像采集系统读出数据以及向图像采集系统写入数据。在设计过程中必须注意的问题是:由于USB接口是主从方式的接口,其一切传输过程都必须通过主机向外设发送请求后才可以开始,所以在使用ReadFile()、WriteFile()读写数据前,必须先通过DeviceIOControl()向图像采集系统发送请求。
3.3 指纹识别流程
系统上电时,TMS320VC5402通过12C总线操作对OV6620进行设置,然后进入指纹图像采集阶段。在该阶段,TMS320VC5402处于空闲状态,CPLD占用数据总线,
将数据直接存储到图像RAM中。采集完一帧指纹图像后由CPLD发握手信号,通知DSP进人数据处理阶段。在该阶段,TMS320VC5402先将图像RAM中的数据分块搬运到用户RAM中,进行图像预处理、特征点提取等运算,最后通过USB将结果输出给上位机。上位机调出指纹数据库,并将提取的结果与指纹特征库中的数据进行比对,从而与库中特征指纹进行指纹匹配识别。
DSP算法具体如下:(1)预滤波。方向滤波:设计了一个水平模板,然后将水平模板旋转到所需增强的方向进行滤波。(2)二值化。背景分离:采用标准差阈值跟踪法,图像的指纹部分由黑白相间的纹理组成,灰度变化很大,具有较大的标准差,而背景部分灰度分布比较平坦,标准差小。因此计算以各点为中心的一组像素的标准差,当标准差大于某一门限时,就可以确定该点为前景,否则为背景。(3)计算方向图:采用基于法
《基于USB与DSP的指纹识别系统的设计实现(第2页)》