>
首页 » 技术文章 » 基于FPGA的PXI多路高速数据传输系统设计

基于FPGA的PXI多路高速数据传输系统设计

作者:孙黎军 刘源   时间:2006-11-24 23:17  来源:电子设计信息网-www.edires.net
摘要:针对目前自动测试系统中要求测试信号传输距离远、传输速度快、传输信号种类多、系统工作环境恶劣等问题,设计并实现了基于PXI总线的多路高速数据传输卡。采用FPGA实现了自主化的UART和PXI接口模块,与专用接口芯片相比,具有传输速度快、灵活高效的特点,增强了系统的集成度、稳定性和可靠性。

关键词:PXI总线;数据传输;通用异步收发器;FPGA

1引言

随着自动测试技术的不断发展,基于PXI总线的测试系统已成为总线化自动测试系统的一个重要分支。在航空航天和其它测控领域,普遍存在着测试信号传输距离远、传输通道多、传输信号种类多种多样、系统工作环境恶劣等问题。文中主要针对航天测控领域提出上位机和各种测试终端之间的数据传输问题,以12个通道为例设计了多路PXI总线高速数据传输系统,在自主研制的UART和PXI模块的控制下,实现了输入信号和上位机间的远距离高速数据传输。基于FPGA的自主化PXI和UART接口设计将总线模块和用户模块更紧密地结合起来,提高了系统的灵活性和可靠性,并减小了体积,对于组建自定义的总线化测试系统具有重要意义。

2系统的总体设计和功能

自动测试系统由各种测试终端和控制主机组成,并且测试终端和主机通常相隔很远,所以它们之间的数据传输一般采用RS-485差分信号。针对导弹测试系统提出的基于PXI总线测试的具体要求,设计了多路高速数据传输系统,实现了控制主机对测试终端的控制。整个传输系统主要由信号前端预处理和FPGA内部处理模块两部分构成,结构框图如图1所示。

图1RS-485差分信号传输卡的结构框图

前端处理部分主要将输入的RS-485差分测试信号转换为TTL逻辑信号,并通过光电隔离模块以减少恶劣的测试工作环境产生的影响,然后进入FPGA内部进行信号处理。在FPGA内部,主要通过UART处理模块实现信号的格式转换,而后通过PXI总线接口传到上层主机,可以实现主计算机和各种测试终端设备之间的数据传输。信号输出的处理过程和信号输入的过程刚好相反。下面详细介绍基于FPGA的UART和PXI模块的设计与实现过程。

3UART的FPGA实现

传输系统的控制逻辑采用FPGA编程实现,包括PXI总线接口控制模块和UART处理模块两部分,该部分的结构框图如图2所示。由于要支持12路异步串行信号的并行接收和发送,UART的内部处理模块必须含有发送和接收缓冲区。同时该模块增加了串行数据接收和发送控制器,主要用于12路数据传输的协调,选择最优的调度算法,尽可能保证数据的完整性和正确性。

图2UART和PXI的结构

3.1异步串行数据收发模块
通用异步数据收发器UART是一种应用广泛的短距离串行传输接口,整个模块的结构框图如图3所示,其功能主要是将数据进行特定的并P串转换和串P并转换。UART的发送部分是将准备输出的并行数据,按照图4所示的UART格式转换成TXD信号串行输出,此时的时钟信号只需使用相应波特率的本地时钟即可。一帧UART数据包括一个起始位,8个数据位,一个可选的校验位,一个数据停止位。UART的接收器的功能是接收RXD串行信号,并将其转换为并行数据,但串并转换的时钟若同发送器一样进行处理,收发设备间的时钟误差会被累计从而导致误码。这就需要一个远远高于波特率的本地时钟信号对输入信号RXD不断地采样,以不断地让接收器与发送器保持同步,本系统采用的异步串行数据接收模块采样的时钟频率是相应波特率的16倍。

图3 UART结构框图

图4 UART数据的帧格式

