基于串行高速总线的fpga硬件抽象层及其实现方法

文档序号:6621760阅读:325来源:国知局
基于串行高速总线的fpga硬件抽象层及其实现方法
【专利摘要】本发明公开了一种基于串行高速总线的FPGA硬件抽象层,以FPGA厂家提供的串行高速总线的IP核为对外接口,对内提供统一的接口给用户或是通信组件使用,包含如下功能模块:IRESP模块、IREQ模块、DATA_CTRL模块、TREQ模块。本发明还公开了FPGA硬件抽象层的实现方法。用户或是通信组件就可以通过使用硬件抽象层提供的统一的接口来方便的进行系统内通信,并可以在不同型号和规格的FPGA间任意移植程序,解决了基于串行高速总线的软件无线电系统中,FPGA的应用软件移植性、操作性和可重用性差的问题。
【专利说明】基于串行高速总线的FPGA硬件抽象层及其实现方法

【技术领域】
[0001]本发明涉及串行高速总线架构下硬件平台的硬件抽象层设计方法,尤其涉及其中基于FPGA (现场可编程逻辑阵列)的硬件抽象层(以下简称MHAL)的实现方法。

【背景技术】
[0002]无线通信中不同的通信模式和功能采用不同的工作频段、调制方式、通信协议和加密方式等,这些差异限制了不同通信设备间的连通,带来了不便。软件无线电的思想就是以一个通用、标准、模块化的硬件平台为依托,通过软件编程来实现无线电台的各种功能。
[0003]MHAL介于硬件平台和软件之间,它为了屏蔽硬件差异将硬件的实现抽象出来,负责处理软硬件差异,并完成相关接口功能。同时,软件无线电的硬件平台间通常通过高速总线连接。其中串行高速总线使用广泛,它是一种针对高性能嵌入式系统芯片间和板间互连而设计的总线技术,具有协议简单、软件开销小、延时小和打包效率高等优点,现今主流的FPGA厂商均各自设计了相应的IP核。
[0004]在现有的无线电通信系统中,较常用的硬件平台有PowerPC、FPGA和DSP等,未采用MHAL的传统方法是在不同硬件平台上设计不同的应用软件,使用不同的接口规范,且相同硬件平台也存在多样的型号、技术体制和原理,所以软件和接口规范也有差异。以这种方式在硬件平台上设计应用软件有如下弊端:
[0005](I)移植性差。由于不同的系统有不同的接口,每次程序代码移植到新的系统中时,接口都需做相应改变。
[0006](2)操作性差。不同的软件设计方法使得用户的使用方法也不同,造成使用上的不方便。
[0007](3)可重用性差。在不同的硬件平台上各自采用不同的程序架构和接口,导致只能用于特定的硬件平台上,不能复用在其它硬件平台上。


【发明内容】

