SOPC实现的PCI总线高速数据传输系统

pci (peripheral component interconnect)总线,即外围部件互连总线,是目前应用最广泛的一种高速同步总线,在32位总线宽度33mz时钟下,其理论最大传输速率可达132mbyte/s (64位总线宽度66mhz时可达到528mbyte/s),因此成为上述侦察接收系统中高传输速率、低成本pc接口的首选实现方式。目前,实现pci总线接口的常用方法有两种:一是采用专门的pci桥芯片实现pci接口,如plx公司的pci905x系列芯片等;二是使用可编程芯片实现pci接口。
本文提出一种采用可编程片上系统(system-on-programmable-chip,sopc)实现侦察接收机pci总线高速数据传输系统的设计方案,并采用直接存储器访问(direct memory access,dma)传输方式来提高数据传输速率。
1 pci总线接口方案设计
在pci总线接口标准中,根据数据传输的发起者所在位置,pci接口有从模式和主模式两种工作模式。根据工作方式的不同,dma传输方式可分为连续式dma (continuous dma)和集散式dma(scatter-gather dma)两种。
1.1 pci模式的选择
pci总线标准中,由pc发起数据传输、读/写pci接口卡的模式称为从模式。这种模式只要求pci接口设备具备pci从设备的功能,接口逻辑相对较简单;主模式是由pci接口卡主动读写pc内存,pci接口的逻辑相对复杂。频繁地要求pc发起数据传输会占用pc的资源,为了减少pc的负担,使其有更多的资源用于后续的数字信号处理,在侦察接收系统中,pci接口卡的传输模式选择主传输模式。
1.2 dma传输方式的选择
dma是提高数据传输速率和微处理器使用效率的一种数据传输机制。连续式dma用于实现连续数据块的传输,即在一次dma传输中设备端读/写物理地址连续变化(读存储器空间)或不变化(读io口),pc端的物理存储地址连续变化。集散式dma用于实现不连续数据块的传输,各传输数据块的起始读/写地址和长度都可以不同,它采用一个寄存器链表存储每个数据块的读/写起始地址和长度,dma传输过程中自动从该链表加载地址和长度信息。集散模式dma应用灵活,其缺点是在传输完一个数据块之后要重新配置dma控制寄存器的值,速度比连续模式稍慢。在侦察接收系统中,dma传输模式选择连续式传输模式。
1.3 pci总线dma传输方案设计
pci接口总体结构框图如图1所示。数据输入到乒乓ram缓冲区,乒乓切换信号通知cpu数据准备好,cpu通过pci桥的控制状态寄存器判断pc端是否备妥,如pc备妥则配置并启动dma控制器,dma控制器读口从乒乓ram中读数据,写口将数据写至pci总线访问端,pci总线接口单元申请并获得pci总线访问权,将数据送上pci总线。
2 pci总线接口的sopc实现
sopc是ahera公司提出的一种灵活、高效的片上系统解决方案,它将处理器、存储器、i/o口以及一些通用的功能模块集成在一个pld器件上,构成一个可编程的片上系统。利用sopc开发侦察接收机中的pci总线接口,具有开发周期短、系统稳定性好的优点。
2.1 系统实现
pci总线接口的sopc内部结构如图2所示。实现pci总线dma传输系统使用到4类功能模块,分别是实现pci桥逻辑的pci_comiler组件(pci_c ompiler)、负责数据传输的dma控制器(dma)、控制整个sopc的niosii处理器(cpu)及其数据程序存储器(onchip_mem),以及sopc和外部用户逻辑通信的接口模块(ba1、dmard和datardy),上述组件通过avalon总线连接在一起组成sopc。
pci总线dma传输系统功能模块之间的交互过程如图3所示,过程描述如下:
(1)cpu等待pc使能dma传输,pc使能dma后,执行(2);
(2)pc等待乒乓ram的数据准备好信号,数据准备好后,执行(3);
(3) cpu将dma的读/写地址和传输长度参数写入dma控制器中,使能dma控制器,dma控制器开始数据传输,即读口通过dmard接口从ram中读数,写口将数据写到pci桥,pci桥将数据送至pci总线;
(4)当传输结束后,dma控制器产生一个中断(irq1)送cpu;
(5)cpu判断传输是否完成,传输完成则通过pci桥向pc发送中断,并执行(1),开始下一次dma传输;
(6)pci总线发生异常时,pci桥逻辑中断cpu,cpu查询异常状态,并自动从异常中恢复。
2.2 pci总线异常的自动处理
pci总线dma传输过程中,可能出现的异常包括:
(1)pci总线上serr信号为高,系统错误。
(2)pci总线上perr信号为高,数据奇偶校验错误;
(3)主设备或从设备中止传输;
(4)主设备或从设备中止传输,或重试次数超过门限,导致pci桥对总线读/写失败。
在侦察接收系统设计中,上述异常一旦发生,pci接口便中断nioscpu,cpu接收到中断后,通过查询pci桥的控制寄存器访问(control registeraccess,cra)空间,获得异常信息。系统错误发生时,pci接口设备是没有办法恢复的,在这种情况下,nioscpu可点亮指示灯,指示系统错误发生;其它异常情况发生后,nios cpu可立即通过对dma控制器的状态空间的长度写零来停止dma传输,然后重新启动dma传输,让系统从异常中恢复过来。
2.3 提高pci总线dma速率的优化措施
为了尽可能提高dma传输速率,本方案中共采取了以下三个方面的措施。
(1)pci总线的突发传输与avalon总线的流水线操作
为了提高系统传输速率,应充分利用pci总线的突发传输特性,使pci总线处于突发传输状态。为此,在系统设计中,一方面使avalon总线工作于流水线模式下,降低avalon总线的延迟时间;另一方面适当增大缓存存储空间,避免因缓冲区满造成的传输延迟等待。
(2)dma控制的优化
为了使dma传输更为灵活,如程序运行过程中改变dma长度、读写地址、数据的帧长度,以及发生异常时程序自动恢复等,本文中使用nio scpu控制dma传输。cpu的主要任务是在pc使能dma和数据准备好时启动dma传输,应尽可能使程序紧凑,减少冗余操作,做到条件具备立即启动dma传输。
(3)功能模块的时钟设置
如图2所示,sopc中包括7个功能组件,为了进一步提高系统的速度,需要分别让这7个组件的时钟处于最佳状态。pci总线访问相关组件的时钟为33mhz,nios cpu相关的组件运行在150mhz时钟上。使系统在正确稳定运行的基础上,最大限度地提高运行速度。
3 结束语
该方案将pci桥和用户逻辑在一片fpga中实现,减少了硬件电路的复杂度、降低了系统成本;采用sopc创建pci桥,大大缩短了开发周期,提高了系统的可靠性,且因使用了片上nios cpu进行dma的在线配置和自动异常处理,使dma传输更加灵活。通过在ep3c120芯片上验证,该设计能够实现大于100mbytes /s的pci总线dma传输速率。

研究一种具有优异的导热性能的石墨烯基热界面材料
vivoX27游戏及续航测试 实际表现如何
74LS164驱动数码管动态显示(74LS164工作条件_电气特性)
48芯室外光缆厂家分享光缆布线要求-科兰
面粉麸皮重金属检测仪的功能特点介绍
SOPC实现的PCI总线高速数据传输系统
工业主板在烘干设备中的应用解决方案
这回真是意外!苹果发布9.7英寸ipad pro售价2688元起
彩电场失落保护和显像管黑屏保护电路
IDAPro工具有哪些主要功能?它是如何工作的?
怎么设置中断屏蔽字
是否有适合汽车应用的过压和欠压保护器件?
乐Pro3“性能发烧”:满血821+4070mAh+NFC+64G,仅售1679
RFID技术应用总量激增 在零售业领域备受青睐
边缘计算网关如何助力工业机器人运行监控和智能管理
3D打印技术要起飞:不仅仅是球鞋这么简单还有3D打印的卫星
瑞萨电子和Intersil宣布瑞萨电子对Intersil的收购获得最终监管批准
工业4.0的典型场景
我国首个5G微基站射频芯片成功流片
恒大汽车已开启冬季测试活动