你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

基于FPGA 和PCI 的高精度测速板卡的设计与实现

发布者:jackzhang 时间:2011-01-25 22:06:07

摘 要: 经典的码盘数字测速方法有M 法、T 法、M/ T 法,但都有一定的不足。为了克服原有方法的不足,设计并实现了一种在较大速度范围都有良好精度和良好快速性的测速方法。电路采用FPGA 实现,测速得到的数据通过PCI 总线从设备控制器实现与控制计算机通信。从而根据实际传输的需要,简化了PCI 从设备控制器,实现了PCI 总线I/ O 普通读与猝发读数据的功能。

0 引 言

增量式码盘是一种原理简单,抗干扰能力强,可靠性高,适合于长距离传输的位置与速度测量装置,已成功应用于大量的控制系统中,极大地提高了其位置控制精度。理论上,只要测得码盘输出信号的频率,即可得到被测轴的转速,并且可以得到比模拟方法更高的测量精度。本文以增量式码盘为基础,设计实现一种在较宽速度范围都有较高精度并且有良好反应速度的速度、位置测量装置。

利用增量式码盘的反馈脉冲信号测量速度的典型方法有3 种: M 法、T 法和M/ T 法。其中,M 法是直接计取给定采样周期内的反馈脉冲数来测量速度的,低速时会因为脉冲数少而影响测速精度; T 法是通过测量两个相邻反馈脉冲的间隔时间来测量速度的,高速时则因为脉冲间隔短而导致精度不高; M/ T 法结合了前两种方法的优点,在大致相等的采样间隔内,计取Cm 个反馈脉冲,并同时计取这Cm 个反馈脉冲间隔内插入的高频时标信号数Cf ,经计算得到速度测量值。M/ T 法虽然克服了前两种方法的缺点,但仍存在低速时采样时机不确定,精度不高等问题,这给定周期采样的数字伺服控制系统带来很大的不便,所以又出现了变M/ T 法等方法,以进一步改善M/ T 法的性能和实用性[ 12] 。

本文利用FPGA 实现了一种改进的M/ T 法,克服经典M/ T 法的不足,其测速电路与控制器间的数据接口形式有PCI 总线和双端口RAM,便于在高性能控制系统中使用。

1 总体方案

根据控制系统的实际情况,所设计的测速板具有位置测量和速度测量功能,如图1 所示,由倍频辨向模块、改进M/ T 法测速模块、PCI 从设备控制器三个部分组成。

总体设计方案

图1 总体设计方案。

1. 1 倍频辨向

增量式码盘的典型输出是两个相位差为90°的方波信号A,B 以及零位脉冲信号Z( 见图2) 。

增量式码盘输出

图2 增量式码盘输出。

A,B 之间的相位关系标志被测轴的转向,即当正转时A 相超前B 相90°,反转时B 相超前A 相90°。对于每个确定的码盘,其脉冲周期T 对应的码盘角位移固定为,故其量化误差为/ 2 。如果能将A,B 信号四倍频,则计数脉冲的周期将减小到T / 4,量化误差下降为θ/ 8,从而使增量式码盘的角位移测量精度提高4 倍。从图2 可知,根据A,B 两方波信号之间相位关系的4 次变化,即可产生四倍频信号和辨向信号,这样就可以实现增量式码盘测量精度的提高 。

1. 2 改进的M/ T 测速算法

图3 展示了改进M/ T 法的电路原理,这是实现高精度的硬件基础。图4 为改进M/ T 法的时序图。

改进M/ T 法电路原理图

图3 改进M/ T 法电路原理图。

改进M/ T 法时序图

图4 改进M/ T 法时序图。

对图3 及其时序图4 的分析可以看出: 本测速电路在每个反馈脉冲时锁存高频时钟的计数值,两个采样周期间的高频时标增量值Ct 实际表示为T 2 前一个反馈脉冲上升沿到T4 前一个反馈脉冲上升沿的高频时标增量,而在采样周期内每个反馈脉冲到来都对反馈脉冲计数器计数,两个采样脉冲采得反馈脉冲增量值Cm 实际表示为T 1 ~ T 3 之间的反馈脉冲增量值,位置的反馈脉冲增量值Cm‘ 则是在C m 的基础上考虑方向得到的,那么结合32 位浮点运算,这种测速方法就解决了采样时机不确定的缺点。

根据上述分析,通过差分处理就可得到当前实际采样间隔内的反馈脉冲增量值Cm 和高频时标增量值Ct :