波特率发生器实际上就是一个分频比可以设定的分频器。可以根据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子。已算出的波特率分频因子作为分频器的分频数。该分频数可以根据传输波特率的需要通过PXI总线进行设定。波特率发生器产生的时钟,是波特率时钟频率的16倍,目的是为了在接收是进行精确地采样,以提取串行数据。

由于串行数据的发送和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一帧数据的起始位。为了避免毛刺的影响,设计过程中要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑0才可以确定。由于内部采样时钟bclk是接收或发送波特率的16倍,所以需要至少接收到8个连续bclk周期的逻辑0,才认为接收到了起始位;接下来的数据位和校验位将每隔16个bclk周期对接收信号进行一次采样,并且数据位在中点处被采样。在接收完数据位和校验位后,该模块指示等待16个时钟周期用以接收结束位,并不对信号进行采样。图5是UART接收器的状态机。

图5UART接收模块状态转换图

该状态机共包含5个状态:r_Start(等待起始位)、r_Centre(求中点)、r_Wait(等待采样)、r_Sample(采样)、r_Stop(停止位接收)。此外,为了避免多个通道之间数据的丢失,每个串行数据接收模块还带有一个接收数据缓冲(8Byte),作为整个传输卡的第一级缓冲。每当该模块检测到起始位,便进行数据接收,然后把接收到的数据存入第一级缓冲区中。

相对接收模块,发送模块要简单得多。只需要每隔16个bclk周期输出1位数据即可,输出的顺序遵循1位起始位,8位数据位,1位停止位。该传输卡的设计中模块没有校验位,停止位是固定的1位格式。状态转换如图6所示,共包括5个状态:x_Idle(空闲态)、x_Start(起始位)、x_Wait(移位等待)、x_Shift(移位)、x_Stop(停止位)。每当发送一个字节数据时,首先产生16个bclk的逻辑0(起始位),然后依次由低到高发送该字节的位信息,最后产生16个bclk的逻辑1(结束位)。

图6UART发送模块的状态转换

3.2异步串行数据接收控制器
为保证10路UART接收模块接收到的数据完整地被传送到PXI总线,设计了串行数据接收控制器,用来控制10路UART接收器接收数据,并且把各个通道接收到的数据存入二级接收缓冲区(1KByte),状态转换如图7所示。

图7串行数据接收控制器的状态转换

该控制器通过设定通道号chan_num进行译码,读取相应通道的接收标识rxd_status。若rxd_status=1,控制器则从相应通道的第一级接收缓冲区中读取数据,写入第二级缓冲区中。为防止第一级缓冲区溢出,控制器每次从相关通道读取的数据的个数最多为8。

3.3异步串行数据发送控制器
由于PXI的总线时钟(33MHz)要远远高于异步串行数据收发模块的时钟频率,所以加入异步串行数据发送控制器和发送数据缓冲区(1KByte),用以保证PXI总线写入的数据被正确地发送到控制终端。每当检测到发送缓冲区中有新的数据,控制器通过提取数据所对应的通道,并查询该通道的状态txd_sta2tus。若检测到该通道空闲,则发送该数据。发送控制器的状态转换如图8所示,共包括3个状态:x_Idle(空闲态)、x_Read(从缓冲区读数据)、x_Write(写数据)。

图8串行数据发送控制器的状态转换

4 PXI接口控制模块设计

目前PXI总线接口设计方法有两种:专用接口芯片和FPGA结合的设计方法、单个或多个FPGA的设计方法。前者设计简单,开发时间短,但用户可能只用到部分PCI接口功能,造成了逻辑资源的浪费,缺少灵活性,同时有可能会需要增加附加的设计元件,导致成本增加、可靠性降低;后者则充分利用FPGA的可编程特性,根据特定的功能进行最优设计,节省了逻辑资源并保证了系统集成度,另外用户逻辑和接口部分可以做在同一个器件内,PCI接口和用户逻辑会结合得更紧密。该设计采用FPGA开发PCI接口,并结合PXI接口的特定电器要求来完成自主化PXI接口控制器开发。PCI接口的实现包括配置空间和数据接口两方面。整个PXI目标接口内部结构框图见图9。

