一种基于FPGA的不同速率的接口转换方法与流程

专利2022-05-09  114


本发明涉及fpga通信技术领域,尤其涉及一种基于fpga的不同速率的接口转换方法。



背景技术:

以卫星星座系统为重要组成部分的天地一体化信息网络,是支撑我国经济发展以及国防信息化建设的重要网络基础,已成为我国“新基建”的重要发展方向。星间通信需要高效且稳定的传输速率,保证卫星之间大带宽,高速率的数据传输,是天地一体化的重要基础。

以北斗卫星为例,星际接口使用的通信芯片为tlk2711。芯片tlk2711具有自身的一套通信协议,与现在常用来处理高速数据的fpga芯片内置的通信ip核gtp的通信协议并不相同。

gtp是fpga上的低功耗吉比特收发器。gtp的位数为8位,速率可以实现到1git/s,tlk2711的位数为16位,速率可以达到1.6gbit/s~2.5gbit/s。对于不同位数、不同速率的接口转换在fpga内部多使用的是“乒乓法”,在数据量很大的时候会占用大量的储存资源,但是fpga内部的储存资源并不丰富,在数据量很大的时候可能导致fpga内部的储存资源不够用的情况。



技术实现要素:

本发明的目的在于提供一种基于fpga的不同速率的接口转换方法,降低了不同速率接口转化所需要的fpga的内存资源。

为实现上述目的,本发明提供了一种基于fpga的不同速率的接口转换方法,包括以下步骤:

通过gtp的数据线和控制线将主通信板卡的数据流发送给低速缓存高速发送转换模块;

在接收到所述数据流和对应的控制信号后,基于缓存发送方式将接收到的低速数据流整合成高速数据流,并发送到驱动发送模块;

利用所述驱动发送模块将所述高速数据流转换成串行数据,并将所述串行数据发送给接收恢复模块,通过所述接收恢复模块将所述串行数据转换成并行数据后发送至高速缓存低速发送转换模块;

基于缓存发送方式将所述并行数据整合成所述低速数据流,并恢复出所述控制信号,然后将所述低速数据流和所述控制信号发送至从通信板卡。

其中,在接收到数据流和对应的控制信号后,基于缓存发送方式将接收到的低速数据流整合成高速数据流,并发送到驱动发送模块,包括:

通过所述数据流上的帧头和帧尾与控制信号获取数据帧的位置,并读取所述数据帧的所述帧头、有效数据和帧尾;

启动写入计数器对读取的数据帧内的数据进行计数同时拉高fifo的写使能,将数据帧写入fifo,当所述写入计数器计数满一帧后对缓存内帧数计数器的计数值进行修改,同时拉低fifo的所述写使能,关闭写数据;

当所述缓存内帧数计数器的所述计数值大于1时,拉高fifo的读使能并启动读取计数器对读取的所述数据帧进行计数,直至一个所述数据帧读取完成;

通过驱动控制线和驱动数据线将读取的所述数据帧传输至驱动发送模块。

其中,当所述缓存内帧数计数器的所述计数值大于1时,拉高fifo的读使能并启动读取计数器对读取的所述数据帧进行计数,直至一个所述数据帧读取完成之后,所述方法还包括:

当一个所述数据帧读取完成之后,清空所述读取计数器,并且拉低fifo的所述读使能,将所述缓存内帧数计数器的所述计数值减1,关闭读取数据。

其中,利用所述驱动发送模块将所述高速数据流转换成串行数据,并将所述串行数据发送给接收恢复模块,通过所述接收恢复模块将所述串行数据转换成并行数据后发送至高速缓存低速发送转换模块,包括:

利用所述驱动发送模块中的发送端接收所述高速数据流,并将所述高速数据流转换成串行数据发送给接收恢复模块;

利用所述接收恢复模块将接收到的所述串行数据恢复成16位的并行数据,并发送给所述高速缓存低速发送转换模块。

其中,基于缓存发送方式将所述并行数据整合成所述低速数据流,并恢复出所述控制信号,然后将所述低速数据流和所述控制信号发送至从通信板卡,包括:

利用所述驱动发送模块中的使能控制线判断所述并行数据的帧头,并当获取到对应的所述帧头位置时,拉高fifo的写使能;

当所述高速缓存低速发送转换模块中的缓存内帧数计数器的计数值大于1时,拉高对应的读使能,同时启动读取计数器对读取的数据帧进行计数;

当所述读取计数器记满一个所述数据帧后,将所述缓存内帧数计数器的所述计数值减1,清空所述读取计数器,同时拉低fifo的读使能,并关闭读取数据;

