美章网 资料文库 CPCI总线接口设计论文范文

CPCI总线接口设计论文范文

本站小编为你精心准备了CPCI总线接口设计论文参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

CPCI总线接口设计论文

1地面测试台整体结构

地面测试台的测试对象为某采编存储器。测试台的主要功能包括向采编存储器提供模拟信号供其采集,向采编存储器下发控制命令,接收采编存储器下发的高速LVDS实时数据并进行后续处理。测试台的整体结构如图1所示。cpci总线上挂有3个CPCI板卡,分别为CPU卡、接口卡、信源卡。其中,CPU卡为处理系统,接口卡和信源卡为功能卡。本文将以接口卡为主要依据来介绍如何以FPGA逻辑控制来实现CPCI局部总线接口和高速LVDS接口。

2LVDS高速数据接口实现

2.1LVDS接口硬件电路设计由于趋肤效应和介质损耗,高速信号在传输过程中会衰减。因此,当传输距离较长时,往往要使用电缆驱动器和均衡器来保证高速数据传输的准确性。电缆驱动器将信号以最大功率耦合到电缆上[4],延长信号的传输距离,电缆均衡器可以对传输的信号进行高频补偿,以至达到标准逻辑电位。本设计中,LVDS串行器/解串器分别选用TI公司的SN65LV1203和SN65LV1224,信号驱动器/电缆均衡器分别选用NS公司的CLC001和CLC014。LVDS接口电路结构如图2所示,采编存储器的FPGA控制LVDS串行器将10bit并行数据转换成差分串行数据,再通过电缆驱动器将信号耦合到电缆上。地面测试台的电缆均衡器对接收到的信号进行高频补偿之后传送给解串器,解串器根据参考时钟将差分串行数据转换成10bit的并行数据,由FP-GA进行后续的处理。

2.2FPGA逻辑控制LVDS数据接收由于CPCI接口传输的时钟和LVDS数据接收电路的时钟不匹配,为了保证数据传输的可靠性,在编写VHDL语言程序时FPGA内部调用一个异步时钟控制的缓存FIFO[8]IP核来对接收到的LVDS高速数据进行缓存,如图2所示。上位机通过配置PCI9054的传输计数寄存器,将一次DMA传输的数据量设置为2kbyte。写FIFO的时钟为18.432MHz,读FIFO的时钟为36.864MHz,当FIFO内数据量达到2kbyte时,FPGA立即通知上位机启动一次DMA传输。经计算,从FIFO内读走2kbyte数据大约耗时54μs,在这个时间段内写入FIFO的数据量大约为1kbyte,所以,当DMA传输结束时,FIFO内数据不足2kbyte,上位机直到FIFO内数据量再次达到2kbyte时才会启动下一次的DMA传输。为了避免PCI9054不能立即执行DMA传输而导致FIFO数据溢出,FIFO容量要大于2kbyte。本设计中选择容量为4kbyte的FIFO,经验证,不会出现FIFO溢出现象。

3CPCI局部总线接口实现

实现CPCI接口协议一般有两种方法。其中一种方法为:利用FPGA实现接口逻辑。这种方法虽然可以充分利用FPGA的资源,减小成本,但PCI逻辑十分复杂,可靠性不能得到保证,且开发周期长。另外一种方法为:采用专用的PCI接口控制芯片。专用接口芯片功能强大,性能稳定,设计方便,很大程度上减少了设计者的工作量,缩短了开发周期。所以,本设计中选择使用PCI9054接口控制芯片与FPGA配合工作的方式来实现CPCI局部总线接口通信。

3.1EEPROM的配置在Windows环境下,为有效管理多块CPCI板卡资源,实现多卡协同工作。通过设置EEPROM配置选项中的ClassCode/REV值,解决使用同一驱动情况下,多块CPCI板卡识别问题。地面测试台含信源卡和接口卡两块CPCI功能板卡,图3为接口卡的EEPROM配置文件截图,各板卡需要设置不同的ClassCode/Rev(图中红色选框部分),上位机程序通过识别不同的ClassCode/Rev达到控制不同板卡的目的。ClassCode/Rev为一个32bit数据,规定高8bit作为不同板卡区分标志,低24bit保留。其中D31~D28功能标识,区分是否为信源卡、接口卡等功能卡。D27~D24数量标识,区分当前功能卡的数量,具体约束如下表1所示。