图9PXI目标接口内部结构框图

目标状态机模块的主要功能是根据PCI规范2.2控制总线交易。当PCI主设备准备进行一个读P写周期时,它先使FRAME信号有效,驱动地址到AD总线上,同时在CPBE总线上声明交易类型。目标接口控制器在采样到FRAME信号有效的同时锁存地址和命令,并将此地址与它自己的地址范围进行比较。若在其地址范围内或IDSEL信号有效,则有效DEVSEL,表明它是交易目标并准备交换数据,同时驱动有效地址到A[17..0]总线上,目标接口控制器解码命令类型并且使RPW信号高(读周期)或低(写周期)。主设备有效IRDY信号用以表明它已准备好进行数据交易。然后当采样到终端有效了READY信号,则PCI接口控制器有效TRDY信号,以表明AD总线上已存在了有效数据(读操作)或准备接收AD总线上的数据(写操作)。如果在交易中主设备无效了IRDY信号或目标没有准备好,则状态机进入等待状态并且暂停交易直到它检测到IRDY有效或目标已准备好。当控制器处于数据交换状态中时,一旦目标接口控制器检测到主设备无效了FRAME或目标有效了T_ABORT信号,则在下一时钟周期停止数据交易,同时在进入空闲状态前无效TRDY和DEVSEL信号。

支持状态机的逻辑单元和地址解码模块的主要功能是根据PCI协议为状态机产生输入信号。由TIMER、COMP_H两部分组成。TIMER模块用来为状态机产生定时信号,以限制目标设备的延迟时间;COMP_H模块用来产生range_start信号,该信号可以区分两种可能的对基地址寄存器的配置写交易。地址解码模块将PCI总线上的高8位地址与配置基地址比较,若二者相等则通知状态机当前的地址在设备的地址范围内。然后状态机通知目标设备准备交易同时有效DEVSEL信号。

逻辑配置单元分实现了所有的配置寄存器,那些只读的配置寄存器将在IPO控制单元中通过硬件连线到相应的值,因而不占用宏单元。通过配置寄存器,配置软件可了解目标设备的存在、功能及配置要求。IPO控制单元实现了命令、地址位的解码,正确的数据也将在PCI数据P地址总线上被多路复用。另外,配置空间中的只读寄存器也将在这部分被强制到相应的位。PCI协议规定了在交易期间对地址P数据总线和命令P字节使能总线进行奇偶校验。读交易期间,目标设备被要求驱动PAR信号线;写交易期间,目标将计算AD[31..0]和CBE[3..0]上的奇偶性,并与PAR信号比较。

5结论

目前,PXI总线测试系统以其紧凑的机械结构、灵活的模块化配置、较低的投资成本和较高的数据传输性能在测试领域中得到越来越多的应用。基于此,本文针对导弹测试系统的具体需求设计了基于自主化的PXI总线模块和UART模块的多路高速数据传输系统,并已应用到实际测试系统当中,单路传输的最高波特率可达2Mbps,且在调整外部采样时钟的情况下传输速率可以进一步提高,而普通PC机串口的数据传输速率至多只能到115.2kbps。而且当测试通道增加时,只需要修改FPGA的内部逻辑就可以满足系统传输的要求,灵活性和兼容性更强。因此,本设计对于满足目前自动测试系统传输速度越来越高、测试参数通道越来越多的要求具有重要意义。

相关推荐

没有退路的FPGA与晶圆代工业者

FPGA  晶圆代工  2014-01-03

采用FPGA的可编程电阻的设计结构分析

FPGA  电阻  2013-09-24

国内外电子测量仪器行业差距市场分析

测量仪器  PXI  2013-08-12

从FPGA的制程竞赛看英特尔与Fabless的后续变化

FPGA  Fabless  2013-07-16

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

14纳米FPGA展现突破性优势

14纳米  FPGA  2013-06-20
在线研讨会
焦点