基于PCI-E总线的直接存取数据传输控制装置转让专利

申请号 : CN200810106201.4

文献号 : CN101276318B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张勇曲国远朱晓颖李栋段东升林晓令

申请人 : 北京航空航天大学

摘要 :

本发明公开了一种基于PCI-E总线的直接存取数据传输控制装置,所述直接存取数据传输控制装置内嵌在FPGA芯片中,用于完成上位机(11)与下位机板卡(13)之间通过PCI-E总线(12)的高速数据流控制;所述基于PCI-E总线的直接存取数据传输控制装置由寄存器监控单元(1)、寄存器(2)、解码单元(3)、发送单元(4)和接收信用处理单元(5)组成。本发明采用Verilog2001编程技术在FPGA芯片(14)上形成用户逻辑控制单元(132)和直接存取数据传输控制装置,采用IP复用技术在FPGA芯片(14)上形成缓存器(131)和总线接口(134)。

权利要求 :

1.一种基于PCI-E总线的直接存取数据传输控制装置,所述直接存取数据传输控制装置内嵌在FPGA芯片中,用于完成上位机(11)与下位机板卡(13)之间通过PCI-E总线(12)的高速数据流控制,其特征在于:由寄存器监控单元(1)、寄存器(2)、解码单元(3)、发送单元(4)和接收信用处理单元(5)组成;

所述寄存器监控单元(1)用于(A)对上位机(11)通过PCI-E总线(12)下发的符合PCI-E总线协议定义的存储器写事务D134-1、进行接收,所述写事务中至少包括表征读取请求启动信息的有效数据D1-1、寄存器(2)的偏移地址和有效数据的长度,所述表征读取请求启动信息的有效数据D1-1有上位机(11)的内存首地址PAR、下位机板卡(13)中DDR的地址LAR、需要从缓存器(131)中提取的数据源D13字节数CBR和传输数据状态CSR四种类型,所述传输数据状态CSR由读/写状态位、开始状态位和工作状态位组成,工作状态位包括有两种状态,其中编译语言中的“1”表示控制装置处于工作状况,编译语言中的“0”表示控制装置处于空闲状况;(B)依照存储器写事务D134-1中寄存器(2)的偏移地址将存储器写事务D134-1中的读取请求启动信息的有效数据D1-1写入寄存器(2);(C)依据解码单元(3)输出的触发指令D3-1提取寄存在寄存器(2)中的表征读取请求启动信息的有效数据D1-1,并组成启动信息集合D1-2={PAR,LAR,CBR,CSR}输出给解码单元(3);

所述寄存器(2)对接收的表征读取请求启动信息的有效数据D1-1进行存储;

所述解码单元(3)用于(A)对接收的启动信息集合D1-2={PAR,LAR,CBR,CSR}进行分析,并采用PCI-E总线协议规定的带数据有效载荷数据包的组装原则获得数据包头信息集合D3-3和传输数据包头的总个数;(B)依据发送单元(4)下发的发送完成信号D4-1将发送新包信号D3-2和数据包头信息集合D3-3传输给发送单元(4);

(C)依据传输数据包头的总个数向发送单元(4)发送中断请求信号D3-4;

所述数据包头信息集合中包括有数据有效载荷大小Length、属性Attr、中毒标志EP、摘要标志TD、传输类别TC、类型Type、格式Fmt、读请求完成前的剩余字节数ByteCount、修改的字节计数BCM、完成状况代码CS、完成者的标识号CompleterID、低地址LowerAddress、标记Tag、请求者的标识号RequesterID;

所述发送单元(4)用于(A)依据接收的数据包头信息集合D3-3中数据有效载荷大小Length对缓存器(131)中数据进行读取,读取由数据有效载荷大小Length所表示数量的有效数据D131,其中缓存器(131)的启动由控制信号D4-2控制;(B)对有效数据D131和数据包头信息集合D3-3按照PCI-E总线协议中带数据完成数据包的格式要求进行打包,获得读完成事务D4-3,并将读完成事务D4-3发送到PCI-E总线接口(134);(C)依据中断请求信号D3-4将工作状态信号D4-4发送到用户逻辑控制单元(132);(D)将中断请求信号D3-4写入总线接口;

所述接收信用处理单元(5)用于(A)对上位机(11)通过PCI-E总线(12)下发的存储器写事务D134-1进行接收,依据存储器写事务D134-1获得需要占用的信用值;(B)对PCI-E总线(12)下发的存储器写事务D134-1接收状态信号D134-2进行监测;(C)依照接收状态信号D134-2,向总线接口(134)发送可释放的信用值D5-1。