根据读取出的所述数据帧,并且通过对所述数据帧的数据进行计数,恢复出对应的所述控制信号,并将所述数据帧和所述控制信号发送至从通信板卡。

其中,利用所述驱动发送模块中的使能控制线判断所述并行数据的帧头,并当获取到对应的所述帧头位置时,拉高对应的写使能之后,所述方法还包括:

以位宽为16,频率为100mhz的数据规格写入fifo,同时启动对应的写入计数器,当所述写入计数器计数满一个所述数据帧,且所述写入计数器的计数值和约定的帧长度相同时,判断帧数据完整;

将所述缓存内帧数计数器加1,同时拉低所述写使能,关闭写数据,完成一个数据帧的缓存流程。

本发明的一种基于fpga的不同速率的接口转换方法,通过gtp数据线和控制线将主通信板卡的数据发送给低速缓存高速发送转换模块,其中,所述数据包括数据流和控制信号;在接收到数据流和对应的控制信号后,基于缓存发送方式将接收到的低速数据流整合成高速数据流,并发送到驱动发送模块;利用所述驱动发送模块将所述高速数据流转换成串行数据,将串行数据发送到接收恢复模块,接收恢复模块将所述串行数据转换成并行数据后发送至高速缓存低速发送转换模块;基于缓存发送方式将所述并行数据整合成所述低速数据流,并恢复出所述控制信号,然后将所述低速数据流和所述控制信号发送至从通信板卡,降低了不同速率接口转化所需要的fpga的内存资源。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的一种基于fpga的不同速率的接口转换方法的步骤示意图。

图2是本发明提供的一种基于fpga的不同速率的接口转换方法的硬件框架图。

图3是本发明提供的gtp改装tlk2711后的各模块之间的数据流。

图4是本发明提供的低速存高速发送转换模块内部数据流向。

图5是本发明提供的高速缓存低速发送转换模块内部数据流向。

图6是本发明提供的writting_flag结构框图。

图7是本发明提供的writting_flag写入与读取的状态机。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

请参阅图1至图3,本发明提供一种基于fpga的不同速率的接口转换方法,包括以下步骤:

s101、通过gtp的数据线和控制线将主通信板卡的数据流发送给低速缓存高速发送转换模块。

具体的,原通信系统使用的是xilinxkintex-7系列的xk7c325芯片。使用的是芯片自带的gtp通信软核进行通信,速率为125×8mbp/s,其内部对数据的后续处理采用的是1gbp/s进行设计。后来由于需求的原因,需要将通信串口改为tlk2711,tlk2711的通信速率为100×16mbp/s。如图3所示,为将原通信系统改装tlk2711后的模块之间数据流的示意图。

主通信板卡通过处理模块的数据线发送位宽为8bit的数据帧和通过控制线发送位宽为1bit的控制信号。将主通信板卡的数据发送给低速缓存高速发送转换模块。

s102、在接收到数据流和对应的控制信号后,基于缓存发送方式将接收到的低速数据流整合成高速数据流,并发送到驱动发送模块。

具体的,如图3和图4所示,①数据线:①数据线为低速通信系统需要发送的数据,位宽为8,频率为125mhz。其中包括等待同步数据、帧头、有效数据和帧尾。发送时需要除去等待同步数据。当8b/10b控制信号高电平且①数据线上为帧头时判断帧开始,此时将②写使能线拉高,将fifo写数据端打开,将数据由①数据线写入fifo。当8b/10b控制信号高电平且①数据线上为帧尾时判断帧结束将②写使能线拉低,关闭fifo写数据端。

②写使能线:控制fifo的写功能,由①数据线配合②写使能线高低电平来控制写入fifo的数据。

③使能计数器:控制写入计数器,当②写使能线拉高时,③使能计数器拉高激活写入计数器。

④使能计数器:控制缓存内帧数计数器,当写入计数器计数满一帧后,④使能计数器拉高,使缓存内帧数计数器加1。

⑤读使能线:控制fifo的读功能,当缓存内帧数计数器大于1时,⑤读使能线拉高,控制fifo开始读出数据由⑦数据线送到tlk2711发送端。

⑥使能计数器:控制缓存内帧数计数器,当读出计数器计数满一帧,控制缓存内帧数计数器减1。

⑦数据线:该数据线为fifo送给tlk2711发送端的高速数据流,位宽为16,频率为100mhz。

⑧使能计数器:控制读出计数器,当tlk2711发送端接收到⑦数据线发送的数据时,⑧使能计数器拉高,激活读出计数器开始计数。

