对图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 个双字寄存器寻址输出。
|