这样得到的速度是当前实际采样间隔内的平均速度:


式中: K R 为反馈信号脉冲当量; f 0 为高频时标频率。

在实际采样点T 2 处,高频时标信号f 0 的边沿不能总与反馈脉冲信号plus 的边沿保持一致,因而会产生? 1 个高频时标当量的计数误差,从而影响这种测速算法的测速精度。因此高精度数字测速算法的测速相对误差为:


动态位置算法不仅关注已经发生的反馈脉冲数量,也关注反馈脉冲的发生时刻,其硬件基础是依据图3 所示逻辑电路的。根据当前有效采样周期的定周期采样点和实际采样点之间的时间差:


并根据改进的M/ T 法得到被测对象的平均速度v n ,由vn 和 T n 相乘就可以计算出时间差 T ( n) 中所包含的动态位置信息,因此由当前有效采样周期内的增量式高精度动态位置信息可以得出位置量:


可根据这种方法完成测位置的功能。

2 各个模块VHDL 实现

根据图1 的总体设计方案,使用VHDL 语言设计实现如下几个模块。

2. 1 倍频辨向模块

为便于使用VHDL 语言描述,对图2 的码盘信号作如下分析:

( 1) 当码盘正转时,在一个周期T 内,A,B 两相信号共有4 次相对变化: 00 → 10 → 11 → 01。这样,根据前一次和当前的信号,就可以判断方向,并产生四倍频脉冲。

( 2) 同理当码盘反转时,也根据A,B 两相信号的4 次相对变化: 00 →01 →11 →10,可以判断方向,并产生四倍频脉冲信号。

( 3) 当线路受到干扰或出现故障时,则可能出现其他状态转换过程,此时不产生脉冲。

根据上述分析就可以设计出测速辨向模块,当判断正转时,把方向输出置“1” ,反向时置“0”。

2. 2 改进M/ T 法测速模块

如图3 所示可以看出,本部分的VHDL 设计分成两个模块: 计数器模块与锁存器模块。

其中,计数器模块分为两种: 高频时标计数器和反馈脉冲计数器。高频时标计数器在每个高频时标的上升沿都做+ 1 计数,在每个反馈脉冲的上升沿对计数值锁存。反馈脉冲计数器,需要两个输出: 反馈脉冲计数值Cm 、位置反馈脉冲计数值Cm’。其中,Cm 的增量值用于速度的计算,所以在每一个反馈脉冲到来时,计数器都+ 1; Cm‘的计数值用于位置的计算,所以它是在Cm的基础上考虑了码盘方向得到的计数值,在正转时反馈脉冲计数器+ 1,反转时- 1,当零位脉冲Z有效时,对其置0。然后分别输出Cm ,Cm’,由此就可以得到反馈脉冲计数器模块。

在每个采样周期的上升沿还要锁存Cm,Ct 的增量值和Ct‘ 与Ct 的差值,由于都做了差分处理,所以这三个锁存器使用双字就能满足设计要求,而Cm’锁存器在零位信号Z 后不进行差分处理,若采用36 000 刻增量式码盘,并进行10 000 倍频,位置范围为±720°,那么需要的最大计数值为:


可见,双字锁存器也能满足设计要求。

综上所述,本设计设置了4 个双字信号锁存器Cm ,Cm’,Ct ,Ct‘,同时还需要对其控制输出,所以在PCI 从设备控制器中为I/ O 分配4 个双字的地址空间。然后根据PCI 总线给出的地址信号PCI_AD[ 3: 2] 和数据输出使能信号DATA _ EN 对这4 个双字寄存器寻址输出。

2. 3 PCI 接口控制器

PCI 的时序规则和PCI 的总线协议由PCI 接口控制器实现,同时它还负责传递地址和数据输出使能信号给测速模块,实现I/ O 口的基本读与猝发读数据功能。

从设备控制器包括2 个部分: 奇偶校验模块和PCI从设备状态机。

2. 3. 1 奇偶校验模块

PCI 的奇偶校验提供了一种机制来决定一件作业。

该作业判断主设备是否成功地寻址相应的从设备,且数据是否正确地在它们之间传输。通过该模块完成数据传输过程中PCI _AD 和PCI _CBE 的偶校验。偶校验的输出信号在地址和数据周期有效,其产生的规则是使偶校验输出、PCI_CBE、PCI_AD 各位的“1”的个数为偶数。那么采用把PCI_AD 与PCI_CBE 各位异或的方法,就可以实现偶校验的功能。

