TH系列反射内存卡硬件参考手册中文版
带中断的超高速光纤卡
概述
TH系列反射内存卡基于PCI接口,是实时光纤网络产品系列中的一个。两个以上的TH系列反射内存卡,或TH系列反射内存卡系列中的其它板卡可以用标准光纤线连接组成通信网络节点网,网络中的每个板卡被称做一个"节点"。
TH系列反射内存卡可以在使用在不同的体系结构和不同的操作系统的计算机,工作站,PLC和其它嵌入式控制器中进行实时共享数据。TH系列反射内存卡快速、灵活并且容易操作。一个数据写到内存(SDRAM)后该数据被传输到所有的网络上板卡的内存中。板载的电路自动进行数据传输,所有其它节点的数据更新都不需要CPU的参与。TH系列反射内存卡方块图见图1。
TH系列反射内存特性
1.高速,易于使用的光纤网络
2.33MHZ 64-BIT/32-BIT兼容PCI总线,支持3.3V和5.0V电平
3.66MHZ 64-BIT/32-BIT兼容PCI总线,支持3.3V电平。
4.网络传输无需处理器参与
5.可选冗余传输模式
6.多达256个节点
7.多模传输达300米,单模最高10公里
8.支持10.3125Gbps传输速率
9.自动调整数据包大小4到64字节
10.光纤网络传输速率43MByte/s到170MByte/s
11.带校验的128/256Mbytes 板载内存
12.独立DMA通道
13.可带32ibt数据的网络中断
14.在同一个网络中可为不同体系结构进行大小端转换
15.PIO窗口2Mbytes,16Mbytes到64Mbytes和到板载内存大小可设置
16.操作系统支持:windows,linux,vxworks等
17.ROHS兼容
PCI总线兼容
TH系列反射内存卡兼容PCI本地总线规范2.2。
供应商VID和设备标识
PCI配置寄存器VID值为0x114A,device ID为0x5565。
子系统供应商ID和系统ID
PCI配置寄存器厂商ID值为0x1556,子系统ID为0x0080。
TH-2G系列通信网络节点卡和TH-1G系列通信网络节点卡比较
经典的通信网络节点卡中一些器件在TH系列反射内存卡中合并到一个FPGA中。相组合的器件包括PLX的PCI接口芯片,三个独立的小FPGA,一个发送FIFO和一个接收FIFO。
TH-2G系列通信网络节点卡增加了设计灵活性,至少在三个方面提高了TH-2G系列通信网络节点卡的性能。
提高了TH系列反射内存卡的DMA突发和PIO读速率
板载的SDRAM带宽增加一倍,提高了吞吐量
增加了现场可升级特性
经典的TH系列反射内存卡包括一组在PLX芯片内的控制寄存器和一组FPGA内的RFM控制寄存器。因为这两组寄存器从物理上分布在两个独立的器件上,通过两个不同的内存区域访问。相反,TH系列反射内存的两组寄存器在同一个FPGA内。两组寄存器可以被组合。但是为了保证软件连续性和向后兼容,两组寄存器继续像HS-1G系列通信网络节点卡中一样保持分离。此外,个别内部寄存器的位功能,在适用的情况下,仍然是兼容的。
文档结构
本手册由以下章节组成:
概述提供了TH系列反射内存卡的一般性描述和安全术语和符号。
保存和安装描述打开包装和硬件安装。
操作理论描述产品的特性和功能
编程介绍描述了PCI配置寄存器和其它寄存器编程
安全概要
以下一般安全预防措施在保养和维修的各个阶段必须遵守。未能遵守这些预防措施或本手册中的某些特定警告,违反安全标准的设计,制造和非正常使使本产品,我们将不承担任何责任。
系统接地
为了尽量减少触电危险,机箱和系统机柜必须使用三芯电源线接地。
不要在易燃易爆的环境中操作
远离带电电路
不要替换零部件或修改系统
危险程序警告
1.保存和安装
本章介绍了TH系列反射内存卡的安装和配置。描述了光纤跳线配置和TH系列反射内存卡布局。
1.1 开箱程序
在运输过程中应该做好预防措施,所有的板卡都是经过精心包装和检查,在运输过程中可能发生的损坏包括印制电路板的损坏,器件破碎,热损伤和其它可见污染。运输过程中的损坏请将板卡返回你的供应商。
1.2 处理防范
本卡上的一些器件可能会被静电损坏,使用时做好静电防范,不使用的板卡应存储在包装盒内。
1.3 拨码开关S1和S2的配置
在安装TH系列反射内存卡到系统之前,必须调整拨码开关S2用于设置该板卡的节点ID。网络中的每个节点必须具有唯一的节点ID。S2开关的位置,请参阅图1-1。拨码开关S2对应于8个信号线。可以设置任何二进制节点ID从0到$ FF(十进制255)。开关S2的位置1对应于节点ID低位、开关S2的位置8对应于节点ID的高位。
1.3.1安装之前配置拨码开关S1和S2
注意1:环上的所有节点必须配置为相同的传输模式:要么冗余或非冗余传输模式。此设置不匹配会导致某些数据包从环中删除,数据将会丢失。
注意2:在一个环上不通超过1个节点配置成Rogue Master0,配置两个或多个节点时,数据将丢失。
注意3:在一个环上不通超过1个节点配置成Rogue Master1,配置两个或多个节点时,数据将丢失。
安装在主机系统中的TH系列反射内存卡之前,必须配置开关S1为适当的操作模式。开关S1控制上的六大功能板。S1只能在断电时更改。
1。 S1位置1选择非冗余(OFF位置)或冗余传输模式。
2。 S1位置2 TH系列反射内存卡设置ON位置的网络使用率较低,设置OFF上实现高性能。
3。 S1位置3和4位选择PCI窗口大小为PIO的内存访问。默认值(当两个开关3和4位为OFF时)使用全部安装的内存大小窗口。减少了内存的窗口大小选择64兆字节,16兆字节或2兆字节。
4。 S1位置5启用(ON位置)禁用流氓包管理0功能。
5。 S1位置6启用(ON位置)禁用流氓包管理1功能。
6。 S1位置8选择出厂默认控制逻辑(ON位置)或最近烧写的控制逻辑(OFF位置)。S1第7位的当前被保留,不应该被使用(在OFF左位置)。
注意:只有当烧写控制逻辑更新失败时S1的位置设置在ON的位置,控制逻辑完成闪存更新后,S1的位置应设置在OFF位置。
表1-1:节点ID拨码开关设置实例
表1-2:拨码开关S1配置
表1-3 内存开窗大小设置
1.4物理安装
PCI兼容的系统外观不同,并且有不同的安装流程,建议安装前检查主机系统的安装程序,以下步骤简单的描述了一个TH系列反射内存卡的安装程序。
打开机箱,确保在安装前已经设置的节点ID。板上还可以设置所需的模式。
确保PCI连接器正确插入,安装螺丝。
关闭机箱,接通电源。
图3 TH系列反射内存卡的安装
TH系列反射内存卡兼容PCI总线接口,遵循PCI规范V2.2和P1386.1标准草案2.0版
1.5 前面板描述
TH系列反射内存卡有一个光收发器和三个LED指示灯位于前面板如下图所示。表13列出了前面板的LED指示灯。标记为"RX"是接收器的端口,端口中的"TX"是发送器。TH系列反射内存卡使用"LC"型光纤电缆。
图4:TH系列反射内存卡前面板
注意:当光纤跳线没有安装时,为了防止灰尘和污垢,防尘冒必须安装,不要在没有安装光纤跳线时开机,以免眼睛受到伤害。
1.5.1LED描述
LED 颜色 功能描述
状态LED 红 用户定义板状态指示
信号检测LED 黄 指示光纤网络连接
自己的数据LED 绿 指示接收到自己发送出的数据
表1-4 LED描述
状态LED上电时状态是点亮的,状态LED是可以通过写状态控制寄存器的第31位由用户定义的。当接收端口检测到光信号时信号检测LED点亮,这可以用来检测光纤网络是否连接到接收端。当板卡检测到自己发送的数据通过环形网络返回到自己的接收端时,自己的数据LED点亮,自己的数据LED默认是关闭的。
1.6光线跳线配置
TH系列反射内存卡有多模和单模两种接口,图1-4描述了LC型多模和单模连接器。
规格 单模 多模
纤芯直径 8.3 ±1 μM 62.5 ±3 μM
包层直径 125 ±2 μM 125 ±2 μM
外套直径 3.0 mm ±.1 mm 3.0 mm ±.1 mm
衰减 0.8 dB/Km (max) at 1310nm 4.0 dB/Km (max) at 850nm
带宽 N/A 160 to 300 MHz-Km (min) at 850 nm
UL Type OFNR, CSA type OFN FT4 Type OFNR, CSA type OFN FT4
表1-5 多模和单模光缆规范
1.6.1 连接器规范(单模和多模)
兼容LC标准和JISC5973标准
陶瓷插芯
温度范围:-20到+85摄氏度
图5 LC型光纤连接器
2 TH系列反射内存卡基本操作理论
以下章节描述TH系列反射内存卡的功能,包括主要子电路描述和操作原理。本节也提到控制和状态寄存器相关操作。了解详细的控制和状态寄存器请参考本手册第三章编程。
2.1操作理论
TH系列反射内存(任何TH系列反射内存卡)以菊花链的形式用光纤线跳线互联。第一块卡的发送必须连接到第二块卡的接收端,第二块卡的发送端连接到第三块卡的接收端,以此类推,直到再连接到第一块卡的接收端完成一个完整的环形连接。也可以将所有节点连接到一个或多个TH系列反射内存集线器,每个节点的接收和发送都必须连接,如果没有检测到光信号或失去同步TH系列反射内存卡将不会发送数据包(例如光纤线已损坏)。TH系列反射内存网中每个节点的节点号必须唯一,节点号通过板上的拨码开关S2进行设置,任何两个节点不能有设置成同一个节点号,每个板卡的节点号可以在通过NODEID进行读取显示,节点号的顺序并不重要。
主系统对TH系列反射内存卡的板载SDRAM的写操作后,反射内内卡的硬件检测电路将自动发起一个整个TH系列反射内存网的数据传输动作。这个写操作可以是一个简单的PIO写或是一个DMA周期。
当产生一个对SDRAM的写操作时,TH系列反射内存自动将数据和其它相关的信息写入到发送缓冲器中(其它相关信息包括节点号,数据地址等信息),在发送缓冲器中,发送电路检测数据,并且将数据变成一个4到64字节长度可变的数据包。通过光纤接口发送到下一个板卡的接收端口。
接收电路检查数据包是否有错误,当无错误发生时数据被接收。接收电路解开数据包并且将数据存储到板载的接收缓冲器。在接收缓冲器中,另一个电路将数据写入到本地的SDRAM的和源节点相同的地址中。同时,该电路将数据同时发送到发送FIFO中,重复这个处理过程直到这个数据返回到源节点的接收端,在源节点中,接收电路检测到数据包的NODEID和源节点的NODEID相同,因此将数据包从网络中移除,这样所有的节点数据都被更新了。
2.2前档板LED指示灯
TH系列反射内存卡有三个LED指示灯位于挡板。顶部的红色LED状态指示灯,其上电默认状态为ON。LED的状态可能被切换为OFF或ON通过写寄存器LCSR1的第31位,这表明一个用户定义的板状态。中间黄色的LED信号检测指标。如果接收器检测到光。信号指示灯变亮,它可以被用来作为一个简单的方法检查已正确地连接到接收器。底部的绿色LED是自己的数据指示灯。当主板检测到它自己的数据网络上的返回,它点亮这个LED。
2.3 TH系列反射内存卡寄存器组
要实现超越对板卡简单的读写操作,用户必须了解三个寄存器组内的位操作,这三个寄存器组如下:
PCI 配置寄存器
本地配置寄存器
TH系列反射内存控制和状态寄存器
PCI配置寄存器-这组寄存器是预定义的PCI本地总线规范和标准,适用于所有的PCI和PCI Express设备。该寄存器集包含供应商ID,设备ID,子系统供应商ID和相应的地址寄存器。该PCI配置寄存器的第一次初始化,然后由PCI总线的系统BIOS根据需要进行修改。该寄存器集很少由用户修改,但能够读取这些寄存器,特别是在基址寄存器,将是必要的,以找出其他两组寄存器。
本地配置寄存器-基址寄存器0开始的起始地址寄存器内存空间访问和基址寄存器1地址寄存器IO空间访问。一些本地的配置寄存器相关到TH系列反射内存的操作,包括中断控制和状态寄存器(INTCSR)和DMA控制寄存器。
TH系列反射内存控制和状态寄存器- RFM的控制和状态寄存器实现的功能独特的的TH系列反射内存。这些功能包括RFM运行状态,详细的控制的PCI中断源,网络中断访问。访问这些寄存器的地址包含在基址寄存器2开始的偏移地址。
2.4 TH系列反射内存RAM
板载128或256 MB的SDRAM。 SDRAM开始在指定的位置在基址寄存器3。RFM控制和状态寄存器的TH系列反射内存产品不同于以往的版本,不替换第一个40个地址的RAM。偏移地址范围是 0-7FFFFFF为128MB, 0-$ FFFFFFF为256MB。
2.5中断电路
TH系列反射内存TH系列反射内存卡有一个中断输出(INTA#),TH系列反射内存卡上一个或多个事件可以引起中断,中断源可以通过一些寄存器进行独立的使能和监视。
TH系列反射内存卡的中断电路被分成两层,主要层的中断可以被使能和监视通过本地配置寄存器的$68的INTCSR。主要层的中断源包括:
DMA通道0
本地中断(LINTi#)
中断源1在DMA周期时被使用,在DMA周期必须配置DMA寄存器。
中断源2是所有本地中断的输入(LINTi#),所有的次级中断都必须通过LINTi#,二级中断包括一些状态位,错误和网络中断。二级中断可以被选择和监视通过本地中断状态寄存器(LISR)和本地中断使能寄存器(LIER)这两个RFM控制和状态寄存器。更多的详细说明参考章节3编程。
图7 中断电路方块图
2.6网络中断
TH系列反射内存卡可以像传递数据包一样通过网络传递中断包。网络中断包可以发送到一个指定的节点或广播到所有节点。每个网络中断包包括发送节点ID,目的节点ID,中断类型和32BIT的用户数据。
网络中断的类型包括四个通用中断和复位节点请求中断。节点通过配置三个RFM控制和状态寄存器发送特定中断。每个接收节点对接收到的中断数据包进行评估,如果该节点被定向到一个通用的中断,那么发送者的节点ID被存储在适当的发送ID FIFO。每个发送ID FIFO深度是127个地点。随附的数据将被存储在一个深度为127的数据FIFO。
如果通过LISR,LIER和INTCSR寄存器寄存器,可以在任何接收节点生成任何一个PCI网络中断。
复位节点请求中断不和其它一般中断那样存储在一个FIFO。此外,它不会导致立即复位TH系列反射内存。相反,它设置LISR寄存器中的一个位,如果启用,这将导致一个PCI中断设置。一种有序的方式应该由主机系统进行实际的TH系列反射内存板复位。但是,用户的应用程序可以使用这个网络中断用于任何目的。
2.7 冗余传输模式
TH系列反射内存可以工作在冗余传输模式。当开关S1位置1是在ON的位置,TH系列反射内存卡配置为冗余传输模式。在冗余的传输模式中,每个数据包传输两次,数据包的大小无关。网络上的每个节点的接收电路评估每个冗余传输。在第一次传输,如果没有检测到错误,它被用来更新板载内存和第二传输将被丢弃。但是,如果第一次传输中包含的错误,第二转输的数据包用来更新板载存储器,只要它有没有传输错误。如果检测到错误在这两个传输,传输将不会被使用的数据被完全从网络中删除。
冗余传输模式降低从网络上丢弃任何数据的机会。然而,冗余传输模式,也降低了网络的数据传输速率。单DWORD(双字=4字节)从非冗余率的43兆字节/秒,约20兆字节/秒的传输速率下降。该16 DWORD(64字节)的传输速率从冗余的170兆字节/秒下降到非冗余的85兆字节/秒的速率。
2.8 流氓包移除操作
流氓包是不属于任何网络上的节点的数据包。回顾TH系列反射内存的基本操作,一个节点发起数据包在网络上响应于从主机存储器写。信息包在网络被传递到所有节点直到它返回到原始节点。这就要求源节点删除从网络上的数据包。但是,如果该数据包被错误地改变,因为它通过另一个节点,或者如果源节点开始发生故障,那么源节点可能不能识别作为它自己的数据包,因此无法将其从网络中删除。在这种情况下,该数据包将继续作为一个流氓数据包在网络中传输。
流氓包是极其罕见的。节点连接到一个5595集线器时,节点的的开启或关闭电源,可以创建一个流氓包。光纤跳线连接或断开时也可能发生。如果在网络中的任何节点的网络FIFO溢出,可能会创建一个流氓包。他们的存在可能表明发生故障的TH系列反射内存板,因为真正的组件出现故障,或者由于操作过于苛刻的环境中。通常情况下,解决方案是隔离和替换发生故障的主板和/或改善环境。但是,有些用户宁愿忍受零星流氓包,而不是停止系统从而将流氓包从网络中删除。
为了提供对流氓包故障的容忍,TH系列反射内存包含电路,它允许将板卡设置为两个流氓包管理员之一。流氓包管理员标识每个通过的数据包,因为它从一个节点通过。如果第二次相同的数据包返回到流氓包管理员,流氓包管理员识别它是一个恶意的数据包,将其从网络中删除(流氓包已经影响到每一个节点后)。
当一个恶意的数据包被检测到,LISR寄存器中一个流氓包设置故障标志。流氓包故障位的设置可能选择性的产生一个PCI中断,通知主机有故障存在。
两个流氓包管理员,流氓包管理员0和流氓包管理员1,交叉检查对方。流氓包管理员0启用在放置开关S1位置5的ON位置。盗贼法师1启用在置放置开关S1位置6在ON的位。正如两块木板在一个网络中不应该有相同的节点ID,在同一网络中的两个板不应该被设置为相同的流氓包管理员。否则,两个中的一个会错误地删除由其他流氓包管理员标记的数据包。
3 TH系列反射内存卡编程
基本TH系列反射内存卡TH系列反射内存写入和读取操作需要很少或根本不需要编程知识。TH系列反射内存板上电后进入功能模式。用户将需要访问PCI配置寄存器(基址寄存器0,1,2和3)获取系统BIOS分配寄存器组和TH系列反射内存的基址。
TH系列反射内存的寄存器组的基址和内存地址可以比较随意,。对于超出了基本的设置,如启用或禁用中断或DMA周期的操作,用户必须知道三个寄存器组内具体寄存器分配,本章提供的这些信息。
这三个寄存器组如下:
PCI 配置寄存器
本地配置寄存器
TH系列反射内存控制和状态寄存器
3.1 PCI配置寄存器
PCI配置寄存器位于256字节的PCI配置空间,它遵循PCI规范V2.2定义的模板。第一个64字节的PCI配置空间完全由预定的标头组成的。在该区域中,每个设备只实现必要和相关的寄存器。然而,所有的寄存器和位功能存在必须符合PCI规范的定义。除了第一个64字节边界,每个设备都可以实现额外的设备独特的寄存器。虽然PCI配置寄存器可在任何时候访问,但一般他们都很少被用户修改。
表3-1 PCI配置寄存器
表3-2 PCI配置ID寄存器
表3-3 PCI命令寄存器
表3-4 PCI状态寄存器
PCI 基地址寄存器0包括本地配置寄存器的内存映射开始地址,它包括中断控制、状态和DMA寄存器。寄存器值由系统BIOS配置。
PCI基地址寄存器1包括IO映射的本地配置寄存器开始地址。寄存器值由系统BIOS配置。
PCI基地址寄存器包括TH系列反射内存控制和状态寄存器的内存映射起始地址,寄存器值由系统BIOS配置。
PCI基地址寄存器3是TH系列反射内存板载RAM的PIO内存映射的起始地址。寄存器值由系统BIOS配置,他由板载的SDRAM大小和拨码开关S1的3和4决定,地址偏移范围如下:
0-01FFFFF是2MB窗口设置
0-0FFFFFF是16MB窗口设置
0-3FFFFFF是64MB窗口设置
0-7FFFFFF是128MB板载内存
0-FFFFFFF是256MB 板载内存
检查PCI配置寄存器的内容,用户可能会注意到,基址寄存器4包含一个非零值,可能会误认为这个值指定了一套有用的功能。实际上是在基址寄存器的寄存器4是一组特殊的PLD应用的PCI-X内核的诊断寄存器。用户应考虑保留这些寄存器,并保持不变。
TH系列反射内存不支持可选的电源管理,热插拨等特性。
3.2 本地配置寄存器
本地配置寄存器的偏移值存储在基址寄存器0访问存储器周期。在基址寄存器1在寄存器偏移00到 FF 通过I / O周期偏移值存储访问。下面指定的偏移量。
PCI中断使能(位8)作为一个全局的PCI中断使能功能。必须设置高(1)使能位,之前中断源将才可能产生一个PCI 中断。
表3-30总结了的INTCSR中断的启用,涉及到TH系列反射内存卡操作。
表3-31总结的INTCSR中断状态位,涉及到TH系列反射内存操作。
3.3 RFMTH系列反射内存控制和状态寄存器
内存访问周期TH系列反射内存卡 TH系列反射内存控制和状态寄存器,偏移值存储在基址寄存器2。下面指定的偏移量。这组寄存器保留的空间是64个字节。
3.3.1 TH系列反射内存板版本寄存器
TH系列反射内存卡版本(BRV)BAR2(偏移$ 0):一个8bit寄存器,用来表示版本或型号。该寄存器是只读的。
3.3.2 TH系列反射内存板ID寄存器
TH系列反射内存板ID(BID)BAR2(偏移$1):一个8位寄存器,它包含一个TH系列反射内存的独特的8位代码,。该代码是¥65。该寄存器是只读的。
3.3.3 TH系列反射内存板构建版本寄存器
TH系列反射内存板修订构建(BRB)BAR2(偏移$2):一个16位寄存器,用来代表这个特定版本的内部版本号。该寄存器是只读的。
3.3.4 节点ID寄存器
节点ID(NID)BAR2(偏移$4):一个8位寄存器包含的TH系列反射内存节点号。该寄存器通过设置板载开关S2,上电时自动读入拨码开关值,该寄存器是只读的。TH系列反射内存网中的每块TH系列反射内存卡必须具有唯一的节点ID。
3.3.5 本地控制和状态寄存器
本地控制和状态寄存器1(LCSR1)BAR2(偏移$08):一个32位寄存器包含TH系列反射内存控制和状态位的描述如下。
本地控制和状态寄存器位定义
第31位:状态指示灯电路中包含一个用户定义的红色状态指示灯。设置此位低(0)熄灭LED。该位复位后的默认状态是高(1)LED。
第30位:设置此位高(1)将手动关闭TH系列反射内存板的光发射器。该位复位后的默认状态是低(0),发射器启用。当启用光纤发射器时设置该比特位为0,但需要考虑不太确定的光电路的打开时间。
位29:Dark-on-Dark模式启用 - 当此位设置为高(1),如果TH系列反射内存板的接收器没有检测到信号或检测到无效的数据模式,TH系列反射内存板的发射器将被关闭。使用光纤HUB时Dark-on-Dark模式的功能是非常有用的。
28位:闭环使能 - 当此位设置为高(1),光发射器和接收器被禁用,发送信号通过板上电路内部直接回到接收器。这可以在无论有没有外部光纤跳线时都可以进行基本功能测试。
第27位:本地内存奇偶校验允许 - 当该位被设置为高(1),从TH系列反射内存卡 的SDRAM读取数据时启用奇偶校验。需要注意的是校验模式只适用于32位和64位访问。字节(8位),字(16位)和24bit内存写访问被禁止。
位26:启用冗余模式 - 当该位被设为高(1)冗余网络传输模式已启用。该位是只读的。通过设置开关S1位置1在ON位置,可以启用冗余模式。如果启用该模式,TH系列反射内存网中其它节点也必须设置成冗余模式。
第25位:流氓包管理员1启用 - 当此位被设为高(1),TH系列反射内存卡被设置成带有流氓包管理员1功能。该位是只读的。流氓包管理员1功能的启用是通过设置拨码开关S1位置6到ON位置。
第24位:流氓包管理员0启用 - 当该位被设为高(1),TH系列反射内存卡被设置成带有流氓包管理员0功能。该位是只读的。流氓包管理员0功能的启用是通过设置拨码开关S1位置5到ON位置。
第23位:保留 - 该位被保留。
位22和位19:窗口1和窗口0的PCI PIO窗口的大小通过设置拨码开关S1 的位置3和位置4位选择。位19(窗口0)被连接到开关S1的位置3('1'为ON时,'0'OFF时)。位22(窗口1)被连接到开关S1的第4位('1'时,ON,'0'OFF时)。这两个bits指示的内存PCI PIO窗口的大小,在下面的表中所定义。这两个位是只读的。
下表中定义的21位和20:配置1和配置为0这两个位显示已安装的内存大小。这两个位是只读的。
位18:从PCI写后延迟发送 - 当此位设置为高(1)为了减少PCI写带宽。该位是只读的。通过设置开关S1位置2在ON位置,此模式被启用。写入内存或在网络上传输之前,PCI总线上接收到的数据将被延迟。这可以防止节点使用完整的网络带宽。此设置通常是关闭的。
17位和16:偏移1及偏移0,当主机系统通过PCI写入板载内存并启动一个在TH系列反射内存网络上的数据包传输,通过网络发送或接收到的网络地址,偏移1偏移0将加上一个偏移,。的偏移量不出现上本地内存访问,和偏移并不改变通过TH系列反射内存板的网络数据包,。偏移1偏移0提供了四种可能的二进制增量从64兆字节到256兆字节的网络地址范围。当地址和偏移量超过256兆字节的网络地址范围,超过256兆字节的地址位将被截断。这将导致写地址又环绕成一个较低的内存位置。偏移1和0的位对应的网络地址位A27和A26。
0,64M,128M,192M
位15到8: 保留 - 保留这些位。
位7:逻辑高(1)表示TX FIFO目前是空的。该位只提供即时状态(未锁定)和只读。
位6:TX FIFO逻辑高(1)表示的TX FIFO目前快要溢出。该位只提供即时状态(未锁定)和只读。定期断言此位是正常的。
位5:RX FIFO满锁存逻辑高(1)表示,RX FIFO已经经历了至少一次溢出。该位是只读寄存器内。要消除这种情况写在本地中断状态寄存器的相应位。
注意:锁存RX FIFO满信号的发生是由于一个TH系列反射内存板出现故障的一个故障状态,并显示接收到的数据可能已经丢失。
位04:锁定RX FIFO几乎满-逻辑高(1)表示RX FIFO是运行最大在可接受的速率。正常工作条件下,此事件不应该发生。该位是只读寄存器内。要消除这种情况,写在本地中断状态寄存器的相应位。
位3:锁存同步丢失-逻辑高(1)表示接收器电路检测到有效信号的损失至少一次自上一次标志已被清除。在正常工作条件下,这一事件不应该发生,并可能表明数据丢失。一个逻辑高可能表明接收器的链接是有意或无意地断开。
位2:RX信号检测逻辑高(1)表示板接收器是目前检测到光信号。该位只提供即时状态(未锁定)和只读。
位1:损坏的数据-逻辑高(1)表示TH系列反射内存卡已检测到接收到至少一次损坏(无效)的数据,因为上电或以前一直以来的标志可能被清除。在正常工作条件下,这一事件不应该发生,并可能表明数据丢失。该位为只读寄存器内。要消除这种情况,请写本地中断状态寄存器的相应位。
位0:自己的数据-逻辑高(1)表示TH系列反射内存卡已检测到它自己的数据包返回至少一次,因为该位以前可能已被清除。此位作为一个指标,链接是否完好。写板载内存应设置或启动任何时间网络中断该位都会被置位。该位可读写。
3.3.6本地中断控制寄存器
TH系列反射内存包含一些不同的中断来源。由中断的第二层由两个寄存器LISR(表3-45中所示)和LIER(表344所示)控制。所有本地中断逻辑"或""一起称为进入一个中断LINT#。,反过来,由11位本地配置寄存器(基址0偏移$68INTCSR)控制。本地中断控制和状态两个局部寄存器(LISR和LIER)的实施。这两个寄存器的位功能相互对应。
本地中断状态寄存器
本地中断状态寄存器(LISR)BAR2(偏移$10):这是一个32位寄存器含有一组中断状态标志。该的LIER包含一个使相应的组。任何本地中断之前可以产生一个中断,必须置LINTi#状态位,它的使能和全局使能位必须置位。
本地中断控制寄存器位定义
位31至16:保留 - 这些位被保留。
位15:自动清除标志LIER寄存器中的相应位,该位是只读状态指示。当此位为高(1),全局中断使能(第14位)被读取后将自动清零寄存器(LISR)。清除全局中断使能清除LINTi#,将释放PCI中断。
14位:全局中断使能-该位必须设置高(1),在任何中断标志及其关联启用的LIER位LINTi#线使能后,PCI中断才有可能产生。如果自动清除启用的LIER位被设置为高(1),全局中断使能位将自动清零寄存器(LISR)被读取。此位与该寄存器读取和写入访问,从而允许一个单一的读 - 修改 - 写操作本地中断服务。
位13:本地存储器奇偶校验错误 - 当此位为高(1),说明已检测一个或更多的本地内存访问奇偶校验错误。该位被锁存。设置完成后,必须清除该位写一个零。需要注意的是位27 LCSR1必须设置前高平价活跃。还要注意的是奇偶校验只适用于32位和64位访问。字(16位)和字节(8位)存储器写访问被禁止。
位12:存储器写抑制 - 当此位为高(1),TH系列反射内存卡是在奇偶校验启用模式,一个8位字节,16位字,或一个24位写操作被抑制,。该位被锁存。置位后,必须在该位写一个零进行清零。
位11:锁存的同步丢失 - 当该位为高(1),所述接收器电路已经失去了与输入信号同步地一次或多次。该位被锁存。设置完成后,必须清除该位写一个零。锁定同步位置位通常表明接收器连接或断开,数据可能丢失,无论是有意还是无意。如果连接到该接收器的上一个节点电源关闭或禁用。此事件也可能发生。
位10:RX FIFO满 - 当此位为高(1),RX FIFO已经满一次或多次。该位被锁存。设置完成后,必须清除该位写一个零。这是一个故障并且数据可能已经丢失。
注意:在正常运行时此条件不应该发生。仅用于调试。
位9:RX FIFO几乎满-当此位为高(1),RX FIFO快要溢出一次或多次。该位被锁存。置位后,必须该位写一个零清除。 RX FIFO几乎满位的置位表示接收电路工作在最大负荷。如果它不发生,PCI总线主应暂时停止所有写和读操作板。
位8:坏数据 - 当此位为高(1),接收电路检测到无效数据的一个或多个次。该位被锁存。设置完成后,必须在该位写一个零以清零。
位7:待处理网络中断4 - 当此位为高(1),表示已收到一个或多个类型4的网络中断。要读取发送数据和发送节点ID,可以在偏移地址38读中断发送数据4(ISD4)FIFO,和偏移地址 3C的中断发送节点ID(SID4)。
位6:流氓包故障(1)-当该位被置高,TH系列反射内存卡运行流氓包管理员1或0,检测和删除了一个恶意的数据包。该位被锁存。设置完成后,必须在该位写一个零(0)进行清零。
位5:TX FIFO满 - 当此位为高(1),TX FIFO已经溢出一次或多次。该位被锁存。置位后,必须写零到该位完成清零。这是一个故障,数据可能已经丢失。
注意:此条件下不应该发生在正常运作。 05位仅用于诊断目的。
位4:保留 - 该位被保留。
位3:复位节点请求当此位高(1),在网络上的另一个节点已经要求本地的PCI总线主复位此板。 TH系列反射内存不会自动复位。
位2:待处理网络中断3 - 当此位为高(1),表示已收到一个或多个类型3的网络中断。要读取发送数据和发送节点ID,可以在偏移地址30读中断发送数据3(ISD3)FIFO,和偏移地址 34的中断发送节点ID(SID3)。
位1:待处理网络中断2 - 当此位为高(1),表示已收到一个或多个类型2的网络中断。要读取发送数据和发送节点ID,可以在偏移地址28读中断发送数据2(ISD2)FIFO,和偏移地址 2C的中断发送节点ID(SID2)。
位0:待处理网络中断1 - 当此位为高(1),表示已收到一个或多个类型1的网络中断。要读取发送数据和发送节点ID,可以在偏移地址20读中断发送数据1(ISD1)FIFO,和偏移地址 24的中断发送节点ID(SID1)。
本地中断使能寄存器
本地中断使能寄存器(LIER)BAR2(偏移$14):一个32位寄存器包含中断一组可对应LISR中的状态位。
3.3.7网络目标数据寄存器
网络目标数据(NTD)BAR2(偏移$18):一个32位寄存器包含相关的数据将通过四个网络中断类型中的一个被发送到目标节点(目标)。数据写入该寄存器不会启动实际的中断,只有写网络中断命令寄存器(NIC)才会产生中断。NTD寄存器可以进行读取和写入访问。
3.3.8网络目标节点寄存器
网络目标节点(NTN)BAR2(偏移$ 1C):一个8位寄存器包含目标(目的)节点的节点ID。 NTN寄存器写入不启动的实际网络中断。该寄存器是可读写的。 NTN寄存器可以写入或读网络中断命令寄存器作为一个单一的16位字。
3.3.9网络中断命令寄存器
网络中断命令(NIC)BAR2(偏移$ 1D):一个8位寄存器包含一个4位代码,定义网络中断类型发出。请参阅表346的定义可能的代码。该寄存器是可以进行读取和写入操作。写NIC寄存器将启动网络中断。先前写入的目标数据寄存器和节点寄存器通过网络中断传输。
上述的NTD,NTN和NIC寄存器用于产生一个网络中断,以下四对寄存器用于接收网络中断。
3.3.10中断1发送数据FIFO
中断1发送数据FIFO(ISD1)BAR2(偏移$20):高达127个32位含有对齐数据的FIFO,数据通过类型1网络中断包发送到这个节点。32位的数据的功能由用户定义。 ISD1的127深度的FIFO,但它是中断发送SID1 FIFO是一对,。从本质上讲,只有一个地址的两个FIFO的指针和该指针只受SID1 FIFO的访问影响。出于这个原因,在数据的每个位置(ISD1)FIFO可多次读取的地址指针不递增,而读数SID1 FIFO两个FIFO的指针递增。出于相同的原因,用户必须先读取数据(ISD1),再读取发送ID FIFO(SID 1),否则数据将丢失。
3.3.11中断1发送ID FIFO
中断1发送ID FIFO(SID 1)BAR2(偏移$24):ISD1中的数据包含节点ID对应一个8位的FIFO。每次一个节点发出一个网络中断,它自己的节点ID作为数据包的一部分发送。在每个网络节点中,中断分组中进行了解析。如果网络中断被定向到该节点,并且是类型1的网络中断,那么发送者的节点ID被存储在127的位置深的FIFO,被称为中断1发送ID FIFO或SID1。和任何正常的FIFO,每次SID1读取FIFO地址指针自动递增。因此只能读取一次SID1 FIFO。SID1 FIFO的写入任何数据,会导致SID1 FIFO被清空。请注意,零值并不表示FIFO是空的,因为零也是一个有效的节点ID。要看到,如果网络中断正在等待,检查LISR中寄存器的位07,02,01和00。
3.3.12中断2发送数据FIFO
中断2发送数据FIFO(ISD2)BAR2(偏移$28):一个32位的FIFO就像ISD1一样运作,但它仅响应类型2网络中断。
3.3.13中断2发送ID FIFO
中断2发送ID FIFO(SID2)BAR2(偏移$2C):一个8位的FIFO像SID1一样运作,但它仅响应类型2网络中断。
3.3.14中断3发送数据FIFO
中断3发送数据FIFO(ISD3)BAR2(偏移$30):一个32位的FIFO就像ISD1一样运作,但它仅响应类型3网络中断。
3.3.15中断3发送ID FIFO
中断3发件人ID FIFO(SID3)BAR2(偏移$34):一个8位的FIFO就像SID1一样运作,但它仅响应类型3网络中断。
3.3.16中断4发送数据FIFO
中断4发送数据FIFO(ISD4)BAR2(偏移$38):一个32位的FIFO就像ISD1一样运作,但它仅响应类型4网络中断。
3.3.17中断4发送ID FIFO
中断4发件人ID FIFO(SID4)BAR2(偏移$3C):一个8位的FIFO就像SID1一样运作,但它仅响应类型4网络中断。
3.4 TH系列反射内存卡 DMA块操作示例
1。基址寄存器0存储本地控制和配置寄存器的起始地址,其中包括DMA控制寄存器。该寄存器中的值是PCIBAR0。
2。要建立DMA周期必须配置6个DMA寄存器。DMA周期后这些DMA寄存器将保持不变。
DMA通道0模式设置:第9位设置为0,表示使用正常块DMA(不是分散/集中模式)。 DMAMODE0 at PCIBAR0 + offset $80
DMA通道0 PCI起始地址:
设置的PC存储器的起始地址(源或目的地的转送)。 DMAPADR0 at PCIBAR0 + offset $84
DMA通道0本地的起始地址:
设置为本地存储器(RFM)的起始地址(源或目标地址的传输)。
注:第一本地(RFM)内存位置为 0。 DMALADR0 at PCIBAR0 + offset 88
DMA通道0传输大小:
设置为要传输的字节数(最大7FFFFF)。 DMASIZ0 at PCIBAR0 + offset 8C
DMA通道0描述符指针:
写$0设置PCI到本地
写8设置本地到PCI DMADPR0 at PCIBAR0 + offset 90
DMA通道0 PCI DAC增加地址:
当使用32位地址,该寄存器设置为 0。 DMADAC0 at PCIBAR0 + offset B4
3。要启动和监控传输,以如下方式访问DMACSR0:
DMA通道0命令/状态寄存器:
DMACSR0 PCIBAR0+偏移$ A8.
写$0003到开始传输,然后轮询相同的寄存器。当位4是高(1)时,DMA周期完成。
注意:轮询读取周期优先于DMA周期。过多的轮循将放缓DMA传输。除了轮询的DMA完成条件,用户可以选择启用DMA中断,通过设置在偏移$68的 INTCSR的位18,PCI DMA完成将产生一个中断。一旦中断被启用,用户的软件程序只用等待中断事件就可以了。
4。DMA完成后,清除DMA完成位的通过以下方式写DMACSR0寄存器。当使用DMA中断,这个是必须的:
DMA通道0控制/状态寄存器
DMACSR0 PCIBAR0+偏移$ A8。
在启动另一个DMA操作前,写$8以清除DMA完成位。
3.5 TH系列反射内存TH系列反射内存卡分散/集聚的DMA操作示例
注:scatter/gather方式是与block dma方式相对应的一种dma方式。
在dma传输数据的过程中,要求源物理地址和目标物理地址必须是连续的。但在有的计算机体系中,如IA,连续的存储器地址在物理上不一定是连续的,则dma传输要分成多次完成。
如果传输完一块物理连续的数据后发起一次中断,同时主机进行下一块物理连续的传输,则这种方式即为block dma方式。
scatter/gather方式则不同,他是用一个链表描述物理不连续的存储器,然后把链表首地址告诉dma master。dma master传输完一块物理连续的数据后,就不用再发中断了,而是根据链表传输下一块物理连续的数据,最后发起一次中断。
很显然scatter/gather方式比block dma方式效率高。
分散/集聚DMA传输是一种用于执行分割成不同小块的大型数据的传输的模式。注意:在一个数据页不能跨越4 GB的地址边界。该DMA描述符指针是链表页描述地址。
每个页面描述符定义一个地址和数据块大小加上下一个描述符块的指针。当数据被读取/写入到相应的页面,自动获取描述符。描述链处理直到数据传输完成或达到的描述链的末端,以先到者为准。
页面描述符块不能被映射在64位寻址空间。第一个描述符必须是一个16字节的边界上。为了获得最佳性能,每个描述符块应该被一个16字节或8字节边界对齐。
页面描述链必须建立在PCI 32bit的内存空间,才开始一个分散/集聚DMA。链中的每个描述符格式如下:
第一DWORD:低32位PCI数据地址(每个页面都要一个8字节边界对齐),
第二个DWORD:高32位PCI数据地址,($ 0为32位寻址)
第三DWORD:要传输的字节数到/从PCI地址(每个页面大小必须是8字节的倍数)
第四DWORD:下一描述符(写$1表示链结束)
同时,所有数据块的大小总长度值必须被写入DMA传输大小寄存器。
1。基址寄存器0存储本地控制和配置寄存器,其中包括DMA控制寄存器的起始地址。该寄存器中的值是PCIBAR0。
2。为配置一个DMA周期有6个DMA寄存器必须被设置。DMA周期后这些寄存器将保持不变。
3.6 TH系列反射内存卡TH系列反射内存的PCI PIO设置示例
TH系列反射内存现有128M和256M两种大小的板载内存。在一些情况下,减小PCI内存地址窗口大小是有用的。
3.7TH系列反射内存网络中断处理示例
以下示例,用于生成TH系列反射内存四个基本的网络中断中的一个。这个例子也列出中断的处理的必要步骤,。使用此示例时,可以参考图2-1和图3-1所涉及的电路。
3.7.1 建立
1.通过与0到地址为PCIBAR2+offset$24的SID1清除以前保留在SID1 FIFO中的中断。
2.通过与0到地址为PCIBAR2+offset$2C的SID2清除以前保留在SID2 FIFO中的中断。
3.通过与0到地址为PCIBAR2+offset$34的SID3清除以前保留在SID3 FIFO中的中断。
4.通过与0到地址为PCIBAR2+offset$3C的SID4清除以前保留在SID4 FIFO中的中断。
-
使用读-修改-写操作,设置位置在LIER寄存器PCIBAR2+偏移$14的07位,02位,01位和位00高(1)。这使得四个基本的网络中断任何一个的可以设置信号LINTi#,LISR中全局使能位也是高(1)。
-
PCIBAR2的+偏移10寄存器LISR写值 4000。值$4000设置全局中断允许位(第14位)高(1),并清除任何无关的来源。您可能更喜欢使用读修改写操作,如果LISR中的其他中断源是保持不变。
7.使用读修改写操作,设置PCIBAR0+偏移$68 INTCSR寄存器第8位和第11位高(1)。第8位是PCI中断使能和11位是本地中断输入(LINTi#)。
3.7.2TH系列反射内存卡网络中断服务
读地址在PCIBAR0+偏移$68的INTCSR寄存器,校验本地中断输入活动位(BIT15)是否为高,如果不为高,或者另外一个INTCSR寄存器内的中断源有更高优先级,那需改变中断服务路由步骤如下。
读PCIBAR2+偏移$10LISR寄存器,确定挂起的网络中断4,挂起的网络中断3,挂起的网络中断2,挂起的网络中断1是否为高。
假设上一步表明挂起的网络中断2为高,读PCIBAR2+偏移$28中断2发送数据FIFO,并且将值存储在用户希望的地方,如果用户没有在中断中带数据,读数据FIFO这一步可以跳过。
读PCIBAR2+偏移$2C的中断2发送ID FIFO中的值,并把存储在用户希望的地方。这个值是在网络中断的源的节点ID。前提是有没有其它的网络中断存储在发送ID FIFO,读这个值就将清除网络中断2 LISR中位(01位),这反过来又将释放LINTi#。LINTi#置为无效将清除PCI中断。