资源描述:
《基于fpga 的vme 自定义总线接口设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于FPGA的VME自定义总线接口设计 1引言 在光刻机双工件台控制系统中,VME总线使用了三个接口共430根线路接入,通过背板互联的有P1,P2两个接口320根线路接入。实际上VME标准协议并没有完全使用全部线路,而是为用户预留了部分自定义线路,增加了设计的灵活性。由于VME总线主要用于工控机与各板卡的通信,同步控制卡与激光计数卡和光栅译码卡使用总线就会产生严重冲突,影响采用是实时性,因此这里将VME总线中未使用的管脚作为自定义总线管脚,这样避免了增加新的硬件接口,而且在硬件设计上可以和VME总线一起考虑。 自定义同步
2、总线数据传输完全根据主控总线提供的时序进行,地址线包含了对数据发送和接收方的定义。每个总线传输周期中,数据发送端和接收端的身份根据地址寻址关系自动切换,而避免了总线控制权更迭时的握手,及数据传输优先级或传输抢占等问题,总线控制信号来自同一个时钟域,从节点仅响应控制信号,可忽略节点间时钟相位差影响。在每个伺服周期,设计了一个数据传输序列来实现共享数据交互。数据传输序列由若干个总线传输周期构成,每个周期完成32bit的数据共享。通过设定总线地址来设置数据传输序列的传输内容,当所有的设定总线地址被遍历,则当前周期数据传输已经完成,所
3、有被规划传输的数据都被所有的运动控制卡所共享。 2VME自定义总线逻辑协议的实现 VME自定义总线是一条并行运行的总线,该总线 采用数据广播的方式,可以方便各个板块同时接收同一个数据。其由同步控制卡提供5KHz时钟,每200us同步控制卡将数据锁存线拉高,向光栅译码卡发出一个脉冲,此时光栅译码卡和激光干涉仪等设备锁存该时刻的数据,其读数不再发生变化,然后同步控制卡产生一连串的读取信号,将各个光栅尺的数据读出。同时切换总线上的地址,并生成采样保持,读取和地址三个信号置于自定义总线,运动控制卡通过对自身所需的地址的识别在读信
4、号低电平时获得相应位置传感器的信号。 2.1VME自定义总线接口的实现 VME自定义总线在VME的P2口上,时钟频率是5KHz,用于传输激光干涉仪和光栅尺的测量数据。在实际应用中,位置环采样周期为200us,并且有大量的实时伺服数据在运动控制卡与光栅译码卡之间、运动控制卡与运动控制卡之间、运动控制卡与同步总线控制卡之间交换。如果在运动控制中,这些伺服数据使用VME总线进行交换,则会堵塞系统总线,使PoE的P2自定义接口,构造自定义局部总线。并设计专用同步总线控制模块对同步总线进行控制。自定义同步总线接口逻辑同样采用FPGA
5、芯片来实现,使其达到灵活、可靠、集成度高的设计要求。 自定义同步总线的主控制器由运动控制系统中的同步总线控制卡来实现,而运动控制卡中只需实现自定义总线的从接口。从控制器结构如所示,其功能包含以下方面: (1)提供DSP对于双口RAM访问的地址译码,将DSP的标准EMIF接口时序转换成双口RAM访问时序,该功能在EMIF时序匹配模块中完成; (2)完成自定义总线的读写逻辑,当自定义总线的地址有效后,数据方向控制模块将判断当前运动控制卡是数据发送端还是数据接收方,以切换数据总线方向; (3)当某一个特定的自定义总线地址访问
6、出现的时候,总线时序匹配模块将产生中断信号提供给DSP,提供同步触发。 2.2同步控制卡VME自定义总线逻辑功能的实现 光栅译码卡接收来自光栅尺的信号,实现对工件台宏动部分的位置测量,测量数据通过自定义总线传送给同步控制卡。同步控制卡通过内部的定时器,产生运动周期开始信号,读取光栅译码卡的数据,然后将各个运动控制卡所需的信号,按照一定的地址编码,发送到VME64x总线的自定义总线上,由运动控制卡接收。运动控制卡接收到同步控制卡的运动周期开始信号后,依次接收指令位置和光栅尺数据,运动控制卡进行数据存储等其他操作,并等待下个运
7、动周期的开始信号。 对于同步控制卡FPGA中逻辑协议的设计,采用三段式状态机进行设计,第一段描述次态寄存器转到现态寄存器;第二段对状态转移条件进行判断,从而完成状态转移变换;第三段描述在各个状态完成的动作和对状态转移条件进行描述。 在状态S0处检测200us的脉冲,因为同步控制卡每200us向光栅译码卡发出一个脉冲,光栅译码卡接收到该脉冲后就会锁存当前数据,当脉冲到来时则转到S1状态,否则仍然处于S0。在S1状态时等待20ns,即让光栅译码卡把数据锁存完成,接着转到状态S2。在状态S2,将地址发送给光栅译码卡,并且等待30
8、ns,让输出数据稳定,然后转到状态S3。在状态S3,将数据锁存,读操作的次数置零,并且将地址发送给双口RAM,延时10ns等待数据和地址稳定,然后转到状态S4。在S4对双口RAM进行写操作使能,即给写使能引脚置高电平,然后进入状态S5。在S5将读操作次数加1,并判断是12路数