基于FPGA的光栅尺信号智能接口模块_EDAPLD论文
关键词:光栅尺 四倍频细分 辨向 eda fpga epf10k10
1 光栅尺信号及电路设计要求
将光源、两块长光栅(动尺和定尺)、光电检测器件等组合在一起构成的光栅传感器通常称为光栅尺。光栅尺输出的是电信号,动尺移动一个栅距,输出电信号便变化一个周期,它是通过对信号变化周期的测量来测出动就与定就职相对位移。目前使用的光栅尺的输出信号一般有两种形式,一是相位角相差90o的2路方波信号,二是相位依次相差90o的4路正弦信号。这些信号的空间位置周期为w。本文针对输出方波信号的光栅尺进行了讨论,而对于输出正弦波信号的光栅尺,经过整形可变为方波信号输出。
输出方波的光栅尺有a相、b相和z相三个电信号,a相信号为主信号,b相为副信号,两个信号周期相同,均为w,相位差90o。z信号可以作为较准信号以消除累积误差。
图1给出了动尺移动时a、b信号的变化情况。在a信号的下降沿采集b信号,就可以判断出运动方向。图中前半部分为正向运动,a信号的上升沿及下降沿均比b信号超前1/4w,在a信号下降沿采集的b信号为“1”;后半部分为反向运动,a信号的上升沿及下降沿均比b信号滞后1/4w,在a信号下降沿采集到的b信号为“0”。根据采集到的运动信号方向和a信号变化的周期数用计数器进行曲计数(正向计数或逆向计数),就可以测算出总位移。
在上述信号处理、测量电路中,用到了触发器、计数器等多种数字集成电路,测量分辨率为光栅栅距w。目前,计量用光栅尺的刻线一般为每毫米50~250线,对应的栅距w为20~4μm ,在精密测量中往往不能满足要求,需要进行曲细分。如果同时考虑a、90o信号上升沿和下降沿的各种情况,就可以实现信号四细分,其主要电路有:细分辨向、计数和接口电路等。以上功能可以由通用数字集成电路来完成,但这种设计方法所用芯片多,结构复杂。当然也可以通过单片机以及一些外围芯片来完成,只是这种方法通用性差,编程复杂,而且增大了单片机的负担,使单片机响应其它事件的实时性变差。
随着大规模可编程逻辑器件(cpld:复杂可编程逻辑器件;fpga:现场可编程门阵列)的飞速发展,传统的电路设计方法已大为改观。许多传统的逻辑电路完全可以用可编程逻辑器件来代替,并且可提高系统的可靠性,减小pcb的面积,使产品小型化,还有利于保护知识产权。利用eda(电子设计自动化)技术设计可编程逻辑器件已成为现代电子设计的一种必然趋势。本文所介绍电路的接口模块就是基于fpga芯片完成的。
该电路设计有如下要求:利用fpga芯片完成双路光栅尺信号处理(考虑到2维x-y平台的应用场合)、四细分及辨向功能、24位可逆计数器、与微处理品器及各种单片机的并行接口电路(包括锁存、译码、清零电路等)。其对外接口信号如图2所示。
ina1、inb1、ina2、inb2分别为两路a、b信号。作为处理电路 输入信号,这2路信号经四细分、辨向后,可为两路24信可逆计数器提供计数脉冲和方向信号。接口电路包括锁存、译码、清零电路等,通过数据线d0~d7、地址线a0~a4、片选信号线cs来读写控制与外部微控制器接口。接口采用8位数据总线,计数值(48位,占6个读口)及清零命令等数据交换均通过不同口地址的读写完成。该模块的操作与其它智能接口器件(如8255、8253等)相类似。
2 fpga器件的选择
根据设计要求和综合估算整个电路所需要的管脚和宏单元的个数,本设计选用epf10k10。它是altera公司flex10k系列产品之一,是一种嵌入式可编程逻辑器件。epf10k10采用cmos sram制靠工艺,使用权sram来存储编程数据,具有在系统可编程特性。具体的配置方式有被动型和主动型两种,其中被动型配置是在上电后由计算机通过编译后产生的后缀为sof的文件利用专门的下载电缆配置芯片。而主动型配置是在上电后由专门的可编程配置芯片(如epc1441)自动对epf10k10芯片进行配置。epf10k10具有高密度(可用逻辑门1万~25万;ram;6114~4096位,512个宏单元)、高速度、低功耗等特点。芯片内含有专用进位链和级联链及快速通道,故其互连方式十分灵活。
3 电路设计
本电路采用altera公司的max -plus 开发平台进行设计。max -plus 为altera公司的专门开发平台,它包括设计输入、编译、仿真、器件编程等功能。该平台使用方便,允许用户用原理图、vhdl语言、波形图等多种输入方法进行设计。下面介绍系统主要电路的设计。
3.1 细分辨向电路
光栅尺信号的细分与辨向是提高光栅尺测量精度的关键性一步。在笔者所参考的关于光栅辨向和细分电路的资料中,很多设计者都没有综合考虑辨向和细分的复杂性,而是把辨向和细分电路分开,辨向电路只对光栅尺的输出信号进行辨向,而不是对细分后的脉冲信号进行辨向,这样实现测量误差仍是光栅尺的栅距。在考虑辨向功能时,应对细分后的信号进行辨向设计,否则不能提高测量精度。
细分辨向电路的原理图如图3所示,光栅尺输出的相差为90 o的方波信号ina、inb经rc滤波和施密特整形后(芯片外处理)输出信号a、b,然后经第一级d触发器后变为a’、b’信号,再经过第二级d触发器变为a”、b”信号。通过d触发器可以对信号进行整形,从而消除了输入信号中尖脉冲带来的影响,这样在后续倍频电路中不再使用权原始信号a、b,因此提高了系统的抗干扰性能。d触发器的时钟由外部有源晶振提供,其频率为1mhz,远高于a、b波形变化的频率,因而可以认为,d触发器的输出端q能跟踪输入端d的变化。在四倍频辨向电路中,采用组合、时序逻辑实现a’、a”、b’、b”信号进行的逻辑组合。
当光栅尺正向运动时,从clkadd信号端输出四倍频脉冲,而clksubb端无信号输出。当光栅尺反向运动时,从clksubb信号端输出四倍频脉冲,而clkadd端无信号输出。clkadd和clksubb相与后作为可逆计数器的计数脉冲clk,读出该计数器的值便可得出光栅移动的位置。clkadd和clksubb信号组成的rs触发器电路可产生enadd,ensubb。enadd可作为可逆计数器的方向信号。其仿真波形如图4所示。
3.2 计数电路
本系统中的24位计数器采用vhdl语言进行设计。输入信号定义为时钟clk、方向信号fx =enadd ,清零信号clr(后面有介绍)。输出信号定义为24位的计数结果count(23:0)。用vhdl语言来编写实现24位可逆计数器功能。其仿真信号如图5所示。
3.3 接口电路
接口电路用原理图法设计,电路包括以下部分:
(1)地址译码电路:输入信号为外部(微处理器、单片机等)的地址线a0~ a4、片选信号线cs、读写控制信号,通过逻辑门电路的连接构成组合逻辑,给每一个内部单元提供使能信号。
(2)锁存接口电路:由于内部各计数单元工作属于动态过程,因此外部微处理器(或单片机等)在读取数据时,应该先给其发出锁存信号然后再读取数据,以保证读出稳定的数据。锁存器输出设计为三态门输出,与外部数据线连接,三态门的使能信号由译码电路提供。
(3)清零电路:电路中设计了清零电路。清零脉冲是通过外部写命令(8位)内部进行译码的方式进行的,而不是使用一根信号线进行清零,这样可以有效地防止在只使用一根信号线时受干扰等原因而引起的误清零现象。
4 结束语
本设计经过仿真、编译实现后,将代码下载到epc1441可编程配置芯片,属于主动配置模式。在接口模块上电后由epc1441自动对epf10k10芯片进行配置。该接口模块已成功应用于于笔者设计的运动控制系统中,成功地完成了对光栅尺(运动控制系统中的位置反馈部件)信号的四细分处理功能,性能稳定可靠。如果在此设计的基础上再加上译码驱动和显示电路,就可作为位移测量和显示电路独立使用。