基于FPGA GTP光纤传输的贾卡梳控制器设计
2018-06-02郭宝英
郭宝英
摘要:随着拉舍尔压电式贾卡经编机往多梳节,大花型,多针床等方向的不断发展,以CAN总线为代表的传统工业现场总线满足不了经编机实时花型数据传输要求,有鉴于此,该文设计了一种基于FPGA的GTP光纤数据传输的压电贾卡梳控制系统。该控制系统收发双端主控芯片采用Xilinx Virtex-5系列的XC5VLX50T18的高速GTP接口实现了高速数据传输,在经编机运转时,根据主轴触发信号,将相应位置的花型信息利用光纤收发模块输送至压电贾卡梳驱动器。实验表明,该FPGA贾卡控制器传输速率可工作在触发频率6K的速率上并使当前RD6机型的转速由850rpm提高到3000rpm左右。因此该控制系统具有良好的应用前景。
关键词:压电贾卡梳驱动器;光纤通信; FPGA的GTP接口
中图分类号:TP212 文献标识码:A 文章编号:1009-3044(2018)10-0012-04
Abstract: With the development of Raschel piezoelectric Jacquard warp knitting machine toward to multi-section, large flower pattern, multi-needle bed and other directions, The CAN bus as the representative of the traditional industrial field bus can not meet the warp knitting machine real-time pattern data transmission requirements, In this paper, we design a piezoelectric jacquard control system based on FPGA GTP fiber data transmission in which Xilinx Virtex-5 Series XC5VLX50T18 GTP was adopted as dual-ended master chip to achieve a high transmission speed, When warp knitting machine start working, the spindle signal will trigger the corresponding position pattern data to be delivered using optical fiber transceiver module to the piezoelectric jacquard driver. The Experiments show that the FPGA Jacquard controller can work under the 6K trigger frequency and make RD6 model speed increased from 850rpm to 3000rpm. Therefore, the control system has good application prospects.
Key words: Piezoelectric jacar comb drive; Optical Fiber Communication; FPGA GTP interface
目前随着经编机新材料和新机械零件设计应用,使得贾卡经编机向高速度、细机号的方向发展[1],为了适应主轴速度与电子横移速度的提高,贾卡控制数据的实时传输速率必须与机械主轴速度配合相应提高,以卡尔迈耶公司最新推出的特里科HKS2-3系列双针床拉舍尔经编机为例,其电子横移电机3000r/min,A,B针床具有120把贾卡梳,共3840导纱针,电子横移每运转周期4个贾卡送数触发状态计算的话,平均每5毫秒贾卡必须送出480字节工艺数据,以目前贾卡控制器的单片机和RS485总线速度(最高波特率115200)无法达到要求,另外随着工艺编辑软件发展,工艺花型数据文件的容量有时会达到几十兆字节的话,若按照CAN 总线1Mb/S的速度也需要上传几分钟,有鉴于目前整机速度的匹配,本文采用Xilinx Virtex-5系列带有GTP模块的FPGA(Field-Programmable Gate Array)取代目前贾卡控制器的AVR ATmega128[2]或C8051F系列等主流單片机。并在verilog语言编程实现了串口命令接收解析,文件读取及光纤传输,主轴电平跳变检测等功能。
1 硬件设计
1.1 系统总体结构
图1所示为系统总体结构框。
本系统以有限状态机的形式与上位机串口和经编机主轴触发信号进行交互,系统最初初始化为待命状态,在接收到上位机“启动”串口命令后则进入贾卡启动状态,因为双针床贾卡机每个横列有4个主轴触发信号控制贾卡针摆动,这4个触发信号分别由相距90度的4个行程开关触发并经过光耦输入到FPGA的两个引脚,所以系统进入贾卡启动状态后,通过检测两个引脚的电平跳变来区分主轴触发状态序号并在FPGA的RAM区读取相应的贾卡花型数据,并送到自带的GTP收发器,经过安捷伦多模光纤收发模块后转换为光信号通过高速的光纤通信线路传送到接收端的安捷伦多模光纤收发模块完成光电转换,此横列的花型信息经过接收端FPGA的GTP接口接收后则通过中断触发机制调用接收端FPGA的移位寄存器将数据串行高速移出给贾卡驱动电路,由贾卡驱动电路驱动贾卡针按照移出数据进行摆动。从而完成工艺花型数据的传送。
1.2 硬件各部分设计
1.2.1 FPGA控制模块
本经编机贾卡控制系统采用美国Xilinx公司的XC5VLX50T18[3] FPGA作为主控芯片进行设计,主控芯片主要工作是对整个电路的控制以及提供高速GTP接口实现了数据帧传输协议完成 工艺花型数据和控制指令至高速串行数据的转换,然后经多模光纤实现至贾卡驱动电路的传输。XC5VLX50T包含3600片ARRAY(行*列)、7200个Slices、48个DSP48E切片和480KB分布式RAM以及2160KB的块RAM,足以存放大型的花型文件,另外,XC5VLX50T总共有12通道RocketIO GTP收发器,运行速率可达3.75Gb/s。本设计中发送端GTP 收发器主要将工艺花型数据或者控制指令转换为高速串行数据,输出到光纤收发模块。接收端GTP 收发器则将接收到数据串行高速移出给贾卡驱动电路。以此满足技术指标中的贾卡驱动传输速率的要求。
1.2.2 光收发模块
光收发模块选用安捷伦多模光纤收发模块HFBR-5710LP,传输距离550m,工作波长为850nm。工作电压3.3v,可以与FPGA的GTP模块的CML驱动器直接对接。传输速率1.25Gbps,满足当前设计要求。
1.2.3 串口通信模块
虽然系统的数据传输是由高速光纤完成,但是系统的工作状态之间的切换以及花型数据接收仍然由上位机的发过来命令控制,所以本系统在FPGA硬件底层实现了一个串口接收发送模块[4]以完成与上位机的交互。该模块具体由电平检测模块,波特率定时功能模块,接收控制模块组成。各模块通过信号线脉冲触发完成依次轮流工作的异步时序,详细如图2:
其中电平检测模块用以检测串口线起始位电平下降沿,然后产生一个高脉冲经 H2L_Sig 给接收控制模块以表示接收工作开始,并拉高RX_En_Sig使接收模块工作,接收控制模块拉高 Count_Sig,使波特率定时模块经 BPS_CLK 对 接收控制模块产生定时,接收模块根据定时半个波特位的延迟时刻采集来自RX_Pin_In的数据,当完成一帧数据接收的时候,就会产生一个高脉冲给 RX_Done_Sig以告知顶层状态机进行数据帧解析。
1.2.4 贾卡驱动电路
贾卡驱动电路[2]如图3所示:根据贾卡导纱针的工作原理 , 驱动电路要根据工艺数据给压电陶瓷加正或负70 直流电压 贾卡针完成不同方向摆动。具体驱动流程为贾卡摆动控制信号从移位寄存器74HC595的同步数据输出端同步并行移出到DIN引脚 ,之后分成两路信号,一路输入到由QA1 和 QA 3 组成的正电源开关电路 ,另外一路经过 74HC541 缓冲输入到由QA2 和QA4 组成的负电源开关电路,这两组开关电路由 DIN 统一控制。当 DIN 为高电平时,QA1 和 QA 3导通,QA2 和QA4截止,正70V电压输出驱动电路输出端(VOUT) ; 当 DIN 为低是QA1 和 QA 3截止,QA2 和QA4导通,负70V电压输出到驱动电路输出端(VOUT) 。由于贾卡驱动电路驱动电压70V 及驱动电流(几十毫安左右) , 本驱动电路选择MJ11016(NPN)和 MJ11015(PNP)型三极管(耐压140V、额定功率250W),经验算,各三极管在此电路中能满足最大驱动电压的要求。
1.3软件部分设计
本系统用有限状态机的方式实现对与上位机人机交互,花型文件接收,保存,读取,发送与传输等功能,在Verilog HDL的编程下,通过串口总线接收上位机发送的数据,并按顺序存储在FPGA的RAM区。在启动工作状态下,主轴触发信号经主轴编码器送给PLC,再经PLC转为高低电平信号经光耦转换为TTL电平输到FPGA进行判断,FPGA在TTL电平信号控制下,按次序从RAM区读取相应主轴信号横列的花型数据,经自带的GTP收发器转换成高速串行数据的,送给光纤接收模块,完成电光转换,而光接收端对数据的处理过程与发送端大致相反,接收到固定字节数的数据后启动串行移位寄存器将数据移出,并在数据移位结束后拉高所有74HC595的锁存输出使能,同步输出控制信号给贾卡驱动电路。
1.3.1 串口通信命令解析状态机的设计
串口通信任务是接收上位机发送的数据和命令并进行解析完成相应功能。本模块在前面所述得串口收发模块基础上利用状态机来实现命令解析,其核心在于区分所接收数据是工艺数据还是控制指令。状态机的设计包括以下状态:检测帧头、数据接收并检测帧尾、解析命令三个主状态。在解析命令状态中又根据不同命令进入不同分支状态,整个命令解析状态图如图4所示。
上电后状态机处于帧头检测状态,如果检测到帧头,则进入接收数据与保存数据状态并自动切换至检测帧尾状态,否则,状态机仍然处于检测帧头。在接收数据并统计字节数后如果检测到帧尾,则进入解析字节数N状态,如果N超过一个字节数,说明此帧为工艺数据,则要将接收到数据存储在FPGA的RAM区。如果只有一个字节数,说明此帧为控制指令帧,将解析控制指令,识别出相应的控制命令后则修改贾卡控制状态机的值。最后回到检测帧头状态,等待下一次命令,如此循环。
因此根据上述分析,可在verilog定义如下状态机接口:
module command_analysis_fsm(clk,rst_n,a,z);
input clk; input rst_n; input a; output reg z;
reg [5:0] current_state; reg [5:0] next_state;
parameter S0 = 6'b00_0001;
…………
parameter S2 = 6'b00_0100;
其中clk为上述串口接收控制模块生成的RX_Done_Sig信号,rst_n为复位信号,a为串口所收到的当前字节数据,current_state为当前状态,next_state为下一状态,S0~S2为上述3个主状态值。
这样当采用三段式状态机模板编程时,则第二个描述状态转移条件判断组合逻辑进程编程如下:
always@(*)
begin
case(current_state)
S0: next_state = (a==2)?S1:S0;
S1: next_state = (a==3)?S2:S1;
S2: next_state = S0;
default: next_state = S0;
endcase
end
其中S0為检测帧头状态,S1为接收并检测帧尾状态,S2为命令解析状态,这样S2状态完成动作输出后在下一个时钟(串口收到下一个字节时)无条件转移到S0状态重新进行帧头检测。上述中a的取值代表帧头02H,帧尾为03H,这样当数据帧中间出现02H,或者03H的则必须按照转义符进行转义处理,分别转为1BH,E7H以及1BH,E8H,而转义符1BH本身则必须转为1BH,00H,这样处理后数据体中就不会出现帧头02H和帧尾03H,有利于数据帧的判断。
在接收端的verilog 数据解析中可以采用if语句判断数据体中是否出现转义字符1BH,并根据其后的值恢复转义前的数值,这样就完成数据体的复原。
1.3.2 贾卡控制状态机的设计
上述部分解决串口数据接收以及串口命令解析的问题,本部分主要解决命令解析后,贾卡启动、停止以及横列数据发送等各状态转换和时序协调以及同步的问题,具体状态转换关系如图5所示。
贾卡控制状态机的设计包括6个状态:贾卡待命状态、启动贾卡状态、发送横列第一部分数据状态、发送横列第二部分数据状态、发送横列第三部分数据状态、发送横列第四部分数据状态。默认情况下,状态机处于贾卡待命状态。如果有接收到串口命令启动的信号,则进入到启动贾卡状态。否则,状态机一直处于待命状态。在进入贾卡启动状态之后,任何主轴行程开关位置的跳变均会触发横列发送四个步骤状态的转移。这里需要说明的是,如果状态机处于发送横列第一部分数据状态,则只能等待接收到主轴转到“01”行程开关信号,即如果接收到主轴转到除“01”以外的行程开关信号,则丢弃,继续等待直到接收到主轴转到“01”行程开关信号,才进入下个状态。其他发送横列部分数据状态也类似。并以此循环。在初始贾卡待命状态以外的任何状态只要接收到串口停止命令,则马上进入待命状态。
在verilog实现中,可以将读取RAM数组以及发送至GTP FIFO缓冲区单独以循环体封装在一个进程里,进程的触发条件由上述状态机的“发送横列X部分数据”状态转移时输出单脉冲信号进行触发RAM的读取发送。
1.3.3 FPGA GTP收发器的配置及实现
为了使用FIFO接口访问GTP模块,本文采用XILINX 公司提供的软Aurora ip核[5][6]进行配置,该核可由ISE中的 CORE GENERATOR 生成并进入配置界面。在配置过程中可将速率配置为2.5Gb/s,使用8B/10B 编码[7],参考时钟选125Mb/s,数据宽度设为16位,发送和接收方向均允许缓冲以使用FIFO,这样花型文件RAM区可以与GTP模块之间的完成数据缓冲与速率匹配, 发送和接收的时钟(TXUSECLK、RXUSECLK)设为和REFCLK 同源,使能发送预加重,提高信噪比,频偏最大值设为100ppm。使能接收端均衡补偿信道损耗,RX设为雙字符定位,定位字符为K28.5-与K28.5+、允许时钟修正等。因为本系统只是单向通信,贾卡驱动电路并不回馈数据是否正确,所以设置对数据进行CRC校验, 加入(COMMA)检测,提高通信可靠性,配置完成后,当进入发送横列数据状态时,则由状态机向GTP模块的FIFO缓冲区接口的wrreq发送写入请求[8],并启动写入时钟至FIFO的clock,将RAM的区数据以数组元素的形式循环写入data端口。GTP发送控制模块对FIFO进行监控,当 FIFO的数据超过20个16bit,将自动启动数据帧发送进程。接收端GTP的FIFO预先设置为预期的字节数,当收到预期贾卡针数目匹配的控制字节数时由FIFO的full信号触发外部的数据读取及595串行移位。
1.4实验结果及总结
本文设计系统实验原型实物如图6所示,以驱动8块贾卡梳为接收端,主轴信号直接由方波发生器二个引脚模拟主轴编码器输入,在方波发生器低位引脚频率调到6K,高位为3K时经过实测,系统移位寄存器输出波形与所设置实验花型吻合,若以这样方波频率推算,理论上其主轴速度可到3000转,相比当前国产产品润源经编:RD6-EL的850转速,有较大提高。所以本文提出的基于FPGA GTP传输的贾卡控制器有着广阔的市场前景。
参考文献:
[1] 张琦, 蒋高明,夏风林.经编机数控系统关键技术及其发展[J].纺织导报,2013(4):77-80.
[2] 李开霞,叶晓东,花加丽. 基于ATmega128单片机的压电式贾卡控制系统设计[J].现代电子技术, 2009(9): 211-214 .
[3]曾金. 高速实时信号处理系统的FPGA软件设计与实现[D]. 北京工业大学, 2009.
[4] 贾亮, 冀源. 基于FPGA的串口通信控制器设计[J]. 微型机与应用, 2016, 35(22):33-35.
[5]刘东华.Xilinx 系列 FPGA 芯片 IP 核详解[M].北京:电子工业出版社,2013.
[6]鲁睿其, 曾健平, 赵豫斌. 基于Aurora协议光纤实时信号传输性能测试[J]. 核技术, 2015, 38(3):000047-51.
[7] 嵇凌, 秦志辉, 龚华达. FPGA GTP技术在光传输设备背板总线的应用[J]. 光通信技术, 2012, 36(2):57-59.
[8]黄凡. 一种基于FPGA的异步FIFO设计方法[J]. 微处理机, 2017, 38(1):23-26.