cmos逻辑门传输延迟时间_基于CMOS图像传感器与USB接口数据实现传输的指纹识别仪设计...

本文主要是介绍cmos逻辑门传输延迟时间_基于CMOS图像传感器与USB接口数据实现传输的指纹识别仪设计...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CMOS图像传感器是近年来得到快速发展的一种新型固态图像传感器。它将图像传感部分和控制电路高度集成在同一芯片里,体积明显减小、功耗也大大降低,满足了对高度小型化、低功耗成像系统的要求。与传统的CCD图像传感器相比,CMOS图像传感器还具有集成度高、控制简单、价格低廉等诸多优点。因此随着CMOS集成电路工艺的不断进步和完善,CMOS图像传感器已经广泛应用于各种通用图像采集系统中。同时作为一种PC机与外围设备间的高速通信接口,USB具有许多突出的有点:连接简便,可热插拔,无需定位及运行安装程序,无需连接外设时关机及重启系统,实现真正的即插即用;高传输速率,USB1.1协议支持12Mb/s;不占用系统硬件资源,能够自动检测和配置外围设备,不存在硬件冲突问题。

因此,利用CMOS数字图像传感器与USB接口数据传输来实现的指纹识别仪具有结构简单,体积小,便携化等优点。现将介绍利用OMniVision公司的CMOS彩色数字图像传感器OV762M和cypress公司的EZ—USB AN2131QC USB控制传输芯片(内部集成了增强形51内核)来实现指纹信息的采集和USB传输,同时由于指纹传感器输出数据的速率(27MB/s)与USB控制器(AN2131QC)数据传输速率(12Mb/s)的不匹配,故系统采用了SRAM和CPLD构成中间高速缓冲区。

系统结构

应用AN2131QC、CPLD和OV762M设计的指纹识别系统硬件框图如图1所示:

2ec9faa86e787b7a6180957e8a6851ca.png

图1指纹识别硬件系统简略框架图

首先,AN2131QC通过I2C对指纹识别传感器(OV7620)的窗口设置等参数进行配置,光学透镜把像成在OV762M的像面上后,CMOS图像传感器(OV7620)对其进行空间采样,并按照一定的帧频连续输出8位的数字图像数据Y[7∶M](输出数字图像数据的帧同步信号为VSYNC,水平有效信号为HREF,输出时钟信号为PCLK)。为了实现指纹传感器输出数据与USB控制器(AN2131QC)读取数据速度与时序的匹配,使用了SRAM(IS61C1024)和CPLD构成高速缓冲区,利用此高速缓冲区将OV762M采集的指纹数据缓存。最后AN2131QC实现与上位机的USB通信,将高速缓冲区中数据的传输到PC机进行相应图像处理。

CMOS数字图像传感器OV7620

CMOS数字图像传感器OV762M集成了一个664×492的感光阵列、帧(行)控制电路、视频时序产生电路、模拟信号处理电路、A/D转换电路、数字信号输出电路及寄存器I2C编程接口。感光阵列得到原始的彩色图像信号后,模拟处理电路完成诸如颜色分离与均衡、增益控制、gamMA校正、白电平调整等主要的信号处理工作,最后可根据需要输出多种标准的视频信号。视频时序产生电路用于产生行同步、场同步、混合视频同步等多种同步信号和像素时钟等多种内部时钟信号,外部控制器可通过I2C总线接口设置或读取OV762M的工作状态、工作方式以及数据的输出格式等。

AN2131QC通过I2C总线接口设定OV762M的寄存器来控制输出帧率在0.5帧/s~3M帧/s之间变化,输出窗口在4×2~664×492之间可调(默认输出640×48M的标准VGA格式),设置黑白平衡等。根据指纹采集的需要,窗口输出设置为:320×288,经过设定后的OV762M输出时序如图2所示:

273d0490d9b6a9a878c1fce6618f0b95.png

图2 0V762M输出时序

VSYNC是垂直场同步信号(也是每帧同步信号,CMOS是按列采集图像的),其下降沿表示一帧图像的开始,HREF提供了一种有效的控制方式,当输出像素行列分别处于设定窗口之间时HREF为有效高电平,此时输出有效的视频数据,PCLK是输出数据同步信号,上升沿输出一个有效的像素Y[7∶M]。

e5eb31a83c0a092f73372991b5b6067f.png

在由CPLD和SRAM构成的高速数据缓冲区中,CPLD充当了SRAM的控制器,其内部电路实现框图如图3所示:

基于CMOS图像传感器与USB接口数据实现传输的指纹识别仪设计

图3 SRAM高速缓冲区控制器的CPLD实现图3中ram_rd,raM_wr为输出到SRAM的读写信号线,raM_data,ram_addr为SRAM的数据地址总线;latch_f为SRAM的读写允许信号,当为高电平时允许对SRAM写操作,为低电平时允许对SRAM读操作;两个8路三态门用于隔离总线,当对SRAM写时,输出cpu_datA为高阻态,当对SRAM读时,将采集数据信号Y [7∶M]隔离;cpu_rds,vsync为开始读写信号,单个正脉冲将SRAM地址置0;cpu_rD作为SRAM快速读脉冲,pclk为SRAM写脉冲;irq为写满标志,用于向上提供中断标志;地址发生器用于产生SRAM地址(IS61C1024有17根地址线)。

88eeda92f2f8c11b97dbd0ad96ecadcb.png

图4 CPLD实现的仿真波形

