-
在big-endian格式中,对于地址为a的字单元其中字节单元由高位到低位字节顺序为A,A+1,A=2,A+3;这种存储器格式如下所示:
31 24 23 16 15 8 7 0
--------------------------------------------------------------------
字单元A |
--------------------------------------------------------------------
半字单元A | 半字单元A+2 |
--------------------------------------------------------------------
字节单元A | 字节单元A+1 | 字节单元A+2 | 字节单元A+3|
--------------------------------------------------------------------
在little-endian格式中,对于地址为A的字单元由高位到低位字节顺序为A+3,A+2,A+1,A,这种存储格式如下所示
31 24 23 16 15 8 7 0
--------------------------------------------------------------------
字单元A |
--------------------------------------------------------------------
半字单元A+2 | 半字单元A |
--------------------------------------------------------------------
字节单元A+3 |字节单元A+2 | 字节单元A+1 | 字节单元A |
--------------------------------------------------------------------
在ARM系统中没有提供指令来选择存储器格式。如果系统中包含标准的ARM控制协处理器CP15,则CP15的寄存器C1的位[7]决定系统中存储器的格式。当系统复位时,寄存器C1的[7]值为零,这时系统中存储器格式为little-endian格式。如果系统中采用的是big-endian格式,则复位异常中断处理程序中必须设置c1寄存器的[7]位。
3.非对齐的存储访问操作
非对齐:位于arm状态期间,低二位不为0b00;位于Thumb状态期间,最低位不为0b0。
3.1非对齐的指令预取操作
如果系统中指定当发生非对齐的指令预取操作时,忽略地址中相应的位,则由存储系统实现这种忽略。
3.2非对齐的数据访问操作
对于LOAD/STORE操作,系统定义了下面3中可能的结果:
***执行结果不可预知
***忽略字单元地址低两位的值,即访问地址为字单元;忽略半字单元最低位的值,即访问地址为半字单元。
***由存储系统忽略字单元地址中低两位的值,半字单元地址最低位的值。
4.指令预取和自修改代码
当用户读取PC计数器的值时,返回的是当前指令下面的第二条指令的地址。对于ARM指令来说,返回当前指令地址值加8个字节;对于Thumb指令来说,返回值为当前指令地址值加4个字节。
自修改代码指的是代码在执行过程中修改自身。应尽量避免使用。
5.存储器映射的I/O空间
在ARM中,I/O操作通常被影射为存储器操作。通常需要将存储器映射的I/O空间设置成非缓冲的。
*************************************************************
ARM编译器支持的数据类型
************************************************************
数据类型 长度(位) 对齐特性
Char 8 1(字节对齐)
short 16 2(百字对齐)
Int 32 4(字对齐)
Long 32 4(字对齐)
Longlong 64 4(字对齐)
Float 32 4(字对齐)
Double 64 4(字对齐)
Long double 64 4(字对齐)
All pointers 32 4(字对齐)
Bool(C++ only) 32 4(字对齐)
1.整数类型
在ARM体系中,整数类型是以2的补码形式存储的。对于long long类型来说,在little endian内存模式下,其低32位保存在低地址的字单元中,高32为保存在高地址的字单元中;在big endian模式下,其低32位保存在高地址的字单元中,高32为保存在低地址的字单元中。对于整型数据的操作遵守下面的规则:
**所有带符号的整型书的运算是按照二进制的补码进行的。
**带符号的整型数的运算不进行符号的扩展。
**带符号的整型数的右移操作是算数移位。
**制定的移位位数的数是8位的无符号数。
**进行移位操作的数被作为32位数。
**超过31位的逻辑左移的结果为0。
**对于无符号数和有符号的正数来说,超过32位的右移操作结果为0;对于有符号的负数来说,超过32位的右移操作结果为-1。
**整数除法运算的余数和除数有相同的符号。
**当把一个整数截断成位数更短的整数类型的数时,并不能保证所得到的结果的最高位的符号位的正确性。
**整型数据之间的类型转换不会产生异常中断。
**整型数据的溢出不会产生异常中断。
**整型数据除以0将会产生异常中断。
2.浮点数
在ARM体系中,浮点数是按照IEEE标准存储的。
**float类型的数是按照IEEE的单精度数表示的。
**double和long double 是用IEEE的双精度数表示的。
对于浮点数的操作遵守下面的规则:
**遵守正常的IEEE754规则。
**当默认情况下禁止浮点数运算异常中断。
**当发生卷绕时,用最接近的数据来表示。
3.指针类型的数据
下面的规则适用于处数据成员指针以外的其他指针:
**NULL被定义为0。
**相邻的两个存储单元地址相差一。
**在指向函数的指针和指向数据的指针进行数据转换时,编译器将会产生警告信息。
**类型size_t被定义为unsigned int.
**类型ptrdiff_t被定义为signed int。
**两个指针类型的数据相减时,结果可以按照下面的公式得到。
((int)a-(int)b)/(int)sizeof(type pointed to)
这时,只要指针所指的对象不是pack的,其对齐特性能够满足整除的要求。
*****************************************************
ARM编译器中预定义的宏
*****************************************************
ARM编译器预定义了一些宏,这些预定义宏对应一定的数值,有些预定义宏没有对应数值,见下表:
_arm _ 使用编译器armcc,tcc,armcpp,tcpp时
_ARMCC_VERSION Ver 代表编译器版本号,其格式为:
PVtbbb,其中:
P为产品编号(1代表ADS)
V为副版本号(1代表1.1)
T为补丁版本号(0代表1.1)
bbb为build号(比如650)
_APCS_INTERWORK _ 使用编译选项-apcs/interwork时
_APCS_ROPI _ 使用编译选项apcs/ropi时
_RWPI _ 使用编译选项-apcs/rwpi时
_APCS_SWST _ 使用编译选项-apcs/swst时
_BIG_ENDIAN _ 编译器针对目标系统使用big-endian内存模式时
_cplusplus _ 编译器工作与C++模式时
_CC_ARM _ 返回编译器的名称
_DATE_ date 编译源文件的日期
_embedded_cplusplus 编译器工作于EC++模式时
_FEATURE_SINGED_CHAE 使用编译设置选项-zc时设置该预定义宏
_FILE_ name 包含全路径的当前被编译的源文件名称
_func_ name 当前被编译的函数名称
_LINE_ num 当前被编译的代码行号名称
_MOUDLE_ mod 预定义宏_FILE_的文件名称部分
_OPTIMISE_SPACE _ 使用编译选项-OSPACE时
_OPTIMISE_TIME _ 使用编译选项-Otime时
_pretty_func name unmangled的当前函数名称
_sizeof_int 4 sizeof(int),在预处理表达式中可以使用
_sizeof_long 4 sizeof(long),在预处理表达式中可以使用
_sizeof_ptr 4 sizeof(void*)在预处理表达式中可以使用
_SOFTFP _ 编译时使用浮点数
_ _ 在各种编译器模式下
_STDC_VERSION _ 标准的版本信息
_STRICT_ANSI_ _ 使用编译选项-STRICT时
_TARGET_ARCH_xx _ xx代表ARM体系编号
_TARGET_CPU_xx _ xx代表CPU编号
_TARGET_FEATURE_ 当ARM体系支持指令PLD,LDRD,STRD,MCRR,MRRC时
DOUBLEWORD _ 设置该定义宏
_TARGET_FEATURE_ 当系统中包含DSP乘法处理器时,设置该
DSPMUL _ 预定义宏
_TARGET_FEATURE_ 如果目标ARM体系支持半字访问以及有符号的字节数据
HALFWORD _ ,设置该预定义宏
_TARGET_FEATURE_ 如果目标ARM体系支持长乘法指令MULL和
MULTIPLY _ MUAL,设置该预定义宏
_TARGET_FEATURE_ 如果目标ARM体系支持THUMB指令
THUMB _
_TARGET_FPU_xx _ &nbs
-
***Q标识位***
在ARM V5的E系列处理器中,CPSR的bit[27]称为q标识位,主要用于指示增强的dsp指令是否发生了溢出。同样的spsr的bit[27]位也称为q标识位,用于在异常中
断发生时保存和恢复CPSR中的Q标识位。
在ARM V5以前的版本及ARM V5的非E系列的处理器中,Q标识位没有被定义。
***CPSR中的控制位***
CPSR的低八位I、F、T、M[4:0]统称为控制位。当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。
**中断禁止位:当I=1时禁止IRQ中断,当F=1时禁止FIQ中断
**T控制位:T控制位用于控制指令执行的状态,即说明本指令是ARM指令还是Thumb指令。对于ARM V4以更高版本的T系列ARM处理器,T控制位含义如下:
T=0表示执行ARM指令
T=1表示执行Thumb指令
对于ARM V5以及更高版本的非T系列处理器,T控制位的含义如下
T=0表示执行ARM指令
T=1表示强制下一条执行的指令产生未定指令中断
***M控制位***
M控制位控制处理器模式,具体含义如下:
M[4:0] 处理器模式 可访问的寄存器
ob10000 user pc,r14~r0,CPSR
0b10001 FIQ PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SPSR_FIQ
0b10010 IRQ PC,R14_IRQ-R13_IRQ,R12~R0,CPSR,SPSR_IRQ
0B10011 SUPERVISOR PC,R14_SVC-R13_SVC,R12~R0,CPSR,SPSR_SVC
0b10111 ABORT PC,R14_ABT-R13_ABT,R12~R0,CPSR,SPSR_ABT
0b11011 UNDEFINEED PC,R14_UND-R8_UND,R12~R0,CPSR,SPSR_UND
0b11111 SYSTEM PC,R14-R0,CPSR(ARM V4以及更高版本)
***CPSR中的其他位***
这些位用于将来扩展。应用软件不要操作这些位。
在ARM体系中通常有以下3种方式控制程序的执行流程:
**在正常执行过程中,每执行一条ARM指令,程序计数器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器(PC)加2个字节。整个过程是按顺序执行。
**跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。其中,B指令用于执行跳转操作;BL指令在执行跳转操作同时,保存子程序的返回地址;BX指令在执行跳转操作同时,根据目标地址为可以将程序切换到Thumb状态;BLX指令执行3个操作,跳转到目标地址处执行,保存子程序的返回地址,根据目标地址为可以将程序切换到Thumb状态。
**当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指
令处执行。在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。
ARM中异常中断的种类
**复位(RESET)**
当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面几种情况下:系统加电时;系统复位时;跳转到复位中断向量处执行成为软复位。
**未定义的指令**
当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。
**软件中断**
这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制西线系统功能调用。
**指令与取终止(PrefechAbort)**
如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。
**数据访问终止(DATAABORT)
如果数据访问指令的目标地址不存在,,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断
**外部中断请求(IRQ)**
当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。系统中个外设通过该异常中断请求处理服务。
**快速中断请求(FIQ)**
当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断
异常中断向量表及异常中断优先级
中断向量表指定了个异常中断及其处理程序的对应关系。他通常存放在存储地址的低端。在ARM体系中,异常中断向量表的大小为32字节,其中每个异常中断占据4个字节大小,保留了4个字节空间。
每个异常中断对应的中断向量表中的4个字节的空间中存放了一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。当几个异常中断同时发生时,就必须按照一定的次序来处理这些异常中断。
各个异常中断的中断向量地址以及中断的处理优先级
中断向量地址 异常中断类型 异常中断模式 优先级(6最低)
0x00 复位 特权模式 1
0x04 未定义的指令 未定义指令终止模式 6
0x08 软件中断 特权模式 6
0x0C 指令预取终止 终止模式 5
0x10 数据访问终止 终止模式 2
0x14 保留 未使用 未使用
0x18 外部中断请求 IRQ模式 4
0x1C 快速中断请求 FIQ模式 3
在应用程序中安装异常中断处理程序
1.使用跳转指令:可以在异常中断对应异常向量表中特定位置放置一条跳转指令,直接跳转到该异常中断的处理程序。这种方法有一个缺点,即只能在32M空间范围内跳转。
2.使用数据读取指令LDR:使用数据读取指令LDR向程序计数器PC中直接赋值。这种方法分为两步:先将异常中断处理程序的绝对地址存放在存放在距离向量表4KB范围内的一个存储单元中;再使用数据读取指令LDR将该单元的内容读取到程序计数器PC中。
**在系统复位时安装异常中断处理程序**
1.地址0x00处为ROM的情况
使用数据读取指令LDR示例如下所示:
Vector_Init_Block
LDR PC, Reset_Addr
LDR PC, Undefined_Addr
LDR PC, SW_Addr
LDR PC, Prefeth_Addr
LDR PC, Abort_Addr
NOP
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
Reset_Addr DCD Start_Boot
Undefined_Addr DCD Undefined_Handle
SW_Addr DCD SWI_Handle
Prefeth_Addr DCD Prefeth_Handle
Abort_Addr DCD Abort_Handle
DCD 0
IRQ_Addr DCD IRQ_Handle
FIQ_Addr DCD FIQ_Handle
使用跳转指令的示例如下所示:
Vector_Init_Block
BL Reset_Handle
BL DCD Undefined_Handle
BL SWI_Handle
BL Prefeth_Handle
BL Abort_Handle
NOP
BL IRQ_Handle
BL FIQ_Handle
2.地址0x00处为RAM的情况
地址0x00处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且,必须使用下面的代码巴中断向量表从ROM中复制到RAM中地址0x00开始处的存储空间中:
MOV r8,#0
ADR r9,Vector_Init_Block
;复制中断向量表(8字)
LDMIA r9!,(r0-r7)
STMIA r8!,(r0-r7)
;复制保存各中断处理函数地址的表(8字words)
LDMIA r9!,(r0-r7)
STMIA r8!,(r0-r7)
*********************************************
ARM存储系统概述
*********************************************
ARM存储系统的体系结构适应不同的嵌入式应用系统的需要差别很大。最简单的存储系统使用平办事的地址映射机制,就像一些简单的弹片机系统中一样,地址空间的分配方式是固定的,系统各部分都使用物理地址。而一些复杂系统可能包括下面的一种或几种技术,从而提供更为强大的存储系统。
**系统中可能包含多种类型的存储器,如FLASH,ROM,RAM,EEPROM等,不同类型的存储器的速度和宽度等各不相同。
**通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。
**内存管理部件通过内存映射技术实现虚拟空间到物理空间的映射。在系统加电时,将ROM/FLASH影射为地址0,这样可以进行一些初始化处理;当这些初始化完成后将RAM地址影射为0,并把系统程序加载到RAM中运行,这样很好地解决了嵌入式系统的需要。
**引入存储保护机制,增强系统的安全性。
**引入一些机制保证I/O操作应设成内存操作后,各种I/O操作能够得到正确的结果。
**与存储系统相关的程序设计指南**
本节从外部来看ARM存储系统,及ARM存储系统提供的对外接口。本节介绍用户通过这些接口来访问ARM存储系统时需要遵守的规则。
1.地址空间
ARM体系使用单一的和平板地址空间。该地址空间大小为2^32个8位字节,这些字节的单元地址是一个无符号的32位数值,其取值范围为0~2^32-1。ARM地址空间也可以看作是2^30个32位的字单元。这些字单元的地址可以被4整除,也就是说该地址低两位为0b00。地址为A的字数据包括地址为A、A+1、A+3、A+3 4个字节单元的内容。
各存储单元的地址作为32为无符号数,可以进行常规的整数运算。这些运算的结果进行2^32取模。
程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。但是,当地址上发生溢出时,执行结果将是不可预知的。
2.存储器格式
在ARM中,如果地址A是字对齐的,有下面几种:
**地址为A的字单元包括字节单元A,A+1,A+2,A+3。
**地址为A的班子单元包括字节单元A,A+1。
**地址为A+2的半字单元包括字节单元A+2,A=3.
**地址为A的字单元包括半字节单元A,A+2。
-
1.使用跳转指令:可以在异常中断对应异常向量表中特定位置放置一条跳转指令,直接跳转到该异常中断的处理程序。这种方法有一个缺点,即只能在32M空间范围内跳转。
2.使用数据读取指令LDR:使用数据读取指令LDR向程序计数器PC中直接赋值。这种方法分为两步:先将异常中断处理程序的绝对地址存放在存放在距离向量表4KB范围内的一个存储单元中;再使用数据读取指令LDR将该单元的内容读取到程序计数器PC中。
**在系统复位时安装异常中断处理程序**
1.地址0x00处为ROM的情况
使用数据读取指令LDR示例如下所示:
Vector_Init_Block
LDR PC, Reset_Addr
LDR PC, Undefined_Addr
LDR PC, SW_Addr
LDR PC, Prefeth_Addr
LDR PC, Abort_Addr
NOP
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
Reset_Addr DCD Start_Boot
Undefined_Addr DCD Undefined_Handle
SW_Addr DCD SWI_Handle
Prefeth_Addr DCD Prefeth_Handle
Abort_Addr DCD Abort_Handle
DCD 0
IRQ_Addr DCD IRQ_Handle
FIQ_Addr DCD FIQ_Handle
使用跳转指令的示例如下所示:
Vector_Init_Block
BL Reset_Handle
BL DCD Undefined_Handle
BL SWI_Handle
BL Prefeth_Handle
BL Abort_Handle
NOP
BL IRQ_Handle
BL FIQ_Handle
2.地址0x00处为RAM的情况
地址0x00处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且,必须使用下面的代码巴中断向量表从ROM中复制到RAM中地址0x00开始处的存储空间中:
MOV r8,#0
ADR r9,Vector_Init_Block
;复制中断向量表(8字)
LDMIA r9!,(r0-r7)
STMIA r8!,(r0-r7)
;复制保存各中断处理函数地址的表(8字words)
LDMIA r9!,(r0-r7)
STMIA r8!,(r0-r7)
*********************************************
ARM存储系统概述
*********************************************
ARM存储系统的体系结构适应不同的嵌入式应用系统的需要差别很大。最简单的存储系统使用平办事的地址映射机制,就像一些简单的弹片机系统中一样,地址空间的分配方式是固定的,系统各部分都使用物理地址。而一些复杂系统可能包括下面的一种或几种技术,从而提供更为强大的存储系统。
**系统中可能包含多种类型的存储器,如FLASH,ROM,RAM,EEPROM等,不同类型的存储器的速度和宽度等各不相同。
**通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。
**内存管理部件通过内存映射技术实现虚拟空间到物理空间的映射。在系统加电时,将ROM/FLASH影射为地址0,这样可以进行一些初始化处理;当这些初始化完成后将RAM地址影射为0,并把系统程序加载到RAM中运行,这样很好地解决了嵌入式系统的需要。
**引入存储保护机制,增强系统的安全性。
**引入一些机制保证I/O操作应设成内存操作后,各种I/O操作能够得到正确的结果。
**与存储系统相关的程序设计指南**
本节从外部来看ARM存储系统,及ARM存储系统提供的对外接口。本节介绍用户通过这些接口来访问ARM存储系统时需要遵守的规则。
1.地址空间
ARM体系使用单一的和平板地址空间。该地址空间大小为2^32个8位字节,这些字节的单元地址是一个无符号的32位数值,其取值范围为0~2^32-1。ARM地址空间也可以看作是2^30个32位的字单元。这些字单元的地址可以被4整除,也就是说该地址低两位为0b00。地址为A的字数据包括地址为A、A+1、A+3、A+3 4个字节单元的内容。
各存储单元的地址作为32为无符号数,可以进行常规的整数运算。这些运算的结果进行2^32取模。
程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。但是,当地址上发生溢出时,执行结果将是不可预知的。
2.存储器格式
在ARM中,如果地址A是字对齐的,有下面几种:
**地址为A的字单元包括字节单元A,A+1,A+2,A+3。
**地址为A的班子单元包括字节单元A,A+1。
**地址为A+2的半字单元包括字节单元A+2,A=3.
**地址为A的字单元包括半字节单元A,A+2。
在big-endian格式中,对于地址为a的字单元其中字节单元由高位到低位字节顺序为A,A+1,A=2,A+3;这种存储器格式如下所示:
31 24 23 16 15 8 7 0
--------------------------------------------------------------------
字单元A |
--------------------------------------------------------------------
半字单元A | 半字单元A+2 |
--------------------------------------------------------------------
字节单元A | 字节单元A+1 | 字节单元A+2 | 字节单元A+3|
--------------------------------------------------------------------
在little-endian格式中,对于地址为A的字单元由高位到低位字节顺序为A+3,A+2,A+1,A,这种存储格式如下所示
31 24 23 16 15 8 7 0
--------------------------------------------------------------------
字单元A |
--------------------------------------------------------------------
半字单元A+2 | 半字单元A |
--------------------------------------------------------------------
字节单元A+3 |字节单元A+2 | 字节单元A+1 | 字节单元A |
--------------------------------------------------------------------
在ARM系统中没有提供指令来选择存储器格式。如果系统中包含标准的ARM控制协处理器CP15,则CP15的寄存器C1的位[7]决定系统中存储器的格式。当系统复位时,寄存器C1的[7]值为零,这时系统中存储器格式为little-endian格式。如果系统中采用的是big-endian格式,则复位异常中断处理程序中必须设置c1寄存器的[7]位。
ARM基础知识
ARM处理器共有37个寄存器。其中包括:
**31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。
**6个状态寄存器。这些寄存器都是32位寄存器。
ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。
****************************************************
通用寄存器
***************************************************8
通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC
未备份寄存器
未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。
备份寄存器
对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。
对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器:
R13_
其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq
程序计数器PC
可以作为一般的通用寄存器使用,但有一些指令在使用R15时有一些限制。由于ARM采用了流水线处理器机制,当正确读取了PC的值时,该值为当前指令地址值加上8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第一位总为0。
需要注意的是,当使用str/stm保存R15时,保存的可能是当前指令地址值加8个字节,也可能保存的是当前指令地址值加12个字节。到底哪种方式取决于芯片的具体设计。对于用户来说,尽量避免使用STR/STM指令来保存R15的值。
当成功的向R15写入一个数值时,程序将跳转到该地址执行。由于ARM指令是字对齐的,写入R15的值应满足bits[1:0]为0b00,具体要求arm个版本有所不同:
**对于arm3以及更低的版本,写入R15的地址值bits[1:0]被忽略,即写入r15的地址值将与0xFFFF FFFC做与操作。
**对于ARM4以及更高的版本,程序必须保证写入R15的地址值bits[1:0]为0b00,否则将产生不可预知的后果。
对于Thumb指令集来说,指令是班子对齐的,处理器将忽略bit[0]。
***************************************************************
程序状态寄存器
***************************************************************
CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器
模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)
。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。由于用户模式和系统模式不是异常中断模式,所以他没有SPSR。当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。
CPSR格式如下所示。SPSR和CPSR格式相同。
31 30 29 28 27 26 7 6 5 4 3 2 1 0
N Z C V Q DNM(RAZ) I F T M4 M3 M2 M1 M0
***条件标志位***
N——本位设置成当前指令运算结果的bit[31]的值。当两个表示的有符号整数运算时,n=1表示运算结果为负数,n=0表示结果为正书或零。
z——z=1表示运算的结果为零;z=0表示运算的结果不为零。对于CMP指令,Z=1表示进行比较的两个数大小相等。
C——下面分四种情况讨论C的设置方法:
在加法指令中(包括比较指令CMP),当结果产生了进位,则C=1,表示无符号运算发生上溢出;其他情况C=0。
在减法指令中(包括减法指令CMP),当运算中发生错位,则C=0,表示无符号运算数发生下溢出;其他情况下C=1。
对于包含移位操作的非加碱运算指令,C中包含最后一次溢出的的位的数值
对于其他非加减运算指令,C位的值通常不受影响
V——对于加减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号为溢出;通常其他指令不影响V位。
-
***Q标识位***
在ARM V5的E系列处理器中,CPSR的bit[27]称为q标识位,主要用于指示增强的dsp指令是否发生了溢出。同样的spsr的bit[27]位也称为q标识位,用于在异常中
断发生时保存和恢复CPSR中的Q标识位。
在ARM V5以前的版本及ARM V5的非E系列的处理器中,Q标识位没有被定义。
***CPSR中的控制位***
CPSR的低八位I、F、T、M[4:0]统称为控制位。当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。
**中断禁止位:当I=1时禁止IRQ中断,当F=1时禁止FIQ中断
**T控制位:T控制位用于控制指令执行的状态,即说明本指令是ARM指令还是Thumb指令。对于ARM V4以更高版本的T系列ARM处理器,T控制位含义如下:
T=0表示执行ARM指令
T=1表示执行Thumb指令
对于ARM V5以及更高版本的非T系列处理器,T控制位的含义如下
T=0表示执行ARM指令
T=1表示强制下一条执行的指令产生未定指令中断
***M控制位***
M控制位控制处理器模式,具体含义如下:
M[4:0] 处理器模式 可访问的寄存器
ob10000 user pc,r14~r0,CPSR
0b10001 FIQ PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SPSR_FIQ
0b10010 IRQ PC,R14_IRQ-R13_IRQ,R12~R0,CPSR,SPSR_IRQ
0B10011 SUPERVISOR PC,R14_SVC-R13_SVC,R12~R0,CPSR,SPSR_SVC
0b10111 ABORT PC,R14_ABT-R13_ABT,R12~R0,CPSR,SPSR_ABT
0b11011 UNDEFINEED PC,R14_UND-R8_UND,R12~R0,CPSR,SPSR_UND
0b11111 SYSTEM PC,R14-R0,CPSR(ARM V4以及更高版本)
***CPSR中的其他位***
这些位用于将来扩展。应用软件不要操作这些位。
在ARM体系中通常有以下3种方式控制程序的执行流程:
**在正常执行过程中,每执行一条ARM指令,程序计数器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器(PC)加2个字节。整个过程是按顺序执行。
**跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。其中,B指令用于执行跳转操作;BL指令在执行跳转操作同时,保存子程序的返回地址;BX指令在执行跳转操作同时,根据目标地址为可以将程序切换到Thumb状态;BLX指令执行3个操作,跳转到目标地址处执行,保存子程序的返回地址,根据目标地址为可以将程序切换到Thumb状态。
**当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指
令处执行。在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。
ARM中异常中断的种类
**复位(RESET)**
当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面几种情况下:系统加电时;系统复位时;跳转到复位中断向量处执行成为软复位。
**未定义的指令**
当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。
**软件中断**
这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制西线系统功能调用。
**指令与取终止(PrefechAbort)**
如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。
**数据访问终止(DATAABORT)
如果数据访问指令的目标地址不存在,,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断
**外部中断请求(IRQ)**
当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。系统中个外设通过该异常中断请求处理服务。
**快速中断请求(FIQ)**
当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断
异常中断向量表及异常中断优先级
中断向量表指定了个异常中断及其处理程序的对应关系。他通常存放在存储地址的低端。在ARM体系中,异常中断向量表的大小为32字节,其中每个异常中断占据4个字节大小,保留了4个字节空间。
每个异常中断对应的中断向量表中的4个字节的空间中存放了一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。当几个异常中断同时发生时,就必须按照一定的次序来处理这些异常中断。
各个异常中断的中断向量地址以及中断的处理优先级
中断向量地址 异常中断类型 异常中断模式 优先级(6最低)
0x00 复位 特权模式 1
0x04 未定义的指令 未定义指令终止模式 6
0x08 软件中断 特权模式 6
0x0C 指令预取终止 终止模式 5
0x10 数据访问终止 终止模式 2
0x14 保留 未使用 未使用
0x18 外部中断请求 IRQ模式 4
0x1C 快速中断请求 FIQ模式 3
在应用程序中安装异常中断处理程序
-
ARM存储系统概述
*********************************************
ARM存储系统的体系结构适应不同的嵌入式应用系统的需要差别很大。最简单的存储系统使用平办事的地址映射机制,就像一些简单的弹片机系统中一样,地址空间的分配方式是固定的,系统各部分都使用物理地址。而一些复杂系统可能包括下面的一种或几种技术,从而提供更为强大的存储系统。
**系统中可能包含多种类型的存储器,如FLASH,ROM,RAM,EEPROM等,不同类型的存储器的速度和宽度等各不相同。
**通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。
**内存管理部件通过内存映射技术实现虚拟空间到物理空间的映射。在系统加电时,将ROM/FLASH影射为地址0,这样可以进行一些初始化处理;当这些初始化完成后将RAM地址影射为0,并把系统程序加载到RAM中运行,这样很好地解决了嵌入式系统的需要。
**引入存储保护机制,增强系统的安全性。
**引入一些机制保证I/O操作应设成内存操作后,各种I/O操作能够得到正确的结果。
**与存储系统相关的程序设计指南**
本节从外部来看ARM存储系统,及ARM存储系统提供的对外接口。本节介绍用户通过这些接口来访问ARM存储系统时需要遵守的规则。
1.地址空间
ARM体系使用单一的和平板地址空间。该地址空间大小为2^32个8位字节,这些字节的单元地址是一个无符号的32位数值,其取值范围为0~2^32-1。ARM地址空间也可以看作是2^30个32位的字单元。这些字单元的地址可以被4整除,也就是说该地址低两位为0b00。地址为A的字数据包括地址为A、A+1、A+3、A+3 4个字节单元的内容。
各存储单元的地址作为32为无符号数,可以进行常规的整数运算。这些运算的结果进行2^32取模。
程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。但是,当地址上发生溢出时,执行结果将是不可预知的。
2.存储器格式
在ARM中,如果地址A是字对齐的,有下面几种:
**地址为A的字单元包括字节单元A,A+1,A+2,A+3。
**地址为A的班子单元包括字节单元A,A+1。
**地址为A+2的半字单元包括字节单元A+2,A=3.
**地址为A的字单元包括半字节单元A,A+2。
在big-endian格式中,对于地址为a的字单元其中字节单元由高位到低位字节顺序为A,A+1,A=2,A+3;这种存储器格式如下所示:
31 24 23 16 15 8 7 0
--------------------------------------------------------------------
字单元A |
--------------------------------------------------------------------
半字单元A | 半字单元A+2 |
--------------------------------------------------------------------
字节单元A | 字节单元A+1 | 字节单元A+2 | 字节单元A+3|
--------------------------------------------------------------------
在little-endian格式中,对于地址为A的字单元由高位到低位字节顺序为A+3,A+2,A+1,A,这种存储格式如下所示
31 24 23 16 15 8 7 0
--------------------------------------------------------------------
字单元A |
--------------------------------------------------------------------
半字单元A+2 | 半字单元A |
--------------------------------------------------------------------
字节单元A+3 |字节单元A+2 | 字节单元A+1 | 字节单元A |
--------------------------------------------------------------------
在ARM系统中没有提供指令来选择存储器格式。如果系统中包含标准的ARM控制协处理器CP15,则CP15的寄存器C1的位[7]决定系统中存储器的格式。当系统复位时,寄存器C1的[7]值为零,这时系统中存储器格式为little-endian格式。如果系统中采用的是big-endian格式,则复位异常中断处理程序中必须设置c1寄存器的[7]位。
ARM基础知识
ARM处理器共有37个寄存器。其中包括:
**31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。
**6个状态寄存器。这些寄存器都是32位寄存器。
ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。
****************************************************
通用寄存器
***************************************************8
通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC
未备份寄存器
未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。
备份寄存器
对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。
对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器:
R13_
其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq
程序计数器PC
可以作为一般的通用寄存器使用,但有一些指令在使用R15时有一些限制。由于ARM采用了流水线处理器机制,当正确读取了PC的值时,该值为当前指令地址值加上8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第一位总为0。
需要注意的是,当使用str/stm保存R15时,保存的可能是当前指令地址值加8个字节,也可能保存的是当前指令地址值加12个字节。到底哪种方式取决于芯片的具体设计。对于用户来说,尽量避免使用STR/STM指令来保存R15的值。
当成功的向R15写入一个数值时,程序将跳转到该地址执行。由于ARM指令是字对齐的,写入R15的值应满足bits[1:0]为0b00,具体要求arm个版本有所不同:
**对于arm3以及更低的版本,写入R15的地址值bits[1:0]被忽略,即写入r15的地址值将与0xFFFF FFFC做与操作。
**对于ARM4以及更高的版本,程序必须保证写入R15的地址值bits[1:0]为0b00,否则将产生不可预知的后果。
对于Thumb指令集来说,指令是班子对齐的,处理器将忽略bit[0]。
***************************************************************
程序状态寄存器
***************************************************************
CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器
模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)
。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。由于用户模式和系统模式不是异常中断模式,所以他没有SPSR。当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。
CPSR格式如下所示。SPSR和CPSR格式相同。
31 30 29 28 27 26 7 6 5 4 3 2 1 0
N Z C V Q DNM(RAZ) I F T M4 M3 M2 M1 M0
***条件标志位***
N——本位设置成当前指令运算结果的bit[31]的值。当两个表示的有符号整数运算时,n=1表示运算结果为负数,n=0表示结果为正书或零。
z——z=1表示运算的结果为零;z=0表示运算的结果不为零。对于CMP指令,Z=1表示进行比较的两个数大小相等。
C——下面分四种情况讨论C的设置方法:
在加法指令中(包括比较指令CMP),当结果产生了进位,则C=1,表示无符号运算发生上溢出;其他情况C=0。
在减法指令中(包括减法指令CMP),当运算中发生错位,则C=0,表示无符号运算数发生下溢出;其他情况下C=1。
对于包含移位操作的非加碱运算指令,C中包含最后一次溢出的的位的数值
对于其他非加减运算指令,C位的值通常不受影响
V——对于加减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号为溢出;通常其他指令不影响V位。
-
1.使用跳转指令:可以在异常中断对应异常向量表中特定位置放置一条跳转指令,直接跳转到该异常中断的处理程序。这种方法有一个缺点,即只能在32M空间范围内跳转。
2.使用数据读取指令LDR:使用数据读取指令LDR向程序计数器PC中直接赋值。这种方法分为两步:先将异常中断处理程序的绝对地址存放在存放在距离向量表4KB范围内的一个存储单元中;再使用数据读取指令LDR将该单元的内容读取到程序计数器PC中。
**在系统复位时安装异常中断处理程序**
1.地址0x00处为ROM的情况
使用数据读取指令LDR示例如下所示:
Vector_Init_Block
LDR PC, Reset_Addr
LDR PC, Undefined_Addr
LDR PC, SW_Addr
LDR PC, Prefeth_Addr
LDR PC, Abort_Addr
NOP
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
Reset_Addr DCD Start_Boot
Undefined_Addr DCD Undefined_Handle
SW_Addr DCD SWI_Handle
Prefeth_Addr DCD Prefeth_Handle
Abort_Addr DCD Abort_Handle
DCD 0
IRQ_Addr DCD IRQ_Handle
FIQ_Addr DCD FIQ_Handle
使用跳转指令的示例如下所示:
Vector_Init_Block
BL Reset_Handle
BL DCD Undefined_Handle
BL SWI_Handle
BL Prefeth_Handle
BL Abort_Handle
NOP
BL IRQ_Handle
BL FIQ_Handle
2.地址0x00处为RAM的情况
地址0x00处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且,必须使用下面的代码巴中断向量表从ROM中复制到RAM中地址0x00开始处的存储空间中:
MOV r8,#0
ADR r9,Vector_Init_Block
;复制中断向量表(8字)
LDMIA r9!,(r0-r7)
STMIA r8!,(r0-r7)
;复制保存各中断处理函数地址的表(8字words)
LDMIA r9!,(r0-r7)
STMIA r8!,(r0-r7)
*********************************************
-
***Q标识位***
在ARM V5的E系列处理器中,CPSR的bit[27]称为q标识位,主要用于指示增强的dsp指令是否发生了溢出。同样的spsr的bit[27]位也称为q标识位,用于在异常中
断发生时保存和恢复CPSR中的Q标识位。
在ARM V5以前的版本及ARM V5的非E系列的处理器中,Q标识位没有被定义。
***CPSR中的控制位***
CPSR的低八位I、F、T、M[4:0]统称为控制位。当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。
**中断禁止位:当I=1时禁止IRQ中断,当F=1时禁止FIQ中断
**T控制位:T控制位用于控制指令执行的状态,即说明本指令是ARM指令还是Thumb指令。对于ARM V4以更高版本的T系列ARM处理器,T控制位含义如下:
T=0表示执行ARM指令
T=1表示执行Thumb指令
对于ARM V5以及更高版本的非T系列处理器,T控制位的含义如下
T=0表示执行ARM指令
T=1表示强制下一条执行的指令产生未定指令中断
***M控制位***
M控制位控制处理器模式,具体含义如下:
M[4:0] 处理器模式 可访问的寄存器
ob10000 user pc,r14~r0,CPSR
0b10001 FIQ PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SPSR_FIQ
0b10010 IRQ PC,R14_IRQ-R13_IRQ,R12~R0,CPSR,SPSR_IRQ
0B10011 SUPERVISOR PC,R14_SVC-R13_SVC,R12~R0,CPSR,SPSR_SVC
0b10111 ABORT PC,R14_ABT-R13_ABT,R12~R0,CPSR,SPSR_ABT
0b11011 UNDEFINEED PC,R14_UND-R8_UND,R12~R0,CPSR,SPSR_UND
0b11111 SYSTEM PC,R14-R0,CPSR(ARM V4以及更高版本)
***CPSR中的其他位***
这些位用于将来扩展。应用软件不要操作这些位。
在ARM体系中通常有以下3种方式控制程序的执行流程:
**在正常执行过程中,每执行一条ARM指令,程序计数器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器(PC)加2个字节。整个过程是按顺序执行。
**跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。其中,B指令用于执行跳转操作;BL指令在执行跳转操作同时,保存子程序的返回地址;BX指令在执行跳转操作同时,根据目标地址为可以将程序切换到Thumb状态;BLX指令执行3个操作,跳转到目标地址处执行,保存子程序的返回地址,根据目标地址为可以将程序切换到Thumb状态。
**当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指
令处执行。在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。
ARM中异常中断的种类
**复位(RESET)**
当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面几种情况下:系统加电时;系统复位时;跳转到复位中断向量处执行成为软复位。
**未定义的指令**
当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。
**软件中断**
这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制西线系统功能调用。
**指令与取终止(PrefechAbort)**
如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。
**数据访问终止(DATAABORT)
如果数据访问指令的目标地址不存在,,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断
**外部中断请求(IRQ)**
当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。系统中个外设通过该异常中断请求处理服务。
**快速中断请求(FIQ)**
当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断
异常中断向量表及异常中断优先级
中断向量表指定了个异常中断及其处理程序的对应关系。他通常存放在存储地址的低端。在ARM体系中,异常中断向量表的大小为32字节,其中每个异常中断占据4个字节大小,保留了4个字节空间。
每个异常中断对应的中断向量表中的4个字节的空间中存放了一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。当几个异常中断同时发生时,就必须按照一定的次序来处理这些异常中断。
各个异常中断的中断向量地址以及中断的处理优先级
中断向量地址 异常中断类型 异常中断模式 优先级(6最低)
0x00 复位 特权模式 1
0x04 未定义的指令 未定义指令终止模式 6
0x08 软件中断 特权模式 6
0x0C 指令预取终止 终止模式 5
0x10 数据访问终止 终止模式 2
0x14 保留 未使用 未使用
0x18 外部中断请求 IRQ模式 4
0x1C 快速中断请求 FIQ模式 3
在应用程序中安装异常中断处理程序
-
顶起! 楼主不错!! 赞一个!
-
1.并联应用电路 如图7所示,将两片或多片语音内容不相同的电路的输出端连接在一起,电路采用并联接法。这种并联应用电路,可以扩展语音段数。
⑦
2.串联应用电路 如图8所示,将两片或多片语音内容不同的电路输出端接在一起,发光二极管输出端FLAG与下一片电路的触发端KEY相连接(发光二极管输出方式应选择上述第3种),第1片电路的输出信号作为第2片电路的控制触发信号,两片电路采用前后级串联控制方式。这种应用电路不但可以扩展每段语音的时间长度,而且还能简化电路。例如:第1片电路贮存着4段不同的语句,并要求每个语句后面加播一段音乐,就可以采用这种串联控制电路。
⑧
3.上电自动播放电路 应用电路见图9,该电路所不同之处是在IC的触发端KEY与VSS间串接一个0.1μ F电容和1.2MΩ电阻,当电路接通电源时,由于电容的作用,IC被瞬间触发,语音播放完毕自动停止工作。
⑨
4.上电循环播放电路 电路见图10,这时的触发端KEY直接接VSS,当接通电源时,电路自动循环播放,直至切断电源。
⑩
5.可调整音量应用电路 图11的音频输出端AUD外接1KΩ微调电阻和10μ F电容,这样可以改变三极管的输入电压,从而实现调节音量的目的。
6.差动放大电路 见图12所示,由8050型NPN硅三极管和8550型PNP硅三极管以及IN4148型整流二极管等构成晶体管差动放大电路,使电路输出的声音特别响亮。
7.外接功率放大电路 如图13所示,通过10KΩ电位器的滑动接点,可外接LM386、TDA2003等功率放大集成电路,以获得更大的输出功率。
此外,还有光控、声控等多种应用电路,由于篇幅所限,就不一一赘述。
-
表1
方式比特率
(kbs)数据编码容易程度原始语音波形的处理方法波形存储方式PCM方式PCM方式64~200容易
(允许实时处理)基于时间轴的采样之后,A/D转换且数字化DPCM32~64基于时间轴的采样之后,根据原始采样的差分信号A/D转换且数字化DM10~32基于时间轴的采样之后(诸如数据增或减),根据原始采样的差分信号数字化作为一位预测编码方式DPCM10~32针对一位而言,以DPCM方式优化差分信号值的宽度ADM10~32针对一位而言,以DM方式优化差分信号值的宽度APC10~16算法中是综合了直接波形编码方式和分析合成方式二者的优点分析合成方式线性预测编码方式PARCOR1.2~9.6困难
(实时处理困难)制作一个珍有使用泛音自动校准的灵敏字滤波器的声道模型LSP1.2表示语音频谱,即呈现线频谱密度
规则合成方式
极其困难将语音分成音素这个最小单元,另外校准重音和语调表2
序号语音内容1请随手关门2请带好钥匙3正在消毒,请稍候,请使用4禁止合闸,线路有人工作5请注意关气6酒后别开车,祝你一路平安7瓦斯超限,危险,快撤离8当!禁止吸烟,禁止烟火9请检查灯光,请检查线路,请检查机油10请注意车辆,别乱穿马路11有电危险,请勿靠近12注意保温,注意换尿布13叮咚!您好请开门14爸爸、妈妈、爷爷、奶奶
图2所示为HT81230型2.8秒语音集成芯片脚位座标图,表3是它的脚位座标数据,HT81230型芯片的外形尺寸为2160×2450(μm)2,图3是HT81230型芯片外部接线图。图4是HT81230双列直插塑封集成电路引脚排列图,典型应用电路图见图5所示。表4列出HT81230各引脚功能简单说明,表5是HT81230集成电路电气参数。每种型号的语音集成电路都应给出上述3图3表。初学者通过图2~图5、表3~表5就可以掌握HT81230型语音集成电路的基本特性及应用电路。依据图2、图3,我们可以按照实际需要设计出各种不同的印刷电路板(如图6所示),非常实用灵活。
②
表3 单位:μ m 引脚号X座标Y座标1-949.25-1040.752-764.25-1040.753380.75-1040.754565.75-1040.755750.75-1040.756944.75-1040.757899.751023.758714.751023.759529.751023.7510344.751023.75
③
④
⑤
表4
引脚号引脚名I/O功能简介1OSC1I振荡器输入端2FLAGO发光二极管输入端3VSSI电源负极4NC-空脚5~8KEY1~KEY4I触发输入端9~13NC-空脚14VDDI电源正极15AUDO音频输出端16OSC2O振荡器输出端
表5
名称测试条件最小值典型值最大值单位VDD条件工作电压--2.4-5V工作电流3VFosc=96KHz-200400μA静态电流3V--13μA输出电流3VVOH=0.6V-1.5-2-mA静出电流3VVOH=0.3V1.53-mA高输入电压--0.8VDD-VDDV低输入电压--0-0.2VDDV振荡频率3VRosc=260kΩ7696116kHz
⑥
在图6电路中,HT81230语音集成芯片IC一共有10个焊盘,由微电脑铝丝压焊机采用一种比头发还细的特殊金属丝,将它们分别压焊在印刷电路板上,专业人员通过显微镜检查,确认焊接无误,然后用黑色环氧树脂混合胶将芯片封装(图6黑色圆圈部分)。HT81230的10条引脚,分别与图6印刷电路板的10条印制线路相连接,其中第1脚VDD接到电源正(+)端,第⑥脚VSS接电源负(-)端,3V直流电源通过这两条引脚向IC供电。第③脚OSS2和第④脚OSS1之间外接振荡电阻ROSC,适当调整该电阻的电阻值,可改变IC内部的频率,从而达到调节放音速度的快慢。第⑤脚FLAG通过电阻将发光二极管VD接到电源正端,当电路播放语音时,VD发光方式有3种,第1种是放音时长亮,第2种是伴随放音产生3HZ频闪,第3种是语音播放结束瞬间闪亮一下,这3种发光方式在掩膜前选择确定。第②脚AUD输出音频信号,通过NPN型硅三极管放大,直接推动8Ω扬声器工作。第⑦~⑩脚KEY1~KEY4分别接4只微动开关,控制触发4段不同的语音内容,语音IC触发电平分为高电平和低电平2种,HT81230为低电平触发方式。
下面再介绍HT81230的几种应用电路,供初学者参考。
-
实际峰值电流等于峰值电流阈值与峰值电流误差之和,而谷值电流则等于谷值电流阈值与谷值电流误差之和(如下列方程式所示)。除了比较器的响应时间外,我们从峰值电流计算式中还可看出,输入电压、电感值与LED正向电压都会影响峰值电流误差。我们从谷值电流算式中则可以看出,正向电压会影响谷值电流误差。
http://pagesadmin.ednchina.com/images/article/8c1180be-bb58-48f7-b70b-af511975ac68/03.jpg
http://pagesadmin.ednchina.com/images/article/8c1180be-bb58-48f7-b70b-af511975ac68/04.jpg,其中,VD为续流二极管的正向电压。
我们可根据电感容差与LED正向电压的差值计算出电流误差。但是,如果我们的系统采用了具备8:1模拟乘法器与可编程增益放大器的积分型模数转换器,那么我们也可用该转换器来测量电流误差。我们通过校正算法来测量并处理电流误差,随后再改变DAC的输出电压来设置新的阈值。
http://pagesadmin.ednchina.com/images/article/8c1180be-bb58-48f7-b70b-af511975ac68/6.jpg图6:支持平均电流误差校正的磁滞控制器。 电平转换电路
如图7所示,当栅极Q1的逻辑电平为高时,栅极Q3通过分压器打开;栅极Q4短接至VIN将关闭栅极Q3。当栅极Q1的逻辑电平为低时,分压器中无电流通过,将栅极Q2连接至VIN,此时栅极Q4短接至地面,并打开PFET。这样,输入为高时,开关关闭,输入为低时,开关打开,这就说明了EZ-Color器件内置比较器的输出为什么会出现反相区。只要输入电压不超过晶体管Q2与Q4的VGS(MAX)值,如图7所示的电平转换电路就能正常工作。如果我们从VIN到源极Q2之间增加齐纳二极管与电容器,再在齐纳二极管的阳极至接地之间采用偏置电路,那么该电路就可适用于较大的输入范围。
http://pagesadmin.ednchina.com/images/article/8c1180be-bb58-48f7-b70b-af511975ac68/7.jpg图7:电平转换器详图。 利用软件工具实现更简化的解决方案
http://pagesadmin.ednchina.com/images/article/8c1180be-bb58-48f7-b70b-af511975ac68/8.jpg图8:单通道的模拟模块布局。 磁滞降压转换器要采用EZ-Color,需要将用户模块嵌入到PSoCDesigner中,以便在芯片的模拟段与数字段之间进行切换。如图8所示,比较器用户模块放在连续时间模块中,9位DAC放在两个开关电容模拟块间,提供其负输入。比较器的正输入通过4:1的多路复用器路由,输出路由至比较器数字总线,再经过反相,抵消电平转换器电路的反相区(如图8所示)。比较器数字总线发送数字信号至芯片的数字段,也是数字信号走线的地方(如图9所示)。
[url=]点击看原图[/url]
图9:单通道的数字模块布局。 以上各图显示了如何配置EZ-Color模拟与数字模块,以实施降压转换器。COMP_BUF模块路由比较器总线到数字段,随后它可路由到电源电路系统,不过不是直接路由到控制电路,而是与16位PWM数字模块的输出做AND操作,从而实现调光功能。图8和图9中的3个位置样本可放置在CY8CLED16部件上,从而实现3通道可调光输出的复合系统。
利用3个降压转换器,每个通道都能通过高精度照明信号调制(PrISM)调光,或利用PWM,我们就能控制3通道LED系统的色彩。用8位微控制器完成色彩混合相当复杂,不过有些集成电路公司尝试了这种做法并取得了成功。PSoCExpress等软件工具具备预编写、预验证的色彩混合代码,使开发照明设计变得极其简单。PSoCExpress是一款支持用户界面功能的设计创建工具,也支持系统外设编码,可以通过拖放实现工作,并在GUI环境中连接至驱动程序。所生成的项目文件兼容于所有赛普拉斯的EZ-Color器件。
应该采用哪种调光分辨率?
您可能已经注意到了,本项目中采用了16位分辨率调光,之所以这样做,是因为在光照强度较低的情况下,我们需要16位来维持高精度的色彩控制。如果强度为100%,那么精确匹配就仅需要8位的分辨率,如强度为1%,则分辨率应为14.6位。EZ-Color中,16位分辨率的PWM调光频率为732Hz,远远高于肉眼所能看到的频率。PWM模块时钟频率设定为48MHz,就能获得这种调光频率。
本文小结
我们采用赛普拉斯的EZ-Color等混合信号微控制器控制LED照明系统,因为这种微控制器集成了ASIC实施所需的大部分功能。通过采用磁滞降压转换器,EZ-Color能提供低成本的SMPS拓扑,可用恒定电流驱动LED。集成式混合信号解决方案非常适合照明设计,不仅能降低元件成本,而且还能缩短设计周期。赛普拉斯的EZ-Color集成了SMPS控制、智能化色彩混合功能与DMX512接口,使其成为多种LED照明应用设计的便捷选择。
-
传统的ESD保护措施
图1所示是发生击穿时,传统的、单级ESD保护器件所起的作用。其中包括:(1)电压被钳制在一个较低的水平,以尽量减小ASIC两端的电压。(2)保护器件将电流旁路至地面,避开了ASIC元件。(3)ESD电击结束后,保护器件将恢复到高阻状态。有些器件,比如聚合物,可能需要24小时才能恢复到初始状态,所以理解这个特性非常重要。
减小ESD保护器件的动态电阻将会减小ASIC两端的钳位电压,并会减小漏电流。随着最新的ASIC元件越来越敏感,传统的ESD保护方案已经无法为一些ASIC提供足够的保护。
新型解决方案
CMD的PicoGuard XP等方案的特点是一种创新的两级设计,将两级ESD保护和电阻串联,放在同一个封装内,以减少到达ASIC的电流。它的工作原理如下:
● 系统从第一级开始钳制。第一级的漏电流通过串联电阻进入系统的第二级。
● 第一级漏电流中的大部分都被第二级从连接到ASIC的通路中分流,与单钳制保护架构相比,这样做显著减少了ASIC处的电流。通过这种二级钳制,同样也可以减小钳位电压。
在一个例子中,采用CM1231,ASIC的钳位电压从传统ESD二极管的6kV以下增加到10kV以上。CM1231是首例采用PicoGuard XP构架的器件。
-
•更新「供电电压」与「供电电流」的规范指引。
•新增對「輕載用電」與「典型用電」的電源轉換效率指引。 •新增对「轻载用电」与「典型用电」的电源转换效率指引。
•提升對「最低電源轉換效率」的要求,滿載用電時須達68%∼70%。 •提升对「最低电源转换效率」的要求,满载用电时须达68%∼70%。
•新增對Serial ATA(簡稱:SATA)供電接頭的定義。 •新增对Serial ATA(简称:SATA)供电接头的定义。
•新增對供電器運作時的噪音層級規範。 •新增对供电器运作时的噪音层级规范。
•更新「版本規格表」的格式與資訊。 •更新「版本规格表」的格式与资讯。
•更新「規範書聲明」的資訊。 •更新「规范书声明」的资讯。
•移除在ATX本規上的指引內容。 •移除在ATX本规上的指引内容。
•移除-5V供電線路的指引。 •移除-5V供电线路的指引。
•更新「能源之星,Energy Star,省電模式及狀態」與「待備狀態的電源轉換效率,Stand by efficiency」的規範指引。 •更新「能源之星,Energy Star,省电模式及状态」与「待备状态的电源转换效率,Stand by efficiency」的规范指引。
▲ATX規範文件中示範了一種最簡單的風扇轉速監測電路,同時也可分支給主機板上的監督電路(多半為硬體監督晶片)。 ▲ATX规范文件中示范了一种最简单的风扇转速监测电路,同时也可分支给主机板上的监督电路(多半为硬体监督晶片)。 (圖片來源:www.FormFactors.org) (图片来源:www.FormFactors.org)
ATX12V 2.0版,2003年2月 ATX12V 2.0版,2003年2月
•新增「專用術語」的章節說明。 •新增「专用术语」的章节说明。
•新增250W、300W、350W、400W功率的設計指引。 •新增250W、300W、350W、400W功率的设计指引。
•更新跨調整圖(Cross Regulation Graph)。 •更新跨调整图(Cross Regulation Graph)。
•更新「用電負載表」的資訊。 •更新「用电负载表」的资讯。
•更新用電需求的轉換效率,並加入建議效率。 •更新用电需求的转换效率,并加入建议效率。
•提高供電能力以因應更高的需求用電,同時也提高「典型用電」及「輕載用電」時的最低轉換效率。 •提高供电能力以因应更高的需求用电,同时也提高「典型用电」及「轻载用电」时的最低转换效率。
•「主要供電接頭」從20-pin提升成24-pin。 •「主要供电接头」从20-pin提升成24-pin。
•移除ATX主規時代所訂立的「輔助供電接頭」。 •移除ATX主规时代所订立的「辅助供电接头」。
•將「SATA裝置用的供電接頭」正式列入必備。 •将「SATA装置用的供电接头」正式列入必备。
•ATX12V供電接頭(2×2)採行獨立限流設計。 •ATX12V供电接头(2×2)采行独立限流设计。
ATX12V 2.01版,2004年6月 ATX12V 2.01版,2004年6月
•將3.3V遠端感測線路設置到主供電接頭(24-pin)上。 •将3.3V远端感测线路设置到主供电接头(24-pin)上。
•更新主供電接頭上12V2直流供電輸出的雜訊、漣波資訊。 •更新主供电接头上12V2直流供电输出的杂讯、涟波资讯。
•移除-5V的參考電壓。 •移除-5V的参考电压。
•更新5VSB的最大電流升降步階。 •更新5VSB的最大电流升降步阶。
•針對電壓持升時間而修改115 VAC頻率。 •针对电压持升时间而修改115 VAC频率。
ATX12V 2.1版,2005年3月 ATX12V 2.1版,2005年3月
•新增450W功率的設計指引。 •新增450W功率的设计指引。
•提升之前已訂立的250W、300W、350W、400W等供電組態的供電力(輸出電流量)。 •提升之前已订立的250W、300W、350W、400W等供电组态的供电力(输出电流量)。
•跨負載更新(從250W∼450W)。 •跨负载更新(从250W∼450W)。
•更新「用電負載表」。 •更新「用电负载表」。
•提升供電轉換效率的必備(最低)需求。 •提升供电转换效率的必备(最低)需求。
•提升5VSB的待備電流(增至720mA)。 •提升5VSB的待备电流(增至720mA)。
ATX12V 2.2版,2005年3月 ATX12V 2.2版,2005年3月
•更正12V2的負載層級表。 •更正12V2的负载层级表。
•在主供電接頭中新增串接的高電流終端電阻。 •在主供电接头中新增串接的高电流终端电阻。
•在ATX12V供電接頭中新增串接的高電流終端電阻。 •在ATX12V供电接头中新增串接的高电流终端电阻。
■ 結論 ■ 结论
瞭解上述的設計與規範變更就足夠了嗎?了解上述的设计与规范变更就足够了吗? 答案是否定的,設計規範中也對其他相關層面有定義,例如供電線路的線徑(直徑)方面,3.3V遠端感測用的是18AWG,若改換成3.3V供電用途(300W功率組態下)時則改採22AWG,至於一般的12V、5V、3.3V供電則建議用16AWG。答案是否定的,设计规范中也对其他相关层面有定义,例如供电线路的线径(直径)方面,3.3V远端感测用的是18AWG,若改换成3.3V供电用途(300W功率组态下)时则改采22AWG,至于一般的12V、5V、3.3V供电则建议用16AWG。
其他還有接頭的供電線路最多允許長度(12V允許達28cm,其他則允許到25cm)、風扇的配置位置,風扇的直徑(須有8cm以上)、進氣量(典型而言須在25∼35CFM以上),就連進氣口要預留多少空間才能順利吸入足夠的散熱用冷空氣,也都有詳細的定義(須預留0.5"空間)。其他还有接头的供电线路最多允许长度(12V允许达28cm,其他则允许到25cm)、风扇的配置位置,风扇的直径(须有8cm以上)、进气量(典型而言须在25∼35CFM以上),就连进气口要预留多少空间才能顺利吸入足够的散热用冷空气,也都有详细的定义(须预留0.5"空间)。
最後,不僅ATX供電器要符合上述的種種要求與規定,其他如CFX、SFX、TFX、BTX、LFX等其他構型(Form Factor)的主機板、供電器等設計也都要以ATX供電規範為基礎依歸,由此可知即便是桌上型供電系統,在基礎供電層面上也依然有持續的發展演進,如何讓標準跟進與產製成本取得平衡,這對設計工程師來說也是一大挑戰。最后,不仅ATX供电器要符合上述的种种要求与规定,其他如CFX、SFX、TFX、BTX、LFX等其他构型(Form Factor)的主机板、供电器等设计也都要以ATX供电规范为基础依归,由此可知即便是桌上型供电系统,在基础供电层面上也依然有持续的发展演进,如何让标准跟进与产制成本取得平衡,这对设计工程师来说也是一大挑战。
▲ATX主供電接頭中,PS_ON#線路的信號特性圖。 ▲ATX主供电接头中,PS_ON#线路的信号特性图。 (圖片來源:www.FormFactors.org) (图片来源:www.FormFactors.org)
-
▲ATX v2.2版追加了一個4-pin(2×2)的新供電接頭,稱為ATX12V Power Connector,此一新訂立的動機主要是期望能給中央處理器一個獨立、就近、且充沛的供電。 ▲ATX v2.2版追加了一个4-pin(2×2)的新供电接头,称为ATX12V Power Connector,此一新订立的动机主要是期望能给中央处理器一个独立、就近、且充沛的供电。 (圖片來源:www.FormFactors.org) (图片来源:www.FormFactors.org)
附註:軟電源指的是可以由軟體(多指作業系統)來操控開機Boot/Power-On、關機Shutdown、重新開機Reset、休眠Suspend、喚醒Wake-up等功效,而實現這些操控所要運用的線路也正是PS_ON#、5VSB等。附注:软电源指的是可以由软体(多指作业系统)来操控开机Boot/Power-On、关机Shutdown、重新开机Reset、休眠Suspend、唤醒Wake-up等功效,而实现这些操控所要运用的线路也正是PS_ON#、5VSB等。
而且,ATX 2.0首次將「選用」的供電接頭納入規範,除原有「必備」的20-pin供電接頭外,額外定義了一個6-pin的供電接頭(Optional Power Connector),能提供風扇轉速監督(Fan Monitor;FanM)、風扇轉速控制(Fan Control;FanC)、IEEE 1394供電(8V∼40V)、IEEE 1394接地、遠端3.3V感測等功效,且還保留一個腳位供日後定義。而且,ATX 2.0首次将「选用」的供电接头纳入规范,除原有「必备」的20-pin供电接头外,额外定义了一个6-pin的供电接头(Optional Power Connector),能提供风扇转速监督(Fan Monitor;FanM)、风扇转速控制(Fan Control;FanC)、IEEE 1394供电(8V∼40V)、IEEE 1394接地、远端3.3V感测等功效,且还保留一个脚位供日后定义。 另外,ATX 2.0也將供電線路進行顏色化規定,讓製造生產者能夠更直覺、快速地辨識與配接線路。另外,ATX 2.0也将供电线路进行颜色化规定,让制造生产者能够更直觉、快速地辨识与配接线路。
■ ATX 2.02、ATX 2.03 ■ ATX 2.02、ATX 2.03
由於需求功率的持續增加,ATX 2.02針對250W、300W(Watt,瓦)的組態又增訂了一個新的供電接頭,稱為輔助供電接頭(Aux Power Connector),原有的20-pin則稱為主供電接頭(Main Power Connector),輔助供電接頭為6-pin,主要是用來增強5V與3.3V的供電力,定義中5V最高可至30A(Amp,安培)的電流輸出,而3.3V最高可至18A的電流輸出。由于需求功率的持续增加,ATX 2.02针对250W、300W(Watt,瓦)的组态又增订了一个新的供电接头,称为辅助供电接头(Aux Power Connector),原有的20-pin则称为主供电接头(Main Power Connector),辅助供电接头为6-pin,主要是用来增强5V与3.3V的供电力,定义中5V最高可至30A(Amp,安培)的电流输出,而3.3V最高可至18A的电流输出。
▲ATX的本規標準中原有定義一個選用的6-pin(2×3)供電接頭,能用來實現智慧型風扇(轉速監督、操控)、IEEE 1394獨立供電、以及3.3V遠端感測等。 ▲ATX的本规标准中原有定义一个选用的6-pin(2×3)供电接头,能用来实现智慧型风扇(转速监督、操控)、IEEE 1394独立供电、以及3.3V远端感测等。 然在之後的新版規範中就不再提及。然在之后的新版规范中就不再提及。 (圖片來源:www.FormFactors.org) (图片来源:www.FormFactors.org)
此外,ATX 2.02也對過去的一些供電規範進行些微修正,以更貼近務實,例如-5V及-12V供電若依據原有的規定,僅允許正負5%的電壓準位擺盪,此稱為電壓容錯度、容忍性(Voltage Tolerance),但在ATX 2.02則加以放寬,允許到正負10%的擺盪。此外,ATX 2.02也对过去的一些供电规范进行些微修正,以更贴近务实,例如-5V及-12V供电若依据原有的规定,仅允许正负5%的电压准位摆荡,此称为电压容错度、容忍性(Voltage Tolerance),但在ATX 2.02则加以放宽,允许到正负10%的摆荡。
■ ATX 2.1 ■ ATX 2.1
到了ATX 2.1版又有了更大的改變,追加了一個「ATX12V Power Connector」的4-pin供電接頭,直接對處理器提供12V的供電(據了解,主要是因為Pentium 4之後的處理器用電過兇,才有增設此一額外供電連接器來因應、抒解處理器的用電需求),此一12V供電不僅可提供處理器的運算用電(將12V降壓成3.3V的Vio電壓與更低的Vcore核心電壓)外,也可供電給處理器的散熱風扇。到了ATX 2.1版又有了更大的改变,追加了一个「ATX12V Power Connector」的4-pin供电接头,直接对处理器提供12V的供电(据了解,主要是因为Pentium 4之后的处理器用电过凶,才有增设此一额外供电连接器来因应、抒解处理器的用电需求),此一12V供电不仅可提供处理器的运算用电(将12V降压成3.3V的Vio电压与更低的Vcore核心电压)外,也可供电给处理器的散热风扇。
■ ATX 2.2 ■ ATX 2.2
至於ATX 2.2主要有兩個重大變化,一是最初的20-pin主供電接頭擴增為24-pin,並且也對腳位進行些許調整,這主要是因應PCI Express(簡稱:PCIe)所致,原因是PCI Express需要更多的用電。至于ATX 2.2主要有两个重大变化,一是最初的20-pin主供电接头扩增为24-pin,并且也对脚位进行些许调整,这主要是因应PCI Express(简称:PCIe)所致,原因是PCI Express需要更多的用电。 另一則是:若主機板上使用了ATX12V的4-pin(2x2)供電接頭,則允許移除、省略使用更早之前所定義的6-pin(3x2)輔助供電接頭。另一则是:若主机板上使用了ATX12V的4-pin(2x2)供电接头,则允许移除、省略使用更早之前所定义的6-pin(3x2)辅助供电接头。 除這些外,也微幅調整3.3V供電的電壓容忍性。除这些外,也微幅调整3.3V供电的电压容忍性。
■ ATX12V PSDG ■ ATX12V PSDG
ATX規範在提出ATX12V之後,也將多數的電源供電規範轉移到AXT12V範疇內,自此讓供電設計的規範說明(Power Supply Design Guide,簡稱:PSDG)更加獨立,2000年2月ATX12V規範發佈1.0版,之後陸續有新版發展,最新版為去(2005)年3月提出的2.2版。 ATX规范在提出ATX12V之后,也将多数的电源供电规范转移到AXT12V范畴内,自此让供电设计的规范说明(Power Supply Design Guide,简称:PSDG)更加独立,2000年2月ATX12V规范发布1.0版,之后陆续有新版发展,最新版为去(2005)年3月提出的2.2版。
到底ATX12V的各版演進內容為何?到底ATX12V的各版演进内容为何? 以下筆者就逐一解釋:以下笔者就逐一解释:
ATX12V 1.0版,2000年2月 ATX12V 1.0版,2000年2月
首版發佈。首版发布。
ATX12V 1.1版,2000年8月 ATX12V 1.1版,2000年8月
•增加3.3V的供電電流。 •增加3.3V的供电电流。 針對「供電分享,Power Sharing」進行更多說明。针对「供电分享,Power Sharing」进行更多说明。 縮編部分規範內容與格式修正。缩编部分规范内容与格式修正。
ATX12V 1.2版,2002年1月 ATX12V 1.2版,2002年1月
•訂立「典型用電」的供電配送規範。 •订立「典型用电」的供电配送规范。 在供電配送表(Power Distribution Table)中增加所有5V供電的供電量,增至0.3A。在供电配送表(Power Distribution Table)中增加所有5V供电的供电量,增至0.3A。
•對「PS_ON#」這條「開機控制線路」進行補充說明:倘若控制用的驅動脈波不能維持一定時間的準位信號,即是在10mS∼100mS(毫秒)的時間內讓準位跌落至標準之下,則電源供應器的狀態記存(Latch)就不會生效,正常而言會記存「關機,Shutdown」的狀態(State)信號。 •对「PS_ON#」这条「开机控制线路」进行补充说明:倘若控制用的驱动脉波不能维持一定时间的准位信号,即是在10mS∼100mS(毫秒)的时间内让准位跌落至标准之下,则电源供应器的状态记存(Latch)就不会生效,正常而言会记存「关机,Shutdown」的状态(State)信号。
•移除所有供電配送表中-5V的供電資料。 •移除所有供电配送表中-5V的供电资料。
-
■ 音源、音效子系统
關於音源、音效的供電設計,必須從兩方面來看,一是音訊的信號處理、傳輸(前級),另一是音效的功率放大、播放(後級)。关于音源、音效的供电设计,必须从两方面来看,一是音讯的信号处理、传输(前级),另一是音效的功率放大、播放(后级)。
在前級方面,在這個階段音訊只是微弱的類比信號,因此必須以高品質的工作電壓才能盡量減少類比信號在傳輸處理時的失真,既然品質被放在第一高位,且並非很高的電壓需求(用於參考電壓,Vref),所以必然是使用線性降壓來供電。在前级方面,在这个阶段音讯只是微弱的类比信号,因此必须以高品质的工作电压才能尽量减少类比信号在传输处理时的失真,既然品质被放在第一高位,且并非很高的电压需求(用于参考电压,Vref),所以必然是使用线性降压来供电。
至於後級,過往為了省電多採AB類的音效功率放大設計,理由是A類放大過於耗電,C類雖比AB類更省電但卻有高失真度的問題,所以只好採行AB類,目前也仍有許多行動用裝置是採行AB類,然而再精良的AB類功率放大電路都難以將功率轉換率提升至70%以上。至于后级,过往为了省电多采AB类的音效功率放大设计,理由是A类放大过于耗电,C类虽比AB类更省电但却有高失真度的问题,所以只好采行AB类,目前也仍有许多行动用装置是采行AB类,然而再精良的AB类功率放大电路都难以将功率转换率提升至70%以上。
但是,近年來技術又有了新變化,D類放大器的出現,運用PWM方式來進行功率放大,雖然音質較AB類為差,但也未至C類的糟糕水準,然電源轉換效率卻極佳,一般都在80%以上,加上手持式應用多在背景吵雜的公共場合,所以「D類放大」逐漸成為新的音效功率放大主流,也因此有許多類比IC業者推出D類放大的音效功率晶片。但是,近年来技术又有了新变化,D类放大器的出现,运用PWM方式来进行功率放大,虽然音质较AB类为差,但也未至C类的糟糕水准,然电源转换效率却极佳,一般都在80%以上,加上手持式应用多在背景吵杂的公共场合,所以「D类放大」逐渐成为新的音效功率放大主流,也因此有许多类比IC业者推出D类放大的音效功率晶片。
更理想的是,D類放大的電路也較為簡易、簡潔,需求的佈局空間極少,所以不僅適合用在內部空間有限的手持、行動裝置上,許多固定運用但有超薄設計理念的產品(如:超薄超平面電視的配屬喇叭、汽車車門內的喇叭)也傾向使用D類放大。更理想的是,D类放大的电路也较为简易、简洁,需求的布局空间极少,所以不仅适合用在内部空间有限的手持、行动装置上,许多固定运用但有超薄设计理念的产品(如:超薄超平面电视的配属喇叭、汽车车门内的喇叭)也倾向使用D类放大。
此外還要提醒一點,由於D類放大採行PWM方式來重現聲波波形,過程中會用上與電容、電感式切換式調壓相同的技術,所以D類放大也有EMI雜訊放射、干擾的問題,這必須事先注意。此外还要提醒一点,由于D类放大采行PWM方式来重现声波波形,过程中会用上与电容、电感式切换式调压相同的技术,所以D类放大也有EMI杂讯放射、干扰的问题,这必须事先注意。
■ 攝影、錄影子系統 ■ 摄影、录影子系统
無論是靜態的畫面拍攝,還是動態的連續錄像,都需要用上影像感測元件(Image Sensor),過往以來多是用CCD Image Sensor,但近年來有大量普及、換用CMOS Image Sensor的趨勢。无论是静态的画面拍摄,还是动态的连续录像,都需要用上影像感测元件(Image Sensor),过往以来多是用CCD Image Sensor,但近年来有大量普及、换用CMOS Image Sensor的趋势。
為何會如此?为何会如此? 幾個原因,CCD Image Sensor的驅動方式複雜,需要反相、交流電壓,相對的CMOS Image Sensor只需要正向電壓即可驅動,同時論佈局空間佔用、耗電等也都是CMOS Image Sensor佔優勢,雖然CMOS Image Sensor仍有些方面不如CCD Image Sensor,如光線趨暗時的感測性、感測雜訊等,但這類的問題仍持續以精進方式降低或克服。几个原因,CCD Image Sensor的驱动方式复杂,需要反相、交流电压,相对的CMOS Image Sensor只需要正向电压即可驱动,同时论布局空间占用、耗电等也都是CMOS Image Sensor占优势,虽然CMOS Image Sensor仍有些方面不如CCD Image Sensor,如光线趋暗时的感测性、感测杂讯等,但这类的问题仍持续以精进方式降低或克服。
■ 結尾 ■ 结尾
除了無線通訊系統(如:GPS、Bluetooth、GSM等)外,本文大體上探述了所有與可攜式設計相關的組件用電特性及子系統,不過無線方面的用電設計也屬高品質要求(類比性的微弱電波),所以多不容許使用切換式的電壓調整,幾乎都用線性降壓來設計,然而在切換式調壓技術不斷提升後,其供電品質也有所改善,部份無線應用也有改採切換式調壓的設計。除了无线通讯系统(如:GPS、Bluetooth、GSM等)外,本文大体上探述了所有与可携式设计相关的组件用电特性及子系统,不过无线方面的用电设计也属高品质要求(类比性的微弱电波),所以多不容许使用切换式的电压调整,几乎都用线性降压来设计,然而在切换式调压技术不断提升后,其供电品质也有所改善,部份无线应用也有改采切换式调压的设计。
▲Zetex半導體公司的D類音效功率放大器(Class D audio amplifier)晶片:ZXCD1000。 ▲Zetex半导体公司的D类音效功率放大器(Class D audio amplifier)晶片:ZXCD1000。 D類放大的用電效率高於AB類。 D类放大的用电效率高于AB类。 (圖片來源:Zetex.com) (图片来源:Zetex.com)
-
▲由於傳統SRAM過於耗電,因此開始有所謂的PSRAM(Pseudo-SRAM,假偽型SRAM),PSRAM實為DRAM的結構、原理,但存取特性上卻與傳統SRAM相仿,使用PSRAM取代SRAM能夠讓設計更加省電,圖為Micron(美光)的PSRAM,稱為CellularRAM系列。 ▲由于传统SRAM过于耗电,因此开始有所谓的PSRAM(Pseudo-SRAM,假伪型SRAM),PSRAM实为DRAM的结构、原理,但存取特性上却与传统SRAM相仿,使用PSRAM取代SRAM能够让设计更加省电,图为Micron(美光)的PSRAM,称为CellularRAM系列。 (圖片來源:Micron.com) (图片来源:Micron.com)
至於DRAM部份則改變不大,從過往的EDO RAM全面換成SDR SDRAM後,只會隨著產銷發展逐漸進展到DDR SDRAM及更後續的DDR2 SDRAM,倒是Palm公司曾在過去推出完全用NAND Flash為機內記憶體的PDA,因此未來也有可能朝此設計方向考慮:用NAND Flash替代DRAM。至于DRAM部份则改变不大,从过往的EDO RAM全面换成SDR SDRAM后,只会随着产销发展逐渐进展到DDR SDRAM及更后续的DDR2 SDRAM,倒是Palm公司曾在过去推出完全用NAND Flash为机内记忆体的PDA,因此未来也有可能朝此设计方向考虑:用NAND Flash替代DRAM。
在非揮發記憶體的環節方面,還要細分成「程式用」與「資料用」,「程式用」多使用處理器內建的ROM,由於今日手持式設計的變化快速,所以多採行能重複變更儲存內容的Flash,且為了存取快速多使用NOR Flash,只有在無內建或內建容量不足時才會使用外接的NOR Flash。在非挥发记忆体的环节方面,还要细分成「程式用」与「资料用」,「程式用」多使用处理器内建的ROM,由于今日手持式设计的变化快速,所以多采行能重复变更储存内容的Flash,且为了存取快速多使用NOR Flash,只有在无内建或内建容量不足时才会使用外接的NOR Flash。
而「資料用」部份,在少量需求時最方便使用的是串列傳輸型EEPROM,多量時則當用NAND Flash,更多量則使用Micro Drive(微型硬碟),不過在用電上也是Micro Drive最耗,NAND Flash、EEPROM較低。而「资料用」部份,在少量需求时最方便使用的是串列传输型EEPROM,多量时则当用NAND Flash,更多量则使用Micro Drive(微型硬碟),不过在用电上也是Micro Drive最耗,NAND Flash、EEPROM较低。
▲微型硬碟的用電高過一般的記憶卡,以同為CF+TypeⅡ介面而言,記憶卡最高100mA,而微型硬碟則為500mA,然微型硬碟在高容量應用的價格容量比上有無可取代的優勢。 ▲微型硬碟的用电高过一般的记忆卡,以同为CF+TypeⅡ介面而言,记忆卡最高100mA,而微型硬碟则为500mA,然微型硬碟在高容量应用的价格容量比上有无可取代的优势。 圖為Hitachi(HGST)的6GB微型硬碟。图为Hitachi(HGST)的6GB微型硬碟。 (圖片來源:HGST.com) (图片来源:HGST.com)
■ 顯示、背光子系統(含LED指示燈號) ■ 显示、背光子系统(含LED指示灯号)
顯示方面,LCD(無論STN或TFT)屬被動顯示,其背部需要有光源(一般簡稱:背光;Backlight)才能顯現,若是OLED則屬主動顯示,不需要有背光設計,甚至往後還有可能用OLED來做背光源,且是較具光均性的面光源。显示方面,LCD(无论STN或TFT)属被动显示,其背部需要有光源(一般简称:背光;Backlight)才能显现,若是OLED则属主动显示,不需要有背光设计,甚至往后还有可能用OLED来做背光源,且是较具光均性的面光源。
背光方面過去多只能用面光源(EL)、線光源(CCFL),近年來則因為技術突破,使白光型LED(點光源)的發光效率大增,讓背光源又多出了一種新選擇,同時也能充當簡易型的攝像用閃光燈(Flashlight)。背光方面过去多只能用面光源(EL)、线光源(CCFL),近年来则因为技术突破,使白光型LED(点光源)的发光效率大增,让背光源又多出了一种新选择,同时也能充当简易型的摄像用闪光灯(Flashlight)。
關於背光源的選擇,同樣也是種權衡取捨的考量,就驅動電路簡易性來說WLED當屬第一,勝過EL與CCFL,但也最不省電。关于背光源的选择,同样也是种权衡取舍的考量,就驱动电路简易性来说WLED当属第一,胜过EL与CCFL,但也最不省电。 CCFL與EL雖然較省電,但電路就稍嫌複雜,EL需要有正向頻率弦波才能驅動(多是階梯、刻度型脈波來逼近、模擬正弦波波形),且驅動電壓要高,而CCFL也要正逆向的交流電才能驅動,一樣要較高的驅動電壓。 CCFL与EL虽然较省电,但电路就稍嫌复杂,EL需要有正向频率弦波才能驱动(多是阶梯、刻度型脉波来逼近、模拟正弦波波形),且驱动电压要高,而CCFL也要正逆向的交流电才能驱动,一样要较高的驱动电压。
當然!当然! WLED有時也需要較高的驅動電壓,特別是以串聯方式驅動一個以上的WLED時,每加串一個就需要加倍的電壓才能讓WLED順向導通,進而驅動發光。 WLED有时也需要较高的驱动电压,特别是以串联方式驱动一个以上的WLED时,每加串一个就需要加倍的电压才能让WLED顺向导通,进而驱动发光。 不過WLED不需要反相,也不需要弦波,控制亮度只需用PWM方式調整Duty Cycle(工作週期,另也有人翻譯成:占空比)即可。不过WLED不需要反相,也不需要弦波,控制亮度只需用PWM方式调整Duty Cycle(工作周期,另也有人翻译成:占空比)即可。
不過,手持裝置的設計者也不用過度擔心,今日已有許多類比IC業者針對WLED應用需求而推出WLED驅動晶片,不僅可以驅動WLED背光、WLED閃光,連帶也能操控、管理一般的LED指示燈號(如:綠光LED、紅光LED等)。不过,手持装置的设计者也不用过度担心,今日已有许多类比IC业者针对WLED应用需求而推出WLED驱动晶片,不仅可以驱动WLED背光、WLED闪光,连带也能操控、管理一般的LED指示灯号(如:绿光LED、红光LED等)。 或者,也有晶片業者已將電源調節、轉換的功效內建到顯示驅動IC內(如:有的OLED驅動IC已內建DC/DC控制器,省去自行設計供電上的升壓電路),這樣就可以省去自行設計的功夫與程序。或者,也有晶片业者已将电源调节、转换的功效内建到显示驱动IC内(如:有的OLED驱动IC已内建DC/DC控制器,省去自行设计供电上的升压电路),这样就可以省去自行设计的功夫与程序。
要補充的是,該用何種供電調整、轉換方式來因應背光需求呢?要补充的是,该用何种供电调整、转换方式来因应背光需求呢? 線性降壓絕對是出局,因為手持式裝置所用的電池在電壓上幾乎都低於背光所需的驅動電壓,所以必須用升壓,而電容切換、電感切換兩種技術都可以達到升壓,到底該採行何種呢?线性降压绝对是出局,因为手持式装置所用的电池在电压上几乎都低于背光所需的驱动电压,所以必须用升压,而电容切换、电感切换两种技术都可以达到升压,到底该采行何种呢?
關於此可以從三點來考量:佈局空間、轉換效率、電壓品質,倘若對電壓品質沒有很高的要求,則電感法、電容法皆可使用,反之則選電容法,此外佈局空間拘限時也以電容法優先考量。关于此可以从三点来考量:布局空间、转换效率、电压品质,倘若对电压品质没有很高的要求,则电感法、电容法皆可使用,反之则选电容法,此外布局空间拘限时也以电容法优先考量。 至於轉換效率方面,若對效率很苛求自然得選電感法。至于转换效率方面,若对效率很苛求自然得选电感法。
▲NS美國國家半導體公司的LM27951、LM27952、LM27964等白光LED驅動晶片,由於使用電容式切換調壓技術,所以外部不需使用電感元件,進而能以更小的電路面積來實現LED驅動電路,同時也有較高的供電轉換效率(與線性降壓相比),有助於延長手持裝置的電池使用時間。 ▲NS美国国家半导体公司的LM27951、LM27952、LM27964等白光LED驱动晶片,由于使用电容式切换调压技术,所以外部不需使用电感元件,进而能以更小的电路面积来实现LED驱动电路,同时也有较高的供电转换效率(与线性降压相比),有助于延长手持装置的电池使用时间。 (圖片來源:National.com) (图片来源:National.com)
-
电荷泵浦(Charge Pump)也称为电容切换式调压,除了调压元件本身外,只要在外部搭配几个电容元件即可,不过其外部电容是用来储能而非滤波,需要较大的体积,因此电荷泵浦的电路占用面积多比线性降压大,此外电荷泵浦是运用切换技术来调整电压准位,所以会有EMI影响,且电压位准的摆荡较线性降压为大。
附註:「切換式」在一些書籍中也翻譯成「交換式」、「開關式」,英文原文都是指「Switch」。附注:「切换式」在一些书籍中也翻译成「交换式」、「开关式」,英文原文都是指「Switch」。
此外,電荷泵浦不像線性降壓只能用於降壓(Buck),也能用於升壓(Boost)及電壓反向(Invert,或稱:電壓反相,亦有人翻譯成:電壓反轉),當用於升降壓時,其升降幅度最好為原輸入電壓的簡單倍數,如1.5倍、2.0倍等,如此電源轉換效率才會高,理想情況可達90%以上,倘若調整的不是簡單倍數,則轉換效率就會降低,最差可能會低過70%,一般而言為了避免轉換程序的無謂耗能,設計上都盡可能使用簡單倍數性的升降壓。此外,电荷泵浦不像线性降压只能用于降压(Buck),也能用于升压(Boost)及电压反向(Invert,或称:电压反相,亦有人翻译成:电压反转),当用于升降压时,其升降幅度最好为原输入电压的简单倍数,如1.5倍、2.0倍等,如此电源转换效率才会高,理想情况可达90%以上,倘若调整的不是简单倍数,则转换效率就会降低,最差可能会低过70%,一般而言为了避免转换程序的无谓耗能,设计上都尽可能使用简单倍数性的升降压。
值得注意的是,即便是以簡單倍數來升降調整,也不可能是無限度的升降,例如到12.0倍、-9.5倍等,升降倍數取決於外部的儲能電容,由於手持裝置的置納空間有限,也因此限縮電容可用的體積,進而讓倍數受限,就務實面來看很少有超過3.0倍的升降調整。值得注意的是,即便是以简单倍数来升降调整,也不可能是无限度的升降,例如到12.0倍、-9.5倍等,升降倍数取决于外部的储能电容,由于手持装置的置纳空间有限,也因此限缩电容可用的体积,进而让倍数受限,就务实面来看很少有超过3.0倍的升降调整。
▲供應電源的電壓調整、轉換主要也有三種,即是:降壓(Buck)、升壓(Boost)、反相(Invert)。 ▲供应电源的电压调整、转换主要也有三种,即是:降压(Buck)、升压(Boost)、反相(Invert)。 其中線性技術只能提供降壓功效,而無論電容型還是電感型切換都能夠提供降壓、升壓、反相等三種處理、轉換、調節功效。其中线性技术只能提供降压功效,而无论电容型还是电感型切换都能够提供降压、升压、反相等三种处理、转换、调节功效。 (插圖設計:郭長祐) (插图设计:郭长佑)
同時,電容體積與電容蓄電能量的大小不僅影響輸出電壓的倍數,也影響可輸出的最大電流,使得電荷泵浦在手持應用中不易提供超過300mA∼400mA的電流量(以每組轉換系統而言)。同时,电容体积与电容蓄电能量的大小不仅影响输出电压的倍数,也影响可输出的最大电流,使得电荷泵浦在手持应用中不易提供超过300mA∼400mA的电流量(以每组转换系统而言)。
■ 切換式調壓 ■ 切换式调压
老實說,電荷泵浦調壓與切換式調壓在轉換原理上都屬於「切換式調壓」,只是電荷泵浦以電容為主,而切換式以電感為主,如此之別而已,但稱呼上卻容易誤以為只有切換式調壓是運用「切換原理」,且也容易誤會「電荷泵浦」與「切換式調壓」毫無關係,以為兩者是截然不同的電壓調整方式。老实说,电荷泵浦调压与切换式调压在转换原理上都属于「切换式调压」,只是电荷泵浦以电容为主,而切换式以电感为主,如此之别而已,但称呼上却容易误以为只有切换式调压是运用「切换原理」,且也容易误会「电荷泵浦」与「切换式调压」毫无关系,以为两者是截然不同的电压调整方式。
既然原理相同,那麼「切換式調壓」也與「電荷泵浦」一樣,也能行使「升壓」、「降壓」、「反相」等供電轉換、調整,且電源轉換效率高於電荷泵浦,同時不像電荷泵浦需要以簡單倍數式調升、調降才能讓電源轉換率提高。既然原理相同,那么「切换式调压」也与「电荷泵浦」一样,也能行使「升压」、「降压」、「反相」等供电转换、调整,且电源转换效率高于电荷泵浦,同时不像电荷泵浦需要以简单倍数式调升、调降才能让电源转换率提高。
但是,切換式調壓也有其缺點,其轉換元件的外部不僅需要用上電容也要用上電感,還要有功率型電晶體(Metal Oxide Semiconductor Field Effect Transistor;MOSFET。金屬互補半導體場效電晶體,用於電路的開關切換),甚至是基納二極體(Zener Diode;ZD),由於外部元件過多,且多是功率型的大元件,使得切換式調壓在電路佈局設計上最耗佔空間,同時EMI電磁干擾的嚴重性也高於電荷泵浦,這又讓佈局設計的規劃更加困難,必須避免讓切換式調壓的切換雜訊影響到其他電路的運作。但是,切换式调压也有其缺点,其转换元件的外部不仅需要用上电容也要用上电感,还要有功率型电晶体(Metal Oxide Semiconductor Field Effect Transistor;MOSFET。金属互补半导体场效电晶体,用于电路的开关切换),甚至是基纳二极体(Zener Diode;ZD),由于外部元件过多,且多是功率型的大元件,使得切换式调压在电路布局设计上最耗占空间,同时EMI电磁干扰的严重性也高于电荷泵浦,这又让布局设计的规划更加困难,必须避免让切换式调压的切换杂讯影响到其他电路的运作。
當然!当然! 既然切換式調壓的電源轉換率最高(可達95%以上),無用的廢熱消散較少,加上佔用面積、空間大,所以散熱方面的問題也少於前述的兩種調整、轉換法,但缺點除了EMI雜訊發散強之外,供電電壓的漣波因素也較大,大過前述的兩者,這表示其在電源潔淨度上的表現也最不理想,電源品質較差。既然切换式调压的电源转换率最高(可达95%以上),无用的废热消散较少,加上占用面积、空间大,所以散热方面的问题也少于前述的两种调整、转换法,但缺点除了EMI杂讯发散强之外,供电电压的涟波因素也较大,大过前述的两者,这表示其在电源洁净度上的表现也最不理想,电源品质较差。
不過,切換式調壓也無法隨時保持在高轉換效率的狀態,當用電的負載較小,耗用的電流較小時,切換式調壓的轉換效率也會轉差,為了持續保持高度的轉換效率,通常有兩種方式可以因應,一是使用PWM(Pulse Width Modulation,脈波寬度調變)法,另一則是使用PFM(Pulse Frequency Modulation,脈波頻率調變)法,兩者只要擇一而用便能維持轉換效率。不过,切换式调压也无法随时保持在高转换效率的状态,当用电的负载较小,耗用的电流较小时,切换式调压的转换效率也会转差,为了持续保持高度的转换效率,通常有两种方式可以因应,一是使用PWM(Pulse Width Modulation,脉波宽度调变)法,另一则是使用PFM(Pulse Frequency Modulation,脉波频率调变)法,两者只要择一而用便能维持转换效率。
所謂PWM法,就是改變MOSFET開關的導通時間,但切換頻率維持不變,相對的PFM法是維持導通時間不變但改變切換頻率。所谓PWM法,就是改变MOSFET开关的导通时间,但切换频率维持不变,相对的PFM法是维持导通时间不变但改变切换频率。
另外,由於手持裝置的內部空間有限,且切換式開關的外部電容、電感相當耗佔空間(尤其設計上是要求能高量供電時,即要求能提供較高的電流量給負載時),此一情形可以透過切換頻率的提升來改善,切換頻率提高就可使外部電容、電感量的倚賴度降低,進而縮減電路佔用面積。另外,由于手持装置的内部空间有限,且切换式开关的外部电容、电感相当耗占空间(尤其设计上是要求能高量供电时,即要求能提供较高的电流量给负载时),此一情形可以透过切换频率的提升来改善,切换频率提高就可使外部电容、电感量的倚赖度降低,进而缩减电路占用面积。
然而提高切換頻率也非萬全之道,對應的後遺症就是造成切換雜訊的增加,所以切換頻率與電磁雜訊必須在設計條件下進行折衷取捨才行,不能一味地提升切換頻率。然而提高切换频率也非万全之道,对应的后遗症就是造成切换杂讯的增加,所以切换频率与电磁杂讯必须在设计条件下进行折衷取舍才行,不能一味地提升切换频率。
至於切換式轉換元件的最新技術發展為何?至于切换式转换元件的最新技术发展为何? 關於此主要在於提升最高的輸出電流量、縮減外部元件數、提高切換頻率等,提升最高可供應的電流量主要是因為切換式調壓的電源轉換效率高(尤其在高電流用量時),適合供電給較耗電的應用元件及電路。关于此主要在于提升最高的输出电流量、缩减外部元件数、提高切换频率等,提升最高可供应的电流量主要是因为切换式调压的电源转换效率高(尤其在高电流用量时),适合供电给较耗电的应用元件及电路。
而縮減外部元件數,主要是將電容、電晶體、二極體等,運用半導體整合技術內建到切換式轉換元件中,使外部佔用面積獲得縮減,以便更適合運用在手持式裝置的設計上,唯一不能內建的是電感元件,今日的平面固態半導體技術仍無法將電容進行縮體化整合,只有電容、電阻可以。而缩减外部元件数,主要是将电容、电晶体、二极体等,运用半导体整合技术内建到切换式转换元件中,使外部占用面积获得缩减,以便更适合运用在手持式装置的设计上,唯一不能内建的是电感元件,今日的平面固态半导体技术仍无法将电容进行缩体化整合,只有电容、电阻可以。 再來是切換頻率的提升,提升用意已如前所述,高頻切換有助於縮小電容、電感值,所以也在於縮小電源轉換系統的體積。再来是切换频率的提升,提升用意已如前所述,高频切换有助于缩小电容、电感值,所以也在于缩小电源转换系统的体积。
▲三種電源調節、轉換技術各有其優缺點,線性技術的優點是佔用空間小、供電品質佳,但轉換效率差(視壓降程度),相對的切換式(電感型)技術的優點是轉換效率高(視負載功耗),但供電品質較不理想,佔用空間也大,而電容型切換技術則在各項表現上都居中。 ▲三种电源调节、转换技术各有其优缺点,线性技术的优点是占用空间小、供电品质佳,但转换效率差(视压降程度),相对的切换式(电感型)技术的优点是转换效率高(视负载功耗),但供电品质较不理想,占用空间也大,而电容型切换技术则在各项表现上都居中。 此外散熱也與轉換效率相關連,EMI雜訊干擾也與空間性有所關連。此外散热也与转换效率相关连,EMI杂讯干扰也与空间性有所关连。 (插圖設計:郭長祐) (插图设计:郭长佑)
-
线性调压(Linear Regulator)是最常见也最易应用的电压调整方式,不过此作法只能用于降低供应电压,所以也经常称为线性降压。
線性降壓的優點是封裝體積小、需要搭配的外部元件少(只需幾個輸入、輸入電壓位置的濾波電容),這在電路佈局面積極有限的手持式應用設計時特別有利,此外線性降壓還有電源品質佳(有時也稱:電源潔淨度,即電壓的漣波電壓小、漣波因素小。漣波電壓原文為Ripple Voltage,也有人翻譯成:波紋)、沒有電磁干擾(Electro Magnetic Interference;EMI)等好處。线性降压的优点是封装体积小、需要搭配的外部元件少(只需几个输入、输入电压位置的滤波电容),这在电路布局面积极有限的手持式应用设计时特别有利,此外线性降压还有电源品质佳(有时也称:电源洁净度,即电压的涟波电压小、涟波因素小。涟波电压原文为Ripple Voltage,也有人翻译成:波纹)、没有电磁干扰(Electro Magnetic Interference;EMI)等好处。
不過,線性降壓也有缺點,當輸出入電壓間的壓差過大時,其電源轉換效率也會轉差,且壓差部份的能量都會轉成熱能消散掉(Drop-Out),當轉換效率差時散熱量也會增加,而手持式裝置的內部空間狹窄,熱能不易消散,無法消散就會使機內溫度提升,進而讓電子系統運作不穩。不过,线性降压也有缺点,当输出入电压间的压差过大时,其电源转换效率也会转差,且压差部份的能量都会转成热能消散掉(Drop-Out),当转换效率差时散热量也会增加,而手持式装置的内部空间狭窄,热能不易消散,无法消散就会使机内温度提升,进而让电子系统运作不稳。
雖然線性降壓的技術已高度成熟,但依然有持續精進的技術發展,今日的線性降壓元件幾乎都標榜低消散(Low Drop-Out;LDO),有的甚至會強調超低消散(Ultra Low Drop-Out),藉此表示有高轉換效率(因為過往以來線性降壓最為人詬病的就是廢熱消散的功率損耗)。虽然线性降压的技术已高度成熟,但依然有持续精进的技术发展,今日的线性降压元件几乎都标榜低消散(Low Drop-Out;LDO),有的甚至会强调超低消散( Ultra Low Drop-Out),借此表示有高转换效率(因为过往以来线性降压最为人诟病的就是废热消散的功率损耗)。
此外新的線性降壓元件也強調可自外部操控的管理性,即是在降壓元件上增設一個名為EN(Enable的縮寫)的輸入接腳,由其他控制電路對此接腳輸入Hi、Lo信號,即可控制線性降壓元件是否要啟動轉換效用,或者是要關閉休眠,關於此通常是由系統的微控器並搭配控制韌體來對元件進行開關操控,以更方便地實現智慧型省電機制。此外新的线性降压元件也强调可自外部操控的管理性,即是在降压元件上增设一个名为EN(Enable的缩写)的输入接脚,由其他控制电路对此接脚输入Hi 、Lo信号,即可控制线性降压元件是否要启动转换效用,或者是要关闭休眠,关于此通常是由系统的微控器并搭配控制韧体来对元件进行开关操控,以更方便地实现智慧型省电机制。
當然!当然! 線性降壓的優點之一在於嬌小的電路佔用面積,所以也有業者對此進行更深的專精,例如持續將線性降壓元件的封裝改小,使佔用面積再度縮小。线性降压的优点之一在于娇小的电路占用面积,所以也有业者对此进行更深的专精,例如持续将线性降压元件的封装改小,使占用面积再度缩小。 另外也有業者將過去元件外所需要的電容改成內建,如此連外部電容都可以縮減、省略,也一樣能讓佔用面積再次精簡。另外也有业者将过去元件外所需要的电容改成内建,如此连外部电容都可以缩减、省略,也一样能让占用面积再次精简。
▲供應電源的調整、轉換主要有三種技術可以運用,即是:線性調壓、電容型切換式調壓(電荷泵浦)、電感型切換式調壓(切換式)。 ▲供应电源的调整、转换主要有三种技术可以运用,即是:线性调压、电容型切换式调压(电荷泵浦)、电感型切换式调压(切换式)。 (插圖設計:郭長祐) (插图设计:郭长佑)
-
http://www.oxbad.com/DSP/maindoc/audio/PAGE/IMAGES/ZK127.GIF图1 输入信号与余弦调制滤波器谱2.3 参数量化方案讨论
连续的时变幅度参数应用于低数据率编码,可以有效地控制合成语音的清浊音程度,提高合成语音的质量。由于这一参数与波形插值算法参数具有相似的物理意义,可以利用类似的量化方案。这里仅对波形插值算法中的量化方案做一简单的讨论。连续的时变幅度通过低通、高通滤波器后分解为代表浊音和清音的两个成分。对浊音成分的时变幅度,截取对应与语音的低频段的部分进行矢量量化; 清音成分的时变幅度,只需量化其大致形状。清浊音成分的分离利用了人耳的听觉特性,实现高效率的压缩编码[4]。
3 实验结果
整体的语音分析系统如图2所示。参数分析部分的输入是经线性预测滤波去除声道响应的残差信号,经过基音提取、基音调整和MLT,得到在新的时间轴上均匀抽样的参数,这些参数通过基音恢复得到在时间轴上均匀抽样的参数。语音合成的过程即分析的逆过程。在参数不进行量化编码的前提下,这一分析合成系统的输出与原始信号相同,实现了语音信号的准确重建。
http://www.oxbad.com/DSP/maindoc/audio/PAGE/IMAGES/ZK128.GIF
(a) 语音分析http://www.oxbad.com/DSP/maindoc/audio/PAGE/IMAGES/ZK129.GIF
(b) 语音合成
图2 基音调整的语音分析和合成框图 实际实现时,由于基音调整的有限窗长效应,在输出信号中引入了误差。对语音处理的测试结果表明,使用较短的窗长,就可以得到较高的合成和原始语音的信噪比。例如,在基音调整和基音恢复中分别采用长度为12,6个抽样点的窗,合成和原始语音的信噪比就达到47dB,满足低数率语音编码的要求。
分析系统的输出适用于低数据率编码。对周期性较强的浊音信号,MLT正变换的结果是一个窄带信号,即它随时间的变化是缓慢的,可以通过进一步降抽样后的量化编码来降低数据率。同时,它具有频域表征的物理意义,可以直接利用人耳的听觉特性有选择地量化。类似的技巧在波形插值编码器[4]中有所应用,在2.4kbit/s数据率上实现了高质量的语音合成。
为了评价MLT输出的参数的性能,本文采用了均方根(RMS)平均带宽这一参数。信号ak(t)的平均带宽定义为
http://www.oxbad.com/DSP/maindoc/audio/PAGE/IMAGES/G64.GIF可以推测,平均带宽低的信号,更有利于量化编码。注意,这里的平均带宽是对原始的时间尺度上的信号估计。实验中对自然语音信号的线性预测残差进行了参数提取,并估计参数的平均带宽。采用的语音信号与1.2节中的数据相同。实验结果显示,低频段11路输出的平均带宽为25Hz,远低于正常的基频值60~400Hz,也与最初对时变幅度为窄带信号的假设一致。作为比较,同时计算了语音经波形插值算法提取的参数,其平均带宽为43Hz,高于新的分析方法得到的参数的25Hz平均带宽。4 结 论
与传统的分析方法比较,基音调整的分析方法采用的语音模型具有一定的优势。相比于码激励的线性预测(CELP)中的自适应码本,新方法能更有效地对浊音激励进行表征,提高合成浊音的质量。改进的多带激励(IMBE)中,由于受时变的基音周期的影响,高频段的多带清浊音判决常误判,导致合成语音的清浊音程度很难控制。新方法分离了基音周期的影响,能更直接地控制合成语音的清浊音程度。特别是,新的分析方法在模型的层次上是没有近似的,即在忽略量化误差的前提下,采用这一模型可实现语音的无损重构,这是很多其他模型无法实现的。
基金项目: 国家重点自然科学基金(69636030),博士点基金(950031)
第一作者: 女, 1973年生, 博士研究生
作者单位:杨慧敏,陈弘毅,孙义和 清华大学 微电子学研究所, 北京 100084
参考文献
1 Tremain T E. The government standard linear predictive coding algorithm: LPC-10. Speech Technology, 1982, 1(2): 40~49
2 Tremain T E, Welch V C. The DoD 4.8kbps Standard (PFS1016). In: Atal B S, Cuperman V, Gersho A, eds. Advances in Speech Coding. Dordrecht. Holland: Kluwer Academic Publishers, 1991. 121~133
3 Inmarsat Satellite Communication Services. Inmarsat-M System Definition Issue 3.0-Module 1: System Description. 1991
4 Kleijn W B, Haagen J. Waveform interpolation for speech coding and synthesis. In: Kleijn W B, Paliwal K K, eds. Speech Coding and Synthesis. Amsterdam: Elsevier Science Publishers, 1995. 175~208
5 Burnett I S, Bradley G J. New techniques for multi-prototype waveform coding at 2.84kb/s. In: Proc ICASSP. Detroit: IEEE, 1995. 261~264
6 Hiwasaki Y, Mano K. A new 2kbit/s speech coder based on normalized pitch waveform. In: Proc ICASSP. Munich: IEEE, 1997. 1583~1586
7 Evangelista G. Pitch-synchronous wavelet representations of speech and music signals. IEEE Trans Signal Process, 1993, 41(12): 3313~3330
8 Vetterli M, Kovacevic J. Wavelets and Subband Coding. Englewood Cliffs, NJ: Prentice Hall, 1995
9 Hess W J. Pitch and voicing determination. In: Furui S, Sondhi M M, eds. Advances in Speech Signai Processing. Marcel Dekker Inc, 1992. 3~4810McAulay R J, Quatieri T F. Sinusoidal coding. In: Kleijn W B, Paliwal K K, eds. Speech Coding and Synthesis. Amsterdam: Elsevier Science Publishers, 1995. 121~173
-
2 算法优化
2.1 变卷积运算为加/减运算
卷积运算在G.723.1编解码运算中所占的比例很大,如果能根据变量的特点,变卷积运算为加/减运算,则可大大减少运算次数。
比如,在用多脉冲最大似然量化的方法进行固定码本搜索时,为了计算预测残差信号r′
(n),就要进行卷积运算
r′(n)=v(n)*h(n)=h[j]v[n-j], 0≤n≤59 (1)
式中,h(n)是联合滤波器的冲击响应,v(n)是含M个脉冲的序列。
如果硬性卷积,得到一个预测残差信号矢量就需要1+2+3+……+58+59=1770次乘累加运算。每个子帧进行8次这样的运算,这样每帧要进行4×8×1770=56640次乘累加运算,次数相当多。
可是,注意到构成v(n)的M 个脉冲幅度大小是相等的,可以写成
v(n)=Gαkδ(n-mk),0≤n≤59 (2)
式中:G 是脉冲幅度,αk为1或-1,表示第k个脉冲的正负;mk 是第k个脉冲的位置;M 是脉冲个数,奇数子帧M=5,偶数子帧M=6.这样
r′(n)=h(j).Gαkδ[n-j-mk]=Gαkh(n-mk ),0≤n≤59 (3)
由于αk为1或-1,αkh(n-mk)即可通过加减运算完成,最后做一次增益G 的乘法运算可得到r′(n)。计算一次预测残差矢量最多仅需要60×6=360次加/减运算。处理一帧语音信号可减少(1770-360)×8×4=45120次运算。对于专用芯片来说,一次乘累加与一次加/减运算一样可用一个指令周期就可完成,减少45120次运算,大致相当于减少1.5MIPS.
2.2 避开求余运算
求余运算用C语言实现起来很容易,仅需一条指令即可,但对于专用芯片来说,就比较困难了。通过对算法的分析,发现G.723.1编解码器中用到的一些求余运算可以用其它办法替换,并可得到同样的效果。
比如,要计算基音预测器的激励信号e′(n),如果照搬建议就要用到求余运算:
e′(0)=[-Li-2],e′(1)=[-Li-1],
e′(n+2)=e[(n mod Li)-Li],0≤n≤61 (4)
式中,Li 是第i子帧的基音周期,e(n)是预测激励矢量。
通过对式(4)的分析,当Li