[0008]本发明的目的是提供一种基于串行高速总线的FPGA上MHAL的设计方法,当基于串行高速总线的软件无线电系统中的所有FPGA硬件平台都使用该MHAL,用户或是通信组件(以下简称HC)就可以通过使用MHAL提供的统一的接口来方便的进行系统内通信,并可以在不同型号和规格的FPGA间任意移植程序,解决了基于串行高速总线的软件无线电系统中,FPGA的应用软件移植性、操作性和可重用性差的问题。
[0009]本发明的目的通过以下技术方案来实现:
[0010]图2为MHAL的整体设计框图。以FPGA厂家提供的串行高速总线的IP核为对外接口,对内提供统一的接口给HC使用。各个模块的功能如下:
[0011]I) IRESP模块:负责处理IP核向IRESP接口发送的HC请求回应的消息,该设计中用于配置本地器件地址后请求获取当前器件地址,以验证回应的地址与之前配置的地址是否一致;
[0012]2) IREQ模块:负责控制IP核的IREQ接口,向IP核发送由DATA_CTRL模块发来的HC的请求,包括配置本地器件地址(以下简称MAINTENANCE事务)的请求和发送数据包(以下简称NWRITE事务)的请求;
[0013]3) DATA_CTRL模块:根据HC的请求类型向IREQ模块传输配置器件地址的信息,以及从TX_FIF0中取出要发送的数据,按照发送数据所需格式打包发送给IREQ模块进行发送;
[0014]4) TREQ模块:负责处理通过IP核的TREQ接口接收的,由通信系统内其它硬件平台发送过来的数据,从发来信息的包头解析出器件地址,并将接收到的数据写入相应RX_FIFO 中。
[0015]MHAL给HC留的统一接口如下:
[0016]1)SET_ID_D0NE:由IRESP模块通过判断回应的器件地址是否为之前配置的器件地址后拉高或拉低,若配置地址正确则为高电平,错误为低电平;
[0017]2)DEVICE_ID_EN:配置本地器件地址使能,高电平时写入要配置器件地址;
[0018]3)DEVICE_ID:要配置的器件地址;
[0019]4) FULL:TX_FIF0满信号,当TX_FIF0不满时写入数据,反之不能写入;
[0020]5)TX_WRITE_EN:写使能,高电平的同时写入要发送的数据;
[0021]6)TX_WRITE_DATA:发送数据的接口;
[0022]7)DEST_ID:数据发送的目标器件地址;
[0023]8)FLAG:当其为高电平时,说明接收到了数据;
[0024]9) RX_READ_EN:接收数据使能,高电平时接收数据;
[0025]10) RX_DATA:接收数据的接口。
[0026]MHAL实现如图3、图4、图5所示的器件地址配置、数据发送和数据接收3个功能。下面分别进行详细的介绍。
[0027]I)器件地址配置
[0028]软件无线电通信架构中需要对各个硬件平台及组件进行地址的编排,这样系统资源调度者无需关心底层如何通信和处理,只需根据器件地址找到并使用该资源即可。其具体实现步骤如下:
[0029]a.拉高DEVICE_ID_EN信号,并在DEVICE_ID接口写入要配置器件地址;
[0030]b.DATA_CTRL模块将器件地址传递给IREQ模块;
[0031]c.1REQ模块根据MAINTENANCE事务时序将数据传输给串行高速总线串行高速总线的IP核;
[0032]d.串行高速总线的IP核将器件地址配置进寄存器中;
[0033]e.1REQ模块向IP发出读取当前器件地址请求;
[0034]f.1P核通过IRESP接口反馈当前的器件地址信息至MHAL,由IRESP模块将其与之前要配置的器件地址比较;
[0035]g.若器件地址与要配置的地址相同,则表明地址配置成功,MHAL将SET_ID_D0NE接口拉高反馈给HC,反之拉低。若配置不成功则重复b?g步骤,直至成功。
[0036]2)数据发送
[0037]串行高速总线的协议规定最大的数据包为256字节,但实际应用的数据包往往超过256字节,所以需要一个发送缓冲区即TX_FIFO来存储要发送的数据。HC使用MHAL需要对外发送数据时,先向TX_FIFO写入数据。DATA_CTRL模块只要发现TX_FIFO中有数据就从TX_FIFO取出数据,首先取出数据包头(数据包头含数据长度信息),判断要发送数据的长度,若长度大于256字节则每次取出256字节,直到全部取出,反之则一次全部取出,与目的器件地址一起传递给IREQ模块,采用NWRITE事务时序发送给IP核,由IP核将数据发送出去。具体步骤如下:
[0038]a.判断MHAL的FULL信号是否拉高,拉高则说明FIFO满不能发送,继续等待,不满则可以发送;
[0039]b.HC拉高TX_WRITE_EN引脚,将数据写入FIFO,并在DEST_ID写入发送目的地址;
[0040]c.DATA_CTRL模块一旦发现TX_FIF0中有数据,就通过数据包头判断数据长度,若数据长度大于256字节则每次从TX_FIF0中取出最大256字节数据一包发送给IREQ模块,直至全部取出;若数据长度小于256字节,则一次取出给IREQ模块;
[0041]d.1REQ模块每收到一包数据,就将数据根据NWRITE事务时序将发送给IP核;
[0042]e.1P核将数据发送出去到指定器件地址的器件上。
[0043]3)数据接收
[0044]当FPGA接收到数据时,IP核通过TREQ接口将数据发送到TREQ模块,TREQ模块将数据解析出来发送到接收缓冲区即RX_FIF0中,HC通过MHAL的FLAG信号来判断是否接收到数据,并将数据从RX_FIF0中取出。具体实现步骤如下:
[0045]a.1P核将接收到的数据发送给TREQ模块;
[0046]b.TREQ模块将数据发送给RX_FIF0 ;
[0047]c.HC判断FLAG,若为高,则拉高RX_READ_EN引脚,从RX_FIF0中取出数据;若为低则等待;

