Fpga环境下多用途pci接口及其数据传输方法

文档序号:6427583阅读:128来源:国知局
专利名称:Fpga环境下多用途pci接口及其数据传输方法
技术领域
本发明涉及一种FPGA环境下多用途PCI接口以及依据该接口的数据传输方法, FPGA为Field — Programmable Gate Array的缩略语,即现场可编程门阵列。
背景技术
PCI(Peripheral Component Interconnect),是 SIG (Special Interest Group) 推出的总线结构。1992年起,先后有Intel、HP、IBM、Apple、DEC、Compaq、NEC等著名的厂商加盟重新组建。32位PCI总线是以ISA/EISA等PC用低速总线的替代者的身份出现的, 它之所以成为局部总线的主流,是由其所具有的一些显著的特点决定的。具体如下
(1)传输效率高,扩展性好
PCI总线典型的工作频率为33MHz,支持66MHz扩展。它的总线宽度为32位,并可以扩展到64位。当较多外设接到CPU总线上而使总线驱动能力不足时,可采用多条PCI总线, 这些总线可以并发工作,每条总线上最大可以接4个PCI设备。(2)多总线共存,稳定可靠
PCI总线可与ISA、EISA、VESA等总线兼容,由于PCI规范与CPU及时钟无关,也就是说, PCI的插卡是通用的,可插到任何一个有PCI总线的系统上去(一般对同一类型CPU的系统而言)。PCI卡通用于所有的X86体系结构的微机,不论是486还是奔腾CPU,也不管主频是多少赫兹,都大大简化了系统设计,同时保证了 PCI设备的工作状态的稳定。(3)独立于处理器
PCI可支持即插即用,所谓“即插即用”,就是要求各种插卡插入系统就能工作,而不必手动设置开关或跳线,即有自动配置功能。PCI总线为每个PCI插槽定义了相应的配置空间,一旦PCI卡插入系统,系统BIOS能根据从配置空间读到的关于该扩展卡的信息,结合系统实际情况为插卡分配内存或1/0地址、中断和某些定时信息,实现自动配置功能,从根本上免除了人工配置。(5) PCI总线应用广泛
PCI总线的应用十分广泛。几乎每台PC及工控机均有PCI总线,且均以PCI总线为主, 其他总线为辅;目前大部分的视频采集系统,数据采集系统,网络接口卡都是基于PCI接口总线实现的。PCI总线由于其速度快,扩展性好,兼容性强,稳定性高的特点,在进行中高速的系统应用如视频采集,数据采集,千兆网卡实现时,是非常理想的选择。但当要开发如上应用时,有两种方法,一种是根据自身需要自行设计PCI接口,另一种方法是利用现在已有的 PCI接口芯片如PLX公司的90系列PCI芯片为基础进行开发。前一种方法需要重新设计整个PCI接口,需要对PCI接口协议有深入的理解和把握,开发时间周期长,难度大;后一种方法虽然开发周期和难度都改进了,但购买芯片的费用仍然会使得开发成本上升,而且其提供的用户接口仍然会有点复杂,当然这是以获得相对较高的灵活性为代价的。因此,从减轻PCI接口开发成本,降低用户接口使用难度的角度,设计一个易于用户使用,适用于视频图像数据,数据采集,PCI千兆网络应用的PCI接口是有意义的。

