PCI9054中文文档
PCI9054本地总线控制可编程逻辑设计

收稿日期:2002-07-14第20卷 第9期计 算 机 仿 真2003年9月文章编号:1006-9348(2003)09-0074-03PCI9054本地总线控制可编程逻辑设计彭杰,汪国有,张天序(华中科技大学图像识别与人工智能研究所图象信息处理与智能控制国家教育部重点实验室,湖北武汉430074)摘要:PCI 总线是一种高带宽、独立于CPU 的高性能总线,总线接口控制器的设计是其应用的关键所在。
本文在介绍PCI9054接口控制器的基础上,用可编程逻辑设计出了PCI9054本地总线接口控制,从而很容易地实现了PCI9054本地总线与本地总线设备之间通信和数据传输。
关键词:总线控制;可编程逻辑设计;数据传输中图分类号:TP336 文献标识码:A1 引言PCI 总线是Intel 公司推出的一种高性能局部总线,其数据总线为32位,且可扩展成64位,最大数据传输速率为128-256MB/s,是目前使用广泛的一种总线,因PCI 总线比较复杂较难掌握,故PCI 总线扩展卡开发较ISA 等其它总线扩展卡的开发较难,PCI9054是根据PCI V2.2规范开发出来的适合于PCI 总线外设产品开发的总线接口控制器,较好的解决了这个问题。
但是PCI9054本地总线信号依然较多,时序也较为复杂。
在图象处理硬件实现时,如何较好的实现PCI9054本地总线与本地总线设备之间的数据传输和控制是整个设计的首要关键,本文用可编程逻辑设计出了PCI9054本地总线接口控制,从而很好地解决了这个问题。
2 PCI9054性能简介PCI9054是一个32位33MHz 总线主控I/O 加速器,它是当今最先进的通用总线主控设备。
它完美地实施PCI2.2版规范的要求,可获得高达132兆字节/秒的突发传输速度。
PCI9054采用PLX 在业界领先的数据流水线框架(Data Pipe Archi tecture),包含DMA 引擎,可编程PCI 起始器和目标数据传输模式以及PCI 信息传输功能。
PCI9054中文文档