由图3中逻辑知道,当允许对SRAM写(latch_f=1)且采集的数据有效(href=1)时,pclk脉冲通过地址发生器产生地址(sync单个正脉冲将SRAM地址复位到0),将采集的数据Y[7∶M]写入SRAM中,当写满(写完一帧的32M像素×288像素)时,irq信号有效,通过中断将latch_f置低允许将SRAM数据读出(cpu_rds单个正脉冲将SRAM地址复位到0),此后cpu_rD通过地址发生器产生地址将SRAM中数据读出到USB缓冲区。上述逻辑仿真波形如图4所示(由于数据线和地址线较多,故只取其中部分信号时序,cpu_datA为X表示其值根据SRAM数据总线上具体值而定),由图4可知,CPLD实现了对SRAM的控制,与SRAM一起组成了高速数据缓冲区。

USB快速批量传输的实现

USB控制接口芯片AN2131QC特性简介AN2131QC是基于USB1.1协议设计的,支持高速12Mb/s的传输速率,内嵌有增强型8051微控制器、8kB的RAM和一个智能USB内核的收发器,它包含一个I2C总线控制器和3个8位多功能I/O口,有8位数据总线和16位地址总线用于外部RAM扩展。其结构如图5所示。

5848a70be1fe97af9e9888cbcfbab7e3.png

图5 AN2131QC结构简图

AN2131QC内部的USB差分收发器连接到USB总线的D+和D-上。串行接口引擎(SIE)对USB总线上串行数据进行编码和译码(即实现USB协议的打包和解包工作),同时执行错误纠正、位填充及其它USB需要的信号标准,这种机制大大减轻了8051的工作,简化了固件的编程。内核微处理器是一个增强型8051,其指令周期为4个时钟周期并具有双DPTR指针,同时指令与标准8051兼容。它使用内部RAM存储固件程序和数据,上电后,主机通过USB总线将固件程序和外设特性描述符下载到内部RAM(也可以直接从板上E2PROM上读取),然后重连接,按照下载的特性描速符进行重枚举,这种设计可以实现软件的随时在线升级。

USB快速批量传输的实现当采集的指纹数据导入了由SRAM和CPLD构成的高速数据缓冲缓冲区后,要通过USB接口将数据发送到上位PC机,AN2131QC必须先将数据读入到内部USB缓冲区,因此,AN2131QC将数据传到内部USB缓冲的速度将是整个USB数据传输速度快慢的关键。为了使USB数据传输(从外部读入数据并将之传到PC机)达到最快,需要采用很多措施,下面就设计指纹识别仪固件(AN2131QC程序)中采用的USB批量传输进行探讨。

正常情况下,AN2131QC内核结构从外部读入数据到USB的端点缓冲区,要使用的汇编程序为:

movx a,@dptr;读外部数据到acc寄存器incdptr;外部地址加1 incdps;切换DPTR指针(内核有双DPTR指针,用dps进行切换)

movx @dptr,a;将acc内容放入USB缓冲区incdptr;USB缓冲区地址加1 incdps;切换DPTR指针

由上述程序可知,数据在寄存器中完成操作后,都必须有一个“incdptr”和“incdps”指令来完成16位地址的增加和缓冲区指针切换。为了消除这种内部消耗,使用AN2131QC提供的一种特殊的硬件指针即自动指针(只用于内部缓冲区),8051装载USB缓冲区地址到两个AUTOPTRH (高字节地址)和AUTOPTRL(低字节地址)寄存器中,向AUTODATA写入的数据就直接存入由AUTOPTR/H2L指向的地址缓冲区中,并且内核自动增加AUTOPTR/H2L中16位地址的值。这样USB缓冲区可以像FIFO一样来顺序写入数据,节省了每次写内部USB缓冲区时的“incdptr”指令。同时内核还提供一种快速模式(只用于对外部数据操作),此模式从外部读数据“movx a,@dptr”时,直接将外部数据总线和内部缓冲区连在一起,由于使用CPLD和SRAM构成的指纹高速缓冲区具有FIFO的性质,所以使用快速模式读外部指纹数据时也节省了“incdptr”指令。将上述两种方式结合起来,读外部数据到内部缓冲区程序就只需要一条指令:movx @dptr,A(dptR存放AUTODATA寄存器地址),此指令需要两个8051机器周期(8个24MHz时钟周期)。这样,一个字节可以在333ns内读入到USB端点缓冲区。

在USB接口数据传输一侧,当PC机要对一特定端点进行读数据并发送IN令牌,如果一个IN令牌到达时8051还没有完成向USB端点缓冲区的数据装载(读外部数据),AN2131QC就发送一个NAK握手信号来响应IN令牌,表明PC机应该在稍后再发送一个IN令牌。为了解决这种等待从而达到最快的传输速度,可以使用双缓冲技术(端点配对),使8051在前一个数据包在USB总线上传输的时候,装载块数据的下一个数据包。

结论

利用CMOS数字图像传感器OV762M和USB控制器AN2131QC实现的指纹仪结构简单,体积小,使用方便。指纹识别系统中使用CPLD技术实现了高速缓冲,解决了速度时序匹配问题;使用了快速批量USB传输技术实现了数据的快速传输,使指纹数据的传输达到最高速(每帧传输只用80Ms)。使用现论述的方法实现的指纹仪采集的指纹数据经PC机重现后效果如图6所示(左图是未经任何处理的重现,右图是经过平滑、细化等算法处理后的重现)。

这篇关于cmos逻辑门传输延迟时间_基于CMOS图像传感器与USB接口数据实现传输的指纹识别仪设计...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395458

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象