3.2CPCI局部总线实现方法

3.2.1PCI9054工作模式选择PCI9054总线控制芯片有3种工作模式,即M模式、C模式、J模式。其中,C模式最为简单,类似于单片机的工作方式,它的地址线和数据线分开使用,可以很方便地控制本地时序。所以本设计中PCI9054工作于C模式,由FPGA逻辑控制本地时序来完成CPCI局部总线与功能板卡之间的通信。

3.2.2CPCI总线访问本地总线PCI9054的访问方式选择DMA方式。PCI9054作为主控设备,通过内部的DMA控制器来实现局部总线上数据与CPCI总线上数据的传输。在DMA访问方式下,一个总线周期的时序如图4所示。当CPCI总线访问本地总线时,PCI9054内部的DMA控制器发出LHOLD信号来申请控制局部总线,当其收到响应信号LHOLDA后,才获得局部总线的控制权。当ADS#信号有效时,局部总线上的地址信号LA为有效地址;当BLAST#信号有效时,代表一次单周期访问开启;READY#为本地总线的状态反馈信号,只有当其有效时,表示本地总线已经准备好,才可以进行访问;当LW/R#为高时,代表单周期访问为写操作,当LW/R#为低时,代表单周期访问为读操作。在本设计中,FPGA通过识别地址信号LA来判断具体的操作类型。当上位机向接口卡下发控制命令时,为CPCI总线到本地总线的数据传输,具体的工作流程为:当上位机下发命令时,启动一次单周期写访问,同时下发特定的写地址LA1,FPGA反馈READY#信号,并判断到LW/R#信号为高,即得知上位机要下发数据,便从该特定地址LA1将命令代码读出,进行解码之后将命令下发给采编存储器。当接口卡向上位机传输LVDS高速数据时,为本地总线到CPCI总线的数据传输,具体的工作流程为:当图1中所示的LVDS数据缓存FIFO内数据量达到2kbyte,启动一次DMA传输,即一次DMA传输将2kbyte的数据上传给上位机进行实时显示与处理。上位机通过下发特定地址信号LA2来向FPGA查询FIFO内数据量是否达到2kbyte,一旦其得到缓存FIFO内数据量满足要求的信息,立即启动一次单周期读访问,并向FPGA下发数据传输地址LA3,FPGA反馈READY#信号,并判断到LW/R#信号为低,便将LVDS数据通过地址LA3上传给上位机。

4设计验证

将信源卡和接口卡分别插到背板上的2号和3号物理槽中,1号物理槽为系统槽,打开计算机系统,安装驱动之后,两块功能板卡均能够被识别。分别对两块板卡进行操作,均能实现各自的功能且互不影响,说明EEPROM的配置正确可行。以接口卡为例,用Chipscope来监测CPCI总线对本地进行读、写操作的实际过程,图5和图6分别为单周期读访问时序截图和单周期写访问截图。如图5所示,当FIFO内数据量达到2kbyte时,信号f_fifo_hf变高,此时启动一次单周期读访问,LW/R#为低,通过地址0008h将数据87h上传给上位机。实际时序与第3节介绍的本地总线向CPCI总线传输数据的理论时序一致,对接收到的数据文件进行分析,数据结构完整,数据包计数连续,没有丢数现象,验证了本设计中本地总线向CPCI总线传输数据的正确性。如图6所示,上位机向FPGA下发控制信号,此时启动一次单周期写访问,LW/R#为高,FPGA通过地址0004h获得命令代码67h。实际通信时序与第3节介绍的CPCI总线向本地总线传输数据的理论时序一致,且命令下发正确,验证了本设计中CPCI总线向本地总线传输数据的正确性。

5总结

本设计使用PCI接口控制芯片简化了CPCI接口的实现过程,由FPGA控制本地时序完成功能板卡与计算机系统之间的通信。经验证,该设计可以准确完成高速数据的接收、上传与处理。并且,CPCI总线体系结构增强了测试台的耐用性、抗震性和散热性,具有很高的可靠性。

作者:任勇峰彭巧君刘占峰单位:中北大学仪器科学与动态测试教育部重点实验室中北大学电子测试技术国家重点实验室

精品推荐