2. 3. 2 PCI 从设备状态机

PCI 从设备控制器是PCI 接口设计的核心模块,按功能来说,它要产生奇偶校验和数据的使能信号,并根据PCI_AD 和PCI_CBE 产生读地址,完成主从设备的握手信号,并且实现从设备状态机在各个状态之间的转换。

由于本设计只需要完成I/ O 读操作,本状态机设计配置空间的功能放在了从设备控制器来完成,同时删去了PCI 操作中对存储器空间、配置空间的操作,结合PCI 总线的传输时序,如图5 给出了其基本结构。

( 1) 空闲状态为PCI 从设备的初始状态,在没有任何操作的时候,PCI 从设备将始终保持这个状态;( 2) 每次数据传输时首先传出地址和命令字,根据地址和命令字确定是不是对本设备的访问,并确定访问的首地址; 从设备则从命令字中识别该访问是读操作还是写操作;( 3) 读访问只有在信号IRDY,TRDY,DEVSEL都为低状态时才能进行;( 4) 猝发传输需要通过地址递增逻辑来实现地址的自动递加,其地址递增的周期为数据周期和最后传输周期总和,在等待周期暂停递增;( 5) 主从设备中任一方没有准备好,操作中都需要能够引起等待状态插入的活动;( 6) 读操作还有一个中间准备过程。

读状态机结构

图5 读状态机结构。

那么完成本状态机需要6 个状态: idle 表示空闲状态; addr 表示地址周期; tur nad 表示读转换周期; data表示数据传输周期; laST t ra 表示最后传输周期; wait 表示等待周期; 在各个状态到来时还要对中间信号、输出信号和本地信号执行相应的操作:

( 1) idle,addr,turnad 周期对PCI_TRDYn 和PCI_DEVSELn 置高电平; addr 周期依据地址信号确定是否选中本机,识别是否为读操作; addr 周期输出PCI _AD[ 3: 2] 对寄存器进行寻址,实现读操作。

( 2) data,lastt ra 周期对PCI _ T RDYn 和PCI _DEVSELn 置低电平; data,last t ra 周期置DAT A _EN有效并输出。

( 3) addr ,data,last t ra 周期置奇偶校验有效。

( 4) 等待周期置PCI _TRDYn 和PCI_ DEVSELn低电平。

根据对PCI 总线传输时序的分析,影响各个状态相互转化的因素是: 帧同步信号PCI _FRAMEn、主设备准备好信号PCI _IRDYn、读识别信号READn。其中,READn 用来标识状态addr 产生的中间识别信号。

3 测试平台与仿真测试

这种改进M/ T 数字测速及位置检测算法的硬件采用Xilinx 公司的FPGA XC3S400。使用36 000 刻的增量式码盘,速度环采样周期T 设定为1 ms,高频时标信号的频率为40 MHz,结合PC 运算的数字测速算法可以在速度0. 001~ 150(?) / s 的范围内获得? 2. 5 (10- 5 s 的测速精度。与此同时,高精度动态位置检测算法可以使位置反馈的动态测量分辨率提高到10- 2 ~10- 5个脉冲当量。

对编写好的VHDL 程序采用ISE 进行综合,并编写测试平台,用ModelSim 对其进行仿真测试。图6 为PCI 控制器的仿真图,图中state 表示状态机在内部转换的过程,状态1 表示空闲状态,状态2 表示地址周期,状态4 表示读转换周期,状态8 表示最后传输周期,状态9 表示猝发读写周期。

I/ O 读操作

图6 I/ O 读操作。

该I/ O 读操作,将地址为1 的寄存器读出。这里设定I/ O 地址为0X200~ 0X20F 这4 个双字空间,那么在地址周期中地址0X204 的2~ 3 位寻址于寄存器的第一个双字,其后紧跟的是读的转换周期,猝发读写周期和最后一位读写周期。可以看出,这两个周期都对这个寄存器进行了读操作。

4 结 语

本文介绍了使用FPGA 设计和实现基于PCI 总线传输的改进型M/ T 法测速电路,它克服了经典测速方法的几个缺点,在较大速度范围内都具有良好的精度。

同时使用FPGA 设计和实现了PCI 从设备控制器,使得测速电路的设计与PCI 总线的设计成为一个整体,节省了板上器件,也使得整个设计信号在FPGA 内部流动,具有更加良好的抗干扰能力和稳定性。

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了