一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种DMA控制器FPGA及基于其的固态存储器的制作方法

2022-08-13 11:08:23 来源:中国专利 TAG:

一种dma控制器fpga及基于其的固态存储器
技术领域
1.本发明属于电子信息技术领域,涉及一种dma控制器fpga及基于其的固态存储器。


背景技术:

2.固态存储器是卫星载荷分系统的重要单机,主要完成数据的存储与回放,应用最广的固存产品存储容量约为1tb,数据吞吐带宽约为1.8gbps,固存功能主要通过cpu(中央处理器) fpga(现场可编程门阵列) flash阵列架构实现。
3.其中,cpu负责接收下位机指令,向fpga发送记录、回放及擦除等指令,是固存的“大脑”,fpga在记录模式下接收外部输入数据,在fpga内部对数据进行处理后写入flash阵列,在回放模式下,fpga将有效数据从flash阵列中取出,按照回放接口协议将数据整理后输出,是具体动作的“执行者”,要完成上述功能,需要使用三种类型的fpga,包括地址管理fpga、接口管理fpga以及dma控制器fpga。其中,地址管理fpga位于固存cpu板上,负责产生fpga对flash进行读、写、擦操作的逻辑地址,对cpu指令进行地址译码以及配合cpu产生固存内部各个供电模块的上电信号。dma控制器fpga位于固存mem(存储)板上,主要实现固存内部数据流水的控制,即不通过cpu中断,通过fpga直接实现外部数据与固存内部存储介质之间的搬运。接口管理fpga位于固存do(输出)板上,将外部记录数据分发给各mem板,根据外部回放请求向各mem板发送回放请求,并将mem板送来的回放数据组帧对外回放等。
4.根据以上描述可知,目前固态存储器主要特点是输入输出速率快,对外接口单一,对外部输入数据在固存内部透明传输,但是无法实现对多通道输入数据同时写入,如多路数据同时输入固态存储器内部时,容易出现数据阻塞造成关键数据丢失的问题,以及在dma控制器内部无法对数据进行分类及组帧处理的功能。


技术实现要素:

