一种基于fpga的千兆数据通信卡的制作方法

文档序号:7919279阅读:275来源:国知局
专利名称:一种基于fpga的千兆数据通信卡的制作方法
技术领域
本发明属于计算机领域的接口设备,尤其是一种基于FPGA的千兆数 据通信卡。
背景技术
当前在对实时性要求很高的高速数据进行传输时,由于没有合适的传 输手段,往往依赖于百兆或者千兆IP网络来传输。现有的IP传输,发送 端的IP包首先由网卡按低层的网络技术(如Ethernet、 FDDI、 ATM等等) 格式进行封装,接收端则需要进行拆包处理,这一处理过程会形成许多冗 余的传输信息,由此增加了网络传输的负担,造成网络传输效率的减低。 实际上正是由于这些大量的冗余信息而不能保证IP网络的实时性。

发明内容
本发明的目的在于克服现有技术中的不足,提供一种可有效保证网络 实时数据传输的基于FPGA的千兆数据通信卡。 本发明的目的是采用如下技术方案实现的
一种基于FPGA的千兆数据通信卡,包括PCI接口芯片、SDRAM、 FIFO 数据缓冲、FPGA处理模块、髙速串/并转换器、SFF光电信号转换器,SFF 光电信号转换器连接高速串/并转换器并双向通信,该高速串/并转换器、 PCI接口芯片、FITO数据缓冲、SDRAM均连接FPGA处理模块。
而且,所述FPGA处理模块包括接收模块、发送模块、主处理模块; 接收模块连接高速串/并转换器及接收FIFO;发送模块连接高速串/并转 换器及发送FIFO;主处理模块连接接收FIFO及发送FIFO并同时接收PC工 桥所传送的数据。
而且,SFF光电信号转换器在接收数据时将光模块转换成电信号,再 通过高速串/并转换将2. 125Gbps的串行数据转换成16bit的并行数据, 通过FPGA的接收模块将并行数据暂存在接收FIFO中,FPGA的更新数据 模块根据数据的节点号、地址等信息将数据写入对应的SDRAM中,本地计 算机通过PCI接口将更新数据读入本地计算机。
而且,本地计算机通过PCI接口将本地更新的数据经过FPGA的主模 块根据数据的节点号、地址等信息将数据写入对应的SDRAM中,然后通过 FPGA的发送模块将并行数据暂存在发送FIFO中,再通过高速并/串转换 将16bH的并行数据转换成2. 125Gbps的串行数据,SFF光电信号转换器将电模块转换成光信号。
而且,所采用的软件驱动采用下列步骤
(1) .系统安装设备时设置状态变量;
(2) .发送数据的设备先打开设备再将要发送的数据写入设备内存中;
(3) .接收数据的设备先打开设备再将数据从设备内存读出;
(4) .关闭设备。
本发明的优点和积极效果是
1. 本千兆数据通信卡利用FPGA技术可以提高明显减少系统的器件数 量,减少成本、提高系统的可靠性,并且可以对产品进行平滑升级。该技
术的核心是利用FPGA技术实现了本地数据的更新,以及通过光缆使得下 一个节点的相应内存的数据680ns后也得到更新,此卡适用于Windows、 Linux、 VxWorks等不同的操作系统。采用本千兆数据通信卡,省去了数 据的封装和拆包,节约了计算机的处理时间,对于2.125Gbps的高速数据 传输,效果更加明显。
2. 本千兆数据通信卡可实现传输距离远,传输距离可以达到300m(多 模光纤)、10km (单模光纤)。
3. 本发明适用领域广泛,主要用于综合船桥系统各设备之间的数据传 输、大规模的实时仿真系统、轧钢、航海、航空航天等实时性要求较高的 领域。