发明内容
因此,本发明的目的在于提供一种易于用户使用的FPGA环境下多用途PCI接口, 同时还提供了一种依据该多用途PCI接口的数据传输方法。依据本发明,采用带DMA功能的PCI接口的实现方法,把接口实现分成PCI主设备模块,PCI从设备模块,以及PCI寄存器模块单独实现。对PCI用户端接口采用简单易实现的FIFO接口,对用户隐藏DMA控制细节,降低用户接口设计复杂度。在大容量数据传输中, 根据接口要求的数据格式封装数据,简单的将数据写入FIFO中就能将数据以DMA的方式实现,简化控制逻辑复杂度,提高用户接口开发的效率。因此
依据本发明一个方面的FPGA环境下多用途PCI接口,其包括 寄存器,用于暂存所述PCI接口的设备的中断状态、地址、命令和数据; 从设备模块,连接所述寄存器,并接受并解析上层主机或者DMA的指令,以读写所述寄存器寄存的信息;以及
主设备模块,连接所述寄存器,并接有用于连接用户端的FIFO读写接口,用于依据所述从设备模块读写的信息中所包含的中断状态、地址和命令完成DMA中断请求和数据传送,并返回传送大小和地址于所述寄存器。主设备模块与从设备模块分工协作,降低单一控制模块的负担和设计逻辑难度。 通过修改寄存器的设置,实现不同的数将设传输,如图像数据传输、数据采集、PCI千兆网卡应用。PCI用户端采用标准的FIFO接口,对用户隐藏DMA控制细节,降低用户接口设计复杂度。采用寄存器暂存DMA通道号、传输数据大小,修改寄存器对应的数据即可,不需要复杂的硬件逻辑设计。上述FPGA环境下多用途PCI接口,还包括连接所述主设备模块和从设备模块并与 PCI总线互联的的仲裁器,以控制所述PCI接口的设备的访问状态。上述FPGA环境下多用途PCI接口,还包括连接与所述仲裁器的配置模块,以读取 PCI接口的配置空间,并响应上层主机对配置空间的操作。上述FPGA环境下多用途PCI接口,配置有用于所述寄存器扩展的存储空间。依据本发明另一个方面的一种FPGA环境下多用途PCI接口的数据传输方法,所述 PCI接口包括寄存器、从设备模块和接有用于连接用户端的FIFO接口的主设备模块,该数据传输方法包括以下步骤
a.上电就绪,等待上层主机对PCI接口配置完成;
b.从设备收到指令,解析数据传送的DMA通道号和要发送的数据的大小以及待发送数据的起始地址然后存入所述寄存器,若是DMA要接收主机内存发送过来的数据转步骤cl, 若是DMA向主机内存写入数据则转步骤c2 ;
cl.若所述寄存器寄存的发送允许状态为允许,则转步骤d2 ;否则转步骤dl ; dl.设置所述寄存器暂存的接口状态为空闲,转步骤b;
d2.主设备模块依据步骤b存入的通道号、数据大小和所述起始地址,同时发出总线请求,如果总线请求成功则转步骤el,否则转步骤e2 ;
e 1.主设备模块依据所述起始地址从上层主机内存读取数据,每传输一次数据,更新上层主机内存起始地址一次,直到所述寄存器发出传输终止信号;若待传输的字节数不为零, 转步骤d2,否则转步骤b;
e2.寄存器暂存总线为忙状态,转步骤d2;
c2.主设备模块发出数据到达中断,等待主机响应中断;主机响应中断后完成设置待传送数据存储到主机内存的起始地址并发出允许接收数据的信号;然后主设备发出总线操作请求,如果总线请求成功转步骤Π,否则转步骤f2 ;
Π.主设备模块在所述主机设置的起始地址开始存储数据,直到所述寄存器发出传输终止信号;若待传输的字节数不为零,则转步骤c2,否则转步骤b ; f2.设置总线为忙状态,转步骤c2。上述FPGA环境下多用途PCI接口的数据传输方法,所述步骤fl,从所述起始地址开始向地址增大的存储空间存储。上述FPGA环境下多用途PCI接口的数据传输方法,所述通道号通过暂存在寄存器中的二进制数纪录。上述FPGA环境下多用途PCI接口的数据传输方法,数据在FIFO中的存储方式以包为单位进行存储,并以包头和包尾表示数据块间的间隔。上述FPGA环境下多用途PCI接口的数据传输方法,数据传输过程设定暂停中断, 并且所述寄存器要纪录暂停时的数据大小和传送地址。上述FPGA环境下多用途PCI接口的数据传输方法,存储传输数据的大小的寄存器采用32位寄存器。