5.4.1.1 PCI初始化存储器和IO解码寄存器序列和本地总线及地址定义了用于解码本地总线到PCI通道的本地总线各位含义(PCI初始化)。
存储器空间或者IO空间必须(a power of 2)而且范围寄存器的值必须与范围值相反。
另外,本地基地址必须与队列值复用。
5.4.1.2 PCI初始化FIFO为了PCI 初始化存储器与PCI总线相连,9054有32-Lword可写FIFO和16-Lword可读FIFO。
这些FIFO使能本地总线去操作独立的PCI总线,允许高优先级的突发传输于PCI和本地总线之间。
在PCI初始化过程中,本地处理器(主)谢数据到PCI(从)总线上。
从PCI(从)总线上读数据,在PCI初始化过程中FIFO的作用如图5-2,5-3。
5.4.1.3 PCI初始化存储器通道本地处理器可以读写PCI存储器。
9054改变本地的读写通道。
本地总线的地址空间从PCI初始化的本地基地址起到定义的范围止。
Remap(PCI基地址)定义了PCI的起始地址。
5.5 DMA传输PCI9054提供两个独立的DMA通道并且支持本地到PCI,PCI到本地总线的传输。
每个通道都有专用的DMA控制器和专用的双向FIFO,每个通道都支持块传输和分散/集中传输,带一个EOT#(传输结束)信号。
只有DMA通道0支持命令模式的DMA传输。
主模式必须在PCI9054成为PCI总线控制者之前使能主模式位(PCICR[2])。
另外两个DMA通道能编程为:(1).可以以8,16或32位本地总线宽度操作(2).可插入0到15个等待周期(本地总线)(3).是能/禁能等待周期(4).限制本地总线突发为4个(BTERM#是能/禁能)(5).将本地总线地址设定为常量(本地存储器位FIFO)或增量(6).使PCI存储器可写(命令码=Fh)或者无效(命令码=7h)(7).使用/不使用BLAST#终止本地传输(DMA快/慢终止)(8).当DMA传输完成或者在分散/集中传输中终止计数达到时申请PCI中断(INTA#)或者本地中断(LINT#)(9).在DMA清计数模式下工作(只有当计数器是在本地存储器上时)9054支持用寄存器的高32位(DMADAC0 和DMADAC1)操作PCI双地址。
教你设计pci总线的高速数据采集卡(基于pci9054)

教你设计PCI总线的高速数据采集卡(基于PCI9054)2007-03-13 21:02眼下有不少场合需要用到PCI总线的数据采集卡,下面我就来谈一下设计PCI数采卡的原理及要点。
首先我要以我的实际经验,纠正存在于很多人心里的几个误区:1.设计PCI采集卡要通读PCI协议。
相信有很多初学者都在这个地方被吓住了,几百页的英文要通读并理解谈何容易!其实PCI协议处理的这部分功能已经被PCI接口芯片完成了,如PLX公司的9054、9056和9052等等,它封装了PCI协议的细节,我们只需要控制这颗接口芯片local端的几个控制线就可以完成PCI总线的数据传输。
PCI协议也有它的用处,我们只需要在某些需要注意的地方查阅一下相关章节即可,比如PRSNT1#和PRSNT2#引脚至少要有一个下拉,才能识别到卡,这就是PCI协议中的规定。
2. PCI卡布线很复杂,一不小心就可能不成功。
其实对于32位33MHz的PCI总线来说,布线相对比较简单,只要稍加注意就不会出问题。
比如:PCI总线的时钟线要做成2500(+/-100)mil,这个是要注意的一点,一般PCI卡上的蛇行弯曲走线就是这条线,因为走直线距离一般都达不到此长度。
其他要求,比如地址和数据线要在1500mil以内,其实你超过一些也没什么问题,不要超太多就好了。
3. PCI卡的驱动程序编写很难。
其实无论是软件还是硬件设计,都有一些相对成熟的资料可以参考。
对驱动程序来说也是这样,对实际项目的开发没有几个是从头到尾自己在编代码,都可以在网上找到一些成熟的代码,然后自己修改一下即可,况且PCI卡的驱动程序又相对比较成熟,可参考的资料也较多。
所以你要从网上找代码,向PCI接口芯片的供应商要代码,等收集到足够多的代码,再配以适当的教材(比如对于windows2000/XP系统下的WDM驱动程序,可以参考武安河老师的教材就足够),就可以进行你自己的驱动设计了。
下面我再针对具体应用谈谈PCI采集卡的设计:一般数采卡的情况是将A/D转换后的数据通过PCI总线上传到PCI机,然后利用上层的软件进行分析处理。
pci9054

第三章PCI总线接口的实现3.1 PCI总线接口实现的各种方案PCI总线规范十分复杂,其接口的实现十分困难。
目前实现PCI接口的有效方案有两种:使用可编程逻辑器件和使用专用芯片。
3.1.1 使用可编程逻辑器件采用可编程逻辑器件实现PCI接口最大的好处是比较灵活。
首先,对于一个典型PCI 设计来说,并非要实现PCI规范中的所有功能,而只是规范的一个子集。
可编程逻辑器件可以依据板卡功能进行最优化,只实现必需的PCI接口功能,这样可以节约系统的逻辑资源。
其次,可以将PCI板卡上的其它用户逻辑与PCI接口逻辑集成在一个芯片上,实现紧凑的系统设计。
再者,当系统升级时,只需对可编程器件重新进行逻辑设计,而无需更新PCB版图。
目前几乎所有的可编程器件生产厂商都提供经过严格测试的PCI接口功能模块,由用户进行简单的组合设计即可。
如Xilinx公司的Logicore,Altera公司的AMPP(Altera Megafunction Partners Program)等等。
采用可编程逻辑器件设计PCI接口,虽然很灵活,但也要一些限制。
实现PCI规定功能需要完成逻辑校验、地址译码、实现配置所需的各类寄存器等PCI的基本要求,大致需要10000个门电路;可编程器件生产厂商都提供经过严格测试的PCI接口功能模块,但价格昂贵。
否则的话,就必需用户自己进行设计,设计难度大,调试困难。
这样,在小规模的应用中,就限制了利用可编程逻辑器件来实现PCI接口。
3.1.2 使用专用芯片采用专用的PCI接口芯片,是一种切实可行的有效办法。
这种芯片具有通用性,而且成本低。
芯片开发商已经作过严格的测试,使其完全符合PCI规范。
开发人员只需要设计接口芯片和用户逻辑的接口电路,从而大大减少了开发人员的工作量。
但目前提供这种芯片的厂商还不多,常见的几家如表3-1所示。
综合购买的方便、成本、开发的难易、技术资料的多少,并考虑项目的实际需要(需要DMA 传输),最终选定PLX公司的主模式芯片PCI9054作为此次开发的PCI总线接口芯片。
PCI9054

最近一直在弄PCI9054,现在基本上已经弄完了,写点经验总结:我用的PCI9054+FPGA的板子,首先说说制版上的注意问题,我没有画过板,是我们一位上司在画,但是中间跟他一起发现和解决了一些问题,还是有点感触。
板子设计中:1、PCI时钟线,论坛上有人说PCI CLK时钟线要足够长,大约在1500mil±100mil,我一直不知道原因,后来我们一个老师点拨了我们说是,想这种并行线,每根数据数据线的值达到的时间不一样,因此只能靠时钟沿来将他们同步,如果你太短,时钟很快就来了,但是有些数据线信号还没有到来,那么就会造成并行数据的紊乱。
听了觉得有道理,具体是不是这回事有待考证。
2、TEST引脚,这是一个测试引脚,当他有效的时候,按数据手册上说的,除了一个usero/..../引脚之外,其他的引脚都将挂起,事实上就是9054不工作。
论坛上有人说,在调试过程中,TEST脚需要先拉高才能在开机的时候进入操作系统的界面,之前我们设计的那块板子也是这种情况,板子插上去,但是开机在Bios检测的时候,在屏幕的左上角总是显示一个光标,进入不了系统,我以为是这个原因,因为我们板子的TEST脚是悬空的。
后来照那样做了,发现确实可以进入系统,但是其他问题依然存在。
后来仔细一想也是,既然TEST拉高是让9054不工作,在开机的时候我不插板子,等到PC机启动之后我再插板子,岂不是一样。
(当时觉得自己好SB!!)3、EEPROM的EDI/O脚,数据手册上说了,如果没有EEPROM,那么这个脚需要拉低,9054以寄存器默认值进行启动。
如果有EEPROM,不管是空白还是已经写入数据,都应该将其拉高。
(后面这点数据手册上没有说,是在论坛上看到的)之前我们的板子出现的问题是,板子开机进入系统后插入,能找到设备,但是发现寄存器的值并不是EEPROM里面的值,而是寄存器默认值,而且本地配置寄存器的很多值都不能用PLXMon进行设置。
PCI接口设计及PCI9054

种:(1)单独的PCI接口芯片a(2)基于CPLD(Complex PTo掣a蚴ableLogicalDevice)
或FI'GA(Field ProgrammableGateArray)设计PCI接口。本文分别介绍了这两种 方法。
在论文前半部分分析和讨论了PCI规范的基本数据传输过程,并在此基础上 设计开发了一个基于PCI总线接口的数字信号处理系统。首先在论文第一部分论 述了PCI总线规范中基本传输过程及其终止的实现思想。然后主要分析和介绍使 用PLX公司的PCI9054芯片实现数字信号处理系统PCI接口的硬件设计。特别是 对PCI9054内部寄存器值的设定方式做了较为详尽的论述。接着实现了基于 PCI9054接口芯片的驱动程序及与主机的系统通信。
CPU(Central Processing Unit)的飞速发展,ISA/EISA(Extended Industry StandardArchitecture)逐渐显现出疲态,跟不上时代的步伐。当时CPU的速度甚 至还高过总线的速度,造成硬盘、显示卡还有其它的外围设备只能通过慢速并且 狭窄的瓶颈来发送和接收数据,使得整机的性能受到严重的影响。为了解决这个 问题,1992年Intel在发布486处理器的时候,也同时提出了32.bit的PCI总线。
PCI9054接口芯片的应用设计

收稿日期:2008-05-20基金项目:铁道部资助项目(99j34-A )作者简介:纪淑波(1977-),男,山东海阳人,讲师,主要研究方向为光电工程、图像产生、获取与处理技术.文章编号:1673-1255(2008)04-0046-03PCI9054接口芯片的应用设计纪淑波,曲北北(鲁东大学,山东 烟台 264025)摘 要:PCI9054是美国PL X 公司生产的PCI 总线通用接口芯片.介绍了PCI 总线接口的一般设计方法及PCI9054的内部结构、以及其工作原理,并以一种基于PCI 总线的数据传输系统的设计为例,给出其工作原理,并讨论接口的硬件实现方法以及采用软件包Windriver 开发设备驱动程序的方法.关键词:PCI 总线;FPG A ;驱动程序;Windriver ;PCI9054中图分类号:T N911.7 文献标识码:AApplication and Design of PCI 9054Interface ChipJ I Shu 2bo ,QU Bei 2bei(L udong U niversity ,Yantai 264025,China )Abstract :PCI9054is a general interface chip made by the PL X Company of USA.G eneral design method of PCI bus interface ,inter instruction and the work principle of PCI9054are introduced.The design of a data transmis 2sion system based on PCI bus as a example ,its working principle is given ,and the implementation method of hard 2ware design for PCI interface and the ways to develop the driver program by using Windriver are discussed.K ey w ords :PCI bus ;F GPA ;driver ;Windriver ;PCI9054 PCI9054是美国PL X 公司生产的PCI 总线通用接口芯片.使用该芯片桥接PCI 总线和本地总线(local bus ),开发者可以省去考虑太多复杂的PCI 总线规范,而集中精力开发硬件和驱动程序.PCI9054具有较强的性能.它符合PCI V2.1和V2.2规范;提供了2个独立的可编程DMA 控制器,每个通道均支持块和分散/集中的DMA 方式;在PCI 总线端支持32位/33MHz ;本地端(local bus )可以编程8、16、32位的数据宽度,传输速率最高可达132MB/s.本地总线端时钟最高可达50MHz ,支持复用/非复用的32位地址/数据[1,2].PCI9054内部有6种可编程的FIFO 存储器,以实现零等待突发传输以及本地总线和PCI 总线之间的异步操作(见表1).总之,该芯片为用户提供了较宽松灵活的设计空间.PCI 总线是Intel 公司推出的一种高性能局部表1 PCI9054内部FIFOFIFO 长度/(dB )PCI 启动I/O 读PCI 启动I/O 写PCI 目标读PCI 目标写DMA 读DMA 写163216323232总线[3],其数据总线为32位,且可扩展为64位,最大数据传输速率为132~264MB/s ,是目前使用非常普遍的一种总线.因PCI 协议比较复杂,较难掌握,故PCI 总线扩展卡的开发比ISA 总线等其他扩展卡难度大.PCI 9054芯片是一种能满足PCI V2.2协议,特别适用于PCI 总线外设产品开发的PCI →本地总线I/O 加速器芯片.结合PCI9054介绍PCI第23卷第4期2008年8月 光电技术应用EL ECTRO -OPTIC TECHNOLO GY APPL ICA TION Vol.23,No.4August.2008总线技术的设计方法.1 系统工作原理系统应用于光电信号转换系统中,主要解决主机与光电装备之间的数据传输问题,其工作流程是:主机运行应用程序,产生数据源,在外部控制信号的控制下,通过PCI 总线与光电装备进行数据通信,主要解决的问题是:PCI 接口硬件设计和PCI 设备驱动程序开发.2 PCI 接口硬件设计目前实现PCI 接口的有效方案有使用可编程逻辑器件和使用专用芯片2种[4].由于PCI 总线协议较复杂,采用可编程逻辑器件设计PCI 控制接口难度大,对于产品不大又有时限的工程项目来说,成本较高,采用专用接口器件虽然没有采用可编程逻辑器件那么灵活,但其优越性相当明显:能够有效地降低接口设计的难度,缩短开发时间.数据传输系统采用PL X 公司的PCI9054作为PCI 接口芯片,以FP G A 来完成逻辑控制以及与光电装备的连接,整个系统的框图如图1所示,其中,FP G A 选用的是AL TREA 公司的EPF1030AQC240-3.图1 数据传输系统硬件设计框图2.1 数据传输及控制原理PCI 9054可工作在M ,C ,J 3种模式,其中,C模式时序较为简单,系统采用PCI9054的C 模式传送,先由计算机主机通过PCI 总线向系统发出命令字,PCI9054将数据或命令字存入声纳设备中,数据传送时,局部总线控制逻辑FP G A 应驱动地址总线、数据总线、读写信号线及地址选通信号,控制PCI 局部总线的数据传输.PCI9054会直接将数据存入其内部FIFO ,随后PCI9054会向PCI 系统申请PCI 总线控制权,在得到总线控制权后,根据映射地址自行完成本次数据传输操作.局部总线控制器只需将数据写入PCI9054内部FIFO ,其后的操作不需要FP G A 的参与.FP G A 的局部总线逻辑的状态机框图如图2所示.图2 局部总线逻辑状态机框图状态0为空闲状态,当ADS #为0时如经本地总线译码后表明需要访问本地空间时,转到状态1,否则留在状态0;状态1为访问开始状态,当处于此状态下,如BLAST #为0时,转到状态2,如BLAST #为1时,则转到状态4;状态2为单周期等待状态,在此状态下,数据在本地总线上保持稳定,当处于此状态下直接转到状态3;状态3单周期数据结束状态,在此状态下数据从本地总线上取走,当ADS #为0时,经本地总线译码后,表明还需要访问本地空间时,则转到状态1,否则转到状态0,完成数据传送;状态4为突发等待状态,在此状态下数据在本地总线上保持稳定,当处于此状态下直接转到状态5;状态5为突发重复状态,在此状态下,如BLAST #为0时,转到状态6,否则重复此状态;状态6为最后数据突发传输完成状态,在此状态下当ADS #为0时,如经本地总线译码后,表明还需要访问本地空间时,转到状态1,否则转到状态0,将以上状态机用V HDL 语言在可编程逻辑器件中实现,即可实现访问本地总线的控制.2.2 EEPROM 的配置与烧写与ISA 总线相比,PCI 总线支持3个物理空间:存储器地址空间、I/O 空间和配置空间.串行EEP 2ROM 存储了PCI9054重要的信息,如设备号DID 、制造商号V ID 、子设备号SDID 、子制造商号SV ID 、中断号、设备类型号、局部空间基地址以及局部空间描述符等信号,EEPROM 的内容非常重要,它直接关系到整个板卡能否正常工作.系统加电时,通过PCI 的RST 复位以后,PCI9054首先检测EEPROM 是否存在.如果检测到EEPROM 首字不是FFFFH ,PCI9054将依次读取74第4期 纪淑波等:PCI9054接口芯片的应用设计 EEPROM的内容来初始化内部寄存器.PCIB I-OS 根据配置寄存器的内容进行系统资源分配,这样,整个PCI设备的资源才不会发生冲突.配置寄存器的内容编写完以后,可以用编程器写入EEPROM中.另外,也可以通过主机在线烧写,但由于各种原理,成功率很低.对于PCI9054芯片,可选用的串行EEPROM有STM公司的93CS56等.3 实例分析以下为一段使用Windriver开发的PCI9054 DMA的驱动代码[5],为了节省篇幅,省略了变量说明部分.程序中出现的变量大都由其名称可以反映含义,具体可以参见Windriver的设计文档中的说明.#include“windrvr.h”#include“plx lib.h”#define PCI9054DEFAUL T V ENDOR ID0x10b5 //PL X公司制造商号#define PCI9054DEFAUL T DEV ICE ID0x9054// PCI9054的设备号#define IS MASTER TRU EhDev=PL X DIA G DeviceFindAndOpen(PCI9054 DEFAUL T V ENDOR ID,PCI9054DEFAUL T DEV ICE ID,IS MASTER);//打开Windriver设备,锁定并返回该设备的资源,该设备的资源均包括在hHandle中;PCI9054DMAOpen(hDev,3pDMA,dwBytes);//初始化并锁定用于DMA传输的内存资源;PCI9054Int Enable(hDev,funcInt Handler);//设定中断,funcInt Handler为中断处理函数PCI9054DMAStart(hDev,3pDMA,f Read,fBlocking, dwBytes,dwoffset);//根据给定参数开始DMA传输PCI9054DMAClose(hDev,3pDMA);//解除DMA传输资源PCI9054intDisable(hDev);//禁止中断;PCI9054Close(hDev);//关闭Windriver设备4 结 束 语从以上分析可以看出,PCI9054是一种性价比很高的PCI桥路芯片,PCI9054提供了PCI总线的一种直接数据传输路径,降低了PCI总线的复杂性.对本地总线与设备进行数据传输进行了详细的讨论,给出了实用的本地总线数据传输的接口逻辑设计,根据这一设计,就可以很好地在本地总线和外部设备之间进行数据传输和控制,具有较高的应用价值.参考文献[1] 陈露晨.PCI9054性能分析及外部FIFO的扩充[J].电子产品世界,2000(11):50-51.[2] PCI9054Data Book Version2.1[Z],2002.[3] 尹勇,李宇.PCI总线设备开发宝典[M].北京:北京航空航天大学出版社,2004:153-160.[4] 彭佛才.基于PCI的高速媒体网关系统及其驱动程序设计[J].电子技术应用,2006(6):19-21.[5] 武安河.Windows2000/XP WDM设备驱动程序开发[M].北京:电子工业出版社,2005:132-136.简讯分布式孔径半主动激光导引头的发展 2008年6月2日,英国BAE系统公司的“先进精确杀伤武器系统”(APKWS)II半主动激光制导70mm火箭弹,进行了系统的发展与演示验证.APKWS II火箭弹采用了分布式孔径导引头.布置在弹体中部的分布式孔径半主动激光导引头(DASAL S)和制导控制装置可免遭沙尘、振动、冰雪和其他实战中可能遇到的恶劣环境的危害.APKWS II火箭弹是一种低成本的轻型制导武器,能有效对付轻型装甲目标,以弥补70mm火箭弹和“海尔法”导弹之间的火力空缺,其系统将应用于所有目前使用70mm 火箭弹的陆军飞机上.英国BAE系统公司和美国雷声公司不约而同地选择了半主动激光制导技术,将制导组件安装到“九头蛇”-70火箭弹上,双方的设计思路可谓大相径庭.雷声公司主张将激光导引头安排在火箭弹的头部,其好处是在火箭弹发射前导引头就能锁定目标.由于“九头蛇”-70火箭弹的战斗部及引信均位于头部,因此这种设计将改变战斗部及引信的原有位置,进而需要重新鉴定、测试和确认火箭弹的杀伤力.BAE系统公司设计的制导组件称为“分布式孔径半主动激光导引(下转第65页)84 光 电 技 术 应 用 第23卷。
基于PCI9054的PCI接口板设计

一
是 采 用 CP D 来 实现 接 口 电路 。这 种 设 计 方 法 的优 点 是 使 用 L 比较 灵 活 ,设 计人 员 可 以根 据 自 己的 需 要 设 计适 合 于 特 定 功 能
图 1 Cl 0 4内部功 能框 图 P 5 9
的 接 口 电路 ,而不 必 实 现 P 总线 的 全 部 功 能 。但 由 于 P 总 Cl Cl 线 协议 复 杂 ,设计 P 控 制 接 口难度 较 大 ,对 于 产 品不 大 又有 CI
如图 1 示 , Cl 5 所 P 9 4提供 了 P 总 线、 c l u 两个接 口。 0 CI l a s o B
统 、 图象处 理 系统 等 P I C 总线 扩展 板 。 关键 词 :P I C 总线 ;P I接 口芯 片 ;P I 口板 C C接
引 言
P 总 线 是 一 种 高 性 能 局 部 总 线 ,是 为 了满 足 外 设 问 以 及 Cl 外 设 与 主机 间高 速 数据 传 输 而提 出来 的 。采 用 P 总 线 进 行 数 Cl
据 传 输 ,可 以 解决 原有 的标 准总 线 数 据 传 输 率低 带 来 的 瓶 颈 问
题 。因此 , 于 P 总 线 的扩 展板 越来 越 多地 被 应 用于 各种 高速 、 基 CI
大 数据量 的 处理 系统 中。 P 总 线 接 口板 的设 计 必 须 符 合 P 总 线 规 范 定 义 的 电气 CI CI
时 限 的 工程 项 目来 说 ,耗 时 长 、成 本 高 。二 是 采 用通 用 P 接 P 9 5 CI C10 4作 为 P 总 线 和 L c l u 之 间传 递数 据 的 “ ” , CI o a s B 桥 口 芯 片 , 例 如 P X公 司 的 P 9 5 、P 9 5 、 P 9 8 L C1 4 C1 0 C1 0等 , 既 可 以 作 为 两个 总 线 的 主控 设 备 去控 制总 线 ,也 可 以 作 为 两个 0 0 0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.4.1.1 PCI初始化存储器和IO解码寄存器序列和本地总线及地址定义了用于解码本地总线到PCI通道的本地总线各位含义(PCI初始化)。
存储器空间或者IO空间必须(a power of 2)而且范围寄存器的值必须与范围值相反。
另外,本地基地址必须与队列值复用。
5.4.1.2 PCI初始化FIFO为了PCI 初始化存储器与PCI总线相连,9054有32-Lword可写FIFO和16-Lword可读FIFO。
这些FIFO使能本地总线去操作独立的PCI总线,允许高优先级的突发传输于PCI和本地总线之间。
在PCI初始化过程中,本地处理器(主)谢数据到PCI(从)总线上。
从PCI(从)总线上读数据,在PCI初始化过程中FIFO的作用如图5-2,5-3。
5.4.1.3 PCI初始化存储器通道本地处理器可以读写PCI存储器。
9054改变本地的读写通道。
本地总线的地址空间从PCI初始化的本地基地址起到定义的范围止。
Remap(PCI基地址)定义了PCI的起始地址。
5.5 DMA传输PCI9054提供两个独立的DMA通道并且支持本地到PCI,PCI到本地总线的传输。
每个通道都有专用的DMA控制器和专用的双向FIFO,每个通道都支持块传输和分散/集中传输,带一个EOT#(传输结束)信号。
只有DMA通道0支持命令模式的DMA传输。
主模式必须在PCI9054成为PCI总线控制者之前使能主模式位(PCICR[2])。
另外两个DMA通道能编程为:(1).可以以8,16或32位本地总线宽度操作(2).可插入0到15个等待周期(本地总线)(3).是能/禁能等待周期(4).限制本地总线突发为4个(BTERM#是能/禁能)(5).将本地总线地址设定为常量(本地存储器位FIFO)或增量(6).使PCI存储器可写(命令码=Fh)或者无效(命令码=7h)(7).使用/不使用BLAST#终止本地传输(DMA快/慢终止)(8).当DMA传输完成或者在分散/集中传输中终止计数达到时申请PCI中断(INTA#)或者本地中断(LINT#)(9).在DMA清计数模式下工作(只有当计数器是在本地存储器上时)9054支持用寄存器的高32位(DMADAC0 和DMADAC1)操作PCI双地址。
本地总线的恢复时间由在交出本地总线之前PCI9054能突发的数据(??)本地暂停时间(The Local Pause Timer)设置了DMA通道请求本地总线的时间。
5.5.1 DMA的PCI双地址周期当PCI9054是PCI总线的主控器时PCI9054支持双地址周期(DAC),使用DMADAC0和DMADAC1寄存器来进行DMA块传输。
分散/集中模式DMA可以利用DMADAC0和DMADAC1寄存器或者DMAMODE0[18]和DMA MODE1[18]来使用DAC功能。
DAC命令是用于支持64位寻址的(地址空间大于4GB)。
PCI9054在两个PCI时钟周期之内执行一次DAC操作,开始的PCI地址是低位地址(C/BE[3:0]为0xD),第二个为高位地址(C/BE[3:0]为0x6或0x7,由PCI是读还是写来决定)。
5.5.2 块DMA模式主机处理器或者本地处理器设置了本地或者PCI的开始地址,传输的字节数和传输方向。
主机或者本地处理器然后设置DMA起始位来初始化一次传输。
然后PCI9054请求PCI或者本地总线来开始一次数据传输。
一旦传输结束,PCI9054将置位通道完成位(DMACSR0[4]=1或者DMACSR1[4]=1),而且,如果使能的话,将向本地处理器或者PCI主机申请中断(DMAMODE0[10]和DMAMODE0[10])。
通道完成位可替代中断申请来表明DMA传输状态。
PCI和本地总线是可以配置DMA寄存器的。
(5-7页的图5-4)在DMA传输中,PCI9054是PCI和本地总线的主控者,如果同时发生的话,PCI主模式和PCI从模式比DMA模式有高的优先级。
PCI9054如果有如下情形之一的话将释放PCI总线(如图5-11,5-12)FIFO满(PCI到本地)FIFO空(本地到PCI)达到计数终止PCI主机置位STOP#PCI恢复时间到(由主机PCI BIOS编程控制的PCILTR[7:0]以及PCIGNT#)PCI9054如果有如下情形之一的话将释放本地总线FIFO空(PCI到本地)FIFO满(本地到PCI)达到计数终止BREQi#被置位有PCI主模式请求本地恢复时间被使能且时间到(MARBR[7:0])5.5.3 分散/集中DMA模式在分散/集中DMA模式下,主机处理器或者本地处理器设置说明块来当关键词载入结束时,PCI9054可通过编程来申请PCI或则本地中断,然后结束传输。
如果分散/集中关键词在本地存储器中,在每次DMA传输结束后,DMA控制器可通过编程来清除传输大小,使用DMA清除计数位(DMAMODE0[16] and/or DMAMODE1[16])。
5.5.3.2 DMA清计数模式PCI9054支持DMA清计数模式(写回特征值, DMAMODE0[16] and DMAMODE1[16])。
这个特征值允许用户在分散/集中DMA操作中控制传输块。
9054在每次传输链结束时写入关键词存储器以清除传输大小关键词到0。
这种方式只有在DMA的关键词在本地总线上时才可操作。
(图5-16,5-17)对DMA初始化介绍比较详细)。
5.5.4DMA存储器写及无效在DMA传输中,9054可通过编程来完成存储器写以及使PCI总线无效,也可实现PCI的主模式传输(见5.4.1.9)。
PCI9054存储器的写以及无效传输支持隐藏线的大小为8或者16Lwords,该大小定义在系统Cache Line 位(PCICLSR[7:0])中。
如果传输大小不是8或则16,PCI9054完成传输而不是存储器写以及使传输无效。
当DMA控制器的(DMAMODE0[13] and/orDMAMODE1[13])位使能时,DMA可进行存储器写以及无效传输,同时PCICR[4](存储器写以及无效传输使能位)被置位。
5.5.4.1 DMA终止DMA传输可以被终止,除EOT#信号之外,还有如下:1.清除DMA信道使能位(DMACSR0[0]=0 and/or DMACSR1[0]=0).2.使用通道终止位(DMACSR0[2]=1 and/or DMACSR1[2]=1).3.等待直到信道完成位置位(DMACSR0[4]=1 and/or DMACSR1[4]=1).5.5.5 DMA优先DMA通道可以通过优先位(MARBR[20:19])来定义其优先级:循环优先(MARBR[20:19]=00)DMA 通道0(MARBR[20:19]=01)DMA 通道1 (MARBR[20:19]=10)5.5.6 DMA通道0/1中断当传输结束或者分散/集中DMA模式下当前关键字传输结束时,DMA通道可以申请PCI总线或本地总线的中断。
DMA通道中断选择位决定是申请PCI中断(DMAMODE0[17]=1 和/或DMAMODE1[17]=1)还是本地中断(DMAMODE0[17]=0和/或DMAMODE1[17]=0)。
本地或PCI处理器可以通过读DMA通道中断活动位来决定是否有中断产生,DMA通道0(INTCSR[21]),DMA 通道0(INTCSR[22])。
而通道完成位(DMACSR0[4] and/orDMACSR1[4])可以用来判断是哪种中断:1.DMA完成中断 2.当前关键词传输完成中断中断完成使能位(DMAMODE0[10]and/or DMAMODE1[10])使能一个完成中断。
在分散/集中DMA模式下,通道的下一个关键词寄存器(从本地存储器载入)定义了是否给当前传输结束申请中断。
DMA通道中断由中断清除位(DMACSR0[3]=1 and/orDMACSR1[3]=1)清零。
5.5.6 DMA数据传输PCI9054的DMA控制器可通过编程实现本地到PCI或者PCI到本地的数据传输。
(如图5-18,5-19)5.5.9 传输结束(EOT#)输入DMA的EOT#使能位(DMAMODE0[14] and/orDMAMODE1[14])决定了DMA控制器是能EOT#输入后长字节传输的数目。
EOT#输入必须在PCI9054拥有总线时才有效。
如果BLAST#信号的输出不是DMA传输最后一个长字节所必须的(DMAMODE0[15]=1 and/or DMAMODE1[15]=1),DMA控制器在接受到外部READY#信号时终止DMA传输并释放数据总线。
或者内部等待寄存器为当前的长字节减小到0。
如果DMA控制器传输的突发数据不是最后一个,BLAST#输出将不会置位。
如果在DMA传输的最后一个长字节要求BLAST#输出(DMAMODE0[15]=0 and/orDMAMODE1[15]=0),DMA控制器由本地总线宽度来决定传输1或者2个长字节。
如果EOT#被置位,DMA控制器完成当前长字节传输并再传输一个长字节(这个允许BLAST#输出在最后一个长字节后置位)。
如果DMA在数据周期过程EOT#被置位后FIFO满或者空,下一个长字节将不会传输。
5.5.10 DMA仲裁PCI9054在有如下情况发生时DMA控制器释放本地总线(不置位LHOLD):1.本地总线恢复时钟使能并且时间到(MARBR[7:0])2.BREQi被置位(BREQi可以使能或者禁能,或者在9054释放总线之前选通本地总线恢复计时器)3.PCI 主模式开始4.接受到EOT#输入(如果使能)如果有如下情形之一,DMA控制器释放对PCI总线的控制:1.FIFO满或者空2.PCI总线恢复计时器到达时间(PCILTR [7:0])且PCI GNT#无效3.接收到主模式不连接指令5.5.11 本地总线恢复和暂停计时器本地总线恢复和暂停计时器由模式/DMA仲裁寄存器(MARBR[7:0, 15:8])编程控制,如果本地总线恢复计时器被使能且达到时间(MARBR[7:0]),PCI9054完成当前长字节传输并释放LHOLD。
如果可编程的暂停计时器达到计时时间(MARBR[7:0]),9054重新置位LHOLD。
如果为本地到PCI传输,PCI传输持续到FIFO空为止。
DMA传输的暂停时间可以由0到通道使能位时间。
为了承认禁能,9054在停止前至少从总线获取一个数据。
当然,在突发传输中这是不推荐的。
当本地总线与9054相连时DMA局部总线计时器开始计时,在LHOLDA置低后本地暂停计时器开始计时。