此处用到的缓存fifo为vivado内置的软核fifo——一种队列储存器。设置为异步fifo,写时钟为125mhz,读时钟为100mhz,写数据线位宽为8,读数据线位宽为16。

低速缓存高速发送转换模块内部通过数据流上的帧头和帧尾与控制信号来判断数据帧的位置,并且读取数据帧的帧头、有效数据和帧尾存入fifo。写fifo的位宽为8,频率为125mhz。在写入fifo的同时激活写入计数器,当写入计数器计数满一个数据帧,且能吻合数据线上数据帧的帧尾时,将发送端的缓存内帧数计数器加1,同时拉低fifo写使能,关闭写数据。

在低速缓存高速发送转换模块内部,当发送端的缓存内帧数计数器大于1时表示,发送端的缓存内最少有一个完整得数据帧,此时通过将fifo的读使能拉高,开始读取数据,读fifo数据的位宽为16,频率为100mhz。同时激活读取计数器,当读取计数器计数满一个数据帧后,将发送端的缓存内帧数计数器减1,同时将fifo的读使能拉低,关闭读取数据。将完成低速数据流的无差错高速发送。本发明同时采用的帧结构如下所示。

s103、利用所述驱动发送模块将所述高速数据流转换成串行数据,并将所述串行数据发送给接收恢复模块,通过所述接收恢复模块将所述串行数据转换成并行数据后发送至高速缓存低速发送转换模块。

具体的,驱动发送模块将十六位数据转换成串行数据,然后发送给接收恢复模块。接收恢复模块在收到串行数据后恢复出十六位的并行数据发送给高速缓存低俗发送转换模块。接收端高速通信接口tlk2711接收到发送端通过tlk2711发送过来的串行数据,接收端的tlk2711将串行数据恢复成位宽为16,频率为100mhz的数据流,和两根tlk2711的使能控制线rkmsb和rklsb。

s104、基于缓存发送方式将所述并行数据整合成所述低速数据流,并恢复出所述控制信号,然后将所述低速数据流和所述控制信号发送至从通信板卡。

具体的,如图5所示,①数据线:①数据线为tlk2711接收到的数据,位宽为16,频率为100mhz。其中包括等待同步数据、帧头、有效数据和帧尾。存入fifo时,需要除去等待同步数据、帧头和帧尾。且当准备写入帧头时将②写使能线拉高,打开fifo的写数据端。且当准备写入帧尾时将②写使能线拉低,关闭fifo的写数据端。

②写使能线:控制fifo的写功能,由①数据线配合②写使能线高低电平来控制fifo的写数据的开关。

③使能计数器:控制写入计数器,当②写使能线拉高时,③使能计数器拉高激活写入计数器。

④使能计数器:控制缓存内帧数计数器,当写入计数器计数满一帧后,④使能计数器拉高,使缓存内帧数计数器加1。

⑤读使能线:控制fifo的读功能,当缓存内帧数计数器大于1时,⑤读使能线拉高,控制fifo开始读出数据由⑦数据线送到tlk2711发送端。

⑥数据线:该数据线为fifo送给低速通信系统内部的低速数据流,位宽为8,频率为125mhz。

⑦使能计数器:控制缓存内帧数计数器,当读出计数器计数满一帧,控制缓存内帧数计数器减1。

⑧使能计数器:控制读出计数器,当⑥数据线发送有效数据时,⑧使能计数器拉高,激活读出计数器开始计数。

⑨控制线:通过计数器恢复出上一个主低速通信系统给tlk2711的帧头帧尾的控制线,来送给从低速通俗通信系统来判断数据帧的帧头和帧尾。

在高速缓存低速发送转换模块内,通过tlk2711的使能控制线和数据流来判断tlk2711的帧头,当判断为帧头后将接收fifo的写使能拉高,将除去tlk2711的帧头的数据帧以位宽为16,频率为100mhz的数据写入接收fifo,同时激活写入计数器,当写入计数器计数满一个数据帧,且能吻合数据线上数据帧的帧尾时,将接收端的缓存内帧数计数器加1,同时拉低fifo写使能,关闭写数据。

在高速缓存低速发送转换模块内,当接收端的缓存内帧数计数器大于1时表示,接收端的缓存内最少有一个完整的数据帧,此时通过将fifo的读使能拉高,开始读取数据,读fifo数据的位宽为8,频率为125mhz。同时激活读取计数器,当读取计数器计数满一个数据帧后,将接收端的缓存内帧数计数器减1,同时将fifo的读使能拉低,关闭读取数据。将高速数据流缓存,并且低速处理。

