微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于PXI总线的数据传输接口设计与实现方案

基于PXI总线的数据传输接口设计与实现方案

时间:09-10 来源:3721RD 点击:

XI接口提供,主要在PCB(Printed Circuit Board,印刷电路板);布线的时候需要对该时钟线进行蛇形走线处理。Local Bus端的工作时钟由晶振提供,本方案中采用50MHz的晶振。

EEPROM电路的设计中需要注意EEDI和EEDO两个管脚的连接,电路原理图如图2所示。注意在没有挂载Local端的设备同时又没有EEPROM时,EEDI和EEDO需要通过一个1KΩ的电阻拉低。设计中,往往需要加上一个EEPROM用来存储对PCI9054芯片的内部寄存器的设置。这些设置在每次上电时自动进行加载,对PCI9054芯片的内部寄存器进行配置,使得每次上电后,PCI9054能按事先所配置的方式工作。因此,在设计电路完成之后还需要对EEPROM的内容进行设置,并通过PlxMon工具写入。


图2 EEPROM电路设计原理图

在Local端的连线方案设计中,需要注意两点:一是本地时钟的接入,本地时钟作为PCI9054识别Local端是否有设备的依据,若在EEPROM的EEDI和EEDO没有下拉的情况下,一定要接入本地时钟,不然连接上位机后,上位机进入不了系统。二是若需要用到PCI Initiator传输方式,则必须将LBE[3:0]#全部拉低,否则就会造成读写出现上位机死机现象。

3 接口程序设计

由于数据传输接口涉及到数字频谱仪和上位机,其程序设计也包括两个部分:一部分是数字频谱仪端的程序设计,即PCI9054 Local端的程序设计,由于本项目中在PCI9054的Local端挂载的是FPGA芯片,需要在FPGA中进行Local端的接口逻辑程序设计;另一部分是上位机端的程序设计,主要是基于操作系统的驱动程序以及上层应用程序设计。

3.1 FPGA程序设计

FPGA程序的设计主要是对PCI9054的Local端时序逻辑进行设计。由图2可知,在PCI9054内部的Local端存在三种传输方式状态机:PCI Initiator方式、PCI Target方式、PCIDMA方式。因此,在对Local端的控制进行设计时,可以用不同的状态机来匹配PCI9054的内部状态机,达到实现各种方式的数据传输。

本文根据系统的特点,选择使用PCI DMA的传输方式。在FPGA端的程序采用层次化和模块化的设计,分为上下两层结构:下层是链路层,实现PCI DMA方式下,长字(4Bytes)数据流的双向传输链路的建立;上层是链路适配层,实现数字频谱仪的数据按照一定的帧格式封转成帧。PCI DMA方式的设置和启动也在FPGA中完成,程序采用模块化的设计方式,将数据传输模块与控制模块区分。在控制模块中,分成三层:第一层是寄存器读写层,实现对PCI9054内部寄存器的读写操作;第二层是参数获取与PCI DMA方式配置层,实现从PCI9054内部消息寄存器获取数字频谱仪的控制参数以及对PCI DMA方式进行配置与启动控制;第三层是上层控制层,用来解析控制参数以及控制生成数据帧。整个程序结构图如图3所示。


图3 FPGA程序结构图

上述FPGA程序中主要包括了两个状态机的设计,一个PCI DMA数据传输方式的状态机设计,一个是PCI 9054内部寄存器读写操作的状态机设计。它们的状态转移图分别如图4和图5所示。


图4 PCI DMA数据传输状态转移图

图4中,S0为空闲状态;S1若在PCI9054对Local Bus进行写的操作中为数据接收状态,若在PCI9054读Local Bus的操作中为数据准备状态;S2为PCI 9054读Local Bus的操作中的数据发送状态;S3为读写操作的终止状态。图中各状态转移触发信号均为PCI 9054Local Bus端的控制信号。


图5 PCI 9054内部寄存器读写操作的状态转移图

图5中,S0为空闲状态,在读写启动信号en_rwreg=1的情况下进入工作状态;S1为读写周期开始状态,有效Local Bus端的读写周期开始信号;S2为读写周期等待状态,等待PCI9054的LREADY#有效;S3为突发读写方式下的响应状态,突发读写方式下,PCI9054的LREADY#有效后,使能内部逻辑进行相应的响应;S4为读写周期响应状态,在非突发读写方式下或者突发读写的终止周期中的响应状态。

在实现了上述两个状态机模块后,FPGA的程序还需要包括对FFT处理器的输出数据进行数据帧封装,即给每一次FFT处理器根据相应的配置参数进行处理输出的数据加上帧头,帧头中包含了此次传输的FFT数据所覆盖的频段以及数据的长度信息。这样做的好处是上位机不需要额外的同步信息,只需要根据帧头中的频段信息以及长度信息就可以判断当前数据帧所表示的频谱信息。利用PCI9054内部寄存器中的MailBox寄存器组来实现数字频谱仪与上位机之间的参数传递。由于数字频谱仪需要的参数信息比较少,只需要频段选择信息,以及开始和结束数字频谱仪的控制信号,选择MailBox寄存器组中的第七个位宽为32位的寄存器来传递控制信息。

整个FPGA程序的流程示意图如图6所示。


图6 FPGA程序流程示意图

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top