CN105868134B - 高性能多口ddr控制器及其实现方法 - Google Patents
高性能多口ddr控制器及其实现方法 Download PDFInfo
- Publication number
- CN105868134B CN105868134B CN201610231074.5A CN201610231074A CN105868134B CN 105868134 B CN105868134 B CN 105868134B CN 201610231074 A CN201610231074 A CN 201610231074A CN 105868134 B CN105868134 B CN 105868134B
- Authority
- CN
- China
- Prior art keywords
- read
- message
- write
- ddr
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Bus Control (AREA)
Abstract
本发明公开了一种高性能多口DDR控制器及其实现方法,涉及数据通信领域。该高性能多口DDR控制器包括本地总线与读写报文转换模块、用户接口与读写报文转换模块、读/写报文下行仲裁模块、读回复数据报文上行端口选择模块、读写报文与DDR接口转换模块、DDR接口模块。本发明中多用户口共享DDR接口的架构更具经济性与灵活性,极大节省了管脚资源和逻辑资源,简化了设计难度。
Description
技术领域
本发明涉及数据通信领域,具体是涉及一种高性能多口DDR控制器及其实现方法。
背景技术
随着基于IP(Internet Protocol,网际协议)化的传送网络不断发展,基于FPGA(Field Programmable Gate Array,现场可编程门阵列)芯片实现的网络协议功能对于大容量、高速的数据缓存的需求越来越迫切。传统的数据缓存方案基于FPGA片内block RAM(块状随机存储器)实现。该方案拥有高速、配置灵活、使用方便等优点,但是成本高昂、且容量小的缺点使其越来越不适用于大条目数的协议数据缓存。
DDR(Double Data Rate,双倍速率同步动态随机存储器)是JEDEC(电子设备工程联合委员会)于2004年发布,经历了DDR、DDR2、DDR3、DDR4的发展,由于各代DDR系统原理相似,下文中以“DDR”统述。DDR因其成本低廉、容量大、高速的优点被广泛用于存储需求高的数据通信领域。DDR系统通常由DDR控制器和DDR存储器组成。DDR控制器根据用户的请求,按照DDR规范中定义的时序向DDR存储器发起初始化、读、写等指令;DDR存储器实现数据的存储和对DDR控制器指令的响应。
在一般的基于FPGA的DDR控制器设计中,容量与带宽的提升可以通过DDR存储器的叠加实现,缺点是一个DDR控制器只有一个用户口。对于多用户的应用场景,需要为每个用户例化一个DDR控制器,对于FPGA的管脚和逻辑资源是一种极大的浪费。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种高性能多口DDR控制器及其实现方法,多用户口共享DDR接口的架构更具经济性与灵活性,极大节省了管脚资源和逻辑资源,简化了设计难度。
本发明提供一种高性能多口DDR控制器,该控制器包括本地总线与读写报文转换模块、用户接口与读写报文转换模块、读/写报文下行仲裁模块、读回复数据报文上行端口选择模块、读写报文与DDR接口转换模块、双倍速率同步动态随机存储器DDR接口模块,其中:
本地总线与读写报文转换模块用于:将本地总线写转换为下行的写报文,将本地总线读转换为下行的读报文,并提取相应上行的读回复数据报文中的数据;
用户接口与读写报文转换模块用于:将用户接口写请求转换为下行的写报文,将用户接口读请求转换为下行的读报文,并提取相应上行的读回复数据报文中的数据;
读/写报文下行仲裁模块用于:对来自本地总线接口的读写报文或来自用户接口的读写报文进行下行仲裁,按照优先级顺序通过,同时为等待通行的报文提供缓存;
读回复数据报文上行端口选择模块用于:对DDR接口读回复数据报文去往本地总线接口或用户接口的上行进行选择;
读写报文与DDR接口转换模块用于:下行方向,实现读写报文与DDR接口模块用户侧接口转换;上行方向,提取读回复数据组成读回复报文;
DDR接口模块用于:实现DDR接口的底层协议,驱动FPGA与DDR颗粒之间的硬件连线。
在上述技术方案的基础上,所述本地总线与读写报文转换模块提供一个通用的本地总线接口,工作于从端回复模式;本地总线接口由片选信号、读写使能信号、地址信号、数据信号、操作完成指示信号组成;所述控制器作为本地总线的从端,响应用户通过该接口提供的读/写操作,完成写操作并提供操作完成指示信号,或者完成读操作并返回读数据以及操作完成指示信号;用户作为本地总线的主端,在收到上一次读/写操作完成指示信号后,才能再次发起读/写操作。
在上述技术方案的基础上,所述用户接口与读写报文转换模块提供一个自定义的用户接口,工作于从端回复模式;用户接口由请求开始信号、请求读写指示信号、请求起地址信号、请求长度信号、请求写数据信号、请求读回复数据信号、请求结束回复信号组成;所述控制器作为该接口的从端,响应用户通过该接口提供的读/写请求,完成写请求并提供请求结束回复信号,或者完成读请求并返回读回复数据以及请求结束回复信号;用户作为该接口的主端,在收到上一次读/写请求完成回复信号后,才能再次发起读/写请求。
在上述技术方案的基础上,所述本地总线接口只支持一次操作执行一拍数据的读写,用户接口一次操作支持1至1024任意拍数据的连续读写;用户作为主端发起1至1024任意拍数据的读/写请求后,所述控制器参照直接内存存取DMA方式执行:用户接口与读写报文转换模块将该请求按照底层DDR接口的突发长度切割成小粒度的读/写请求并下发,当所有小粒度读/写请求完成后,产生请求结束回复信号,提示主端请求已完成;
用户作为主端发起1至1024任意拍数据的读/写请求后,按照DDR接口模块设置的突发长度进行切包操作,将用户接口所支持的大数据请求切分为底层DDR接口模块支持的小数据请求;
对于用户写请求,用户接口与读写报文转换模块监测DDR接口处的执行情况,当最后一个写操作在DDR接口处完成即结束本次用户写请求,返回请求结束回复信号;
对于用户读请求,检测用户接口与读写报文转换模块收到切包时,读回复报文;
对于用户接口,收到的读回复报文如果不是最后一个切包读回复报文,则将数据缓存,当收到最后一个读回复报文后,即将缓存数据整体上报后,回复用户读请求完成指示信号,以完成本次读请求。
在上述技术方案的基础上,所述本地总线接口或用户接口所转换的读写报文分为写报文、读报文、读回复报文三种类型,三种类型的报文均由64比特帧头加数据域组成,数据域最小数据单位为32比特;帧头信息包括报文类型、端口号、切包标号、切包起地址、切包长度;报文类型指示本报文是写报文、读报文或读回复报文;端口号指示本报文来自本地总线接口或哪一个用户接口;切包标号标记本报文携带本次大数据请求中的第几段数据,切包标号指示本次读写请求切包后的编号;切包数据域最小数据单位为32比特,是以切包起地址开始的连续数据,切包长度指示该数据域有多少个32比特有效数据;切包起地址标记本报文携带数据的起地址,切包长度标记本报文携带数据的长度。
在上述技术方案的基础上,所述读/写报文下行仲裁模块为各上游用户端口设置了独立的通道缓存,用于流量控制;对于先后到达上行端口读/写报文,读/写报文下行仲裁模块按照先后顺序依次放行;对于同时到达的上行端口读/写报文,读/写报文下行仲裁模块按照配置的优先级顺序执行,保证带宽均匀分配;读/写报文下行仲裁模块的缓存大小为一次写请求的最大数据量,通过本地总线接口/用户接口与上游的握手机制保证缓存不溢出;通过切包机制与调度机制,同时通过流水线调度机制以及下游模块的快速执行,保证DDR的带宽利用率。
在上述技术方案的基础上,所述读回复数据报文上行端口选择模块上游与所例化的各用户端口与读写报文转换模块相连,下游与读写报文与DDR接口转换模块相连,实现对DDR接口读回复数据去往本地总线接口或用户接口的上行选择;读回复数据报文上行端口选择模块收到下游读回复报文后,解析读回复报文帧头,根据帧头信息获知该报文的端口号,根据端口号与用户端口的对应关系将读回复报文转发至相应的端口;读回复数据报文上行端口选择模块是解复用机制,且上下游端口速率一致,无需设置缓存。
在上述技术方案的基础上,所述读写报文与DDR接口转换模块与DDR接口模块完成了常见的单口DDR控制器功能,将仲裁后的读/写报文顺序执行;对于用户写请求,最后一个切包写报文完成,读写报文与DDR接口转换模块通知用户接口与读写报文转换模块,由其回复用户写请求完成指示信号以完成本次写请求;对于用户读请求,读写报文与DDR接口转换模块将读回复数据按照读报文的帧头信息重新组帧成读回复报文并上送。
在上述技术方案的基础上,所述DDR接口模块通过调用FPGA器件厂家提供的DDRIP核实现,该IP核将内部逻辑的数据总线转化为符合DDR标准规范的DDR总线操作,实现FPGA片内逻辑与DDR颗粒的连通,该IP核以硬核方式提供。
本发明还提供上述高性能多口DDR控制器的实现方法,包括以下步骤:
S1、FPGA内部逻辑通过本地总线接口或用户接口发起读/写命令,FPGA内部逻辑作为本地总线接口或用户接口的主端,均需要等待回复当前操作完成指示信号,才能发起下一次操作;
S2、将读/写命令转换为自定义格式读/写报文,其中对于用户接口与读写报文转换模块,按照DDR接口的突发长度进行切包操作,将用户接口所支持的大数据请求切分为底层DDR接口模块支持的小数据请求;
S3、为各上游端口设置独立的通道缓存并对并发进行仲裁,按上行多端口读/写报文到达的先后顺序依次执行,对于同时到达的上行多端口读/写报文则按照可配置的优先级顺序执行;通过握手机制保证缓存不溢出,通过流水线调度机制以及下游模块的快速执行,保证DDR的带宽利用率;
S4、将仲裁后的读/写报文顺序执行:对于用户写请求,最后一个切包写报文完成,即通知用户接口与读写报文转换模块,由其回复用户写请求完成指示信号以完成本次写请求;对于用户读请求,将读回复数据按照读报文的帧头信息重新组帧成读回复报文并上送;
S5、解析读回复报文帧头,根据帧头信息将读回复报文上送至相应的用户接口;
S6、对本地总线接口,收到读回复报文即结束本次读操作;对于用户接口,收到的读回复报文如果不是最后一个切包读回复报文,则将数据缓存,当收到最后一个读回复报文后,即将缓存数据整体上报后,回复用户读请求完成指示信号,以完成本次读请求。
与现有技术相比,本发明的优点如下:
(1)本发明为用户提供了简化但灵活的访问DDR外设的接口,用户既可以使用传统的本地总线接口,也可以使用高效率类DMA的用户接口。本发明在一组DDR总线基础上实现多个用户对DDR外设的同时访问,多用户口共享DDR接口的架构更具经济性与灵活性,极大节省了管脚资源和逻辑资源,简化了设计难度。
(2)本发明对DDR接口带宽利用率高,多用户同时读写时均可以分配到较高的带宽。
(3)本发明充分利用DDR器件大容量、高速率的特点,简化了应用难度,可以在许多应用场合代替昂贵的FPGA片内块RAM的使用。
附图说明
图1是本发明实施例中高性能多口DDR控制器的结构框图。
图2是本发明实施例中高性能多口DDR控制器的实现方法的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
为了满足多个用户同时访问同一个DDR接口的需求,除了需要为用户提供使用方便的接口,支持用户进行本地总线读写或类似DMA(Directional Memory Access,直接内存存取)的大块数据传输;同时需要合理分配DDR接口的带宽(只为工作状态的用户接口平均分配带宽),提升带宽利用率。
参见图1所示,本发明实施例提供一种高性能多口DDR控制器,该控制器包括本地总线与读写报文转换模块、用户接口与读写报文转换模块、读/写报文下行仲裁模块、读回复数据报文上行端口选择模块、读写报文与DDR接口转换模块、DDR接口模块,其中:
本地总线与读写报文转换模块用于:将本地总线写转换为下行的写报文,将本地总线读转换为下行的读报文,并提取相应上行的读回复数据报文中的数据;
用户接口与读写报文转换模块用于:将用户接口写请求转换为下行的写报文,将用户接口读请求转换为下行的读报文,并提取相应上行的读回复数据报文中的数据;
读/写报文下行仲裁模块用于:对来自本地总线接口的读写报文或来自用户接口的读写报文进行下行仲裁,按照优先级顺序通过,同时为等待通行的报文提供缓存;
读回复数据报文上行端口选择模块用于:对DDR接口读回复数据报文去往本地总线接口或用户接口的上行进行选择;
读写报文与DDR接口转换模块用于:下行方向,实现读写报文与DDR接口模块用户侧接口转换;上行方向,提取读回复数据组成读回复报文;
DDR接口模块用于:实现DDR接口的底层协议,驱动FPGA与DDR颗粒之间的硬件连线。
本地总线与读写报文转换模块提供一个通用的本地总线接口,工作于从端回复模式。本地总线接口由片选信号、读写使能信号、地址信号、数据信号、操作完成指示信号组成。本发明实施例中的控制器作为本地总线的从端,响应用户通过该接口提供的读/写操作,完成写操作并提供操作完成指示信号,或者完成读操作并返回读数据以及操作完成指示信号。用户作为本地总线的主端,需要在收到上一次读/写操作完成指示信号后,才能再次发起读/写操作。
用户接口与读写报文转换模块提供一个自定义的用户接口,工作于从端回复模式。用户接口由请求开始信号、请求读写指示信号、请求起地址信号、请求长度信号、请求写数据信号、请求读回复数据信号、请求结束回复信号组成。本发明实施例中的控制器作为该接口的从端,响应用户通过该接口提供的读/写请求,完成写请求并提供请求结束回复信号,或者完成读请求并返回读回复数据以及请求结束回复信号。用户作为该接口的主端,需要在收到上一次读/写请求完成回复信号后,才能再次发起读/写请求。
用户接口与本地总线接口所不同的是,本地总线接口只支持一次操作执行一拍数据的读写,而用户接口一次操作支持1至1024任意拍数据的连续读写。用户作为主端发起1至1024任意拍数据的读/写请求后,本发明实施例中的控制器参照DMA方式执行:用户接口与读写报文转换模块会将该请求按照底层DDR接口的突发长度切割成小粒度的读/写请求并下发,当所有小粒度读/写请求完成后,产生请求结束回复信号,提示主端请求已完成。
用户作为主端发起1至1024任意拍数据的读/写请求后,需要按照DDR接口模块设置的突发长度进行切包操作,将用户接口所支持的大数据请求切分为底层DDR接口模块支持的小数据请求。
对于用户写请求,用户接口与读写报文转换模块监测DDR接口处的执行情况,当最后一个写操作在DDR接口处完成即结束本次用户写请求,返回请求结束回复信号。
对于用户读请求,检测用户接口与读写报文转换模块收到切包时,读回复报文。
对于用户接口,收到的读回复报文如果不是最后一个切包读回复报文,则将数据缓存,当收到最后一个读回复报文后,即将缓存数据整体上报后,回复用户读请求完成指示信号,以完成本次读请求。
本地总线接口或用户接口所转换的读写报文为本发明自定义格式。读写报文分为写报文、读报文、读回复报文三种类型。三种类型的报文均由64比特帧头加数据域组成,数据域最小数据单位为32比特。帧头信息包括报文类型、端口号、切包标号、切包起地址、切包长度。报文类型指示本报文是写报文、读报文或读回复报文。端口号指示本报文来自本地总线接口或哪一个用户接口。如上所述,对于用户接口,用户接口与读写报文转换模块会将该请求按照底层DDR接口的突发长度切割成小粒度的读/写请求并下发。切包标号标记本报文携带本次大数据请求中的第几段数据,切包标号指示本次读写请求切包后的编号。切包数据域最小数据单位为32比特,是以切包起地址开始的连续数据,切包长度指示该数据域有多少个32比特有效数据。切包起地址标记本报文携带数据的起地址,切包长度标记本报文携带数据的长度。
本地总线一般应用于与CPU连接,用户接口一般应用于与FPGA内部逻辑连接。在本发明实施例中,本地总线接口例化了1个,用户接口例化了3个,合计4个用户端口。在实际应用中4个用户端口相互独立,可同时对底层DDR器件进行访问。根据实际应用的需求,用户端口也可以进行扩展,实现原理与本发明所述一致。
读/写报文下行仲裁模块为各上游用户端口设置了独立的通道缓存,用于流量控制。对于先后到达上行端口读/写报文,读/写报文下行仲裁模块按照先后顺序依次放行。对于同时到达的上行端口读/写报文,读/写报文下行仲裁模块按照配置的优先级顺序执行,保证带宽均匀分配。读/写报文下行仲裁模块的缓存大小设计为一次写请求的最大数据量,通过本地总线接口/用户接口与上游的握手机制保证缓存不溢出。通过切包机制与调度机制,同时通过流水线调度机制以及下游模块的快速执行保证DDR的带宽利用率。
读回复数据报文上行端口选择模块上游与所例化的各用户端口与读写报文转换模块相连,下游与读写报文与DDR接口转换模块相连,实现对DDR接口读回复数据去往本地总线接口或用户接口的上行选择。读回复数据报文上行端口选择模块收到下游读回复报文后,解析读回复报文帧头,根据帧头信息获知该报文的端口号,根据端口号与用户端口的对应关系将读回复报文转发至相应的端口。由于读回复数据报文上行端口选择模块是解复用机制,且上下游端口速率一致,所以无需设置缓存。
读写报文与DDR接口转换模块与DDR接口模块完成了常见的单口DDR控制器功能,将仲裁后的读/写报文顺序执行。此部分根据不同的应用场景(不同的FPGA芯片/DDR器件)有不同的实施例,但实现原理均与本发明描述一致。对于用户写请求,最后一个切包写报文完成,读写报文与DDR接口转换模块通知用户接口与读写报文转换模块,由其回复用户写请求完成指示信号以完成本次写请求。对于用户读请求,读写报文与DDR接口转换模块将读回复数据按照读报文的帧头信息重新组帧成读回复报文并上送。
DDR接口模块通过调用FPGA器件厂家提供的DDR IP核实现。该IP核可实现将内部逻辑的数据总线转化为符合DDR标准规范的DDR总线操作,实现FPGA片内逻辑与DDR颗粒的连通。由于该IP核以硬核方式提供,且对各厂家DDR颗粒的支持情况良好,可以极大提高本发明实施例的适用范围。
参见图2所示,本发明实施例还提供上述高性能多口DDR控制器的实现方法,包括以下步骤:
S1、FPGA内部逻辑通过本地总线接口或用户接口发起读/写命令,FPGA内部逻辑作为本地总线接口或用户接口的主端,均需要等待回复当前操作完成指示信号,才能发起下一次操作;
S2、将读/写命令转换为自定义格式读/写报文,其中对于用户接口与读写报文转换模块,需要按照DDR接口的突发长度进行切包操作,将用户接口所支持的大数据请求切分为底层DDR接口模块支持的小数据请求;
S3、为各上游端口设置独立的通道缓存并对并发进行仲裁,按上行多端口读/写报文到达的先后顺序依次执行,对于同时到达的上行多端口读/写报文则按照可配置的优先级顺序执行;通过握手机制保证缓存不溢出,通过流水线调度机制以及下游模块的快速执行,保证DDR的带宽利用率;
S4、将仲裁后的读/写报文顺序执行:此部分根据不同的应用场景(不同的FPGA芯片/DDR颗粒)有不同的实施例,但实现原理均与本发明描述一致;对于用户写请求,最后一个切包写报文完成,即通知用户接口与读写报文转换模块,由其回复用户写请求完成指示信号以完成本次写请求;对于用户读请求,将读回复数据按照读报文的帧头信息重新组帧成读回复报文并上送;
S5、解析读回复报文帧头,根据帧头信息将读回复报文上送至相应的用户接口;
S6、对本地总线接口,收到读回复报文即结束本次读操作;对于用户接口,收到的读回复报文如果不是最后一个切包读回复报文,则将数据缓存,当收到最后一个读回复报文后,即将缓存数据整体上报后,回复用户读请求完成指示信号,以完成本次读请求。
下面通过一个具体实现的案例进行说明。
1、读/写请求发起
参见图2所示,FPGA内部逻辑通过本发明实施例提供的本地总线接口或用户接口发起读/写命令。FPGA内部逻辑作为本地总线接口或用户接口的主端,均需要等待本发明实施例回复当前操作完成指示信号才能发起下一次操作。FPGA内部逻辑通过本地总线访问每次请求只能进行一个32比特数据的读写,而通过用户接口每次请求可进行1-1024个32比特地址连续数据的读写。
2、读/写请求识别与转换
将读/写命令转换为自定义格式读/写报文。其中对于本地总线接口直接进行转换;对于用户接口,需要按照DDR接口的突发长度进行切包操作,将用户接口所支持的大数据请求切分为底层DDR接口支持的小数据请求。所有的小数据请求会被顺序编号,每个小数据请求可以独立路由以及被执行和生成相应回复报文。
3、读/写报文下行仲裁
通过读/写报文下行仲裁模块为各上游端口设置独立的通道缓存,按上行多端口读/写报文到达的先后顺序依次执行,对于同时到达的上行多端口读/写报文则按照可配置的优先级顺序执行。通过所述握手机制保证可以设置合理大小的缓存并保证缓存不溢出,并通过流水线调度机制以及下游模块的快速执行保证DDR的带宽利用率。
4、读/写报文执行
将经过仲裁后的读写报文顺序执行,转换为DDR接口操作。此部分根据不同的应用场景(不同的FPGA芯片/DDR颗粒)有不同的实施例,但实现原理均与本发明描述一致。对于用户写请求,最后一个切包写报文完成即通知用户接口与读写报文转换模块,由其回复用户写请求完成指示信号以完成本次写请求。对于用户读请求,将读回复数据按照读报文所示帧头信息重新组帧成读回复报文并上送。
以下步骤5、6描述写请求余下步骤:
5、写报文完成情况监测
底层DDR操作执行部件将所执行写报文端口号、切包编号、切包完成指示上报,监测部件核对端口号,根据本次请求的切包数目核对切包编号,确定写请求的最后一个切包写操作完成即上报写完成指示。
6、写请求完成
根据接收的写请求完成信号,本地总线接口回复操作完成信号,用户接口释放总线为空闲状态。
以下步骤7、8、9描述读请求余下步骤
7、读回复报文生成
底层DDR操作执行部件暂存所执行读报文的报文端口号、切包编号、切包大小等信息,从DDR器件获取读回复数据后则按照定义格式组成读回复报文进行上报。
8、读完成情况监测
监测部件解析读回复数据报文,根据解析出读回复报文端口号、切包编号完成读完成情况监测与读回复报文转发。根据读回复报文端口号确定上送读回复报文至哪一个端口,根据切包编号与暂存的最大切包编号确定是否是本次读请求的最后一个读回复报文。
9、读请求完成
每个端口针对读回复报文设置缓存,读回复报文数据均需进入缓存,当最后一个读回复报文到达缓存即开始向用户输出读回复数据,直至缓存清空为止。清空读回复数据缓存后,对于本地总线接口回复操作完成信号,对于用户接口则释放总线为空闲状态。
本发明实施例在烽火通信的IPRAN设备上得到应用,充分利用DDR器件大容量、高速率的特点,同时简化了应用难度,可以在许多应用场合代替昂贵的FPGA片内块RAM的使用。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。
Claims (10)
1.一种高性能多口DDR控制器,其特征在于:该控制器包括本地总线与读写报文转换模块、用户接口与读写报文转换模块、读/写报文下行仲裁模块、读回复数据报文上行端口选择模块、读写报文与DDR接口转换模块、双倍速率同步动态随机存储器DDR接口模块,其中:
本地总线与读写报文转换模块用于:将本地总线写转换为下行的写报文,将本地总线读转换为下行的读报文,并提取相应上行的读回复数据报文中的数据;
用户接口与读写报文转换模块用于:将用户接口写请求转换为下行的写报文,将用户接口读请求转换为下行的读报文,并提取相应上行的读回复数据报文中的数据;
读写报文分为写报文、读报文、读回复报文三种类型,三种类型的报文均由64比特帧头加数据域组成,数据域最小数据单位为32比特,帧头信息包括报文类型、端口号、切包标号、切包起地址、切包长度,报文类型指示本报文是写报文、读报文或读回复报文,端口号指示本报文来自本地总线接口或哪一个用户接口;
读/写报文下行仲裁模块用于:对来自本地总线接口的读写报文或来自用户接口的读写报文进行下行仲裁,按照优先级顺序通过,同时为等待通行的报文提供缓存;
读回复数据报文上行端口选择模块用于:对DDR接口读回复数据报文去往本地总线接口或用户接口的上行进行选择;
读写报文与DDR接口转换模块用于:下行方向,实现读写报文与DDR接口模块用户侧接口转换;上行方向,提取读回复数据组成读回复报文;
DDR接口模块用于:实现DDR接口的底层协议,驱动FPGA与DDR颗粒之间的硬件连线。
2.如权利要求1所述的高性能多口DDR控制器,其特征在于:所述本地总线与读写报文转换模块提供一个通用的本地总线接口,工作于从端回复模式;本地总线接口由片选信号、读写使能信号、地址信号、数据信号、操作完成指示信号组成;所述控制器作为本地总线的从端,响应用户通过该接口提供的读/写操作,完成写操作并提供操作完成指示信号,或者完成读操作并返回读数据以及操作完成指示信号;用户作为本地总线的主端,在收到上一次读/写操作完成指示信号后,才能再次发起读/写操作。
3.如权利要求1所述的高性能多口DDR控制器,其特征在于:所述用户接口与读写报文转换模块提供一个自定义的用户接口,工作于从端回复模式;用户接口由请求开始信号、请求读写指示信号、请求起地址信号、请求长度信号、请求写数据信号、请求读回复数据信号、请求结束回复信号组成;所述控制器作为该接口的从端,响应用户通过该接口提供的读/写请求,完成写请求并提供请求结束回复信号,或者完成读请求并返回读回复数据以及请求结束回复信号;用户作为该接口的主端,在收到上一次读/写请求完成回复信号后,才能再次发起读/写请求。
4.如权利要求1所述的高性能多口DDR控制器,其特征在于:所述本地总线接口只支持一次操作执行一拍数据的读写,用户接口一次操作支持1至1024任意拍数据的连续读写;用户作为主端发起1至1024任意拍数据的读/写请求后,所述控制器参照直接内存存取DMA方式执行:用户接口与读写报文转换模块将该请求按照底层DDR接口的突发长度切割成小粒度的读/写请求并下发,当所有小粒度读/写请求完成后,产生请求结束回复信号,提示主端请求已完成;
用户作为主端发起1至1024任意拍数据的读/写请求后,按照DDR接口模块设置的突发长度进行切包操作,将用户接口所支持的大数据请求切分为底层DDR接口模块支持的小数据请求;
对于用户写请求,用户接口与读写报文转换模块监测DDR接口处的执行情况,当最后一个写操作在DDR接口处完成即结束本次用户写请求,返回请求结束回复信号;
对于用户读请求,检测用户接口与读写报文转换模块收到切包时,读回复报文;
对于用户接口,收到的读回复报文如果不是最后一个切包读回复报文,则将数据缓存,当收到最后一个读回复报文后,即将缓存数据整体上报后,回复用户读请求完成指示信号,以完成本次读请求。
5.如权利要求1所述的高性能多口DDR控制器,其特征在于:所述本地总线接口或用户接口所转换的读写报文分为写报文、读报文、读回复报文三种类型,三种类型的报文均由64比特帧头加数据域组成,数据域最小数据单位为32比特;帧头信息包括报文类型、端口号、切包标号、切包起地址、切包长度;报文类型指示本报文是写报文、读报文或读回复报文;端口号指示本报文来自本地总线接口或哪一个用户接口;切包标号标记本报文携带本次大数据请求中的第几段数据,切包标号指示本次读写请求切包后的编号;切包数据域最小数据单位为32比特,是以切包起地址开始的连续数据,切包长度指示该数据域有多少个32比特有效数据;切包起地址标记本报文携带数据的起地址,切包长度标记本报文携带数据的长度。
6.如权利要求1所述的高性能多口DDR控制器,其特征在于:所述读/写报文下行仲裁模块为各上游用户端口设置了独立的通道缓存,用于流量控制;对于先后到达上行端口读/写报文,读/写报文下行仲裁模块按照先后顺序依次放行;对于同时到达的上行端口读/写报文,读/写报文下行仲裁模块按照配置的优先级顺序执行,保证带宽均匀分配;读/写报文下行仲裁模块的缓存大小为一次写请求的最大数据量,通过本地总线接口/用户接口与上游的握手机制保证缓存不溢出;通过切包机制与调度机制,同时通过流水线调度机制以及下游模块的快速执行,保证DDR的带宽利用率。
7.如权利要求1所述的高性能多口DDR控制器,其特征在于:所述读回复数据报文上行端口选择模块上游与所例化的各用户端口与读写报文转换模块相连,下游与读写报文与DDR接口转换模块相连,实现对DDR接口读回复数据去往本地总线接口或用户接口的上行选择;读回复数据报文上行端口选择模块收到下游读回复报文后,解析读回复报文帧头,根据帧头信息获知该报文的端口号,根据端口号与用户端口的对应关系将读回复报文转发至相应的端口;读回复数据报文上行端口选择模块是解复用机制,且上下游端口速率一致,无需设置缓存。
8.如权利要求1所述的高性能多口DDR控制器,其特征在于:所述读写报文与DDR接口转换模块与DDR接口模块完成了常见的单口DDR控制器功能,将仲裁后的读/写报文顺序执行;对于用户写请求,最后一个切包写报文完成,读写报文与DDR接口转换模块通知用户接口与读写报文转换模块,由其回复用户写请求完成指示信号以完成本次写请求;对于用户读请求,读写报文与DDR接口转换模块将读回复数据按照读报文的帧头信息重新组帧成读回复报文并上送。
9.如权利要求1所述的高性能多口DDR控制器,其特征在于:所述DDR接口模块通过调用FPGA器件厂家提供的DDR IP核实现,该IP核将内部逻辑的数据总线转化为符合DDR标准规范的DDR总线操作,实现FPGA片内逻辑与DDR颗粒的连通,该IP核以硬核方式提供。
10.权利要求1所述的高性能多口DDR控制器的实现方法,其特征在于,包括以下步骤:
S1、FPGA内部逻辑通过本地总线接口或用户接口发起读/写命令,FPGA内部逻辑作为本地总线接口或用户接口的主端,均需要等待回复当前操作完成指示信号,才能发起下一次操作;
S2、将读/写命令转换为自定义格式读/写报文,其中对于用户接口与读写报文转换模块,按照DDR接口的突发长度进行切包操作,将用户接口所支持的大数据请求切分为底层DDR接口模块支持的小数据请求,读写报文分为写报文、读报文、读回复报文三种类型,三种类型的报文均由64比特帧头加数据域组成,数据域最小数据单位为32比特,帧头信息包括报文类型、端口号、切包标号、切包起地址、切包长度,报文类型指示本报文是写报文、读报文或读回复报文,端口号指示本报文来自本地总线接口或哪一个用户接口;
S3、为各上游端口设置独立的通道缓存并对并发进行仲裁,按上行多端口读/写报文到达的先后顺序依次执行,对于同时到达的上行多端口读/写报文则按照可配置的优先级顺序执行;通过握手机制保证缓存不溢出,通过流水线调度机制以及下游模块的快速执行,保证DDR的带宽利用率;
S4、将仲裁后的读/写报文顺序执行:对于用户写请求,最后一个切包写报文完成,即通知用户接口与读写报文转换模块,由其回复用户写请求完成指示信号以完成本次写请求;对于用户读请求,将读回复数据按照读报文的帧头信息重新组帧成读回复报文并上送;
S5、解析读回复报文帧头,根据帧头信息将读回复报文上送至相应的用户接口;
S6、对本地总线接口,收到读回复报文即结束本次读操作;对于用户接口,收到的读回复报文如果不是最后一个切包读回复报文,则将数据缓存,当收到最后一个读回复报文后,即将缓存数据整体上报后,回复用户读请求完成指示信号,以完成本次读请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610231074.5A CN105868134B (zh) | 2016-04-14 | 2016-04-14 | 高性能多口ddr控制器及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610231074.5A CN105868134B (zh) | 2016-04-14 | 2016-04-14 | 高性能多口ddr控制器及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105868134A CN105868134A (zh) | 2016-08-17 |
CN105868134B true CN105868134B (zh) | 2018-12-28 |
Family
ID=56637663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610231074.5A Active CN105868134B (zh) | 2016-04-14 | 2016-04-14 | 高性能多口ddr控制器及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105868134B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649157B (zh) * | 2016-12-16 | 2019-10-11 | 广东威创视讯科技股份有限公司 | 基于fpga的sdram控制系统 |
CN108776647B (zh) * | 2018-06-04 | 2021-04-13 | 中国电子科技集团公司第十四研究所 | 基于axi总线的多ddr控制器管理系统 |
CN109446125B (zh) * | 2018-10-09 | 2024-04-02 | 武汉正维电子技术有限公司 | Ddr读写仲裁器及方法 |
CN112052206B (zh) * | 2020-08-31 | 2023-03-28 | 浙江双成电气有限公司 | 基于仲裁的多端口数据存储系统 |
CN112559399A (zh) * | 2020-11-27 | 2021-03-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多axi接口的ddr控制器及其控制方法 |
CN114741348A (zh) * | 2020-12-24 | 2022-07-12 | 华为技术有限公司 | 一种转换装置、方法以及集成电路 |
CN114036085B (zh) * | 2021-09-24 | 2024-04-12 | 北京无线电测量研究所 | 基于ddr4的多任务读写调度方法、计算机设备及存储介质 |
CN114721983B (zh) * | 2022-04-13 | 2023-06-16 | 山东浪潮科学研究院有限公司 | 一种ddr4加速读写装置 |
CN115357541B (zh) * | 2022-10-17 | 2022-12-30 | 井芯微电子技术(天津)有限公司 | 一种请求数据转换方法和装置 |
CN117527934A (zh) * | 2023-11-30 | 2024-02-06 | 江苏新质信息科技有限公司 | 一种万兆以太网帧解析方法、装置、存储介质及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130159632A1 (en) * | 2011-12-16 | 2013-06-20 | International Business Machines Corporation | Memory sharing by processors |
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
CN103957419A (zh) * | 2014-05-21 | 2014-07-30 | 中国农业大学 | 一种双缓冲存储器结构的视频解码器及控制方法 |
CN103995789A (zh) * | 2014-06-04 | 2014-08-20 | 上海斐讯数据通信技术有限公司 | 一种直接内存存取的实现系统及方法 |
CN104035852A (zh) * | 2014-06-04 | 2014-09-10 | 哈尔滨工业大学 | 基于自动帧重复的1553b总线硬件定时通信测试装置及方法 |
CN104049909A (zh) * | 2013-03-15 | 2014-09-17 | 国际商业机器公司 | 双异步和同步存储器系统 |
US20150262633A1 (en) * | 2014-03-12 | 2015-09-17 | Futurewei Technologies, Inc. | Dual-port ddr4-dimms of sdram and nvram for ssd-blades and multi-cpu servers |
-
2016
- 2016-04-14 CN CN201610231074.5A patent/CN105868134B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130159632A1 (en) * | 2011-12-16 | 2013-06-20 | International Business Machines Corporation | Memory sharing by processors |
CN104049909A (zh) * | 2013-03-15 | 2014-09-17 | 国际商业机器公司 | 双异步和同步存储器系统 |
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
US20150262633A1 (en) * | 2014-03-12 | 2015-09-17 | Futurewei Technologies, Inc. | Dual-port ddr4-dimms of sdram and nvram for ssd-blades and multi-cpu servers |
CN103957419A (zh) * | 2014-05-21 | 2014-07-30 | 中国农业大学 | 一种双缓冲存储器结构的视频解码器及控制方法 |
CN103995789A (zh) * | 2014-06-04 | 2014-08-20 | 上海斐讯数据通信技术有限公司 | 一种直接内存存取的实现系统及方法 |
CN104035852A (zh) * | 2014-06-04 | 2014-09-10 | 哈尔滨工业大学 | 基于自动帧重复的1553b总线硬件定时通信测试装置及方法 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的DDR控制器的实现;郑佳,等;《无线电工程》;20071210;第37卷(第10期);第23-25页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105868134A (zh) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105868134B (zh) | 高性能多口ddr控制器及其实现方法 | |
CN106612141B (zh) | 一种光纤通道协议通用仿真测试卡及其数据交互方法 | |
CN102185750B (zh) | 封装体 | |
CN101901200B (zh) | 一种基于双AHB Master接口的片上DMA控制器实现方法 | |
CN102130100B (zh) | 封装体、用在封装体中的方法和用在封装体中的管芯 | |
CN108228513B (zh) | 一种基于fpga架构的智能串口通讯装置 | |
CN102143056A (zh) | 封装体 | |
CN102122652A (zh) | 封装体 | |
WO2014103144A1 (ja) | インタフェース装置、およびメモリバスシステム | |
CN205263808U (zh) | Spi从设备及spi通信系统 | |
CN102609378A (zh) | 一种消息式内存访问装置及其访问方法 | |
CN104641360A (zh) | 对存储器及对等设备的双播PCIe入站写入 | |
CN101446931B (zh) | 一种实现输入输出数据一致性的系统及方法 | |
CN101150485A (zh) | 一种零拷贝缓冲区队列网络数据发送的管理方法 | |
CN103106166B (zh) | 一种协议无关、可支持目标读写操作的pcie ip核用户逻辑接口扩展方法 | |
CN108228498A (zh) | 一种dma控制装置和图像处理器 | |
CN107147538B (zh) | 基于rs485桥电路装置的故障定位方法 | |
CN108279927A (zh) | 可调整指令优先级的多通道指令控制方法及系统、控制器 | |
CN101150486A (zh) | 一种零拷贝缓冲区队列网络数据接收的管理方法 | |
EP3644192B1 (en) | Master chip, slave chip, and dma transfer system between chips | |
CN104699654A (zh) | 一种基于chi片内互联总线与qpi片间互联总线互联适配系统和方法 | |
CN104615684A (zh) | 一种海量数据通信并发处理方法及系统 | |
CN100476775C (zh) | 用于总线通信设备的主机控制器以及总线通信设备 | |
CN102811152A (zh) | 一种多主总线网络通讯实时交易数据交换实现方法 | |
CN100547572C (zh) | 动态建立直接内存访问通路的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190620 Address after: 430000 Guanghuo Road Optical Communication Industry Building, Guandong Industrial Park, Donghu Development Zone, Wuhan City, Hubei Province, 1st Floor Patentee after: Beacon Fire Ultra-micro Information Technology Co., Ltd. Address before: 430074 Optics Valley development street, East Lake Development Zone, Wuhan, Hubei 67 Patentee before: Fenghuo Communication Science &. Technology Co., Ltd. |