对于watting_flag缓存方式的具体实现,如图6所示,为writting_flag结构框图,如图7所示,为writting_flag写入与读取的状态机。

具体的来说,其中fifo为异步fifo缓存器,w_en为写使能,r_en为读使能,in_d为写数据口,out_d为读数据口,wclk为写时钟,rclk为读时钟。

in_data为输入数据流,输入数据流位宽为8bit频率为125mhz,由数据线和控制信号组成。write_num为写入计数器,当in_data中帧头到来时(帧头的判断规则为数据线上为0x1c同时控制线上位高电平),激活write_num计数器开始计数并且拉高w_en,每写入fifo一个数据帧数据,write_num自增1,当write_num计数器计数值等于length(帧长)时,激励frame_num自增1,write_num重置。write_clk为写入时钟为125mhz。

out_data为输出数据流,输出数据流位宽为16bit频率为100mhz,由数据流和控制信号组成。frame_num为fifo内帧数计数器,read_num为读出计数器,当frame_num大于等于1时,表示fifo内至少由一帧完整的数据,此时激励read_num开始计数,并且拉高r_en,计数规则为每读出一个fifo内数据,read_num自增1,当read_num计数器计数值等于length(帧长)时,激励frame_num自减1,read_num重置。read_clk为写入时钟为100mhz。

其中数据帧是固定长度的帧,有确定的帧长度。

由图6和图7与其解释可以得出结论。本发明提出“wattingflag”缓存发送方式,可以解决低速通信系统该换高速接口后,低速通信系统的低速数据流无差错的转换为高速数据流,并且通过高速通信接口发出。相比与传统方法,本发明的优势如下:

①节约内存资源:仅使用一个fifo相比于传统方法使用两个fifo交替接收发送,可以节约一半的fpga内部的缓存资源。

②时序逻辑简单:仅有一个fifo,相比于传统方法使用两个fifo交替使用,时序控制更加简单,仅仅通过几个计数器来控制一个fifo的读写,来完成数据流的转换。

有益效果

本发明提出的“wattingflag”缓存发送方式节省了fpga内部的储存资源,从而提高了fpga内部的储存资源可能存在不足的情况。第一,在时序逻辑方面,相比于常用的“乒乓接收法”的缓存方式,“wattingflag”缓存发送方式只需要一个fifo缓存器,相比于常用的方式使用两个fifo进行交替缓存的方式,“wattingflag”缓存发送方式具有更简单的时序逻辑。第二,在储存资源占用的方面,常用的方式需要使用两个略长于帧长的fifo缓存器,而“wattingflag”缓存发送方式只需要一个略长于帧长的fifo缓存器,节省了相比于常用方法一半的内存资源。

本发明的一种基于fpga的不同速率的接口转换方法,通过原本使用gtp作为通信串口的数据处理模块的数据线和控制线将主通信板卡的数据发送给低速缓存高速发送转换模块,其中,所述数据包括数据流和控制信号;在接收到数据流和对应的控制信号后,基于缓存发送方式将接收到的低速数据流整合成高速数据流,并发送到驱动发送模块;利用所述驱动发送模块将所述高速数据流转换成串行数据,驱动发送模块将串行数据传送到接收恢复模块,接收恢复模块将所述串行数据转换成并行数据后发送至高速缓存低速发送转换模块;基于缓存发送方式将所述并行数据整合成所述低速数据流,并恢复出所述控制信号,然后将所述低速数据流和所述控制信号发送至从通信板卡,单个发送过程和单个接收过程分别只使用了一个fifo,相比于传统的“乒乓法”节约了使用两个fifo节约了一半的fpga芯片的内存资源,降低了不同速率接口转化所需要的fpga的内存资源。

以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。


技术特征:

1.一种基于fpga的不同速率的接口转换方法,其特征在于,包括以下步骤:

通过gtp的数据线和控制线将主通信板卡的数据流发送给低速缓存高速发送转换模块;

在接收到所述数据流和对应的控制信号后,基于缓存发送方式将接收到的低速数据流整合成高速数据流,并发送到驱动发送模块;

利用所述驱动发送模块将所述高速数据流转换成串行数据,并将所述串行数据发送给接收恢复模块,通过所述接收恢复模块将所述串行数据转换成并行数据后发送至高速缓存低速发送转换模块;

基于缓存发送方式将所述并行数据整合成所述低速数据流,并恢复出所述控制信号,然后将所述低速数据流和所述控制信号发送至从通信板卡。