2.根据权利要求1所述的直接存取数据传输控制装置,其特征在于:所述FPGA芯片选取latticeSC系列芯片。

3.根据权利要求1所述的直接存取数据传输控制装置,其特征在于:采用Verilog2001编程技术在FPGA芯片(14)上形成用户逻辑控制单元(132)和直接存取数据传输控制装置,采用IP复用技术在FPGA芯片(14)上形成缓存器(131)和总线接口(134)。

说明书 :

技术领域

本发明涉及一种数据流向控制装置,更特别地说,是指一种针对PCI-E总线的直接存取数据传输控制装置,本发明的直接存取数据传输控制装置是一种支持高速串行传输的控制装置。

背景技术

目前总线技术已经成为测试技术发展的主要瓶颈,传统的并行总线很难满足日益增长的数据带宽要求。PCI Express(PCI-E)总线是第三代高速串行总线,它一经出现就显示出其卓越的性能。
参见图1所示,目前很多数据采集卡,图形处理器,就利用了PCI Express总线12高速的特性,使之完成批量数据从下位机板卡13到上位机11的快速传输,进而得到良好的系统性能。
现有的下位机板卡向上位机(如PC机)传输数据时,下位机板卡的CPU就要完成数据计数,地址累加,数据缓存等全部工作,这样批量的数据传输就需要多次中断完成,这样严重降低了下位机板卡系统性能。

发明内容

本发明的目的是提供一种基于PCI-E总线的直接存取数据传输控制装置,该直接存取数据传输控制装置内嵌入下位机板卡的FPGA芯片中,通过该控制装置能够在下位机板卡与上位机(如PC机)之间建立一条高速数据传输通道。
本发明的一种基于PCI-E总线的直接存取数据传输控制装置,所述直接存取数据传输控制装置内嵌在FPGA芯片中,用于完成上位机(11)与下位机板卡(13)之间通过PCI-E总线(12)的高速数据流控制,其由寄存器监控单元(1)、寄存器(2)、解码单元(3)、发送单元(4)和接收信用处理单元(5)组成;
所述寄存器监控单元(1)用于(A)对上位机(11)通过PCI-E总线(12)下发的符合PCI-E总线协议定义的存储器写事务d134-1进行接收,所述写事务中至少包括表征读取请求启动信息的有效数据D1-1、寄存器(2)的偏移地址和有效数据的长度,所述表征读取请求启动信息的有效数据D1-1有上位机(11)的内存首地址PAR、下位机板卡(13)中DDR的地址LAR、需要从缓存器(131)中提取的数据源D13字节数CBR和传输数据状态CSR四种类型,所述传输数据状态CSR由读/写状态位、开始状态位和工作状态位组成,工作状态位包括有两种状态,其中编译语言中的“1”表示控制装置处于工作状况,编译语言中的“0”表示控制装置处于空闲状况;(B)依照存储器写事务D134-1中寄存器(2)的偏移地址将存储器写事务D134-1中的有效数据D1-1写入寄存器(2);(C)依据解码单元(3)输出的触发指令D3-1提取寄存在寄存器(2)中的表征启动信息的有效数据D1-1,并组成启动信息集合D1-2={PAR,LAR,CBR,CSR}输出给解码单元(3);
所述寄存器(2)对接收的表征启动信息的有效数据D1-1进行存储;
所述解码单元(3)用于(A)对接收的启动信息集合D1-2={PAR,LAR,CBR,CSR}进行分析,并采用PCI-E总线协议规定的带数据有效载荷数据包的组装原则获得数据包头信息集合D3-3和传输数据包头的总个数;(B)依据数据处理及发送单元(4)下发的发送完成信号D4-1将发送新包信号D3-2和数据包头信息集合D3-3传输给数据处理及发送单元(4);(C)依据传输数据包头的总个数向数据处理及发送单元(4)发送中断请求信号D3-4;
所述数据包头信息集合中包括有数据有效载荷大小Length、属性Attr、中毒标志EP、摘要标志TD、传输类别TC、类型Type、格式Fmt、读请求完成前的剩余字节数ByteCount、修改的字节计数BCM、完成状况代码CS、完成者的标识号CompleterID、低地址LowerAddress、标记Tag、请求者的标识号Re questerID;
所述数据处理及发送单元(4)用于(A)依据接收的数据包头信息集合D3-3中数据有效载荷大小Length对数据缓存器(131)中数据进行读取,读取由数据有效载荷大小Length所表示数量的数据D131,其中数据缓存器(131)的启动由控制信号D4-2控制;(B)对有效数据D131和数据包头信息集合D3-3按照PCI-E总线协议中带数据完成数据包的格式要求进行打包,获得读完成事务D4-3,并将读完成事务D4-3发送到PCI-E总线接口(134);(C)依据中断请求信号D3-4将工作状态信号D4-4发送到用户控制逻辑(132);(D)将中断请求信号D3-4写入总线接口;
所述接收信用处理单元(5)用于(A)对上位机(11)通过PCI-E总线(12)下发的存储器写事务D134-1进行接收,依据存储器写事务D134-1获得需要占用的信用值;(B)对PCI-E总线(12)下发的存储器写事务D134-1接收状态信号D134-2进行监测;(C)依照接收状态信号D134-2,向总线接口(134)发送可释放的信用值D5-1。
本发明基于PCI-E总线的直接存取数据传输控制装置的优点:(1)以PCIExpress总线为基础,能够在下位机与上位机间实现批量数据高速传输;(2)采用模块化设计思想,增加了系统的可移植性;(3)以latticeSC系列芯片为平台,成本低;(4)寄存器没有挂在PCI Express的配置空间,而是以配置信息方式进行存储有效数据,提高了数据传输的速度。

