1. 编码器开关旋钮汇编
在基于DCT变换的图像压缩编码方法中,对DCT系数必须做量化处理。量化过程是一个多对一的映射,例如对一个8×8块的64个DCT变换系数分别除以量化步长后取整。由于大多数DCT变换系数量化后变为零,因而达到压缩的目的。由于在量化过程中用到除法,因此通常需要进行浮点运算。
但是,可进行浮点运算的数字信号处理器(DSP)芯片结构比定点DSP芯片复杂,价格一般也比定点DSP芯片高很多。所以数字图像处理系统中通常采用定点DSP芯片来完成图像压缩运算,这种方法已经成为数字图像处理技术的的一个趋势。
可用于数字图像处理的比较好的定点DSP芯片有德州仪器公司新一代高性能定点DSP芯片TMS320C6200系列。它具有VLIW(Very Long Instruction Word)结构,由8个可并行运行的执行单元构成。这些单元使得该系列芯片在单周期内可以并行执行多条指令,例如在单周期内并行完成2个16位×16位乘法和2个移位操作。它还具有流水线结构,使得若干条指令的不同执行阶段可以并行执行。这些设计使得TMS320C6200系列芯片程序执行速度更快、性能更高。如200MHx时钟的TMS320C6201峰值性能可以达到1600MIPS。
在定点DSP上完成除法,通常的办法是调用库函数。但是调用库函数,势必会打破循环中的流水线操作,严重影响量化的完成速度。所以提高量化过程速度的关键就在于避免任何函数调用、跳转等操作。
本文以TMS320C6200系列定点DSP为例,提出一种用定点乘法和移位运算来代替量化过程中除法和饱和运算的方法,从而极大地提高了量化过程的运行速度。该方法也同样适用于其它各种定点微处理器。
1 MPEG-4标准中采用的量化技术及程序优化
MPEG-4标准中定义了两种量化方式:H.263量化方式和MPEG-4量化方式。这里为简单起见,只介绍TMN2.0编码器所用到的一种量化策略:AC系数和帧间宏块的DC系数用H.263量化方式,而帧内宏块的DC系数用MPEG-4量化方式中的DC系数非线性量化方式。
1.1 H.263量化方式
量化参数QP可以取值[1,3],量化步长为2QP。则量化公式为:
对于帧内宏块,LEVEL= COF /(2QP)
对于帧间宏块,LEVEL=( COF -QP/2)/(2QP)式中,COF表示即将被量化的DCT变换系数,LEVEL表示量化结果的绝对值。
1.2 MPEG-4DC系数非线性量化方法
量化公式为:LEVEL=DC_COF//dc_scaler
式中,DC_COF表示即将被量化的DCT变换DC系数;LEVEL表示量化结果;//表示先进行除法运算,然后对结果四舍五入取整。
在内部宏块内,定义亮度块为类型 1块,色差块为类型2块,类型1块的C系数由类型1的非线性标尺量化;类型2的DC系数由类型2的非线性标尺量化。
表1为定义DC非线性量化标尺dc_scaler。
表1 帧内宏块DC系数标尺
类 型 量化参数(QP)范围内的dc_scaler
1~4 5~8 9~24 25~31
亮度:Type1 8 2QP QP+8 2QP-16
色度:Type2 8 (QP+12)/2 QP-6
从表1中可以看到亮度块和色差块的DC系数有独立的量化标尺,亮度块具有较大的标尺而色度块具有较小的标尺。这种分段线性的非线性量化策略是一种高效的量化方式,它在保证图像质量的基础上提高了压缩效率。
1.3 将量化除法改定点乘法的方式
以内部宏块的AC系数量化公式为例,将其改写为:
LEVEL= COF /2QP= COF (2 n/2QP)/2 n
定义量化参数ac_cocff=[2n/2QP],[x]表示对x截尾取整,则:
LEVEL= COF ×ac_coeff/2n
在QP的取值都范围[1,31]内,要使截尾取整后的每一个2 n/2QP的值都能够用量化参数ac_coeff一一对应地表示,n必须足够大。通过计算得出:当n≥11时满足要求。
取n=11得到ac_coeff的计算公式为:
ac_coeff=[2 11/2QP]
其实质就是用一个字(32 bit)的低11位(0Q11)来表示1/2QP的小数部分。
由于QP在[1,31]之间,可以用上述公式计算出对应于帧内宏块AC系数量化的量化系数的查找表:ac_coeff=AcQConff[QP]。用C语言表示为(假设QP=0时ac_coeff=0):
const short int AcQConeff[32]=
{0x000,0x400,0x200,0x155,0x100,0x0cc,0x0aa,0x092,
0x080,0x071,0x066,0x05d,0x055,0x04e,0x049,0x044,
0x040,0x03c,0x038,0x035,0x033,0x030,0x02e,0x02c,
0x02a,0x028,0x027,0x025,0x024,0x023,0x022,0x021};
计算表明,AC系数量化系数、亮度块DC系数量化系数和色差块DC量化系数都可以统一用一个字的低11位(0Q11)来表示。这样就可以分别计算出它们的量化系数的查找表,从而实现用乘法运算代替除法运算。
而除以2 n的操作可以用右移n位的办法来完成。
对于8bit无符号二进制数表示的象素值,在经过DCT变换后,其DCT变换系数的值域为[-2048,2047],最大有12位二进制数。同时,由上述分析可知量化系数最大有11位。所以DCT变换系数与量化系数相乘的结果最大将有11+12共23位。由于TMS320C62xDSP芯片中集成的乘法器是16位×16位的乘法器,乘法运算结果存放到32位的寄存器中。所以用本文方法计算出的量化系数与DCT变换系数相乘后,结果不会溢出。
根据MPEG-4 Visual标准TMN 2.0的要求,量化后AC系数值要饱和到[-2048,2047]之间。这可以利用TMS320C62x芯片指令集中的饱和左移指令SSHL来实现,只需两条指令即可完成饱和运算,无需使用比较指令和跳转指令。
下面给出内部宏块量化的TMS320C62x线性汇编程序:
cmpeq type,1 //type定义的是当前块的类型
[type] ldh *+DcLumQCoeff[QP],dc_coeff //得到类型1的DC系数的量化参数
[!type] ldh *+DcChromQCoeff[QP],dc_coeff //得到类型2的DC系数的量化参数
lde *coeff[0],level //取出DCT变换DC系数
mpy level,dc_coeff,level //用乘法进行量化
addk 0x400,level //加 0x400,对结果进行四舍五入
shr level,11,level //右移11位
cmpgt level,maxDC,tmp //对量化后的DC系数进行饱和运算
[tmp] mv maxDC,level //将其限制在[1,maxDC]之间cmplt level,1,tmp
[tmp] mvk 1,level
ldh *+AcQcoeff[QP],ac_coeff //得到AC系数的量化参数
mvk 63,cntr //63次循环,只对AC系数进行量化
loop: .trip 63 ldh *coeff++[1],cof //取出DCT变换AC系数
abs cof,level
mpy level,ac_coeff,level //对AC系数绝对值用乘法进行量化
shru level,11,level //右移11位
cmplt cof,0,tmp
[tmp] neg level,result
[!tmp] mv level,result
sshl result,20,result //将量化后的AC系数值进行饱和运算,
shru result,20,result //将结果限制在[-2048,2047]之间
sth result,*qcoeff++[1]
[cntr] sub cntr,1,cotr
[cntr] b loop
由该程序可以看到,程序中没有任何会影响流水线的的跳转语句及函数调用。因此将该程序编译后会发现,此循环被优化构成软件流水。如果再使用其它一些优化手段,比如合并程序中的移位指令,合作字访问指令一次处理两个短型数据等,该程序的效率将会更高。我们用TMS320C62x软件仿真器测试表明,原来使用除法的量化函数需要4871个周期,而运用上述优化办法进行优化后的量化函数只需275个周期即可完成,效率提高约18倍。
DCT/IDCT变换及量化过程是视频图像压缩系统中的关键模块。该模块的执行速率对整个系统的处理流度影响很大,因此将量化过程中的浮点运算转换为定点运行,提高该模块在定点DSP芯片上的执行速度,其意义显得尤为重要。同时由于目前绝大多数数字通讯系统都基于定点DSP芯片,如果用定点芯片完成视频图像处理将会有易于与数字通讯系统集成的优点。我们的这一方法为在定点芯片上完成图像处理进行了有益的尝试,为后续的研发工作打下了一个良好的基础。
2. 旋转编码器开关工作原理
一、接线方法:
编码器有5条引线,其中3条是脉冲输出线,1条是COM端线,1条是电源线(OC门输出型)。编码器的电源可以是外接电源,也可直接使用PLC的DC24V电源。电源“-”端要与编码器的COM端连接,“+ ”与编码器的电源端连接。编码器的COM端与PLC输入COM端连接,A、B、Z两相脉冲输出线直接与PLC的输入端连接,A、B为相差90度的脉冲,Z相信号在编码器旋转一圈只有一个脉冲,通常用来做零点的依据,连接时要注意PLC输入的响应时间。旋转编码器还有一条屏蔽线,使用时要将屏蔽线接地,提高抗干扰性。
二、工作原理:
由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。
由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。编码器码盘的材料有玻璃、金属、塑料,玻璃码盘是在玻璃上沉积很薄的刻线,其热稳定性好,精度高,金属码盘直接以通和不通刻线,不易碎,但由于金属有一定的厚度,精度就有限制,其热稳定性就要比玻璃的差一个数量级,塑料码盘是经济型的,其成本低,但精度、热稳定性、寿命均要差一些。
3. 旋钮式编码器
这要看具体的参数设置,有三种调速方式,一个是控制面板上的数字编码器(旋钮)调速,一个是外接电位器调速,还有一种是上位机调速。具体要看P01.00、P0.01、P0.02以及P0.03等几个参数。
4. 旋转编码器开关
8421的拨码实际内部是四个开关。引出5根线,其中1根是公共线,其余4根接开关后,两种使用方法,其一是硬件法,加译码器。其二是软件法,采用单片机加软件。至于旋转编码器则是另外一回事,准确地说是转角检测传感器。
5. 编码器按钮
1、布线施工后,通过预埋盒或使用膨胀螺栓将底座固定在墙上,安装孔距为69mm;
2、探测总线采用2×1.0-1.5mm2导线;
3、安装之前用编码器对其写入相应地址码(1-200);
4、探测总线L1、L2连接在端子1和端子2上;
5、手报部件只能在布线检查后、调试之前安装,以防止因不恰当安装作业造成损失。
报警按钮接线
1、端子1和2分别接二总线L1和L2;
2、端子3、4接电话线;
3、端子7、8正常时形成常开触点,手动报警按钮按下时闭合,可用来控制现场声光报警装置,需另接24V电源。严禁使用此触点控制大功率设备和强电设备。
6. 编码器开关原理
PLC控制电磁阀,原理就是,plc的开关量输出模块,连接到电磁阀的线圈端。当该模块的相对应点,有电压输出,电磁阀线圈得电,触点吸合。无电压输出,线圈失电,触点断开。
7. 旋钮编码器工作原理
、接线方法:
编码器有5条引线,其中3条是脉冲输出线,1条是COM端线,1条是电源线(OC门输出型)。编码器的电源可以是外接电源,也可直接使用PLC的DC24V电源。电源“-”端要与编码器的COM端连接,“+ ”与编码器的电源端连接。编码器的COM端与PLC输入COM端连接,A、B、Z两相脉冲输出线直接与PLC的输入端连接,A、B为相差90度的脉冲,Z相信号在编码器旋转一圈只有一个脉冲,通常用来做零点的依据,连接时要注意PLC输入的响应时间。旋转编码器还有一条屏蔽线,使用时要将屏蔽线接地,提高抗干扰性。
二、工作原理:
由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。
由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。编码器码盘的材料有玻璃、金属、塑料,玻璃码盘是在玻璃上沉积很薄的刻线,其热稳定性好,精度高,金属码盘直接以通和不通刻线,不易碎,但由于金属有一定的厚度,精度就有限制,其热稳定性就要比玻璃的差一个数量级,塑料码盘是经济型的,其成本低,但精度、热稳定性、寿命均要差一些。
分辨率—编码器以每旋转360度提供多少的通或暗刻线称为分辨率,也称解析分度、或直接称多少线,一般在每转分度5~10000