基于FPGA的新型绝对式编码器
扫描二维码
随时随地手机看文章
摘 要: 介绍了一种基于FPGA的新型绝对式编码器。利用FPGA和硬件描述语言,采用自顶向下的设计方法,实现了辨向模块、串/并转换模块、查表译码模块以及NiosⅡ软核CPU等功能模块的设计,以及绝对位置的准确测量。该编码器具有结构紧凑、集成度高的优点,以适应工程上对绝对式编码器小型化的要求。
关键词: 绝对式编码器 FPGA 硬件描述语言
随着制造业和自动化技术的迅速发展,编码器作为一种融合数字技术的精密测角装置已被广泛应用于数控机床、机器人、自动化仪表等领域。编码器将机械运动中的角度、位移、转速等物理量转变成数字信号输出,因此将它与数字信号处理技术、计算机技术相结合,可实现快速、及时、准确的位置检测与控制。根据形成代码方式的不同,编码器可分为增量式和绝对式两类。传统绝对式编码器如果要反映2n精度,其码盘上至少要有n道码道,每道对应于一个读码元件。这种结构比较复杂,制作困难,码盘径向尺寸较大,难以实现小型化、集成化,成为绝对式编码器进一步发展的障碍[1~4]。本文介绍一种新型绝对式编码器,采用一个光敏元件读取单圈串行编码码道,采用两个光敏元件读取同步码道获得辨向信息,并且利用FPGA器件来实现辨向和译码,从而获得位置信息。该编码器可以实现绝对位置的准确测量,具有结构紧凑、集成度高的优点,为绝对式编码器的小型化开辟了一条有效的途径。
1 基于FPGA的系统总体方案设计
本文实现了10位绝对式编码器,在码盘的圆周上有1024个编码位置。与传统绝对式编码器不同,码盘上只有两个码道。内圈为编码码道,由1024个透光或遮光的窗口组成,透光窗口用1来表示,遮光窗口用0来表示;采用一个光敏元件串行读取编码码道来获得惟一的绝对位置编码,绝对位置编码由相邻的10个编码位置上的二值信息组成;编码码道的布置方式既可以通过计算机编程的方法寻找,也可以通过对m序列进行适当的处理来获得。码盘的外圈为同步码道,由相对于每一个编码位置的透光窗口组成;在同步码道上设置两个光敏元件,其中一路作为同步信号触发编码码道上的光敏元件读码,两路信号结合起来用于判断码盘的旋转方向。
新型绝对式编码器系统结构如图1所示。编码码道上的二值信息经光敏元件串行读入后,送入串/并转换模块中的10位双向移位寄存器,移位寄存器根据编码器的旋转方向进行移位,串/并转换模块输出的绝对位置编码经过译码后就可以实现绝对位置测量。图1中虚线框起来的部分在一片FPGA芯片上实现,选择了Altera公司Cyclone系列的EP1C12Q240C8芯片。
根据编码器绝对位置测量的需要,在FPGA系统电路总体设计时,主要考虑完成辨向、串/并转换、译码和显示等功能。系统顶层原理图如图2所示,分为辨向、串/并转换、译码和NiosⅡ处理器软核四大模块,其中每个模块又由一系列功能单元和子模块组成。
2 FPGA内部各功能模块设计
2.1 辨向模块
在码盘同步码道上设置的两个光敏元件输出两路方波信号(a信号和b信号),周期均为T,在安装时保证相位差为90°。图3给出了码盘在换向旋转时a、b信号的波形图,在a信号的上升沿采集b信号,就可以判断码盘的旋转方向。当码盘按逆时针方向旋转时,a信号比b信号超前,在a信号的上升沿时b信号为0;当码盘按顺时针方向旋转时,a信号比b信号滞后,在a信号的上升沿时b信号为1。利用VHDL编程实现辨向模块的设计。
2.2 串/并转换模块
编码码道上光敏元件串行输出包含绝对位置编码信息的信号,而译码模块需要的是10位并行绝对位置二进制码,利用VHDL语言设计了10位双向移位寄存器实现串/并转换,具有清零、左移、右移、并行置数等功能。如图2所示,移位寄存器的时钟信号CLK采用同步码道上光敏元件输出的a信号,串行输入信号SI是编码码道上光敏元件输出信号incode;方向信号DIR是辨向模块的输出信号DIROUT,码盘逆时针旋转时DIR为高电平,移位寄存器右移,码盘顺时针旋转时DIR为低电平,移位寄存器左移;其他控制信号CE、CLR、SET和LOAD均由NiosⅡ处理器软核控制,均设置为高电平有效;串/并转换模块的输出信号DATAOUT[9..0]将用作下一步查表的地址信号。
2.3 FIFO模块
利用双口RAM和读写地址模块来实现FIFO模块,其内部模块图和接口信号如图4所示。FIFO的接口信号包括写时钟(wr_clk)和读时钟(rd_clk)、与写时钟同步的写有效(wen)和写数据(wr_data)、与读时钟同步的读有效(rden)和读数据(rd_data)。为了实现准确的读写和避免FIFO上溢或下溢,还应给出与读时钟和写时钟同步的空标志(empty)和满标志(full),以禁止读写操作。写地址产生模块根据写时钟和写有效信号产生递增的写地址,读地址产生模块根据读时钟和读有效信号产生递增的读地址。FIFO的操作如下:在写时钟wr_clk的上升沿,当wren有效时,将wr_data写入双口RAM中与写地址对应的单元;始终将双口RAM中与读地址对应的数据读到数据总线上。
2.4 译码模块
将串/并转换模块输出信号DATAOUT[9..0] 作为查表地址,通过查找绝对位置编码与角度对应表实现绝对位置测量。配置了256KB的SRAM及2M的Flash,SRAM用来为NiosⅡ运行程序和存储相关数据,Flash用来存储绝对位置编码与角度对应表。译码时先以串/并转换模块输出信号DATAOUT[9..0]作为地址访问Flash,通过查表获得所需要的那一列数据,然后将它读出并写入FPGA的块RAM中。存储在Flash中的表格为10×1024×1024bit,即占用1M×10bit的空间,当读出其中的一列时,其大小为10×1024bit。FPGA中有专门的双口读/写同步片内块RAM,每个RAM有4096个存储单元,本文将读出的10×1024bit数据写入四个块内RAM中,并配置成16×256bit。利用VHDL语言实现查表译码程序。
2.5 NiosⅡ软核CPU
为了缩短开发周期且高效利用FPGA资源,系统采用了NiosⅡ软核处理器。它是Altera公司推出的一款32/16位精简指令处理器软核,可以实现SOPC(System On a Programmable Chip)集成[5]。根据实际需要,考虑到系统的稳定性和可扩展性,NiosⅡ软核CPU主要包括以下几部分:FIFO采集控制信号接口、辨向控制信号接口、译码控制信号接口、Flash控制器和LCD控制接口。
本文实现了一种基于FPGA的新型10位绝对式编码器,应用于直流牵引电动机下刻机自动定位系统中。实验结果表明:在换向器圆周上定位精度达到1mm,较好地满足了工程实际需要。
参考文献
1 董莉莉,熊经武,万秋华. 光电轴角编码器的发展动态[J]. 光学精密工程,2000;8(2):198~202
2 汤天瑾,曹向群,林 斌. 光电轴角编码器发展现状分析及展望[J]. 光学仪器,2005;27(1):90~96
3 郁有文,常 健. 绝对码编码器中一种新型的编码方法[J].仪器仪表学报,2004;25(4):541~544
4 苏海冰,刘恩海. 单圈绝对式编码器的研制[J]. 光学精密工程,2002;10(1):74~77
5 傅丰林. Nios软核心嵌入式处理器设计大赛优秀作品精选[M]. 西安:西安电子科技大学出版社,2005