附图说明

图1是基于PCI-E总线的上位机与下位机板卡之间的数据传输简示图。
图2是本发明直接存取数据传输控制装置的结构框图。
图3是本发明直接存取数据传输控制装置的处理流程图。

具体实施方式

下面将结合附图对本发明作进一步的详细说明。
在本发明中,下位机板卡13中至少包括有FPGA芯片14,该FPGA芯片选取latticeSC系列芯片。本发明采用Verilog2001编程技术在FPGA芯片14上形成用户逻辑控制单元132和直接存取数据传输控制装置,采用IP复用技术在FPGA芯片14上形成缓存器131和总线接口134,所述直接存取数据传输控制装置能够在下位机板卡13与上位机11之间建立一条高速数据传输通道。
在本发明中,上位机11为PC机。其硬件运行环境:最低配置CPU 2.0G,1G内存,30G硬盘。其软件运行环境:Windows 2000/XP/2003操作系统。
请参见图2所示,本发明是一种基于PCI-E总线的直接存取数据传输控制装置,用于完成上位机11与下位机板卡13之间的高速数据流控制。所述直接存取数据传输控制装置由寄存器监控单元1、寄存器2、解码单元3、发送单元4和接收信用处理单元5组成。
在本发明中,寄存器监控单元1用于(A)对上位机11通过PCI-E总线12下发的符合PCI-E总线协议定义的存储器写事务D134-1进行接收,所述写事务中至少包括表征读取请求启动信息的有效数据D1-1、寄存器2的偏移地址和有效数据的长度,所述表征读取请求启动信息的有效数据D1-1有上位机11的内存首地址PAR、下位机板卡13中DDR(存储器,用于存储数据源D13,DDR在图2中数字符号为133)的地址LAR、需要从缓存器131中提取的数据源D13字节数CBR和传输数据状态CSR四种类型,所述传输数据状态CSR由读/写状态位、开始状态位和工作状态位组成,工作状态位包括有两种状态,其中编译语言中的“1”表示控制装置处于工作状况,编译语言中的“0”表示控制装置处于空闲状况;(B)依照存储器写事务D134-1中寄存器2的偏移地址将存储器写事务D134-1中的有效数据D1-1写入寄存器2;(C)依据解码单元3输出的触发指令D3-1提取寄存在寄存器2中的表征启动信息的有效数据D1-1,并组成启动信息集合D1-2={PAR,LAR,CBR,CSR}输出给解码单元3。
在本发明中,寄存器2对接收的表征启动信息的有效数据D1-1进行存储。
在本发明中,解码单元3用于(A)对接收的启动信息集合D1-2={PAR,LAR,CBR,CSR}进行分析,并采用PCI-E总线协议规定的带数据有效载荷数据包的组装原则获得数据包头信息集合D3-3和传输数据包头的总个数;(B)依据数据处理及发送单元4下发的发送完成信号D4-1将发送新包信号D3-2和数据包头信息集合D3-3传输给数据处理及发送单元4;(C)依据传输数据包头的总个数向数据处理及发送单元4发送中断请求信号D3-4。
所述数据包头信息集合中包括有数据有效载荷大小Length、属性Attr、中毒标志EP、摘要标志TD、传输类别TC、类型Type、格式Fmt、读请求完成前的剩余字节数ByteCount、修改的字节计数BCM、完成状况代码CS、完成者的标识号CompleterID、低地址LowerAddress、标记Tag、请求者的标识号Re questerID。
在本发明中,数据处理及发送单元4用于(A)依据接收的数据包头信息集合D3-3中数据有效载荷大小Length对数据缓存器131中数据进行读取,读取由数据有效载荷大小Length所表示数量的数据D131,其中数据缓存器131的启动由控制信号D4-2控制;(B)对有效数据D131和数据包头信息集合D3-3按照PCI-E总线协议中带数据完成数据包的格式要求进行打包,获得读完成事务D4-3,并将读完成事务D4-3发送到PCI-E总线接口134;(C)依据中断请求信号D3-4将工作状态信号D4-4发送到用户控制逻辑132;(D)将中断请求信号D3-4写入总线接口。
在本发明中,接收信用处理单元5用于(A)对上位机11通过PCI-E总线12下发的存储器写事务D134-1进行接收,依据存储器写事务D134-1获得需要占用的信用值;(B)对PCI-E总线12下发的存储器写事务D134-1接收状态信号D134-2进行监测;(C)依照接收状态信号D134-2,向总线接口134发送可释放的信用值D5-1。
在本发明中,直接存取数据传输控制装置的硬件选取:
(一)寄存器2的设计
寄存器2空间是本发明直接存取数据传输控制装置与上位机11驱动交互的桥梁。当上位机11有准备发起读取请求时,要先以存储器写事务D134-1的形式配置寄存器2。配置后的寄存器当发现上位机11下发读取请求时,则开始进行将下位机板卡13中的数据源D13进行传输。
PCI-E总线接口121的配置空间向直接存取数据传输控制装置申请了两段存储器空间。其中,第一段存储空间(BAR1)用于挂接寄存器2;而第二段存储空间(BARO)申请的空间可用于正常的数据处理及发送单元4向PCI-E总线接口134写入存储器事务访问。
(二)寄存器监控单元1的设计
寄存器监控单元1接收上位机11发起的存储器写事务D134-1,即对寄存器2的配置请求,根据上位机11目标偏移地址的不同,判断要求写入寄存器2的位置。从而提取出读取请求的上位机内存首地址,申请的数据量,以及何时发起读取操作等信息。然后通知解码单元3有新的读取操作,同时将提取到的启动信息集合D1-2={PAR,LAR,CBR,CSR}发送给解码单元3。在上位机11没有发出读取请求时,寄存器监控单元1处于空闲状态。当上位机11发起读取请求,并通过存储器写事务D134-1向寄存器2中写入数据时,总线接口134的接收开始信号和BAR1标志位将置“1”,表示有事务请求访问本地存储器空间,即寄存器2的空间。这时寄存器监控单元1开始接收存储器写事务D134-1数据头的第一个双字。如果第一个双字没有错误,则转为接收数据头的第二个双字和存储器写事务D134-1的数据载荷,获得存储器写事务的地址和要向寄存器2中写入的有效数据。最终根据偏移地址的不同,将上位机11的内存首地址PAR、下位机板卡13中DDR的地址LAR、需要从缓存器131中提取的数据源D13字节数CBR和传输数据状态CSR写入寄存器2的不同位置,暂存起来。当PCI-E首地址寄存器PAR及字节计数器CBR全部配置好,且控制状态寄存器(CSR)工作状态位“1”,标志上位机11对寄存器2配置完成。直接存取数据传输控制装置14准备开始读取操作。寄存器监控单元1将寄存器2中的信息提取出来,组合成启动信息集合D1-2={PAR,LAR,CBR,CSR}通告给解码单元3。在触发信号D3-1到来时,解码单元3进入完成状态。。
(三)接收信用处理单元5的设计
接收信用处理单元5用于释放下位机PCI-E总线缓冲区。当寄存器监控单元1接收到上位机11发起的写存储器事务D134-1时,接收信用处理单元5先判断数据包的大小,根据PCI-E总线协议规范计算出需要占用的信用值;当事务传输结束后,接收信用处理单元5报告PCI-E总线数据包处理完成,并且报告可释放的信用值D5-1,总线将释放相应的缓冲区,以接收新的事务。
(四)解码单元3的设计
解码单元3从寄存器监控单元1中获得启动信息集合D1-2={PAR,LAR,CBR,CSR},然后根据PCI-E总线协议规定的带数据有效载荷数据包的组装原则获得需发送的数据包个数和数据包头信息集合D3-3,逐一向发送到数据处理及发送单元4。解码单元3根据数据处理及发送单元4下发的发送完成信号D4-1所指示的工作状态,判断是否开始打包下一个事务请求,同时根据需发送的数据包个数判断当前的事务请求是否为直接存取数据传输控制装置14的最后一个事务请求,当完成最后一个事务请求的发送时,解码单元3将中断请求信号发送到数据处理及发送单元4。
在没在读取请求时,解码单元3处于空闲状态,等待新的读取事务。当有新的读取请求发起时,解码单元3开始获取数据包头信息,在这一状态中,根据寄存器监控单元1提供的信息启动信息集合D1-2={PAR,LAR,CBR,CSR},判断读取请求的类型。因为是上行数据流模式的直接存取数据,所以事务类型一定是存储器写请求。然后再根据存储器事务不能超越4KB的边界限制,以及不能超越1KB的PCI-E总线接口134设定的最大数据包大小,计算出本次传递的数据大小。一个时钟周期后开始计算数据包头信息集合D3-3中的除数据有效载荷大小Length外的其他信息,并将数据包头信息集合D3-3传送给数据处理及发送单元4,通过发送新包信号D3-2报告有新的数据包传输请求。在数据处理及发送单元4返回发送完成信号D4-1后,如果读取请求的数据没有传输结束,则解码单元3开始准备下一次存储器事务的数据头信息集合D3-3。如果数据传输全部结束,解码单元3回到空闲状态,等待新的启动信息集合D1-2={PAR,LAR,CBR,CSR}。
(五)数据处理及发送单元4的设计
正常状态下数据处理及发送单元4处于空闲状态;当检测到解码单元3发送新包信号D3-2通知新的请求时,从解码单元3中取得头信息集合D3-3,提取其中的数据有效载荷大小Length,等待数据缓存器131中数据准备完成后,向数据缓存器131发出控制信号D4-2,启动数据传输,从数据缓存器131中读取数据有效载荷大小Length所表示数量的有效数据D131;然后将解码单元3提供的数据头信息和有效数据按照PCI-E总线协议中带数据完成数据包的格式要求进行打包获得读完成事务D4-3,检查远端信用,如果信用足够,向PCI-E总线端口134发送读完成事务D4-3,在第一个时钟周期发送读完成事务D4-3数据包的第一、第二双字,第二个时钟周期发送读完成事务D4-3数据包的第三、第四双字;其后的时钟周期以此类推,直到传输完整个读完成事务D4-3数据包;传输结束后重新回到空闲状态。
(六)数据缓存器131的设计
数据缓存器131是直接存取数据传输控制装置与用户逻辑控制单元132的数据接口。当发起读取操作时,直接存取数据传输控制装置通知用户逻辑控制单元132向数据缓存器131中传输数据(数据源D13)。当数据量达到请求时,直接存取数据传输控制装置将有效数据从数据缓存器131中读出,作为存储器请求TLP数据包的有效载荷,传送给上位机11主存储器中。
本发明的直接存取数据传输控制装置的处理流程(参见图3所示)为:
步骤101:系统初始化后,执行步骤102;
步骤102:配置寄存器2。依据存储器写事务D134-1,即对寄存器2的配置请求,根据上位机11目标偏移地址的不同,判断要求写入寄存器2的位置。从而提取出读取请求的上位机内存首地址PAR,申请的数据量,以及何时发起读取操作等信息;
步骤103:判断寄存器2是否配置完成。若“否”,执行步骤102继续进行存器2的配置;若“是”,则执行步骤104;
步骤104:解码启动信息集合D1-2={PAR,LAR,CBR,CSR},获得数据包头信息集合D3-3和传输数据包头的总个数,根据传输数据包头的总个数读取数据缓存器131中的数据D131,将数据包头信息集合D3-3和有效数据组合,打包成读完成数据包;
D3-3=Length,Attr,EP,TD,TC,Type,Fmt,ByteCount,BCM,CS,CompleterID,LowerAddress,Tag,RequesterID
步骤105:判断远端信用是否足够。如果信用足够,执行步骤107;如果信用不足,执行步骤106;
步骤106:等待信用空间;
步骤107:向PCI-E总线发起读完成事务请求;
步骤108:判断本次直接存取数据传输的所有事务请求是否都已完成;若未完成,执行步骤104;若已经完成,执行步骤109;
步骤109:向上位机发出中断请求信号D3-4,报告直接存取数据传输完成。
步骤110:数据传输结束。