tag 标签: 微控制器

相关帖子
相关博文
  • 热度 3
    2015-9-12 14:58
    419 次阅读|
    0 个评论
    在过去25年里,微控制器的内部外设发生了巨大的变化。最初许多微控制器只包含RAM、ROM,也许还有基本的定时器。随着微控制器的发展,更多的外设被基础到这种单价不超过一美元的器件中。定时器/计数器、PWM和包括UART、SPI和I2C在内的标准串行接口常用于这些廉价的微控制器。另一个重大变化是32位CPU正在取代同一价格范围的8位器件。 但是即便有如此丰富的特性,对于廉价微控制器而言,随时都存在微控制器厂商不能迅速支持的项目专用硬件接口或新的第三方接口。往往这要求设计人员使用外部硬件或是通过位拆裂在固件中实现接口。位拆裂使用固件触发IO端口,一般可用于实现串行接口。如果要监测端口以解码串行数据的时候,也可以使用这种方法。无论是使用外部硬件还是位拆裂来实现接口,都会产生额外的设计成本。虽然增加外部硬件带来的成本是明显的,但使用软件实现串行接口可能也会要求使用速度更快因而也更加昂贵的CPU。 大多数通用微控制器今天都支持SPI、UART和I2C接口,但仍然有很多时候,某些内部用户可编程逻辑会非常有用。Atmel、赛普拉斯、Microchip和NXP等多家公司已经把部分用户可定义逻辑添加到自己的部件上,用于修复部分此类问题。这些器件主要是带附加逻辑的微控制器。CPU仍然是主要的处理器件,附加逻辑的作用是提高CPU的工作效率。这类器件常见于成本敏感性产品中,但也在低级任务中用作小型协处理器,以减轻主处理器的负担,从而提升效率。 另一方面FPGA也正在朝着类似的目标前进,虽然是从另一个方向。赛灵思和Altera多年来一直在添加软硬核处理器以创建片上系统。FPGA方法一般成本较高,但如果项目需要大量定制逻辑,这就是一种高成本效益的方法。这些器件对于构建ASIC、小批量产品的原型而言极具价值。这类应用的上市时间至关重要,而较大型产品需要持续的硬件灵活性。 微控制器搭配逻辑与FPGA搭配CPU,这两种器件类型都能为现场提供硬件灵活性。一旦基于闪存的器件成为常规,现场升级就会成为标准。最早设计人员只能够升级固件,但现在硬件(逻辑)和固件都能够在现场轻松实现升级。从计算机鼠标到高速网络路由器等设备均能够重新编写设备的固件和硬件,从而进行现场升级。 上文提及的四家公司(Atmel、赛普拉斯、Microchip和NXP)均可提供“胶连”逻辑,帮助减轻主处理器的负荷,或是无需使用外部逻辑。就提供的逻辑模块类型和这些逻辑模块彼此互联的方式以及与定时器、UART和IO引脚等板载模块互联的方式而言,每家公司都采取了不同的方法。 因此有必要了解这些厂家各自是如何实现内部可编程逻辑的,以便为选择最适合自己项目的解决方案做出最佳决策。只要一个简单的内部AND或者OR门控就足以避免使用外部组件,或是改善CPU性能。所有四种方法都支持用定制逻辑门控输入和输出信号。这类方法可借助时钟门控输入,以便使用计数器测量外部时钟频率。这四类逻辑模块均支持的一个简单例子是一种调制UART输出,使之用于IR通信的方法。在此例中,不仅有图1所示的内部AND门控,还能够将来自时钟或计数器的信号及UART TX输出路由到AND门控。 图1 简单调制的UART Atmel XMEGA定制逻辑(XCL) Atmel XCL模块内置两个LUT(查找表)模块,配套两个8位定时器/计数器模块。这两个LUT不必连接到定时器/计数器模块,而是与UART、EVENT模块或IO引脚互联。这两个LUT可用作两个独立的2输入单元或一个单独的3输入单元。该逻辑模块可配置为组合逻辑,如AND、NAND、OR、NOR、XOR、XNOR、NOT或MUX功能。它们也可配置为顺序逻辑功能,例如D触发器、D锁存器或RS锁存器。由于能够与其它逻辑模块和IO引脚互联,这些简单的LUT模块能够方便地让设计人员避免使用某些外部逻辑,或者节省CPU周期。例如Atmel XCL模块应用手册(AT01084)解释了如何配置XCL模块,以避免在产生额外CPU开销或使用外部逻辑的情况下,为UART输出提供曼彻斯特编码。AVR XMEGA E器件内置一个XCL模块。 图2 Atmel的XMEGA定制逻辑(XCL) Microchip可配置逻辑单元(CLC) Microchip CLC允许用户从八路输入中选择最多四个信号。这些输入可以是两个IO引脚、内部时钟、外设或寄存器位的组合。这四个信号随后路由到可编程逻辑模块中。该逻辑模块可编程为AND-OR、OR-XOR、4输入AND、S-R锁存器的8种组合之一,也可配置为4种其它触发器组合之一。Microchip在其《可配置逻辑单元提示与技巧》应用手册中给出了部分实例。其中的实例之一演示了如何配置这些模块以解码正交信号。在不使用这些额外的逻辑模块情况下,CPU需要以高得多的速率采样信号,才能避免正处于转换阶段的信号发生伪旋转,让CPU只被有效转换中断。Microchip PIC10(L)F320/322器件每个都包含一个CLC模块,而每个CLC模块都包含四个图3所示的模块。 图3 Microchip的可配置逻辑单元(4个中的一个) NXP模式匹配引擎 NXP提供的用户可配置逻辑被称为模式匹配引擎。该逻辑模块的输入可选择最大八个GPIO输入。这八个输入可为复杂的布尔表达生成乘积项。这些输出可用于触发中断,驱动特殊IO引脚,或是路由到下一个逻辑模块或slice。其它特性则支持上升或下降信号以及反相信号的边缘检测。该附加硬件经配置后,只有发生复杂(或简单)事件组合时才中断CPU。NXP LPC81x器件内置一个模式匹配引擎。 图4 NXP引脚中断/模式匹配引擎 下一页: 赛普拉斯PSoC通用数字模块(UDB) 赛普拉斯PSoC通用数字模块(UDB) 赛普拉斯通过使用通用数字模块或UDB,采用更先进的方法在上文介绍的其他三个厂商的方法和FPGA之间独树一帜。一个UDB由两个12C4 PLD和一个数据通路构成。PLD可用于控制数据通路的操作和数据流,也可用作通用逻辑和状态机。数据通路是一种能提供8位功能(AND、OR、ADD、SUB、INC、DEC、XOR)、移位功能(左和右)以及供数据排队的两个4字节FIFO的定制模块。这些模块也可以结合在一起提供16位、24位或32位功能。 UDB的输入和输出可路由到任何GPIO、外设/组件IO、中断等。UDB、固定功能模拟和数字模块以及GPIO之间的互联都使用数字信号接口(DSI)处理。UDB经编程可实现为任何功能,包括从简单的逻辑门到计数器和PWM以及UART和I2C外设等通用串行接口。 就利用UDB实现设计而言,用户可以选择多种选项。既可把简单的逻辑门布局在原理图中,也可在Verilog中实现设计。还可提供定制图形界面,无需使用Verilog即可实现设计。PSoC 3、PSoC 4和PSoC 5系列微控制器可包含4个到24个此类逻辑模块(UDB)。 图5 赛普拉斯PSoC通用数字模块(UDB) 定制接口实例 最近我注意到Worldsemi生产的一些RGB LED很有意思。部件编号分别为WS2811、WS2812和WS2812B,但它们工作方式一致。只需要一个GPIO引脚,您就可以驱动1,000个或者更多的此类部件。这相当令人感兴趣,因为我能够用一个GPIO引脚控制如此大数量的RGB LED。连接这些LED的接口不是SPI、UART或I2C,而是定制接口。通信信号采用异步信号,每一位开始于上升沿。数据为1或0由下图所示的高脉冲长度决定。 图6 WS2811/12数据0/1时序 每个部件需要24位数据,每一种颜色(红、绿、蓝)为下列格式的8位。 图7 WS2811/12数据格式 WS2811/12部件采用DIN(数据输入)和DOUT(数据输出)信号,以便简单地进行串行连接。每个部件都保留其看到的头24位数据,然后把剩余数据从DOUT引脚输出。参见下面的图8。 图8 连接多个WS2811/12部件 当数据流启动后,每个部件将看到持续的数据流。如果数据信号的上升沿不超过50微秒,部件会锁存数据,将紧邻的24位数据视为自己的数据,并将其余数据重新发送出去。 图9 数据流闲置时间超过50微秒时器件复位 正如您所看到的,其原理并不复杂,但它并不能轻松地适配到标准的微控制器硬件上。我确实发现有人使用SPI接口来维持时序,但这要求每个真实的数据位使用至少三个SPI数据位,对于通过位拆裂获得CPU性能而言优势不大。由于时序并不严格,如果您在固件中实现接口(位拆裂),CPU将专门用于翻转驱动信号直至LED全部更新。这意味着您需要禁用所有中断,在整个过程中不对任何其它输入做出响应。如果您有1,000个LED,则更新时间为(0.40微秒+0.85)*24位*1,000个LED=30,000微秒或30毫秒。这可能并不是什么问题,但如果您要以30Hz的频率更新LED,将几乎占用100%的CPU! 在编写代码时,我习惯于在不得不较长时间禁用中断的地方避免阻塞代码或条件,特别在系统中有用户接口或是需要与其它处理器通信的情况下尤为如此。我的目的是尽量减轻CPU的负担,让硬件完成大部分工作,就如同今天常见的内部UART或SPI模块所做的工作一样。赛普拉斯PSoC UDB有几项特性能让这项工作变得非常简便。每个UDB在数据通路中有两个4字节FIFO和一个移位器。在实现UART时,您可将一个FIFO用作TX缓存,另一个用作RX缓存。对于WS2811/12,我只需要一个输出FIFO和移位器。我决定配置硬件,为每个器件每次生成一次中断。中断处理器将加载24位(3字节)数据,直到FIFO为空时返回。采用这种方法,可以每30微秒中断一次,而不必以150毫微秒或更短间隔禁用全部中断和位拆裂。我决定使用的微控制器是赛普拉斯PSoC CY8C4245AXI。该微控制器大批量采购价格约为一美元,有四个UDB,运行频率为48MHz,足以满足此项工作所需的速度和硬件要求。 设计使用了PSoC提供的四个UDB中的两个。一个用于使用FIFO缓冲数据和移位数据,这样每个器件的全部24位(3字节)可一次性写入。第二个UDB可使用两个比较输出创建PWM。一个比较输出用于创建逻辑0,另一个用于创建逻辑1。该串行数据可用于控制数字多路复用器,选择波形1或0。敬请参见下图10的方框图。 图10 WS2811/12接口使用PSoC UDB的方框图 UDB中四个PLD(每个UDB有2个)的大多数乘积项可用于控制数据通路,生成中断,提供状态和控制功能,但这也使用了这种低成本微控制器中一半的UDB资源。 接下来的工作是明确这一附加硬件能为设计节省多少CPU开销。以1,000个LED组成的阵列为例,其刷新频率为30Hz。如果设计使用固件对接口进行位拆裂操作,会差不多占用100%的CPU资源。使用PSoC器件中的可编程硬件仍然可以做到每30微秒中断一次,虽然这也是较重的负荷,但运行在48MHz的ARM Cortex-M0足以应付。为测试CPU开销,我创建了一个简单的环路,以大约30Hz的频率刷新显示器。在主环路中,我触发了一个引脚,然后使用示波器计算40毫秒内的触发数量。然后我禁用中断,再次运行项目,并比较结果。与使用固件中的位拆裂造成的几乎100%的CPU占用相比,持续显示刷新只占用大约12%的CPU资源。这样另外88%的CPU周期可用于外部通信和用户界面。如果为设计添加DMA,该开销可能会从12%下降到2%或更低。我使用的最廉价PSoC(约1美元)只包含UDB但未包含DMA,不过一些较大型的部件确实内置有DMA。 随后我实际制作了一个由60x16个LED(960个LED)网格组成的真正RGB LED板,用于测试该组件。该组件的运行符合预期,可用作显示基本的直线、矩形、圆圈以及文本的图形界面。 图11 使用960个RGB LED制作的广告牌 无论是大型LED板还是简单的定制界面,部分内部可编程硬件会给设计性能造成重大影响。不是每一种定制界面都需要多字节FIFO或全硬件状态机,但拥有这种灵活性能为您提供更多设计选择、提高性能,或是让现有设计迅速适合产品需求。
  • 热度 2
    2015-7-24 17:00
    364 次阅读|
    0 个评论
    在我们的生活中,充满着数量不断增长的微型电池供电设备及系统。这些嵌入式系统必须长期使用相同的电源供电,才能降低反复出现的维护成本或避免最终用户频繁更换电源。 本文将介绍设计低功耗系统的各种考量及其利弊权衡。及早规划可以在优化系统实现低功耗的同时,减少对返工和/或代码重新编写的需求。这些考量包括: 1. 应用层面的低功耗设计; 2. 了解功耗与性能之间的利弊权衡; 3. 使用可优化功耗的软硬件技巧。 嵌入式应用中的功耗因素 任何给定系统中的功耗都可分为两大类: i. 静态功耗:静态功耗指器件在未运行代码、等待特定事件触发系统唤醒至工作模式时所消耗的电源。静态功耗的主要来源包括系统中流过的漏电流、模拟偏差、不能关闭的模块以及运行RTC、看门狗定时器和中断控制器等独立代码的模块。该电流与器件的工作电压成正比。工作电压越高,漏电流就越大; ii. 动态功耗:系统处于工作状态,CPU执行程序代码时所消耗的电源称为动态功耗。系统的动态电流取决于工作频率、电压以及有关总线与电路设计的寄生电容。计算方法为: P = V 2 * f * C V为电压、f为工作频率、C为输出端的寄生电容 静态与动态功耗的图形表达: 对于任何给定的晶体管,其静态功耗在给定电源电压下基本上是恒定的。静态功耗源于漏电流(CMOS电路)或偏置电流(工作模拟电路),主要取决于系统类型。 晶体管中的动态功耗发生在电压转换过程中。在这些转换过程中,CMOS对会进入某个状态,在该状态下CMOS对的器件均部分开启,充当电阻器,从而可形成一种分压器电路。这种虚拟分压器电路消耗的电源要比所定义逻辑电平下的漏电流高很多。这就是为什么动态功耗与电路中的开关频率成正比的原因所在。因此在定义低功耗嵌入式系统时,它是最根本的注意事项之一,即要尽量减少系统的开关事件。 【分页导航】 第1页: 嵌入式应用中的功耗因素 第2页: 低功耗电池供电嵌入式应用的硬件考量 第3页: 固件考量 《电子技术设计》网站版权所有,谢绝转载。 低功耗电池供电嵌入式应用的设计考量 1. 硬件考量: a. 电池类型: 在嵌入式应用中主要有以下类型的电池: i. )标准碱性电池 iii. )可充电电池: 可充电碱性电池,锂离子电池 iii. )钮扣电池 对于各种广泛低功耗嵌入式应用而言,为系统充电不是合理的使用案例模型。这里无需为这些应用使用可充电电池。我们来比较一下另外两种在低功耗应用中有用的电池以及在为设计选择电池时需考虑的因素。 标准碱性电池: 标准AA电池的典型容量大约为1500mAh,不仅可轻松提供数百mA的峰值电流,而且还能够以50mA的恒定速率放尽电流。 碱性电池能为应用提供高峰值电流,因此系统能够在并列使用其全部专用外设(定时器与通信模块等)的同时,在其最高时钟频率下运行,从而可在尽快完成各项任务后,快速进入低功耗工作模式。 钮扣电池: 钮扣电池具有极高的内部电阻,因此不能承受高峰值电流。在应用超过20mA的峰值电流时,即便持续时间很短,其有效电压也会大幅下降。因此对于使用钮扣电池供电的设计而言,强烈建议设计使用能在2V或以下电压下工作的组件。微控制器的掉电电压应低至能避免在钮扣电池提供高峰值电流时系统出现意外复位的水平。 此外,我们还需要采取预防措施来降低系统所需的峰值电流。降低峰值电流的途径包括: ● 降低CPU时钟频率 ● 通过随时分配负载,避免一次性启用所有内部模块 ● 在外部组件及内部模块未使用时,减少对它们的供电 b. 设置正确的微控制器: 要让低功耗应用中的静态功耗和动态功耗保持最低,最重要的是选择具有所需外设集的微控制器,其可在所需电源模式下工作。根据需要,系统设计人员可选择合适的微控制器,该微控制器支持低功耗模式下其应用所需的外设集。 以需要LCD较长时间工作的应用为例。通过选择可在低功耗模式下运行该LCD的微控制器,开发人员可最大限度降低功耗。这类微控制器的典型实例就是赛普拉斯的PSoC 4,其可让LCD显示器以仅3uA的流耗进入深度睡眠模式。复杂应用的情况类似,我们需要进行利弊权衡,确定能以最低平均功耗完成每项任务的适当微控制器。 c. 选择合适的无源组件: 上拉电阻器和下拉电阻器是支持接口开关及I2C器件等的常用组件。有时在低功耗设计中,这些上拉及下拉电阻器消耗的电源比系统其它部分还大。要降低其功耗,需要使用更大的电阻值。这样可降低流经它们的电流量。但它同时会增大RC时间常数,因此会降低系统对高频率信号的响应能力。 例如,为I2C线路使用高阻值上拉电阻器会降低I2C通信的速度,因为增大了I2C线路的压摆率。因此这些电阻器值可决定影响最终设计的各种因素之间的权衡取舍。 同样,在为设计选择电容器时,应避免电解电容器,因为它们具有极高的漏电流。薄膜电容器和陶瓷电容器能以合理的成本提供超低的漏电流,可考虑用于低功耗系统设计。 d. 审慎使用I/O: 避免在系统中随机分配控制器I/O引脚。如果引脚随机分布在不同端口,则需要对每个端口单独处理,这样会增加控制它们所需的寄存器写入数。为解决这一问题,可以按最小端口数对输入引脚和输出引脚进行分组,从而实现以最小的寄存器写入数完成读取与写入。 在引脚用于驱动LED和其它类似负载的地方,应使用引脚的开漏驱动模式,这些负载的一端固定在VDD或接地上。这种驱动模式可降低通过I/O引脚的漏电流,因此可降低功耗。 e. 选择正确的外设: 在系统设计中应使用支持低功耗模式、在工作模式下支持低功耗的外设组件,以降低设计的总体功耗。 f. 审慎使用系统时钟: 定义系统时钟的行为有助于降低系统功耗。遵循通用系统时钟相关设计实践可帮助在几乎每个系统中实现低功耗。 ● 在系统中使用低频率时钟降低动态功耗。 ● 在执行计算密集型任务时提升系统时钟,可通过缩短完成任务的时间,降低平均功耗。 ● 优先使用系统时钟,而非外部时钟。 ● 在CPU等待通信传输完成时,应关闭CPU,只开启通信模块的时钟。在完成该任务后,它可获得一个中断信号,恢复代码执行。 g. 电流门控: 一般情况下,热敏电阻等无源传感器工作在分压器模式下,因此一直都在消耗系统电流。为降低这种情况下的功耗,我们可以在通过采样传感器网络获得相关数据之前为其提供电源,并在数据采样完成后切断电源。这在传感器需要定期读取的情况下才有用。 但当传感器必须保持工作状态才能检测环境中的异常现象时,CPU可在整个传感过程中保持低功耗模式。CPU一旦收到传感器的中断/数据信息,就会恢复工作模式。类似逻辑可用于读取开关状态,以判断它是处于开启还是关闭状态。 【分页导航】 第1页: 嵌入式应用中的功耗因素 第2页: 低功耗电池供电嵌入式应用的硬件考量 第3页: 固件考量 《电子技术设计》网站版权所有,谢绝转载。 2. 固件考量: a. 减少函数调用: 每次函数调用都将涉及多重冗余运算,比如堆栈上的添加与取出运算(用于重新加载程序的计数器和寄存器)。这些运算的每一次工作都会耗用多个时钟周期,应尽量避免。对于简短函数而言,函数调用可采用能够布置内联代码的宏命令替换。这有助于减少CPU加载,进而降低相同运算所需的功耗。然而,每种方法都有其自身的优缺点。宏命令需要更大的存储器,这对写入高密度固件来说是一个问题,因为它可能会增大系统成本。 b. 为频繁重复的输入值使用查找表: 通常会有一部分输入值的使用频率大于其它输入值。通过创建与这些输入值对应的查找表,在遇到这些输入其中之一时,可缩短计算时间,进而可降低功耗。 这种方法在当完成计算后需要查找值的应用中比较容易看到,比如电机应用中角度正弦与余弦的计算。在这类应用中,会有一系列频繁遇到的值(相比之下,其它值遇到的频率较低)。正弦值或余弦值的计算需要较长的时间,因此对于该频繁重复的角度而言,其正弦及余弦的预计算值可存储在查找表中。每次遇到这些角度中的一种时,处理器便可查找该表,用在此找到的值进行替代,不必计算。 c. 使用中断,无需轮询: 在复杂的嵌入式系统中,CPU会花大部分时间来等待某项工作的完成,然后再进入下一个步骤。当前提供的大多数SoC都提供能在无需CPU干预的情况下完成大多数任务的硬件模块。在需要CPU干预时,它们会以中断的方式发出信号,唤醒CPU。例如一般在采样数据完成后,ADC会发出中断信号。这样就无需轮询来自ADC的数据。因此CPU可以进入低功耗模式,只在数据准备处理时唤醒。 d. 自适应时钟门控和电源门控 一个典型的系统会使用微控制器的多个模块,但在任何给定时间点上,不会同时使用所有的模块。因此可以对这些模块的时钟进行门控,降低这些模块的动态功耗,从而节省电源。此外,这也有助于降低峰值电流需求,这是钮扣电池供电设计的重要考虑因素。PSoC系列器件允许单独禁用未使用的模块。 这个部分我们讨论了创建低功耗嵌入式系统的常见设计考量。在第2部分中,我们不仅将讨论低功耗应用的实例、低功耗与系统性能的权衡取舍,而且还将提供使用上述技巧的低功耗系统设计实例。 第2部分: 低功耗嵌入式系统的设计考量:设计实例及功耗性能权衡 【分页导航】 第1页: 嵌入式应用中的功耗因素 第2页: 低功耗电池供电嵌入式应用的硬件考量 第3页: 固件考量 《电子技术设计》网站版权所有,谢绝转载。
  • 热度 1
    2014-12-11 13:30
    403 次阅读|
    0 个评论
    尽管有些报道称随着Wi-Fi和蓝牙等无线传输工具的出现,USB音频即将被淘汰,但此种言论还为时过早,USB音频目前仍活跃在市场上。近几年来,USB音频技术已成为音乐产业中数字音频(音频+MIDI)配件(混频器、DJ设备、数字音频接口、麦克风等)中一个尤为重要的元素。 此外,《今日美国》中有文章提到功能强大的移动设备正在逐渐取代笔记本电脑和便携式电脑。然而,专业或准专业用户却没有停止对USB音频的需求,在许多诸如iOS和Android移动操作系统以及Raspberry Pi和BeagleBone Black等业余爱好者/制造商的单板机中,随处都可见到这种USB音频。 它采用低成本、低功耗的方法来传输数字音频,在最佳状态下,可以呈现普通无线方法无法比拟的高品质和低延时效果。但难就难在只有在最佳状态下它才能达到这种效果。 通过USB接口回放(或录制)高品质音频时,一个亟待解决的重要问题就是如何生成具有高度稳定性和准确性的转换器主时钟。 在设计阶段因忽视细节而造成的音频时钟恢复过程中的不足极易导致显著缺陷,会产生杂音,即便是非专业人士都可以感受到。欲了解更多有关USB音频模式的基础知识,请参阅2011年音频工程协会(Audio Engineering Society)会议上有关音频接口的相关演讲稿。 以赛普拉斯半导体公司的PSoC 3系列为代表,可以看到最新的可编程片上系统(SoC)器件的灵活性,它可以产生具有成本效益的、可靠且准确的音频主时钟,尤其适用于低功耗便携式系统。基于此种SoC的方法概述参见《现代USB音频系统设计》。对频率合成技术有浓厚兴趣的用户,可以参见音频工程协会的会议论文《USB音频系统的可编程时钟发生与同步》,其中对硬件时钟恢复方法进行了详细描述。 自这些论文发表后,赛普拉斯半导体公司的USB音频团队从研究角度出发,花费了大量时间拆解、测试和测量各类装置以测试USB音频能力,受测对象不仅包括商业产品,还包括微控制器厂商的开发工具包和参考设计。对厂商来说,制定严格测试方案和竞争标杆分析方案至关重要,可以确保设计质量满足客户的需求并达到音频行业的预期。本应在参考设计发布前就发现的缺陷却在客户缺陷报告中才被发现,这实在是件无比糟糕的事情。 这些测试向用户呈现了音频质量的诸多问题,而音频回放的质量及完整性有时实在是差得惊人。音频行业将大量的精力放在确定音频再现质量和修复后的可听性上,而音频回放的质量整体较差这种认识似乎已经超出了当今微控制器供应商的能力范围。 这可能归结于从事单一业务的MCU公司仅把音频视为一种数据接口格式,没有真正了解获得优质音频质量的重要因素。例如,从应用笔记中可以看到,大多数厂商都认识到管理再现音频数据的时域完整性对音频质量至关重要。但是,认识到这个问题是一回事,解决这个问题又是另一回事。 根据测量显示,音频主时钟生成和数据同步管理的一些推荐和实施方法针对高品质的音频产品并无用武之地。本文接下来将带读者尽览有关音频质量的诸多问题,重点揭示一些最有代表性的问题,并讨论问题背后的原因。 【分页导航】 第1页: USB接口回放音频亟待解决的问题 第2页: 缺乏稳固性 第3页: 频率不稳定 第4页: 采样率转换引起的本底噪声 第5页: 疯狂的转换设置 第6页: 为什么USB音频配件无法充当主机 第7页: 异步USB音频操作 第8页: 结论与致谢 《电子技术设计》网站版权所有,谢绝转载 缺乏稳固性 针对USB音频系统(针对各种主机设计,但主要是针对移动主机)的故障测试旨在测试包含较短时段选择的播放列表的循环情况,每个时段的采样率各不相同。看来,大家似乎都不太喜欢这种测试,你也会惊讶于该测试的失败频率。这种测试不仅用于芯片厂商的一些项目,甚至还用于一些音频产品现货。 从这些测试中可以发现一些明显的行为特征。在某些情况下,测试中的系统无法开始播放其中一个音轨,从而导致在本该有声音的音轨阶段出现一段长时间的静音。还有一些情况是,有些音轨会看似随机地在回放时出现一定程度的失真,你会听到轻微的噼里啪啦声,有时甚至会突然被那种声音吓一跳。 图1显示了在变换的44.1ksps和48ksps速率下1.4kHz测试音调的频谱(采用优秀的免费程序Friture测得),该频谱在某厂商的评估电路板上显示。通过该图,可以看到很多指标都不达标,最明显的是在某一时段上的彻底失灵。整体表现很不稳定。图2显示的是使用具有强大固件和稳固的硬件同步主时钟发生器的SoC参考系统进行的同一测试。 图1:USB音频效果随采样率的变化而恶化。 图2:配置硬件时钟恢复功能的SoC系统在图1中应呈现的图样。 笔者从美国购买了一个现成的扬声器底座,结果发现在任何音轨末都会出现明显的、恼人的音调变化,紧随其后的就是另一具有不同采样率的音轨,因为它过早地改变了采样率。前10秒你会觉得比较有趣,随后这种新鲜感消失,你会把它放入包装箱然后退回给商店,随后制造商不得不承担退货审查和技术支持服务的费用。移动设备制造商也不得不向消费者解释说出现这种问题不是自身USB或自有连接器(相对于3.5mm插孔)的问题,而是配件的问题。 图3给出了音调变化示意图,图案围绕四个不同的采样率频率1kHz、1.2kHz、1.4kHz和1.6kHz呈阶梯状变化。获知新的采样率后,该产品的回放频率立刻向上蹿升。 图3:因采样率的过早变化而造成的显著音调变化。 图4则不存在频率变换的问题。相反,这个从一家声誉良好的音频公司购得的底座产品仅在一些音轨上随机出现了一些空档,没能播放出来。 图4:该产品没有音调变换,完全没有音轨。 所以我讲这个故事的寓意是:一定要对设计进行深入的测试,并找出它的破绽。这一点应在选择厂商的过程中就着手去做,并在整个开发过程中定期进行测试。 现代化的移动音频配件由一连串代码组成,对中断优先级和DMA描述符的一些单纯改变都会在一定程度上改变系统行为。因此,我建议在设计团队之间相互交换候选发布的设计,如果他们能发现其中的设计缺陷,就请他们喝酒、品茶,或给予其他一些奖励。 【分页导航】 第1页: USB接口回放音频亟待解决的问题 第2页: 缺乏稳固性 第3页: 频率不稳定 第4页: 采样率转换引起的本底噪声 第5页: 疯狂的转换设置 第6页: 为什么USB音频配件无法充当主机 第7页: 异步USB音频操作 第8页: 结论与致谢 《电子技术设计》网站版权所有,谢绝转载 频率不稳定 在自适应或同步模式下运行的USB回放装置需要创建D/A转换器所需的时钟。对于普通音频DAC来讲,该时钟频率值最可能为音频采样频率的256倍。在这些模式下运行的所有USB音频接口方法都有某种可调振荡器,在基于微控制器的系统中,这种振荡器通常是数字控制振荡器,并置于固件中,其频率设定有限且分辨率较低。有些微控制器配备某种可编程振荡器,其频率飘摇不定,以确保振荡器的平均速率设置符合您的要求,这种情况是很常见的。您可以用它来跟踪FIFO读写指针,并改变您指针摆动的占空比,以保持指针间距离的恒定(这是在自适应模式下运行,使劲按CPU)。该摆动时钟用作DAC的主时钟,也负责通过微控制器和DAC之间的接口进行数据转移。 现在,想象您正再现一段美妙、精确的正弦波。假设DAC每秒有4.41万个采样(最标准的数字音频采样率,因为这是CD上使用的值),这段正弦波的频率应该是1.4kHz(较佳的频率——1kHz基本不影响USB音频系统作业)。 但是如果您在两个频率之间切换主振荡器(使得系统半数的时间以每秒4.425万的采样率回放,而另一半时间以每秒4.395万的采样率回放)会发生什么事情呢?当然,平均回放率为每秒4.41万个采样。但实际上,系统会花费半数的时间以1.40476kHz的频率来发送一个正弦波,而剩余的半数时间则以1.39524kHz的频率来发送正弦波。 那些觉得“嗯,好像还不错”的人请考虑下这个问题吧:这种音调变化水平一般听众都能听出来,更何况音频业所谓的“金耳朵”了。如果您觉得这些都只是一些随便挑出来的荒谬的数字,那么我们一起来看图5——某一微控制器厂商的开发套件测量结果。 图5:平均频率是正确的,但变化是听得见的。 测试这种东西非常容易,因此没有借口不这样做。如前所述,Friture等免费软件分析程序通常都可以提供一种便利的频谱模式(深受广大语音分析师青睐,尤其是在好莱坞故事片中)。这种模式通过采集连续的FFT短块来进行持续的频谱分析,并随着时间的推移绘制出结果—时间自左向右推移,频率与屏幕垂直并通过彩色映射来表明幅度。 将模拟音频信号输入到一个运行Friture程序的PC线路上,您就可以轻易地发现回放频率的不稳定性。在传统音频分析仪的常规FFT显示器上,这种不稳定性并不明显,特别是当趋向于为了稳定而只是增加求平均的数量时。它几乎不会影响测得的THD+N数值,仅在一个特别小的窗口显示出一个失真数字,您是无法从中获得任何有关音频回放系统质量的信息的。 当然,这并非是一个共性问题。一些微控制器厂商选择在系统中使用CS2200等性能优良的外部时钟生成芯片来解决计时问题,这类系统浏览无痕,如同之前提到的使用硬件时钟生成方式的SoC参考系统,见图6。 图6:恒频音调应以这种方式出现(还有硬件SoC时钟恢复)。 本节旨在提醒人们,对于通过在粗略设置的振荡器的不同值间切换来实现同步的系统,我们应持一种怀疑态度。因为这种频率偏差会导致可感知音调稳定性的进一步恶化,但当用常规技术测量时,不会对THD+N等标准音频性能参数产生显著的影响。 有些(但不是全部)传统的USB微控制器应用笔记和参考设计推荐使用BOM音频PLL,如CS2200,这种情况并非巧合。这是个不错的部件,但如果您的产品设计并不需要这种部件不是更好吗?那就看下频谱图,关注其中的直线,而非锯齿线! 【分页导航】 第1页: USB接口回放音频亟待解决的问题 第2页: 缺乏稳固性 第3页: 频率不稳定 第4页: 采样率转换引起的本底噪声 第5页: 疯狂的转换设置 第6页: 为什么USB音频配件无法充当主机 第7页: 异步USB音频操作 第8页: 结论与致谢 《电子技术设计》网站版权所有,谢绝转载 采样率转换引起的本底噪声 一些低端集成USB音频设备采用的一种简单方法就是将系统设计成为仅支持一个核心采样率(44.1ksps或48ksps)。如果主机想发送以其他速率采样的音频且本身未打算(或不允许)做速率转换,则回放装置会采用某种采样率转换形式。而这一切都是非常可怕的错误。 如果您有一个强大的DSP或在应用程序特定的芯片内设置了多个门,则很难设计出一个好的采样率转换器。但一般的微控制器无法切割,唯一可以切割的是各个角。 回放44.1ksps的音频材料时,只有一个评估板的杂散性能测试合格。使用48ksps测试音频材料后,音频分析仪显示器上的本底噪声变成了一系列神秘的音调。该模式下采样率转换器中使用的滤波器响应出现了最坏情况下的大约只有55分贝的阻带抑制。简而言之,测试音影像的重采样混叠(通过频率可以明确地确定)会上升到一个从未有的高度,进而影响音频舒适度。图7展示了这一问题的严重程度。这是一个能够听得见的宽带问题,那些假音并非低于“掩蔽阈值”而听不到。 图7:SRC困境:大基调应该有,但其他不应该有。 于是,我们又得到这样一个启示:不要轻信普通微控制器上运行的采样率转换库,很有可能它们在优质音频应用程序中并无用武之地。“最好的采样率转换器就是没有采样率转换器”,一位注重性能的音频制造商在被问及该问题时曾这样表示。 【分页导航】 第1页: USB接口回放音频亟待解决的问题 第2页: 缺乏稳固性 第3页: 频率不稳定 第4页: 采样率转换引起的本底噪声 第5页: 疯狂的转换设置 第6页: 为什么USB音频配件无法充当主机 第7页: 异步USB音频操作 第8页: 结论与致谢 《电子技术设计》网站版权所有,谢绝转载 疯狂的转换设置 测试过程中,有一个USB音频评估板的回放频率响应没有任何意义,看起来就像是有人抓住高音控制,并一路将其调低,听起来就好像是将扬声器扔进一个塞满棉花的包里。 原来评估板上的DAC被设置为使用“去加重”,而现在的CD标准中基本已没有这种选项了。CD标准提供了一种在记录信息中提升高频率的方法,然后在回放阶段将频率降回原有水平,会出现较高频率的嘶嘶声。 图8显示了一堆杂乱的轨迹,但重点在于那条黄色的曲线。它本应该是一条水平线,而其他厂商也都在努力想要达到水平线的标准,但该厂商是个例外。也许将评价体系综合在一起的人喜欢平稳、音色圆润、不被高音打断的音调,亦或是他们的实验室扬声器本身就是多峰的高频响应;而他们也确实认为这种设置是正确的,因为听起来效果更好一些。这一段的寓意在于:不要想当然地认为厂商已对外围元件进行了正确设置,尤其是当该元件并非该厂商生产时。 图8:黄色轨迹本应是一条平直的水平线,但图中显示的听起来非常模糊不清。 【分页导航】 第1页: USB接口回放音频亟待解决的问题 第2页: 缺乏稳固性 第3页: 频率不稳定 第4页: 采样率转换引起的本底噪声 第5页: 疯狂的转换设置 第6页: 为什么USB音频配件无法充当主机 第7页: 异步USB音频操作 第8页: 结论与致谢 《电子技术设计》网站版权所有,谢绝转载 为什么USB音频配件无法充当主机 有些旧的USB音频配件被设计为主机,并迫使移动设备成为USB总线上的设备。这在以前还说得过去,因为这些配件连接的都是又慢又笨的音乐播放器。 现在,USB扬声器底座或DAC要求Mac或PC放弃对USB总线的整体控制,使它们可以彼此交换音乐数据的想法简直就是无稽之谈。就好像是使配件对最新一代功能强大、灵活的智能手机和平板设备做出同样的要求一样毫无意义。 【分页导航】 第1页: USB接口回放音频亟待解决的问题 第2页: 缺乏稳固性 第3页: 频率不稳定 第4页: 采样率转换引起的本底噪声 第5页: 疯狂的转换设置 第6页: 为什么USB音频配件无法充当主机 第7页: 异步USB音频操作 第8页: 结论与致谢 《电子技术设计》网站版权所有,谢绝转载 异步USB音频操作 异步USB音频操作曾在高端市场风靡一时。理论上这是一个非常伟大的想法——无需做任何USB时钟恢复或同步,因为自身就可以生成负担得起的干净、稳定、准确的时钟(在高端市场上,人们在时钟发生器上的花销很大)。您需要不断监测高品质的本地音频时钟和主机中固有时序间的不匹配情况,并通过不时地增加或缩短数据包来使主机扼制其数据传输速率。 不是所有的USB主机都支持异步操作。即使主机支持该操作,主机供应商也往往不会在需要处理多个音频信源端和音频信宿端的系统中使用异步操作。移动设备的应用处理器负载的增加可能缘于此原因,从而造成性能损失和额外的电流消耗。 问题是,主机放弃了对确切回放采样率的控制,转而让设备来执行再现。当主机无法控制源材料的采样率时,这便会成为一个问题。举一个例子,输入音频通过一个外部设备(可以是一部旧DAT播放器,Kendall有时仍会使用该播放器)的S/DIF输入到达。确切的源采样率由DAT播放器设定,但异步连接的回放DAC(可能位于优质数字输入扬声器中)希望能够设置回放采样率。 另外一个令人棘手的情况是与视频相关的音频。大多数媒体播放器都无法对视频帧速率进行微调使其与外部硬件定义的独立采样速率时钟一致。这种差异可以通过一些不尽如人意的方法来缓解,例如复制或放弃某些完整视频帧。但我个人认为,首先要解决的应该是音效问题,而非视效问题,但这样似乎仍然让人无法接受。 可怜的旧USB主机(PC、平板电脑、手机或其他)在其中进退两难,通常需要通过一些采样率转换来进行调整。在44111sps和44097sps采样率间进行高质量转换对处理器要求较高,也会给主机的操作系统带来很大负担。一个超高品质的USB音频主机可能会有一个内部硬件采样率转换芯片连接到S/PDIF输入端。但这都会产生额外的费用,如果您尝试偷工减料并使用低成本的SRC,就有可能降低音频效果。 因此,异步操作一般仅限于相当简单的纯音频(或不重要的低频干扰视频)系统,在这种系统中可以为USBDAC或扬声器设置本机速率。幸运的是PSoC等现代片上系统设备的灵活性意味着会出现许多不同成本和抖动折衷的时钟选项,都可以归结为一个基本系统,它将支持所有采样率,无需晶体检波器。 【分页导航】 第1页: USB接口回放音频亟待解决的问题 第2页: 缺乏稳固性 第3页: 频率不稳定 第4页: 采样率转换引起的本底噪声 第5页: 疯狂的转换设置 第6页: 为什么USB音频配件无法充当主机 第7页: 异步USB音频操作 第8页: 结论与致谢 《电子技术设计》网站版权所有,谢绝转载 结论 创建USB音频回放系统的方法有很多,有许多USB微控制器供应商已在实施这样的系统。但这些系统的鲁棒性和音频性能差别极其惊人。 不妨采用以下方法:寻找一个深谙音频领域的供应商团队,并寻求一个经过严格测试(听效验证)的完整的、成熟的参考设计。在整个开发过程中不断进行测试。选择一个有着丰富USB音频经验的设计制造合作商。如果他们只知道模拟音频或微控制器的非音频应用,他们可能无法探知没有足够安全系数的整个系统设计所带来的无数隐患。 挑选超精细频率分辨率的频率同步计划,以确保坚若磐石的音调稳定性——您需要一个外部时钟合成器设备,如配有普通微控制器的CS2200(尽管配备的不是赛普拉斯半导体公司的PSoC 3)。 如果想要得到音效净化的音频,就不要使用低档采样率转换算法,因为一般的微控制器无法让滤波器长时间地抑制杂音。如果您想要一个真正的通用系统,那就不要指望异步操作模式能够解决一切——当然,如果您能找到一个平台,可以很容易地支持同步或异步操作,那当然最好。 致谢 对音频质量的这些令人发指的缺陷披露得益于Saksham Bhatla、Gowthamraj B、Krishnaprasad MV和Ahmed Majeed Khan长时间以来的实验室测试和聆听。 【分页导航】 第1页: USB接口回放音频亟待解决的问题 第2页: 缺乏稳固性 第3页: 频率不稳定 第4页: 采样率转换引起的本底噪声 第5页: 疯狂的转换设置 第6页: 为什么USB音频配件无法充当主机 第7页: 异步USB音频操作 第8页: 结论与致谢 《电子技术设计》网站版权所有,谢绝转载
  • 热度 5
    2014-11-2 01:29
    372 次阅读|
    0 个评论
    有时,基于微控制器的产品需要使用旋转开关。由于很多微控制器都内置了ADC,在找不到旋转开关或旋转开关价格过高时,可以使用低成本电位计来替代旋转开关(图1)。 尽管仅需执行少量指令即可将电位计设定值数字化,使其表现得像开关一样,但一个急需解决的问题是,在电气噪声或机械噪声的影响下,在某一个值和下一个值之间的切换阈值处,数值会不稳定。该问题的解决方法是为每次转换引入上、下两个迟滞阈值,这样一来,电位计就需要在另一个开关状态有效前越过阈值。针对每次更新的开关状态,都会有新的一对阈值替换之前的阈值。如此,迟滞效应可以实现各状态间的完全切换。 图1:替代多掷开关。 这一方法具有下述诸多优势:单端口引脚对旋转开关的多端口引脚、成本低、更易获得且可实现去抖动切换。该方法的不足之处在于会失去制动感。设定点的另一特性是其可设置在任一位置,例如用以补偿电位计在响应过程中出现的非线性变化。 迟滞通常稍高于会导致不期望切换的任何噪声。建议在电位计触点与地之间设置一个电容器,以滤除触点噪声(图1)。 图2列出了算法。一旦用ADC对电位计设定值进行了数字化操作,该数值就将与下阈值比较,若低于下阈值,开关状态会逐渐降低并限制至零。若电位计设定值高于上阈值,开关状态会逐渐增大并限制至最大值。若开关状态发生变化,则上、下阈值会进行更新,并终止子程序。 图2:流程图。 为确保该迟滞算法起作用,必须定期读取电位计设定值,并与上一次开关状态进行比较。这样做旨在将从不同状态跨过阈值或处于相同值的电位计设定值与相同状态区分开。 此处还需要计算出采样率的最小值,可由电位计旋转率最大值除以开关状态数得到。例如,假设单匝电位计旋钮在0.25s内完整旋转一圈,同时假定有七种状态,那么最低扫描率为28Hz。若电位计数值采样周期低于最小值,即使切换方向正确,计算得出的开关状态也可能不正确。倘若未以较快的速率持续改变电位计设定值,则随后的采样会对切换状态进行校正。 《电子技术设计》网站版权所有,谢绝转载 以七种开关状态为例创建一个阈值列表。假设有一个8位ADC。首先,ADC的256步范围被分割为七种开关状态。各开关状态的宽度为ADC范围除以状态数,即:256/7=36.6。对其四舍五入,将各状态的宽度定为36,但是两个外端状态需增加至38,以使总宽度为256。 下一步是确定各开关状态的边界。对于状态0,边界为0~37(包含两端)。状态1从38开始到73结束,其余开关状态依此类推。根据增加或降低至边界的迟滞数值确定阈值。此处使用“4”这一迟滞值。迟滞量既不得大于宽度,也不得低于预期的噪声。因此,上边界加4即可得出上阈值,下边界减4即可得出下阈值,如表1所示。从该例可发现,从状态2切换为状态1需要使电位计数值下降至比切换点数值74小4,因此下阈值为70。相反,从状态1切换为状态2需要使电位计数值上升至比切换点数值73高4,因此上限阈值为77。用于程序代码的表格仅需标明上、下阈值,在此例中仅需14个字节。 表1,阈值。 代码示例(见下)支持Silicon Labs的C8051F310(8051架构),但也可以很容易地改编用于其他微控制器。 ;POT2SW INITIALIZATION MOV UPRVAL, #00H ;set upper value to opposite end to force the code to run MOV LWRVAL, #0FFH ;set lower value to opposite end to force the code to run MOV SWPOS, #03H ;initialize switch position to middle MOV POSMAX, #06H ;set maximum switch position value ;SUBROUTINES POT2SW: ;CALCULATE SWITCH POSITION VALUE FROM POTENTIOMETER VALUE IN ACC ;check if pot setting is below lower threshold CLR C MOV B, A ;save pot setting to register B SUBB A, LWRVAL ;potval - lwrval JNC P2S1 ;no carry means potval = lwrval DEC SWPOS ;carry means potval lwrval, so decrement switch position value ;check if switch position is zero MOV A, POSMAX ;load maximum switch position value CLR C SUBB A, SWPOS ;max switch value – switch position JNC P2S2 MOV SWPOS, #00H ;reset switch position value to zero since underflow SJMP P2S2 P2S1: ;check if pot setting is above upper theshold CLR C MOV A, UPRVAL SUBB A, B ;uprval - potval JNC P2S2 ;no carry means potval = uprval INC SWPOS ;carry means potval uprval, so increment switch position value ;check if switch position is max MOV A, POSMAX ;load maximum xwitch position value CLR C SUBB A, SWPOS JNC P2S2 MOV SWPOS, POSMAX ;reset curve number to max curve value since overflow P2S2: ;read lower and upper thresholds using switch position value MOV A, SWPOS ;multiply switch position value by 2 MOV B, #02H MUL AB MOV B, A ;save multiplied value as table offset MOV DPTR, #HYSTBL ;load base address of table pointer MOVC A, @A+DPTR ;look up table value from base address + offset MOV LWRVAL, A ;read lower threshold value MOV A, B INC DPTR ;increment base address MOVC A, @A+DPTR MOV UPRVAL, A ;read upper threshold value RET HYSTBL: ;TABLE OF LOWER UPPER THRESHOLDS FOR SEVEN POSITION SWITCH DB 00D, 41D ;Switch state 0 DB 34D, 77D ;Switch state 1 DB 70D, 113D ;Switch state 2 DB 106D, 149D ;Switch state 3 DB 142D, 185D ;Switch state 4 DB 178D, 221D ;Switch state 5 DB 214D, 255D ;Switch state 6 《电子技术设计》网站版权所有,谢绝转载
  • 热度 6
    2014-9-8 14:11
    330 次阅读|
    0 个评论
    市场上主流的电子锁是基于密码设计的。密码锁的最大的缺陷是密码容易被他人窃取、猜测及遗忘。随着生物技术的发展,越来越多的活体技术应用到识别系统中,如指纹、掌纹、人脸、虹膜等。相对于其它的活体识别技术,指纹识别系统以其可实现性强,成本相对低廉,同时又具备较高的安全性,被越来越多的应用到各种场合。文章给出了一种新型的指纹锁架构,并详细论述了系统的各个组成部分以及指纹识别算法的实现流程。文章对降低系统功耗和增加保密性都提出了独特的方法。 随着科学技术的飞速发展和大规模的集成芯片的出现,现有的门锁系统也正在经历着升级换代的变换。第一代电子门锁采用的是密码识别方法,解决了机械门锁更换的灵活性,即钥匙的设置和更改掌握在了使用者的手中;但由于密钥与使用者非强相关,松耦合,授权难以管理,在安全性方面存在着极大的隐患。第二代电子门锁采用最先进的生物特征识别技术,提供了一种更为安全可靠、使用方便的身份识别新途径。 生物特征识别技术主要是利用虹膜、人脸、指纹、掌纹、语音这几种人体生物特征的一种来做识别的。虹膜、人脸需要使用到影像成像系统,设备过于复杂,仅用于高端系统,难以普及应用;语音系统最为简单,但由于容易被模仿,安全性相对较低;指纹和掌纹仅使用扫描成像,相对比较简单,易于推广,尤其是指纹识别技术,采用逐行扫描系统,识别传感器可以做得非常小,具有很高的可行性和实用性。 指纹锁系统主要可用在保险箱、实验室、楼道的身份确认及相关控制;随着智能家居概念的兴起,也越来越多的应用到高档住宅中。 1 指纹锁的架构 本指纹锁系统的硬件结构主要包括:指纹识别头、主处理微控制器、电源管理、电控锁机构以及门锁功能所需的红外感应、告警电路等,其中核心部分是指纹识别头和主处理微控制器。本指纹锁系统的硬件结构框图如图1所示。 图1 指纹门锁硬件结构框图 本指纹锁通过指纹识别头获取原始指纹数据,通过主处理器的处理提取出相关指纹特征,然后与存储器内的指纹模板做比较,如果指纹特征吻合,则通过指示灯做出相应的指示,同时输出门锁开启信号,打开门锁;在门锁开启状态,也可通过相应按键操作,进行指纹模板存储。 辅助处理器用于系统的电源管理,即管理主处理器的上下电。本设计采用层级包容架构设计,主处理器功能强大,处理功能相对复杂,功耗较高;辅助处理器功能非常简单,仅负责电源管理,完成对系统的上下电处理(除了自身不下电)。该架构有三个优点,第一,功耗极其低,在系统待机模式下,主处理器部分根本就不耗电,系统可超长时间待机工作。第二,采用层级架构,两个处理器功能完全解耦,软件可分别自由演化。第三,超可靠性,程序随着代码行数的增加,异常情况成指数倍的增长,所以主处理器程序长时间工作的可靠性大大降低,本架构由于采用了辅助处理器的方案,主处理器绝大多数时间处理断电状态,每次工作时,都经历了重新上电过程,因此原则上主处理器做到了永不死机的可靠性;而辅助处理器工作极其简单:检测触摸,然后给主处理器上电,等待主处理器空闲信号,然后给主处理器下电。程序代码行非常简短,工作可靠性极高。 【分页导航】 第1页: 指纹锁的架构 第2页: 指纹传感器的选型/指纹算法的选型 第3页: 主CPU的选型/辅助CPU的选型 2 指纹传感器的选型 在指纹产品中,指纹传感器和指纹算法是关键。指纹处理的过程是采集指纹图像,然后对指纹图像进行处理,所以能否采集到清晰的指纹图像是指纹处理的关键,指纹传感器是指纹图像的采集部件,因此,指纹传感器的性能将直接影响到指纹产品的性能。 目前采用的指纹传感器从分类上主要分为半导体指纹传感器和光学指纹传感器。半导体的指纹传感器又分为面状指纹传感器和条状指纹传感器(即滑动式指纹传感器/刮擦式指纹传感器)。 选用半导体指纹传感器主要要考虑以下几个指标: (1)抗静电性能,—般要求大于15kv,否则易被击穿。 (2)分辨率。一般至少要求256dpi,否则对细指纹不易分辩,比如银行、医院、超市等不宜应用。 (3)对干湿手指的适应性(尤其是涂有护手霜的手指)。 (4)使用寿命要求。传感器的使用寿命的要求一般要达到可使用100万次。 (5)产品一致性和适应性,不同地区人的指纹有不同的特征,所以要选用高适应性的指纹传感器。 由于本文中的指纹读头在设计中的要求体积尽量小,因此选用的是美国AuthenTec公司的AES2510的刮擦式指纹传感器。其选用的理由如下: (1)采用其最新的“The Power of Touch”技术,属于接触式的,对干湿手指不敏感。 (2)易用且能提供快速的指纹成像,具有导航功能。 (3)低功耗、小CPU占用率的特性。 (4)出货量大,成本低。 (5)尺寸相当微小,只有12mm×5mm×1.86mm。 其外观图如图2所示: 图2 AES2510实物图 3 指纹算法的选型 指纹识别算法是指纹识别的核心。常见的指纹算法有:BIOKEY指纹识别算法、Fingerpass指纹识别算法、TOUCHSEC指纹识别算法、OpenBio指纹识别算法、FAA指纹识别算法等等,国内也有许多公司也自主研发了许多具有专利的指纹识别算法,在网上也有许多公开算法的源码。在设计初期,选用公开的算法源码,会造成调试的不方便,同时算法的指标也不确定是否满足需求;大公司的指纹识别算法一般又要价比较高,谈判困难;因此最合理的方法是选用指纹厂家提供的识别算法进行开发验证,Autllentec提供的算法相对也比较成熟可靠,由于使用其指纹传感器,指纹识别算法收取费用相对较低,如果使用量较大,甚至可以免费赠送。 在我们的设计中,采用的是Authentec提供的指纹识别算法,最后验证设计结果在认假率、拒真率、比对时间上均满足需求。 【分页导航】 第1页: 指纹锁的架构 第2页: 指纹传感器的选型/指纹算法的选型 第3页: 主CPU的选型/辅助CPU的选型 4 主CPU的选型 主CPU的选型主要关注的指标是运算速度及功耗,有的厂商的产品侧重于低功耗,有的侧重于运算速度。来自于几家厂商提供的一组测试数据见表1,分别显示了不同的CPU在运算指纹匹配算法所需要的时间。 表1 运行指纹匹配算法时间对比表 由于我们采用了层级包容式架构,因此对主处理器的功耗指标不太关心,选用更高的处理速度,能给用户带来了更好的体验。本指纹锁选择的CPU是BF531。ADSP-BF531系列处理器是Blaclkflin系列产品的成员之一,是一个高度集成的片上系统解决方案。其功能框图如图3所示: ~~~~~~``` 图3 BF531的功能框图 ADSP-BF53 l是主频高达400 MHz高性能Black—fin处理器,其内核包括:2个16位MAC,2个40位ALU,4个8位视频ALu,以及1个40位移位器;对于指纹对比计算有很强的处理能力,另外,厂家又提供了为该处理器量身定做的指纹对比算法。 5 辅助CPU的选型 由于指纹锁在设计时提出的存储指标为100枚指纹,大概所需内存为lMByte以上,因此必须使用外部存储设备。为了最大限度的降低成本,我们使用SDRAM芯片来替代外部的SRAM,因此就必然导致设备的外部功耗增加,对于使用电池供电的设备,这几乎是不能容忍的,为此我们使用一个超低功耗的辅助CPU来进行设备管理。 通常情况下,主CPU的所有电路均不上电,辅助CPU感应到有手触摸锁柄时,则通过IO口控制主CPU上电,主CPU和指纹传感器开始工作,指纹比对成功后,启动开锁。无论对比是否成功,等待固定一段时间后,主CPU均会进入空闲状态,向辅助CPU发送空闲信号,辅助CPU对主CPU断电。 由于辅助CPU是长期工作,永不断电的,选则的基本原则就是超低功耗,架构简单,极高的可靠性。本文选择的是TI的MSP430F2001,MSP430单片机拥有0.5uA的超低待机电流和250uA/MIPs的运行功耗,是目前业界公认的低功耗单片机。其提供了5种低功耗模式,主要面向电池供电的应用。功能框图如图4所示: 图4 MSP430F2001的功能框图 MSP430F200l的特性描述如下:低工作电压(1.8V-3.6V);超低功耗(活动模式为220μA at 1 MHz,2.2 V,待机模式为0.5μA,关闭模式为0.1μA);五种省电模式;从待机模式唤醒1μs。 6 其它 本方案中还采取了其它降功耗措施: 主处理器的LDO改为DC/DC开关芯片,提高工作时的电源效率; 开锁继电器的先用大电流驱动1秒使其吸合,然后通过调整控制端的占空比为30%,让其进行4秒的维持状态; 7 结束语 本设计通过合理选择器件,围绕低成本、低功耗、高运算性能、电池供电等特性要求优化电路,设计完成的新型指纹锁电路在性能指标、稳定性、兼容性低硬件成本方面具有非常大优势。 通过本设计制作出数台样机,在仅使用两节5号电池不更换的情况下,每天开锁3次,已连续可靠的工作了2年。 本设计完成的指纹锁,可以广泛应用于工业门标禁、指纹考勤、国防安全等众多领域。 【分页导航】 第1页: 指纹锁的架构 第2页: 指纹传感器的选型/指纹算法的选型 第3页: 主CPU的选型/辅助CPU的选型
相关资源
广告