标题:
基于CPLD多通道编码器数据采集系统设计(上)
[打印本页]
作者:
forsuccess
时间:
2012-11-26 22:29
标题:
基于CPLD多通道编码器数据采集系统设计(上)
本文提出了采用Xilinx公司生产的
CPLD
来对多通道旋转编码器进行数据采集的方法,着重介绍了系统的软硬件设计和驱动程序开发,以及实际应用情况,得出了用CPLD技术为多通道编码器进行数据采集这样一种切实可行的方法。
关键词:旋转编码器 CPLD 数据采集
概述
旋转编码器是一种测量旋转角度的测量器件,通常采用两个相位差90度的方波编码方式,其旋转方向由两个波形的相位差决定。当输出波形A超前于输出波形B如图1,则可认为是正方向旋转,反之,若输出波形A滞后于输出波形B如图2,则可认为是反方向旋转,当旋转方向发生变化时,其输出信号产生镜像翻转如图3。
编码器的精度由旋转一周产生方波数决定,当旋转一周可产生2000个方波时,每一个方波周期表示为360°/2000。但为了提高旋转编码器的测量精度,系统将A、B两相的各个沿进行了计数,从而将测量精度提高了四倍,相当于最小的测量角度为360°/8000。
旋转编码器广泛应用于旋转角度的测量,以及可以将各种参数角度化的参数的测量,通过与各种机械结构的组合,可以测量多种物体的边缘形状、各种机械装置的结构偏差等。
本论文主要根据旋转编码的输出信号特点,提出了采用CPLD技术,来完成6个旋转编码器信号测量,采用CPLD技术,设计适合于PC机的数据采集卡的硬件以及软件,并给出了实际调试及应用结果。
1数据采集系统的硬件设计
1.1系统结构
数据采集系统由旋转编码器信号接口、光电隔离和信号校正、编码计数以及PC接口组成,系统结构如图4。旋转编码器信号接口将旋转编码器的信号通过一定的接插件引入到采集卡中,随后通过光电隔离与信号校正,送入到由CPLD器件实现的编码器计数。宿主机通过ISA总线来对编码器的计数进行控制与读取。
1.2光电隔离和信号校正
旋转编码器的控制电源可以在较大范围内变化使用,为了确保系统的安全可靠,必须进行光电隔离。
由于旋转编码器的输出信号频率达100kHz,所以应选用高速的光电隔离器件,如具有1M数据速率的4N135/136,或10M数据速率的4N137等。同时为了防止噪声引起的信号抖动,应采用斯密特触发器进行抗抖和信号校正。
1.3编码器计数
编码器计数由CPLD器件来完成。CPLD是复杂可编程逻辑器件的简称。系统选用Xilinx生产的XC9500系列CPLD,它是一种Flash编程型的可编程逻辑器件。该产品采用先进的FastFLASH技术,该技术采用一个双层的多晶硅、两层金属技术,可提供高达10000次以上的编程/擦写寿命周期,和传统存储技术EPROM和E2PROM相比有着明显的优势。采用EPROM存储技术虽可提供优良存储器单元且功耗较低,但它不可电擦除;采用E2PROM技术虽可电擦除,但需要较大的存储器。而CPLD的FastFLASH技术是对EPROM技术的电擦除扩展。
和普通的可编程逻辑器件相比,CPLD具有以下优点:操作灵活、使用方便;高性能的逻辑能力;存储元胞密度高;可靠性高;开发迅速;经久耐用;能实行电擦除;能为器件提供快速编程;采用ISP(系统同编程)技术。
XC9500系列中可供选用的片子有多种,从旋转编码器的测量、片子宏单元的多少以及调试的方便,系统最终选用了XC95108PC84。
XC95108的机械特性和电气特性如下:宏单元数为108个;最大端口数为108个;引脚至引脚延时7.5ns;系统频率为83.3MHz;支持单个OE(输出使能)控制;支持JTAG(IEEE边界扫描标准1149.1)协议。特别值得一提的是,XC95108采用了ISP技术。因此,对器件进行编程不再需要硬件编程器。只要一根下载电缆通过下载软件与元件的编程接口连接即可实现。并且,无论产品处在设计或制造的哪个环节,还是产品已提交给用户以后,都可以改写器件的逻辑功能,也就是可以通过软件对硬件进行升级。
六个通道的旋转编码器计数由两个XC95108完成,每个XC95108完成三个编码器通道的编码计数以及相关控制命令的接受和计数值的输出,其大致功能可由图5表示。
1.4PC机接口
六个通道的编码器信号通过光电隔离和信号较正送入两片XC95108后,XC95108分别对三个通道的计数信号进行正反相计数,其计数结果分别存放在不同的寄存器中,供宿主机PC读取。根据设计的实际需要,PC机接口采用ISA总线。
PC机接口要完成对ISA总线的地址译码,数据的缓冲和数据的双向传送(控制命令发送和编码器计数值的读取)。所有的这些功能同样由一片CPLD器件(同样选择XC95108)完成,其主要功能可由图6表示。
2CPLD功能实现
系统采用3片XC95108分别实现6个通道旋转编码器的编码计数以及与PC计算机的接口。这里主要介绍一个通道的编码计数实现。CPLD功能实现根据支持软件的不同可选择采用原理图方式、VHDL编程以及两者混合使用三种模式,本系统设计采用VHDL语言编程方式。
为了确保旋转编码器的编码精度,采用对输出信号A、B的各沿进行编码计数方式,这意味着要提取输出信号A、B的各个跳变,图7是一种跳变检测电路的原理图,相对应的VHDL编程如下。
根据A,B变化前后的状态,可以得到旋转方向、变即计数器计数方向Dire。从而可以有下列计数程序。
这样就实现了一个通道的编码计数。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0