基于现场可编程门阵列控制的多方中央处理器通信架构的制作方法

文档序号:20838527发布日期:2020-05-22 17:11阅读:475来源:国知局
基于现场可编程门阵列控制的多方中央处理器通信架构的制作方法

本发明涉及中央处理器(centralprocessingunit,cpu)与现场可编程门阵列(field-programmablegatearray,fpga)之间利用高速收发口进行通信的应用技术领域,具体地说,涉及一种在多cpu芯片之间通过fpga芯片的控制进行数据转发通信,由fpga芯片对各方数据流进行调度的方法。



背景技术:

为了满足通信、多媒体和数字处理等高端应用,片上系统己不仅仅集成一个处理器,而更多的是将多个处理器集成到系统中,甚至还需要结合片外的处理器共同工作。由于系统集成了多个处理器,每个处理器相当于系统的一个主机,各个处理器在与共享资源间通信时,存在一定的逻辑冲突,造成了系统内部通信的一系列问题。目前主流的多处理器通信方式有以下四类:

1)共享存储器通信机制

共享存储器方式比较适合多处理器对于共享存储的处理,其实现方式是设立共享存储状态查询位来进行通信和识别。实现时在一个存储器中放有共享存储器的状态标志,该状态标志类似于信号灯。每次需要访问共享存储的主机设备需先访问该状态标志,如果此时存储器被其他处理器占用则等待其他设备访问结束后再进行访问。这种方法实现简单,需要配置的控制信息也较少。由于对状态标志需要进行识别,因此会增加一定的软件复杂度。

2)mailbox硬件通信机制

mailbox作为多处理器系统中处理器间进程同步和数据交换的硬件机制,其优点是应用相对的广,速度快。采用mailbox的方式,主要是通过传输控制信息的方式进行多处理器通信。根据系统要求,可以定义不同的mail来实现系统行为。例如:可以定义固定流量的数据传输,也可以定义固定区块的数据传输。通信双方的数据传输,属于片内并行数据传输,因此实时性好,速度快。同时还可以兼容中断和查询模式,减小控制cpu的处理时间压力。如果单纯用于固定的数据传输则mail设计简单。但如果mail定义的类型较多,会增加一定的mail识别难度及识别时间。

3)dma数据搬运通信机制

dma(directmemoryaccess)方式能够有效地缩减数据通信对处理器的时间占用,在传送大量数据时能发挥一定的作用。主要使用在程序更新及成片数据搬运方面。dma可以作为辅助解决多处理器通信的部件。

4)串口主从模式通信机制

串口主从模式主要使用串口通信设备完成,将多个处理器分为主设备与从设备。当主处理器需要数据时就通过dart(universalasynchronousreceiver/transmitter)向从处理器发送请求数据命令,从处理器通过串口将数据发送去主处理器。由于串口通信延时较大,主处理器必须等待所有的数据从dart传入主处理器区域的sram进行组合,或者主处理器自身进行组合后,再处理方可使用,导致通信效率较低。同样从处理器在通信期间也不能向对应的存储区进行数据更新操作。所以传输和处理时间需要重点考虑。

使用串口主从模式进行通信优点在于对软件程序方面的依赖较少,缺点在于对内部电路结构有一定依赖性,传输模式单一,时间久.若设计复杂的通信协议,则对软件编程压力大。



技术实现要素:

本发明的目的是提出一种通信协议简单、高速、对于不同类型cpu兼容性好,并具有可扩展可升级的cpu之间通信架构,以此解决目前的cpu通信方法存在的不足。

本发明所解决的技术问题可以采用以下技术方案实现:

多cpu芯片之间通过fpga芯片的控制进行数据转发通信,由fpga芯片对各方数据流进行调度。当cpu_a需要向cpu_b发出数据时,数据包以专有格式先发送到fpga芯片中,fpga对数据包进行解析和缓存,并以中断方式通知cpu_b准备接收数据,cpu_b从fpga的缓冲区中读出数据后,完成了一次cpu之间的通信。cpu芯片与fpga芯片之间通过一个高速数据收发口和一个中断信号io口进行连接,fpga芯片通过高速数据收发口随时接收cpu芯片下发的指令,当fpga芯片主动需要同cpu芯片进行通信时,通过中断信号io管脚向cpu芯片发出中断申请。fpga芯片对接入通信系统的cpu芯片的状态实时进行检测,并将系统中各cpu设备状态对各cpu进行告知。fpga芯片内部对接入系统的每个cpu设备就分配有专门的数据缓存区,cpu可从数据缓存区的任意位置读取任意长度的数据。