2.如权利要求1所述的基于fpga的不同速率的接口转换方法,其特征在于,在接收到数据流和对应的控制信号后,基于缓存发送方式将接收到的低速数据流整合成高速数据流,并发送到驱动发送模块,包括:

通过所述数据流上的帧头和帧尾与控制信号获取数据帧的位置,并读取所述数据帧的所述帧头、有效数据和帧尾;

启动写入计数器对读取的数据帧内的数据进行计数同时拉高fifo的写使能,将数据帧写入fifo,当所述写入计数器计数满一帧后对缓存内帧数计数器的计数值进行修改,同时拉低fifo的所述写使能,关闭写数据;

当所述缓存内帧数计数器的所述计数值大于1时,拉高fifo的读使能并启动读取计数器对读取的所述数据帧进行计数,直至一个所述数据帧读取完成;

通过驱动控制线和驱动数据线将读取的所述数据帧传输至驱动发送模块。

3.如权利要求2所述的基于fpga的不同速率的接口转换方法,其特征在于,当所述缓存内帧数计数器的所述计数值大于1时,拉高fifo的读使能并启动读取计数器对读取的所述数据帧进行计数,直至一个所述数据帧读取完成之后,所述方法还包括:

当一个所述数据帧读取完成之后,清空所述读取计数器,并且拉低fifo的所述读使能,将所述缓存内帧数计数器的所述计数值减1,关闭读取数据。

4.如权利要求1所述的基于fpga的不同速率的接口转换方法,其特征在于,利用所述驱动发送模块将所述高速数据流转换成串行数据,并将所述串行数据发送给接收恢复模块,通过所述接收恢复模块将所述串行数据转换成并行数据后发送至高速缓存低速发送转换模块,包括:

利用所述驱动发送模块中的发送端接收所述高速数据流,并将所述高速数据流转换成串行数据发送给接收恢复模块;

利用所述接收恢复模块将接收到的所述串行数据恢复成16位的并行数据,并发送给所述高速缓存低速发送转换模块。

5.如权利要求1所述的基于fpga的不同速率的接口转换方法,其特征在于,基于缓存发送方式将所述并行数据整合成所述低速数据流,并恢复出所述控制信号,然后将所述低速数据流和所述控制信号发送至从通信板卡,包括:

利用所述驱动发送模块中的使能控制线判断所述并行数据的帧头,并当获取到对应的所述帧头位置时,拉高fifo的写使能;

当所述高速缓存低速发送转换模块中的缓存内帧数计数器的计数值大于1时,拉高对应的读使能,同时启动读取计数器对读取的数据帧进行计数;

当所述读取计数器记满一个所述数据帧后,将所述缓存内帧数计数器的所述计数值减1,清空所述读取计数器,同时拉低fifo的读使能,并关闭读取数据;

根据读取出的所述数据帧,并且通过对所述数据帧的数据进行计数,恢复出对应的所述控制信号,并将所述数据帧和所述控制信号发送至从通信板卡。

6.如权利要求5所述的基于fpga的不同速率的接口转换方法,其特征在于,利用所述驱动发送模块中的使能控制线判断所述并行数据的帧头,并当获取到对应的所述帧头位置时,拉高对应的写使能之后,所述方法还包括:

以位宽为16,频率为100mhz的数据规格写入fifo,同时启动对应的写入计数器,当所述写入计数器计数满一个所述数据帧,且所述写入计数器的计数值和约定的帧长度相同时,判断帧数据完整;

将所述缓存内帧数计数器加1,同时拉低所述写使能,关闭写数据,完成一个数据帧的缓存流程。

技术总结
本发明公开了一种基于FPGA的不同速率的接口转换方法,通过GTP的数据线和控制线将主通信板卡的数据发送给低速缓存高速发送转换模块,其中,所述数据包括数据流和控制信号;在接收到数据流和对应的控制信号后,基于缓存发送方式将接收到的低速数据流整合成高速数据流,并发送到驱动发送模块;利用所述驱动发送模块将所述高速数据流转换成串行数据,并将所述串行数据转换成并行数据后发送至高速缓存低速发送转换模块;基于缓存发送方式将所述并行数据整合成所述低速数据流,并恢复出所述控制信号,然后将所述低速数据流和所述控制信号发送至从通信板卡,降低了不同速率接口转化所需要的FPGA的内存资源。

技术研发人员:张向利;蒋浩云;王俊凯;董国华
受保护的技术使用者:桂林电子科技大学
技术研发日:2021.03.31
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-9286.html

最新回复(0)