设计增量式编码器的接口电路 增量式光电编码器( 二 )


图4D触发器后信号A和B的信号图 。
编码器中光电线数为1024,经过四倍频率后产生4096个脉冲,其精度为0.0879o为了满足精度要求,本设计采用16位可逆计数器,计数范围为-65536~65535,利用Altera公司设计软件的LPM(宏功能模块)模块实现 。
界面的设计与实现本设计使用的软件是Altera公司的Quartus II,选用的芯片是CycloneⅲIII的EP3C16Q240 。该芯片拥有15408个逻辑单元,56个乘法器,4个锁相环,20个全局时钟网络,存储容量为504Kbit,最大工作频率为437.5MHz,输入输出电压为3.3V[8] 。如此强大的资源足以实现设计的预期功能 。
1子模块原理图设计
FPGA具有动态系统重构和静态可重复编程的特点,使得像软件一样通过编程来修改硬件的功能成为可能 。我们可以通过原理图输入或HDL(硬件描述语言)来设计和实现一个数字系统 。根据上一节的原理介绍,生成倍频、鉴相、计数模块的顶层文件原理图,如图5所示 。
图5顶部示意图
其中,输入为正交编码信号A和B,输出为16位计数结果 。顶层原理图分为两部分,一是倍频鉴相模块,如图6信息资源网所示;一种是利用自身的宏功能模块实现的计数模块 。编码信号经过倍频和鉴相后,产生四倍频信号F4_CLK和方向信号ENADD,然后通过pluse_count实现16位可逆计数功能 。当ENADD为高电平时,即码盘正转,实现加法计数;当ENADD为低电平时,即码盘反转时,实现减法计数 。
图6倍频和鉴相示意图
编译并下载
在Quartus II中,依次执行以下操作:新建项目、目标芯片选择、原理图绘制、管脚分配、芯片参数和配置选项设置,然后就可以编译设计文件了 。
编译完成后,项目文件夹中会生成两个后缀为sof和pof的下载文件 。这两个文件的区别在于,前者是通过JTAG口(配置了FPGA芯片)下载到FPGA芯片中,直接运行程序,但断电后程序消失;后者通过AS口下载到配置芯片,上电后会自动完成配置并运行程序 。
前者下载速度快,一般用于FPGA的调试过程中;但后者通常用于开发后期固化程序,因为它写EPCS配置芯片(实际上是串行FLASH)速度慢 。本设计在调试阶段也遵循JTAG模式烧录下载,在方案确定后也遵循AS模式烧录下载[11] 。
波形模拟和分析编译完成后,我们使用Quartus II自带的模拟器进行功能仿真,验证设计的逻辑是否正确 。创建矢量源文件时,先将编码信号A设置在B 90o之前,得到如图7所示的仿真结果;然后在b超前设置编码信号A 90o,得到如图8所示的仿真结果 。
从图7和图8可以看出,当信号a领先于信号B 90o,即电机正转时,方向信号处于高电平,一个周期内翻两番计数4次;反之,当信号为b超前的90o,即电机反转时,方向信号处于低电平,也实现了倍频,一个周期内进行4次减法计数 。由此可见,信息资源网络的仿真结果与理论分析完全一致,该接口电路的逻辑是正确的,具有实际意义 。
在实际调试阶段,连接编码器和电路板,通过QuartusII的Signaltap II捕捉并显示实时信号 。所得结果与预期一致,从而进一步验证了设计的可靠性 。
图7信号A领先B 90o的仿真结果
图8b超前90o模拟结果
总结基于FPGA的增量式编码器接口设计实现了编码信号数据的采集和处理,克服了使用ASIC(专用集成电路)处理数据带来的编译复杂、通用性差的缺点 。该接口电路具有适用性好、集成度高、抗干扰能力强、工作可靠、数据处理速度快等优点 。,适用于各种需要增量式编码器测量位置和速度的场合 。


推荐阅读