【专利附图】

【附图说明】
[0048]图1是MHAL通信系统框架示意图。
[0049]图2是本发明MHAL的整体框架示意图。
[0050]图3是本发明中MHAL配置器件地址流程图。
[0051]图4是本发明中MHAL发送数据流程图。
[0052]图5是本发明中MHAL接收数据流程图。
[0053]图6是实施例中基于串行高速总线的FPGA的MHAL实施方案系统框图。

【具体实施方式】
[0054]下面给出一种本发明的实施方式和步骤。
[0055]图6为实例的系统组成框图。整个系统主要包括两块分别有一片XC5VFX70T的FPGA和光模块的FPGA开发板以及收发共两根光纤线。用两根光纤线将两块板的光模块的收发端口分别互连,每个FPGA中都加载MHAL程序。下面用这两块FPGA通过MHAL进行串行高速总线的相互通信,通过Xilinx的ChipScope软件来监控FPGA的所有端口。
[0056]第一步,配置器件地址:
[0057]I)用户程序拉高MHAL的DEVICE_ID_EN接口,并通过DEVICE_ID接口写入器件地址 0x53 ;
[0058]2)通过ChipScope软件监控MHAL的SET_ID_D0NE的引脚是否为高,高则表明器件地址写入成功;
[0059]3)重复上述I)和2)步骤,将另外一个FPGA的器件地址配置为0x63。
[0060]第二步,收发数据:
[0061 ] I)器件地址配置为0x53的FPGA拉高TX_WRITE_EN接口,通过TX_WRITE_DATA接口写入数据2000字节长度的任意数据,DEST_ID接口写入目标器件地址0x63 ;
[0062]2)在器件地址配置为0x63的FPGA判断FLAG接口是否为高,当FLAG拉高时则拉高RX_READ_EN引脚,从RX_DATA接口接收数据;
[0063]3)观察接收到的数据以及数据长度是否与发送的数据以及数据长度相同,相同则证明收发数据功能正常;
[0064]4)重复以上I)?4)步骤20次,验证功能正常;
[0065]5)转换收发双方,从器件地址配置为0x63的FPGA上发送数据至地址为0x53的FPGA上,重复以上I)?5)。
[0066]以上所述,仅为本发明的一个具体实例,所涉及到芯片不仅局限于这I款,任何FPGA芯片都可应用于本发明中,所以本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明所述的技术范围内,所做的变化或替换,都应涵盖在本发明的保护范围内。因此,本发明的保护范围应以权利要求书的保护范围为准。
【权利要求】
1.一种基于串行高速总线的FPGA硬件抽象层,以FPGA厂家提供的串行高速总线的IP核为对外接口,对内提供统一的接口给用户或是通信组件使用,包含如下功能模块: 1)IRESP模块:负责处理IP核向IRESP接口发送的用户或是通信组件请求回应的消息,以及配置本地器件地址后请求获取当前器件地址,以验证回应的地址与之前配置的地址是否一致; 2)IREQ模块:负责控制IP核的IREQ接口,向IP核发送由DATA_CTRL模块发来的用户或是通信组件的请求,包括配置本地器件地址的请求和发送数据包的请求; 3)DATA_CTRL模块:根据用户或是通信组件的请求类型向IREQ模块传输配置器件地址的信息,以及从发送缓冲区中取出要发送的数据,按照发送数据所需格式打包发送给IREQ模块进行发送; 4)TREQ模块:负责处理通过IP核的TREQ接口接收的,由通信系统内其它硬件平台发送过来的数据,从发来信息的包头解析出器件地址,并将接收到的数据写入接收缓冲区中; 所述的对内提供统一的接口包含如下: 1)SET_ID_DONE:由IRESP模块通过判断回应的器件地址是否为之前配置的器件地址后拉高或拉低,若配置地址正确则为高电平,错误为低电平; 2)DEVICE_ID_EN:配置本地器件地址使能,高电平时写入要配置器件地址; 3)DEVICE_ID:要配置的器件地址; 4)FULL:发送缓冲区满信号,当发送缓冲区不满时写入数据,反之不能写入; 5)TX_WRITE_EN:写使能,高电平的同时写入要发送的数据; 6)TX_WRITE_DATA:发送数据的接口 ; 7)DEST_ID:数据发送的目标器件地址; 8)FLAG:当其为高电平时,说明接收到了数据; 9)RX_READ_EN:接收数据使能,高电平时接收数据; 10)RX.DATA:接收数据的接口。
2.根据权利要求1所述一种基于串行高速总线的FPGA硬件抽象层的应用方法,包含如下步骤: I)器件地址配置,实现步骤如下: a.拉高DEVICE_ID_EN信号,并在DEVICE_ID接口写入要配置器件地址; b.DATA_CTRL模块将器件地址传递给IREQ模块; c.1REQ模块根据配置本地器件地址时序将数据传输给串行高速总线串行高速总线的IP核; d.串行高速总线的IP核将器件地址配置进寄存器中; e.1REQ模块向IP发出读取当前器件地址请求; f.1P核通过IRESP接口反馈当前的器件地址信息至硬件抽象层,由IRESP模块将其与之前要配置的器件地址比较; g.若器件地址与要配置的地址相同,则表明地址配置成功,硬件抽象层将SET_ID_DONE接口拉高反馈给用户或是通信组件,反之拉低;若配置不成功则重复b?g步骤,直至成功; 2)数据发送,实现步骤如下: a.判断FULL接口判断发送缓冲区是否为满,满则不能发送,继续等待,不满则可以发送; b.用户或是通信组件拉高TX_WRITE_EN引脚,将数据写入发送缓冲区,并在DEST_ID接口写入发送目的地址; c.DATA_CTRL模块一旦发现发送缓冲区中有数据,就通过数据包头判断数据长度,若数据长度大于规定字节则每次从发送缓冲区中取出允许的最大字节数据打包发送给IREQ模块,直至全部取出;若数据长度小于规定的字节,则一次取出给IREQ模块; d.1REQ模块每收到一包数据,就将数据根据发送数据包时序发送给IP核; e.1P核将数据发送出去到指定器件地址的器件上; 3)数据接收,实现步骤如下: a.1P核将接收到的数据发送给TREQ模块; b.TREQ模块将数据发送给接收缓冲区; c.用户或通信组件判断FLAG,若为高,则拉高RX_READ_EN引脚,从接收缓冲区中取出数据;若为低则等待。
【文档编号】G06F17/50GK104133963SQ201410366166
【公开日】2014年11月5日 申请日期:2014年7月29日 优先权日:2014年7月29日
【发明者】羿昌宇, 沈聪, 李裕, 吴敏 申请人:中国航空无线电电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1