5.本发明的目的在于克服上述现有技术中,现有固态存储器无法实现对多通道输入数据同时写入,如多路数据同时输入固态存储器内部时,容易出现数据阻塞造成关键数据丢失的问题,以及在dma控制器内部无法对数据进行分类及组帧处理的功能的缺点,提供一种dma控制器fpga及基于其的固态存储器。
6.为达到上述目的,本发明采用以下技术方案予以实现:
7.本发明第一方面,一种dma控制器fpga,包括fpga本体,fpga本体上设置数据信号输出接口以及若干数据信号输入接口;fpga本体内部设置复接缓冲区模块以及组帧模块,复接缓冲区模块内部设置若干双口ram;
8.各数据信号输入接口分别用于输入数据信号至各双口ram;
9.双口ram用于缓存数据信号至数据信号占双口ram内存的比例至预设值,生成ram读请求信号发送至组帧模块;
10.组帧模块根据各双口ram的ram读请求信号,从各双口ram中读取待读取的数据信号,并在从各双口ram中读取的数据信号中添加各双口ram预设的标识符,得到组帧数据信
号;
11.数据信号输出接口用于输出组帧数据信号。
12.可选的,所述组帧模块包括读序列使能产生模块和读序列控制模块;
13.读序列使能产生模块用于接收各双口ram的ram读请求信号,并生成各双口ram的ram读使能信号发送至读序列控制模块;
14.读序列控制模块用于根据各双口ram的ram读使能信号,生成ram读序列使能信号,并根据ram读序列使能信号,采用乒乓方式从各双口ram中读取待读取的数据信号,并在从各双口ram中读取的数据信号中添加各双口ram预设的标识符,得到组帧数据信号。
15.可选的,所述读序列控制模块还用于在读取完当前双口ram中待读取的数据信号后,生成ram读序列复位信号并发送至读序列使能产生模块,读序列使能产生模块根据ram读序列复位信号复位当前双口ram的ram读使能信号。
16.可选的,所述预设值a满足下述条件:
17.(a
×
q)/v2<((1-a)
×
q1)/v1
18.其中,v1为各数据信号输入接口的数据信号输入速率中最快的数据信号输入速率;v2为组帧模块的数据信号读取速率,q为各双口ram内存总和,q1为单个双口ram内存。
19.可选的,所述fpga本体内部还设置错误检测与纠正编码模块;
20.错误检测与纠正编码模块用于将数据信号输出接口输出的组帧数据信号,进行每预设数据长度添加一个检验码处理,并输出。
21.可选的,所述进行每预设数据长度添加一个检验码处理时,根据每预设数据长度的数据,采用汉明码编码算法,生成一个检验码。
22.可选的,所述复接缓冲区模块内部设置四个双口ram,所述预设数据长度为48bit数据。
23.可选的,所述fpga本体上还设置系统时钟信号接口、复位信号接口以及启动信号接口,分别用于输入系统时钟信号、复位信号以及启动信号。
24.可选的,所述fpga本体上还设置若干门控信号接口以及若干数据时钟信号接口;
25.若干门控信号接口分别用于输入各双口ram的门控信号;
26.若干数据时钟信号接口分别用于输入各双口ram的数据时钟信号。
27.本发明第二方面,一种固态存储器,所述固态存储器的dma控制器fpga采用上述的dma控制器fpga。
28.与现有技术相比,本发明具有以下有益效果:
29.本发明dma控制器fpga,通过调用dma控制器fpga内部的多个双口ram,对外部多通道输入数据进行缓存,同时在dma控制器fpga内部设计组帧模块,通过其对不同类型数据进行分类组帧传输,进而实现对多通道输入数据进行流水控制,满足了用户对固态存储器产品的需求,实现了对多通道数据去繁化简的作用,对于提高固态存储器产品的功能性能多样化具有重要意义。解决了多路数据同时输入固态存储器内部时,出现数据阻塞造成关键数据丢失的问题,同时,其整合组帧功能也丰富了数据处理的灵活性,使得数据在固态存储器内部不再是单一透明传输,基于fpga实现,不局限应用于固态存储器产品中,在涉及到多通道数据传输的fpga中均可广泛使用。
附图说明
30.图1为本发明实施例的dma控制器fpga结构示意图;
31.图2为本发明实施例的dma控制器fpga对外接口示意图;
32.图3为本发明实施例的输入通道a组/b组三线制时序逻辑示意图;
33.图4为本发明实施例的输入通道c组三线制时序逻辑示意图;
34.图5为本发明实施例的输入通道d组三线制时序逻辑示意图;
35.图6为本发明实施例的输出通道三线制时序逻辑示意图;
36.图7为本发明实施例的四路数据在dma控制器fpga内部流水框图。
具体实施方式
37.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
38.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
39.下面结合附图对本发明做进一步详细描述:
40.参见图1,本发明一实施例中,提供一种dma控制器fpga,包括fpga本体,fpga本体上设置数据信号输出接口以及若干数据信号输入接口;fpga本体内部设置复接缓冲区模块以及组帧模块,复接缓冲区模块内部设置若干双口ram;其中,各数据信号输入接口分别用于输入数据信号至各双口ram;双口ram用于缓存数据信号至数据信号占双口ram内存的比例至预设值,生成ram读请求信号发送至组帧模块;组帧模块根据各双口ram的ram读请求信号,从各双口ram中读取待读取的数据信号,并在从各双口ram中读取的数据信号中添加各双口ram预设的标识符,得到组帧数据信号;数据信号输出接口用于输出组帧数据信号。
41.本发明dma控制器fpga,通过调用dma控制器fpga内部的多个双口ram,对外部多通道输入数据进行缓存,同时在dma控制器fpga内部设计组帧模块,通过其对不同类型数据进行分类组帧传输,进而实现对多通道输入数据进行流水控制,满足了用户对固态存储器产品的需求,实现了对多通道数据去繁化简的作用,对于提高固态存储器产品的功能性能多样化具有重要意义。解决了多路数据同时输入固态存储器内部时,出现数据阻塞造成关键数据丢失的问题,同时,其整合组帧功能也丰富了数据处理的灵活性,使得数据在固态存储器内部不再是单一透明传输,基于fpga实现,不局限应用于固态存储器产品中,在涉及到多通道数据传输的fpga中均可广泛使用。
42.在一种可能的实施方式中,所述组帧模块包括读序列使能产生模块和读序列控制
模块;读序列使能产生模块用于接收各双口ram的ram读请求信号,并生成各双口ram的ram读使能信号发送至读序列控制模块;读序列控制模块用于根据各双口ram的ram读使能信号,生成ram读序列使能信号,并根据ram读序列使能信号,采用乒乓方式从各双口ram中读取待读取的数据信号,并在从各双口ram中读取的数据信号中添加各双口ram预设的标识符,得到组帧数据信号。
43.可选的,所述读序列控制模块还用于在读取完当前双口ram中待读取的数据信号后,生成ram读序列复位信号并发送至读序列使能产生模块,读序列使能产生模块根据ram读序列复位信号复位当前双口ram的ram读使能信号。通过复位本次读序列,使得下次读序列启动前,各控制信号处于初始态,目的是本次读序列不影响下次读序列。
44.具体的,复接缓冲区模块利用内部的双口ram对输入数据进行缓存,对外部输入的1bit数据进行串并转换后在门控有效时写入双口ram,存储至一定限值后产生读请求,读请求被外部响应后启动ram读时序。复接缓冲区模块的输入包括:三线制输入,分别为1bit数据,1bit时钟以及1bit门控信号;复位信号rst,系统时钟clk,记录启动信号ei,ram读信号buf_rd以及ram读地址buf_radd。输出包括:ram读请求信号buf_req,从双口ram读出的数据buf_d。
45.组帧模块的主要功能是,当外部数据对多个双口ram同时输入时,该模块在确保复接缓冲区数据不溢出的前提下,依次从各个双口ram读出固定字节数本实施例中每次读出字节数固定为504个,但不以此为限,对不同类型的数据在每帧帧头处加6个字节的标识符,组成一帧的有效数据。
46.对其内部的读序列使能产生模块产生的ram读使能信号bufx_en信号进行选择,生成对应的ram读序列启动信号seqx_en_t,当第一个双口ram产生的buf1_en有效时,则seq1_en_t有效,组帧模块启动读ram1的序列,以此类推。如果有两个或两个以上的bufx_en有效,则产生ram读序列启动信号的顺序为seq1_en_t、seq2_en_t、seq3_en_t以及seq4_en_t。
47.组帧模块的输入包括:复位信号rst,系统时钟clk,从不同双口ram读出的8bit有效数据wd以及不同双口ram产生的读请求buf_req。输出包括:一帧的有效数据data,下一级缓冲区写地址buf_wadd,下一级缓冲区写信号buf_we以及输出至不同双口ram的读信号buf_rd和读地址buf_radd。
48.读序列使能产生模块的主要功能是,根据输入的ram读请求和ram读序列复位信号,产生或撤销读ram序列使能操作,当bufx_req有效时,bufx_en有效,当读序列结束后seqx_clr有效时,bufx_en撤销。读序列使能产生模块的输入包括:复位信号rst,系统时钟clk,ram读请求信号bufx_req以及ram读序列复位信号seqx_clr。输出包括:ram读使能信号bufx_en。
49.读序列控制模块的主要功能是,ram读请求被响应后,启动ram读序列,在模块内部启动读序列发生器,依次给出读信号以及读地址,锁存从ram读出的有效数据,进行8bit-48bit的串并转换,同时产生写下一级缓冲区的写信号。读序列控制模块的输入包括:复位信号rst,系统时钟clk以及ram读序列启动信号seqx_en_t。输出包括:ram读信号bufx_rd,ram读地址bufx_radd,ram读序列复位信号seqx_clr。
50.在一种可能的实施方式中,在多路数据流水处理过程中,为了使外部数据能够源源不断的写入dma控制器fpga,而不出现数据溢出的现象,dma控制器fpga内部的数据处理
速度要与外部速率匹配,可以采用预设值a来表征dma控制器fpga内部的数据处理速度与外部速率之间的匹配关系,具体的,所述预设值a满足下述条件:
51.(a
×
q)/v2<((1-a)
×
q1)/v1
52.其中,v1为各数据信号输入接口的数据信号输入速率中最快的数据信号输入速率;v2为组帧模块的数据信号读取速率,q为各双口ram内存总和,q1为单个双口ram内存。
53.在一种可能的实施方式中,所述fpga本体内部还设置错误检测与纠正(error detection and correction,edac)编码模块;错误检测与纠正编码模块用于将数据信号输出接口输出的组帧数据信号,进行每预设数据长度添加一个检验码处理,并输出。可选的,所述进行每预设数据长度添加一个检验码处理时,根据每预设数据长度的数据,采用汉明码编码算法,生成一个检验码。具体的,本实施例中,对输入内部的每48bit数据,产生8bit校验码。
54.伴随着卫星用户对多通道数据存储需求的日益增加,支持多路接口同时输入并且能够对数据进行组帧分类处理的小型固态存储器越来越多的出现在卫星载荷平台中,在小型固态存储器中,采用上述dma控制器fpga,dma控制器fpga在内部完成对多路输入数据进行流水控制,对前级数据进行整合、组帧及传输,数据打包好后通过接口协议传递至下一级流水,实现多路数据同时输入。
55.在一种可能的实施方式中,以四通道数据同时输入至dma控制器fpga的设计案例说明本发明的内容。dma控制器fpga的相关性能如下:工作时钟频率40mhz;外部四路lvds通道时钟输入速率分别为60mhz/60mhz/8mhz/8mhz;输出数据时钟频率40mhz。
56.参见图2,dma控制器fpga对外接口示意,具体如下表1所示:
57.表1fpga本体上设置的接口信息表
58.[0059][0060]
dma控制器fpga的外部接口描述:输入端四路数据通道三线制接口:输入时钟wclk_x,输入门控wgate_x,输入数据wdata_x。
[0061]
参见图3,a组/b组:lvds,三线制(时钟,门控及数据),60m
×
1b,门控包整帧(高有效)。(1)时钟频率60mhz;(2)接口数据宽度1bit;(3)时钟信号的上升沿对应数据变化,下降沿采样,可适应时钟与数据时延关系
±
5ns。
[0062]
参见图4,c组:lvds,三线制(时钟,门控及数据),8m
×
1b,门控包整帧(低有效)。(1)时钟频率8mhz;(2)接口数据宽度1bit;(3)时钟信号的上升沿对应数据变化,下降沿采样,可适应时钟与数据时延关系
±
5ns。
[0063]
参见图5,d组:lvds,三线制(时钟,门控及数据),8m
×
1b,门控包整帧(高有效)。(1)时钟频率8mhz;(2)接口数据宽度1bit;(3)时钟信号的上升沿对应数据变化,下降沿采样,可适应时钟与数据时延关系
±
5ns。
[0064]
参见图6,fpga输出接口:输出数据buf_di,输出buf写使能buf_we以及输出buf写地址buf_wadd。(1)buf_we周期为6拍系统钟,其中2拍有效,4拍无效。(2)buf_di与buf_wadd保持时间为6拍系统钟。(3)各个通道的输入数据在fpga内部经过编码、组帧后,每写满504个字节,则通过输出端口输出。输出端每次启动,连续输出一帧(504字节有效数据 6字节帧头信息)同一类型数据,伴随85个写信号和写地址,每个写信号对应56bit数据(48bit数据 8bit edac码)。(4)输出端钟码关系不大于
±
5ns。其它信号:复位信号rst,系统时钟信号clk以及记录使能信号ei。
[0065]
参见图7,示出了四路数据在dma控制器fpga内部流水。本实施例中,外部输入的四
通道数据在ip核内部进行组帧,并且标识不同帧信息,每帧帧长510字节,其中帧头6字节,其余504字节为有效数据,四通道不同的帧头标识如下:a通道:1a cf fc 1d 11 00;b通道:1a cf fc 1d 33 00;c通道:1a cf fc 1d 55 00;d通道:1a cf fc 1d 77 00。
[0066]
在多路数据流水处理过程中,为了使外部数据能够源源不断的写入fpga而不出现数据溢出的现象,fpga内部的数据处理速度要与外部速率匹配。
[0067]
具体的,本实施例中,设置半满为预设值,复接缓冲区时间t
r_buf
:四个1008*8b的复接缓冲区分别对应输入的四组数据,外部输入的四路载荷在1-8串并转换后写入对应复接缓冲区,采用乒乓方式对四个复接缓冲区进行读写操作,复接缓冲区每写够504字节数据产生读请求,时序打包器读复接缓冲区时默认系统时钟为读时钟,则读取半个缓冲区时间为生读请求,时序打包器读复接缓冲区时默认系统时钟为读时钟,则读取半个缓冲区时间为极端情况时会出现四个复接缓冲区同时半满的情况,此时时序打包器读取复接缓冲区的顺序为:120m(a组)》60m(b组)》485(c组)》422(d组),依次读完四个复接缓冲区数据需要而写入速度最快的数据源a组与b组需要才能再次填满复接缓冲区半区产生读请求,因此在该状态下不会出现数据溢出现象。
[0068]
本发明再一个实施例中,提供一种固态存储器,所述固态存储器的dma控制器fpga采用上述实施例的dma控制器fpga。
[0069]
构造一个本发明的固态存储器,按照本文所描述的输入接口协议向固态存储器发送数据源,固存启动记录后,将有效数据写入dma控制器fpga,同时在fpga输出接口通过收数软件接收数据,确认收取数据是否存在丢数、断数等现象,确认不同数据源发送的数据从fpga输出后带有不同帧标识的帧头。
[0070]
本发明在某卫星固态存储器中进行了工程应用,所能达到的效果具体包括:在固态存储器上实现对多路数据同时接收且不断流的功能,对外部输入多路数据源进行分类组帧,再以简单协议将有效数据传输到下一级,起到去繁化简的作用。
[0071]
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献