下面结合说明书附图详述本发明的技术方案,其中
图1为依据本发明技术方案的一种FPGA环境下多用途PCI接口原理框图。图2为依据本发明技术方案的数据格式图。图3为PCI DMA主机数据发送流程图。图4为PCI DMA网络数据接收流程图。
具体实施例方式参照说明书附图1 FPGA环境下多用途PCI接口,其包括
寄存器,用于暂存所述PCI接口的设备的中断状态、地址、命令和数据; 从设备模块,连接所述寄存器,并接受并解析上层主机或者DMA的指令,以读写所述寄存器寄存的信息;以及
主设备模块,连接所述寄存器,并接有用于连接用户端的FIFO读写接口,用于依据所述从设备模块读写的信息中所包含的中断状态、地址和命令完成DMA中断请求和数据传送,并返回传送大小和地址于所述寄存器。本方案所依据的PCI标准协议是一种被业界广泛采用的标准协议,其协议支持 33MHz和66MHz两者总线频率,支持32位和64位两种总线宽度;且有16种总线操作命令, 同时支持对总线实现DMA操作,实现大容量数据的传输;对于大部分系统是32位总线宽度上网情况,推荐实现33MHz下,32位宽的基本PCI接口。
6
主设备模块的主要功能是当系统(如上层主机)有发送或接收数据的请求时,发出中断,主动请求占用PCI总线,启动DMA传输。PCI接口中,DMA通道数目设置为16个,发送和接收分别占8个。从设备模块的主要功能是依据上层主机的指令实现寄存器的读取和写入,改变或者获取寄存器暂存的内容。主要用作控制的寄存器的数目设定为8个,为了便于以后的扩展,预定义256K的存储空间用于系统以后的扩展。(1)写目标设备操作
在地址周期,PCI从设备根据总线地址识别出当前操作的目标是自己,并且当前操作是 IO写或存储器写操作。在数据周期,接口用作数据寄存器的寄存器寄存待写入的数据,从接口用作地址寄存器的寄存器中寄存解码出来的寄存器地址编号,同时给出寄存器写操作有效信号。(2)读目标设备操作
在地址周期,PCI从设备解码出当前操作的目标是自己,并且当前操作是IO读或存储器读操作,根据地址周期的地址发出读信号和读地址。在数据周期,将数据送到PCI总线上。(3) DMA传输控制
在PCI设备发出中断请求信号并且操作系统响应中断时,系统会读取PCI设备的中断状态寄存器,解码中断状态寄存器,并设置相应的寄存器,PCI设备就是通过前述的FIFO接口连接的设备。(4)主设备模块操作
每当PCI设备FIFO接口接收到一个数据包,就会使接收到的包计数加1,每当PCI主设备将数据包完全送到PCI总线,包计数就会减1。只要包计数不为0就持续的发出数据到达的中断请求。在总线空闲时,如果DMA接收寄存器最低位为1,则发出总线请求信号,并记录要接收的数据的开始地址和要接收的数据块的大小。在总线请求成功后每发送一个数据到 PCI总线时,数据块大小减1,对应存储地址加1 ;如果接收过程中断,在总线空闲时再次请求总线并以记录的地址和数据块大小继续接收数据,直到数据块大小计数为0时完成一次 DMA接收。在总线空闲时,如果发送寄存器最低位为1,则发出总线请求信号,并记录要发送的数据的开始地址和要发送的数据块的大小。在总线请求成功后每从PCI总线接收到一个数据时,数据块大小减1,地址加1 ;如果发送过程中断,在总线空闲时再次请求总线并以记录的当前地址和数据块大小继续发送数据,直到数据块大小计数为O时完成一次DMA发送。还包括连接所述主设备模块和从设备模块并与PCI总线互联的的仲裁器,以控制所述PCI接口的设备的访问状态。还包括连接与所述仲裁器的配置模块,以读取PCI接口的配置空间,并响应上层主机对配置空间的操作。那么依据上述结构的一种FPGA环境下多用途PCI接口的数据传输方法,参见说明书附图3和4,包括以下步骤
a.上电就绪,等待上层主机对PCI接口配置完成;
b.从设备收到指令,解析数据传送的DMA通道号和要发送的数据的大小以及待发送数据的起始地址然后存入所述寄存器,若是DMA要接收主机内存发送过来的数据转步骤cl, 若是DMA向主机内存写入数据则转步骤c2 ;
cl.若所述寄存器寄存的发送允许状态为允许,则转步骤d2;否则转步骤dl ; dl.设置所述寄存器暂存的接口状态为空闲,转步骤b;
d2.主设备模块依据步骤b存入的通道号、数据大小和所述起始地址,同时发出总线请求,如果总线请求成功则转步骤el,否则转步骤e2 ;
e 1.主设备模块依据所述起始地址从上层主机内存读取数据,每传输一次数据,更新上层主机内存起始地址一次,直到所述寄存器发出传输终止信号;若待传输的字节数不为零, 转步骤d2,否则转步骤b;
e2.寄存器暂存总线为忙状态,专步骤d2;
c2.主设备模块发出数据到达中断,等待主机响应中断;主机响应中断后完成设置待传送数据存储到主机内存的起始地址并发出允许接收数据的信号;然后主设备发出总线操作请求,如果总线请求成功转步骤Π,否则转步骤f2 ;
Π.主设备模块在所述主机设置的起始地址开始存储数据,直到所述寄存器发出传输终止信号;若待传输的字节数不为零,则转步骤c2,否则转步骤b ; f2.设置总线为忙状态,转步骤c2。所述步骤fl,从所述起始地址开始向地址增大的存储空间存储,也就是向前寻址, 这样可以大大节省地址查找表更新的资源消耗。所述通道号通过暂存在寄存器中的二进制数纪录,也就是采用寄存器暂存的二进制数据表示通道号,可以大大节省接口电路的逻辑设计,尤其是通道号的个数取决于寄存器的位数,设置非常方便。较佳地,数据在FIFO中的存储方式以包为单位进行存储,并以包头和包尾表示数据块间的间隔,便于数据的传输和数据大小的界定,尤其是容易判定数据开始传输和传输完毕的状态。数据传输过程设定暂停中断,并且所述寄存器要纪录暂停时的数据大小和传送地址,便于对其他中断的响应。存储传输数据的大小的寄存器采用32位寄存器,支持4G的数据包的传输,满足绝大部分数据传输的需要。那么用户端接口信号描述如下
PCI协议接口模块主要由5个子模块组成从设备模块、配置空间模块、寄存器模块、主设备模块和仲裁器模块。模块间的信号关系如说明书附图1所示
从设备模块主要完成PCI从设备的功能,对主机发往PCI MENORY空间的数据进行命令解析和控制寄存器的设置;
配置空间模块主要完成PCI配置空间的设置,以及相应主机对PCI配置空间的操作; 寄存器模块主要存储主设备模块的控制信号,DMA传输时用到的主机内存地址,传输数据的大小和通道号,并对主设备模块反馈的信息作出响应;
主设备模块主要完成PCI主设备的功能,包括总线请求,中断产生,总线的存储器读和存储器写功能,并提供到异步读写FIFO的交互信号;
仲裁模块则控制着PCI接口的访问,判断其余几个模块中哪一个模块可以和PCI总线交互数据。 DMA (Direct Memory Access,即直接存储器访问)。在DMA文件传送过程中,根据表1寄存器的信息可得到要传送数据的字节数以及数据的开始地址,根据这些信息可以确定传送计数器的计数,再根据控制寄存器和中断状态寄存器中的状态可以确定该数据块是否可以传送,这样就可以根据传送计数器的计数值判断数据什么时候传送完成。 表1 PCI IP核寄存器功能描述
权利要求
1.一种FPGA环境下多用途PCI接口,其特征在于其包括寄存器,用于暂存所述PCI接口的设备的中断状态、地址、命令和数据; 从设备模块,连接所述寄存器,并接受并解析上层主机或者DMA的指令,以读写所述寄存器寄存的信息;以及主设备模块,连接所述寄存器,并接有用于连接用户端的FIFO读写接口,用于依据所述从设备模块读写的信息中所包含的中断状态、地址和命令完成DMA中断请求和数据传送,并返回传送大小和地址于所述寄存器。
2.根据权利要求1所述的FPGA环境下多用途PCI接口,其特征在于还包括连接所述主设备模块和从设备模块并与PCI总线互联的的仲裁器,以控制所述PCI接口的设备的访问状态。
3.根据权利要求2所述的FPGA环境下多用途PCI接口,其特征在于还包括连接与所述仲裁器的配置模块,以读取PCI接口的配置空间,并响应上层主机对配置空间的操作。
4.根据权利要求1至3任一所述的FPGA环境下多用途PCI接口,其特征在于配置有用于所述寄存器扩展的存储空间。
5.一种FPGA环境下多用途PCI接口的数据传输方法,其特征在于所述PCI接口包括寄存器、从设备模块和接有用于连接用户端的FIFO接口的主设备模块,该数据传输方法包括以下步骤a.上电就绪,等待上层主机对PCI接口配置完成;b.从设备收到指令,解析数据传送的DMA通道号和要发送的数据的大小以及待发送数据的起始地址然后存入所述寄存器,若是DMA要接收主机内存发送过来的数据转步骤cl, 若是DMA向主机内存写入数据则转步骤c2 ;cl.若所述寄存器寄存的发送允许状态为允许,则转步骤d2 ;否则转步骤dl ; dl.设置所述寄存器暂存的接口状态为空闲,转步骤b;d2.主设备模块依据步骤b存入的通道号、数据大小和所述起始地址,同时发出总线请求,如果总线请求成功则转步骤el,否则转步骤e2 ;e 1.主设备模块依据所述起始地址从上层主机内存读取数据,每传输一次数据,更新上层主机内存起始地址一次,直到所述寄存器发出传输终止信号;若待传输的字节数不为零, 转步骤d2,否则转步骤b;e2.寄存器暂存总线为忙状态,转步骤d2;c2.主设备模块发出数据到达中断,等待主机响应中断;主机响应中断后完成设置待传送数据存储到主机内存的起始地址并发出允许接收数据的信号;然后主设备发出总线操作请求,如果总线请求成功转步骤Π,否则转步骤f2 ;Π.主设备模块在所述主机设置的起始地址开始存储数据,直到所述寄存器发出传输终止信号;若待传输的字节数不为零,则转步骤c2,否则转步骤b ; f2.设置总线为忙状态,转步骤c2。
6.根据权利要求5所述的FPGA环境下多用途PCI接口的数据传输方法,其特征在于 所述步骤Π,从所述起始地址开始向地址增大的存储空间存储。
7.根据权利要求5所述的FPGA环境下多用途PCI接口的数据传输方法,其特征在于 所述通道号通过暂存在寄存器中的二进制数纪录。
8.根据权利要求5所述的FPGA环境下多用途PCI接口的数据传输方法,其特征在于 数据在FIFO中的存储方式以包为单位进行存储,并以包头和包尾表示数据块间的间隔。
9.根据权利要求5所述的FPGA环境下多用途PCI接口的数据传输方法,其特征在于 数据传输过程设定暂停中断,并且所述寄存器要纪录暂停时的数据大小和传送地址。
10.根据权利要求5所述的FPGA环境下多用途PCI接口的数据传输方法,其特征在于 存储传输数据的大小的寄存器采用32位寄存器。
全文摘要
本发明公开了一种FPGA环境下多用途PCI接口及其数据传输方法,采用带DMA功能的PCI接口的实现方法,把接口实现分成PCI主设备模块,PCI从设备模块,以及PCI寄存器模块单独实现。对PCI用户端接口采用简单易实现的FIFO接口,对用户隐藏DMA控制细节,降低用户接口设计复杂度。在大容量数据传输中,根据接口要求的数据格式封装数据,简单的将数据写入FIFO中就能将数据以DMA的方式实现,简化控制逻辑复杂度,提高用户接口开发的效率。
文档编号G06F13/28GK102253909SQ20111018141
公开日2011年11月23日 申请日期2011年6月30日 优先权日2011年6月30日
发明者孙涛, 杨波, 林金, 陈贞翔 申请人:济南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1