附图说明

图1:fpga控制的多方cpu通信架构拓扑图

图2:fpga内部逻辑模块图

图3:中断申请信号与应答信号波形图

图4:fpga主动发起数据包通信流程图

图5:三方cpu通信时,fpga内部架构图

具体实施方式

通信架构:图1

fpga内部逻辑模块:图2

通信方法:

1、cpu之间通过fpga控制进行通信。

2、cpu与fpga之间通过一个高速收发口和一个中断信号io进行通信。

3、cpu随时可以通过高速收发口向fpga发各类型包,fpga端即时对收到的包进行处理。

4、除了应cpu要求的返回包外,当fpga主动要向cpu发包时,应先利用中断口向cpu端提出申请。中断申请信号与应答信号波形如图3所示。fpga再按照cpu回应的包中所带的要求信息将包发给cpu。

5、fpga向cpu主动发包只有两种情况:1)cpu状态查询包。2)向cpu申请发送数据包。工作原理及流程:

1、fpga端具有多个高速收发口,可同时与多个cpu进行通信。fpga定时(1秒)对各个高速收发口进行监测,发送状态查询包,此查询包中也包括现有与fpga相连的所有cpu设备信息。

cpu信息中,最基本的包括有:a)设备属性(器件标识,fpga通过cpu的返回信息获得)

b)设备地址(由接入fpga时的接口决定);

c)设备状态(设备是否正常在线,输入缓存区是否可写,接收数据缓存区已用容量等,还可根据软件开发人员要求,增加所需信息。)

当某cpu设备在fpga的中断申请等待时间(等待时间待定,根据软件对cpu的应用情况而定)内未响应,fpga将撤销本次中断申请,若连续3次撤销对某cpu设备的中断申请,则认为此cpu设备已从系统移除或失效。

2、由fpga主动发起通信(cpu响应中断后)

fpga主动发起数据包通信流程:图4

fpga--->cpu的状态查询包格式:

cpu--->fpga的状态返回包格式:

fpga--->cpu发出申请接收数据包格式:

cpu--->fpga发出接收数据包格式:

fpga--->cpu发送数据包格式:

3、由cpu主动发起通信

cpu--->fpga发出状态查询包格式:

fpga--->cpu的状态返回包格式:

cpu--->fpga--->cpu发送cpu之间通信包格式:

4、fpga内部结构

以abc三方cpu通信为例:图5

a)为了提高效率,每个cpu发向不同cpu的数据包都设有不同的写入缓存区域。

b)对于某一cpu的读出缓存来说,fpga控制在每个写入缓存区域之间轮询,将数据包写入读出缓存中。

c)cpu接入fpga的物理接口决定了其逻辑地址。

d)fpga通过内部控制逻辑随时接收并响应cpu发出的各类包。

通信约束:

1、在某一cpu与fpga之间通信的高速收发口上,同时同方向只能有一个数据包在传输,一个数据包完整传输完毕后才能开始传输下一个数据包。

2、cpu可向fpga主动发出状态查询包,通知fpga更新系统状态信息,fpga会立即回应一个状态返回包,告知cpu现在系统内已有设备的信息。

3、由于fpga只完成通信功能,当某cpu能正常响应中断和收发包,对于fpga来说设备就是正常的,fpga不关心cpu的其他功能。

4、fpga向cpu发出的中断信号是一个1bit位宽信号,高电平有效,接收到中断应答信号后翻转为低电平。cpu向fpga发出的中断应答信号也是一个1bit位宽信号,高电平有效,当fpga的中断申请撤销后,中断应答信号翻转为低电平。

5、只要在某cpu的数据缓存区中有未发送完毕的数据包存在,并且fpga->cpu方向处于非传输状态,fpga就会对cpu发出读数据包的中断申请。

6、各种包和包头长度应为32bit或64bit对界,包内部各分段信息最好应以8bit为最小单位,以便于fpga快速处理。

7、cpu可选择接收数据包中任意位置起始的任意长度的数据,当发出标识此次是最后一次接收后,fpga认为缓存区中此编号的数据包已接收完毕,缓存区被收回待下次数据写入。并且这次中断通信完毕。

8、每次中断通信传输数据包应只对同一数据包进行传输,若cpu需要结束一数据包的读取,发出此编号包最后一次接收的标识即可。(某一cpu可以在传输过程中读取本cpu全部缓存区中任意地址任意长度的数据)

以上显示和描述了本发明的基本原理和主要特征和本发明的优点,本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在波脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内,本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1