1、引言
三坐标测量机做为一种高精度测量仪器,在机械工业、汽车工业、航空航天等领域具有广泛的应用。本套通讯系统采用FPGA为主要通讯芯片,使用FPGA实现各通讯模块对数据的收发,配合单片机对数据进行编码、解码、重封装,实现了计算机和控制系统的通讯;由于FPGA程序的并行执行结构和高的执行速度,因此大大保证了数据传输的准确性和快速性。
2、通讯模块的实现
2.1 计算机与桥接卡的通讯
本系统采用RS232总线实现计算机和桥接卡之间的通讯。计算机发送的数据,经过RS232总线传输到桥接卡,通过MAX3232芯片实现电平转换。FPGA检测到起始位后接收数据,接收完数据后,将其存于UART接收FIFO[2]中;待接收到结束位时,FPGA产生中断信号,触发单片机读取接收FIFO中的数据并对其解码,判断数据中的目的地址,根据目的地址决定是否处理或发送到控制板;桥接卡与计算机通讯时,首先将数据进行编码,然后将数据置于发送FIFO中,启动发送模块,发送模块自动将数据发出,数据经MAX3232发送到总线上等待计算机的接收。
(1)串口发送模块的FPGA实现
串口发送模块从发送FIFO读出数据后,根据串口通信协议,数据在向外发送时,低位在前,高位在后,所以将八位的数据重新进行编辑:前加停止位‘1’,后加起始位‘0’,变为十位数据包,将十位数据按照设置波特率逐位发送即可,使用Modelsim进行仿真,仿真图见图1(data位要发送的数据,tx为发送线)
(2)串口接收模块的FPGA实现
总线空闲时当检测到由高到低变化时,表明数据开始传输,接收模块准备接收数据,接收数据时低位在前,高位在后,当接收到起始位后,每隔一个数据传输周期接收一次数据,待接收到八位数据后将数据置于接收FIFO中,使用Modelsim进行对发送模块仿真见图2(rxBuf为接收到的数据,低位在前,高位在后):
2.2 桥接卡与控制卡及控制卡之间的通讯
由于桥接卡需要和多个控制卡进行信息的交换,且不同的控制卡之间也需要数据传输,因此在进行总线选择时,必须保证各个器件都具有主控的权利,可以占用总线,本系统中桥接卡和控制卡及控制卡之间采用I2C[3][4]总线进行通讯。
I2C总线是一种两线式串行双向总线,是多主控的总线,由时钟线和数据线构成,数据传输时,时钟信号由主控器件产生。当SCL为高电平时,SDA出现由高电平到低电平变化,表明开始传送数据;当SCL为高电平时,SDA出现低电平到高电平变化,表示数据传送结束;接收方收到数据后,需向发送方发出应答信号;为了防止总线上数据冲突,总线有仲裁机制,当总线同时被多个发送方占用时,首先出现高电平的发送方被仲裁掉,因此,最长低电平周期的器件占用总线,成为主控器件;被仲裁掉的器件,放弃总线,改为接收。
使用FPGA实现I2C总线时,需要建立三个模块:总线监视模块,总线发送模块,总线接收模块。