图1为本发明的典型应用组网图; 图2为本发明的硬件模块图; 图3为本发明的驱动流程图。
具体实施例方式
下面通过具体实施例对本发明作进一步详述,以下实施例只是描述性 的,不是限定性的,不能以此限定本发明的保护范围。
一种基于FPGA的千兆数据通信卡,其模块如图2所示,硬件主要包 括PCI接口芯片(PCI桥)、F工FO数据缓冲、SDRAM存储器、转换器(SFF 光电信号)、高速串/并转换器、FPGA处理模块,PCI接口芯片连接PCI 总线,SFF光电信号转换器连接光纤网。该模块的具体连接是SFF光电 信号转换器连接高速串/并转换器并双向通信,该高速串/并转换器连接 FPGA处理模块;FPGA处理模块包括接收模块、发送模块、主处理模块, 接收模块连接高速串/并转换器及接收FIFO,发送模块连接高速串/并转换器及发送FIFO,主处理模块连接接收FIFO及发送FIFO并同时接收PCI 桥所传送的数据,PCI桥连接SDRAM存储器。 本发明的工作原理是
接收数据时,是通过光纤接收上一个节点的更新数据一高速串/并转 换一FPGA处理将更新的数据暂存到接收FIFO—通过FPGA处理根据节点 号、地址等信息将数据写入到相应的SDRAM中一本地计算机可以通过PCI 接口将更新的数据读入本地计算机中,以备应用;即数据光信号通过SFF 光电信号转换器转换成电信号,再通过高速串/并转换将2. 125Gbps的串 行数据转换成16bit的并行数据,通过FPGA的接收模块将并行数据暂存 在接收FIFO中,FPGA的更新数据模块根据数据的节点号、地址等信息将 数据写入对应的SDRAM中,本地计算机通过PCI桥将更新数据读入本地计 算机。
发送数据时,将需要传输的数据通过PCI接口直接写入本地节点的 SDRAM中一通过FPGA处理一将更新单元的数据转移到发送FIFO—高速并/ 串转换一通过光纤发送。
典型应用如图1所示,组网方式是第--个节点的发送端TX1与第二个 节点的接收端RX2连接、第二个节点的发送端TX2与第三个节点的接收端 RX3连接、…、第n (n《256)个节点的发送端TXn和第一个节点的接收 端RX1连接。
本发明可以作为双端口进行使用 一个端口为本地端口,允许本地主 机对千兆数据通信卡的地址空间进行写(读)操作;另一端口则通过光缆 联接一环形网,如此下一块千兆数据通信卡会接受数据;同时本地内存更 新对应的地址空间,并将数据通过光缆传输出去,这样使所有节点的数据 保持一致,从一个节点的数据发送到另一个节点的数据接收和更新所用的 时间是确定的680ns。
本发明每个模块的功能如下
PCI总线接口芯片负责与PCI总线的各个协议通信,可以将接口配 置成33MHz或者66MHz。
FIFO:包括发送FIFO和接收FIFO,用于发送数据和接收的缓存。 实现数据速率匹配。
SDRAM:为128MB同步DRAM,用于需要传输数据的保存,本地 更新数据只需要更新相应的地址内存。SFF光电信号转换器负责光/电、电/光转换。
FPGA模块FPGA模块分为接收模块、发送模块、数据更新模块以 及恶意包处理模块,FPGA是本卡的核心,下面分别说明
1. 发送模块(TX Module)
当FPGA检测到更新高速并/串转换器错误指示信号TX—ER有效(并 /串转换器异常)时,等待高速串/并转换器正常;当检测到TX—ER无效
(并/串转换器正常)时,此时发送FIFO为非空(Empty指示另无效), 则将发送FIFO中数据发送到高速并/串转换器。
2. 接收模块(RX Module)
当FPGA检测到更新高速串/并转换器错误指示信号RX一ER有效(串 /并转换器异常)时,等待高速串/并转换器正常;当检测到RX一ER无效 (串/并转换器正常)时,此时接收FIFO为非空(Almost—Empty指示为 无效),则将高速串/并转换器的数据暂存于发送FIFO中。
3. 主处理模块(MainModule)
主处理模块有3个主要功能, 一个是根据要求的SDRAM地址将本 地PCI接口的数据写入相应的地址中;第二个功能是根据发送FIFO的 Almost—Full状态将本地的更新数据写入发送FIFO;第三个功能是根据接 收FIFO的empty状态、节点号以及地址信息将接收FIFO的数据写入 SDRAM中。
下面叙述本发明的软件情况
以windows操作系统平台为例,驱动程序实现以下四类功能
1. 打开\关闭本卡;
2. 板卡的配置;
3. 数据传输;
4. 中断控制与中断操作; 程序步骤-
1. 系统安装设备时设置状态变量;
2. 发送数据的设备先打开设备再将要发送的数据写入设备内存中;
3. 接收数据的设备先打开设备再将数据从设备内存读出;
4. 关闭设备。 l.基本函数说明
(1):打开
函数名称OSM2gOpen (char *DevicePath, OSM2GHANDLE *rh);
功能根据路径打开设备,如果打开成功则返回设备句柄。设备句柄OSM2GHANDLE用于标识用户与设备的一个连接;
(2) :关闭
函数名称OSM2gClose(OSM2GHANDLE *rh);
功能结束与设备的连接,关闭卡设备。
(3) :得到当前配置信息
函数名称OSM2gGetConfig(OSM2GHANDLE rh, OSM2GCONFIG *Config);
功能根据设备句柄得到当前设备的配置信息。配置信息保存在结构体 OSM2GCONFIG中,包括设备节点号,板卡ID,设备名称,设备内存大 小,驱动版本信息,板卡版本和PCI版本信息。
(4) 得到当前设备结点ID
函数名称OSM2gNodelD(OSM2GHANDLE rh, OSM2G—NODE 承NodeldPtr);
功能根据设备句柄得到设备的结点ID。每个设备的结点ID在网络中是
唯一的。
(5) 得到当前设备内存的大小
函数名称OSM2gSize(OSM2GHANDLE rh, OSM2G—UINT32 *SizePtr);
功能根据设备句柄得到设备中全部可用的空间大小。
(6) 重置内存指针
函数名称OSM2gFirst(OSM2GHANDLE rh, OSM2G—UINT32 *FirstPtr);
功能该函数返回内存中可用空间的首地址。指针+FirstPtr指向映射到 虚拟内存中的内存地址空间。 (7)设置DMA传输阀值
函数名称OSM2gSetDMAThreshold( OSM2GHANDLE rh, OSM2G一UINT32 Threshold);
功能 一设置一个阀值,当要传输的数据量大于等于这个阀值时设备传输
数据将采用DMA方式进行。
(8) 设置DMA数据传输ByteSwap
函数名称OSM2gSetDMAByteSwap(OSM2GHANDLE rh, OSM2G一BOOL byteSwap); 功能设置DMA方式传输数据时是否开启数据位交换ByteSwap功能。 (适用于采用big endian顺序的处理器)
(9) 设置PIO数据传输ByteSwap
函数名称OSM2gSetPIOByteSwap(OSM2GHANDLE rh, OSM2G—BOOLbyteSwap);
功能设置PIO方式传输数据时是否开启数据位交换ByteSwap功能。(适 用于采用big endian顺序的处理器)
(10) 读出数据
函数名称OSM2gRead(OSM2GHANDLE rh, OSM2G—UINT32 Offset, void *Buffer, OSM2G—UINT32 Length);
功能根据指定的S备句柄,读出设备内存中偏移量为Offset,长度为 Lengh的数据到本机+Buffer所指的缓存区。
(11) 写入数据
函数名称OSM2gWrite(OSM2GHANDLE rh,OSM2G—UINT32 Offset, void承Buffer,OSM2G一UINT32 Length);
功能根据指定的S备句柄,将+Buffer所指的缓存区数据写入设备内存 中。偏移量为Offset,数据长度为Lengh。
(12) 开启事件中断
函数名称OSM2gEnableEvent(OSM2GHANDLE rh, SM2GEVENTTYPE EventType);
功能根据给定的设备句柄,设置设备能够接收其它节点发出的中断事
件。EventType为事件类型。
(13) 关闭事件中断
函数名称OSM2gDisableEvent(OSM2GHANDLE rh, OSM2GEVENTTYPE EventType);
功能根据给定的设备句柄,设置设备不再响应其它节点发出的中断事 件。EventType为事件类型。 (14)发送中断事件
函数名称OSM2gSendEvent(OSM2GHANDLE rh,OSM2G—NODE ToNode, OSM2GEVENTTYPE EventType, OSM2G一UINT32 ExtendedData);
功能向指定的节点ToNode发送中断事件,中断事件类型为EventType。 ExtendedData为用户数据。 (15)清除中断事件
函数名称OSM2gClearEvent(OSM2GHANDLE rh, OSM2GEVENTTYPE EventType);
功能清除中断队列中全部或者某个指定的中断事件。EventType为指
定的中断类型。
权利要求
1. 一种基于FPGA的千兆数据通信卡,其特征在于包括PCI接口芯片、SDRAM、FIFO数据缓冲、FPGA处理模块、高速串/并转换器、SFF光电信号转换器,SFF光电信号转换器连接高速串/并转换器并双向通信,该高速串/并转换器、PCI接口芯片、FIFO数据缓冲、SDRAM均连接FPGA处理模块。
2. 根据权利要求1所述的一种基于FPGA的千兆数据通信卡,其 特征在于所述FPGA处理模块包括接收模块、发送模块、主处理模 块;接收模块连接高速串/并转换器及接收FIFO;发送模块连接高速 串/并转换器及发送FIFO;主处理模块连接接收FIFO及发送FIFO并 同时接收PCI桥所传送的数据。
3. 根据权利要求1所述的一种基于FPGA的千兆数据通信卡,其 特征在于:SFF光电信号转换器在接收数据时将光模块转换成电信号, 再通过高速串/并转换将2. 125Gbps的串行数据转换成16bit的并行 数据,通过FPGA的接收模块将并行数据暂存在接收FIFO中,FPGA 的更新数据模块根据数据的节点号、地址等信息将数据写入对应的 SDRAM中,本地计算机通过PCI接口将更新数据读入本地计算机。
4. 根据权利要求3所述的一种基于FPGA的千兆数据通信卡,其 特征在于本地计算机通过PCI接口将本地更新的数据经过FPGA的 主模块根据数据的节点号、地址等信息将数据写入对应的SDRAM中, 然后通过FPGA的发送模块将并行数据暂存在发送FIFO中,再通过高 速并/串转换将16bit的并行数据转换成2. 125Gbps的串行数据,SFF 光电信号转换器将电模块转换成光信号。
5. 根据权利要求3所述的一种基于FPGA的千兆数据通信卡,其 特征在于所采用的软件驱动采用下列步骤a).系统安装设备时设置状态变量;(2) .发送数据的设备先打开设备再将要发送的数据写入设备内存中;(3) .接收数据的设备先打开设备再将数据从设备内存读出; U).关闭设备。
全文摘要
本发明涉及一种基于FPGA的千兆数据通信卡,包括PCI接口芯片、FIFO数据缓冲、SDRAM、SFF光电信号转换器、高速串/并转换器、FPGA处理模块,SFF光电信号转换器连接高速串/并转换器并双向通信,该高速串/并转换器、PCI接口芯片、FIFO数据缓冲、SDRAM均连接FPGA处理模块。本发明利用FPGA技术可以明显减少系统的器件数量,减少成本、提高系统的可靠性,并且可以对产品进行平滑升级,实现传输距离远,传输距离可以达到300m(多模光纤)、10km(单模光纤),主要用于综合船桥系统各设备之间的数据传输、大规模的实时仿真系统、轧钢、航海、航空航天等实时性要求较高的领域。
文档编号H04L29/06GK101447988SQ20081015334
公开日2009年6月3日 申请日期2008年11月25日 优先权日2008年11月25日
发明者昕 仲, 喆 周, 阳 曹, 赵子阳 申请人:中国船舶重工集团公司第七0七研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1