本申请涉及集成电路技术领域,尤其涉及一种fpga内嵌ddr硬核及fpga。
背景技术:
目前很多asic(applicationspecificintegratedcircuit,专用集成电路)芯片中都已经加入了ddr(doubledatarate,双倍速率)硬核的支持,ddr硬核是固化在fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列)内部的特殊ddr控制硬件电路。
ddr硬核的主要功能是接收可编程控制逻辑的ddr访问控制信号,并转换成ddr颗粒的有效命令。ddr硬核主要是实现的ddr物理层,对低速并行的ddr的地址命令和读写数据的命令进行解析,然后按照ddr协议要求转换为高速的ddr控制信号,从而达到正确访问ddr颗粒的目的。
目前的ddr硬核设计中都主要应用在asic中,通信的速度是相对可编程逻辑来说是较高的,所以在fpga硬核设计中,需要兼容可编程逻辑的速度,并将相应的低速信号转换为高速的ddr通信信号,导致ddr硬核的设计困难。同时由于fpga芯片的高速io(input/output,输入/输出)需要被用户灵活配置成不同的io标准,但io连线资源紧张,因此增加了io设计的复杂度。
技术实现要素:
为了解决现有技术存在的上述技术问题,本申请提供了一种fpga内嵌ddr硬核及fpga,使得用户可以更容易的访问ddr内核,从而解决了与可编程逻辑兼容的问题,还增加了io应用的灵活性,便于进行io的多功能复用。
第一方面,本申请提供了一种fpga内嵌ddr硬核,包括:控制器、物理层控制模块、用户逻辑模块和io模块;
控制器,用于向所述物理层控制模块发送dfi地址和数据命令;
物理层控制模块,用于将所述dfi地址和数据命令转换为ddr通信信号和延迟链的控制信号并发送至用户逻辑模块;
用户逻辑模块,用于将所述ddr通信信号和延迟链控制信号与用户的配置进行交互以获取用户配置信号;
io模块用于将所述用户配置信号发送给外接的ddr颗粒。
结合第一方面,在第一种可能的实现方式中,所述物理层控制模块包括:测试逻辑模块;
所述测试逻辑模块,用于产生测试信号,并在所述io模块的输出端获取所述测试信号的对应的输出信号,将所述测试信号的对应的输出信号与预设信号进行比对以检测电路;所述预设信号为所述测试信号对应的期望输出信号。
结合第一方面,在第二种可能的实现方式中,所述物理层控制模块包括:测试逻辑模块;
所述测试逻辑模块,用于控制延迟链对应的电路串联,通过自激获取相应的激励,并通过动态调延迟链的配置以检测所述延迟链的性能。
结合第一方面,在第三种可能的实现方式中,所述物理层控制模块包括:控制逻辑模块;
所述控制模块,用于通过配置所述ddr硬核的寄存器以产生相应的动态随机存取存储器dram控制命令,以使所述ddr硬核识别和调试错误。
结合第一方面,在第四种可能的实现方式中,所述物理层控制模块包括:校准模块;
所述校准模块,用于对所述ddr硬核的初始化和上电过程进行校准以提升信号的质量。
结合第一方面,在第五种可能的实现方式中,所述校准模块具体用于:
对于延迟链进行初始化校准以跟踪延迟链的变化;
进行zq校准以提升信号的完整性;
进行offcal校准,以校准所述io模块的偏差;
进行写入均衡wl校准,以平衡飞跃flyby对数据选取脉冲dqs的影响;
进行门控电路gate校准,以使物理层硬核可以正确的接收dram发送的数据;
进行写入均衡调整wla校准,以对所述flyby进行时钟周期级别的调整;
进行读取数据眼图rddataeye校准,以使得读数据更加精确的被采样;
进行写入数据眼图wrdataeye校准,以使写数据更加精确的被发送至所述dram;
进行参考电压vref校准,以获取更准确的参考电压。
结合第一方面,在第六种可能的实现方式中,所述io模块包括:io逻辑控制模块和io物理模块;
所述io逻辑控制模块,用于对所述用户配置信号进行延迟链的调整,进行由并行传输向串行传输的转换后,发送至所述io物理模块;
所述io物理模块,用于将并行传输的所述用户配置信号发送至所述ddr颗粒。
结合第一方面,在第七种可能的实现方式中,所述ddr硬核支持ddr3和ddr4类型的协议。
第二方面,本申请还提供了一种fpga,该fpga包括以上任意一种实现方式提供的ddr硬核,还包括ddr颗粒。
结合第二方面,在第一种可能的实现方式中,所述ddr颗粒规格为ddr3或ddr4。
本申请提供的技术方案至少具有以下优点:
本申请提供的fpga内嵌ddr硬核,通过在硬核中增加了用户逻辑模块,用于将ddr通信信号和延迟链控制信号与用户的配置进行交互以获取用户配置信号,对ddr涉及中的低速信号进行了复用和优化,即用户可以通过用户逻辑模块更容易的访问ddr内核,实现ddr通信信号和延迟链控制信号与用户的配置的交互,从而解决了与可编程逻辑兼容的问题,进而使得ddr控制信号可以跑在更低的速度上,与fpga可编程逻辑的配合性更好。
此外,通过将用户逻辑模块输出的用户配置信号直接经由io模块向ddr颗粒进行发送,一方面减小了与io模块之间的连线,用较小的代价实现了与io模块之间的互联,缓解了fpga的io模块的连线资源紧张的问题,另一方面便于用户根据需要配置io模块的功能,解决了io模块的兼容性问题,增加了io应用的灵活性,并且便于进行io的多功能复用。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种fpga内嵌ddr硬核的示意图;
图2为本申请实施例提供的另一种fpga内嵌ddr硬核的示意图;
图3为本申请实施例提供的一种ddr硬核的初始化的流程图;
图4为本申请实施例提供的一种fpga的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一:
本申请实施例提供了一种fpga内嵌ddr硬核,下面结合附图具体说明。
参见图1,该图为本申请实施例提供的一种fpga内嵌ddr硬核的示意图。
图示ddr硬核包括:控制器mc10、物理层控制模块20、用户逻辑模块(图中的fabric)30和io模块(图中的io)40。
其中,mc(memorycontroller,内存控制逻辑)10用于向物理层控制模块(phycontrolunit)20发送dfi地址和数据命令。
物理层控制模块20将dfi地址和数据命令转换为ddr通信信号和延迟链的控制信号并发送至用户逻辑模块;
用户逻辑模块fabric30将ddr通信信号和延迟链控制信号与用户的配置进行交互以获取用户配置信号。
io40将用户配置信号发送给外接的ddr颗粒。
利用本申请实施例提供的fpga内嵌ddr硬核,通过在硬核中增加了用户逻辑模块fabric,对ddr涉及中的低速信号进行了复用和优化,用户可以通过fabric更容易的访问ddr内核,实现ddr通信信号和延迟链控制信号与用户的配置的交互,从而解决了与可编程逻辑兼容的问题,进而使得ddr控制信号可以跑在更低的速度上,与fpga可编程逻辑的配合性更好。
此外,通过将用户逻辑模块输出的用户配置信号直接经由io模块向ddr颗粒进行发送,一方面减小了与io模块之间的连线,缓解了fpga的io模块的连线资源紧张的问题,另一方面便于用户根据需要配置io模块的功能,解决了io模块的兼容性问题,增加了io应用的灵活性,并且便于进行io的多功能复用。
实施例二:
下面结合ddr硬核具体的实现方式说明该ddr硬核的工作原理以及其初始化和上电步骤,下面结合附图具体说明。
参见图2,该图为本申请实施例提供的另一种fpga内嵌ddr硬核的示意图。
物理层控制模块phycontrolunit20具体包括:调度器scheduler21、物理层控制器init22、测试逻辑模块bist23、校准模块train24、控制逻辑模块dcu25和数据通路接口dfi26。
io模块40具体包括io逻辑控制模块(iol)41和io物理模块(iob)42。
其中,scheduler21用于在就绪队列中选择优先级最高的任务运行。
物理层控制器init22用于实现对于物理层的相关电路的控制,例如进行复位等控制。
目前,常将ddr硬核的接口分成内存控制逻辑(mc,memorycontroller)和物理层接口(phy,physicalinterface)两个部分。随着ip(intellectualproperty)厂商的发展,越来越多的工程师选择在设计中采用第三方的ip核。因此为了能够实现两者之间的标准互联,需要一种mc与phy之间的标准通信接口,而dfi就是这样的一种规范。dfi标准的提出旨在定义一个mc与phy之间的通用接口,以提高独立模块(ip核等)的复用率。数据通路接口dfi26即mc与phy之间的标准通信接口。
本申请实施例提供的硬核为了具备更好的可测性,还支持环回测试和对延迟链的延迟链测试。
其中,环回测试是一种通过发送电路内部自己产生的测试信号,在io模块的输出端口再将其信号环回,以得到对应的输出信号,将测试信号的对应的输出信号与预设信号进行比对以检测电路,预设信号为所述测试信号对应的期望输出信号,从而达到测试电路的目的。
在一些实施例中,该环回测试可以由测试逻辑模块bist23实现。
延迟链测试是一种把系统中所有的延迟链的电路串在一起,然后通过自激产生相应的激励,根据动态调整的延迟链的配置来测试延迟链性能的机制。利用这个机制可以有效的测试延迟链的单调性,线性度,并识别延迟链中的错误。
在一些实施例中,该延迟链测试可以由测试逻辑模块bist23实现。
控制逻辑模块dcu25能够通过配置硬核的寄存器来产生相应的dram控制命令,以使ddr硬核可以对系统的错误进行调试和早期识别。
进一步的,在一些实施例中,由于ddr颗粒的控制协议的要求,本申请实施例还提供了一种系统的初始化和上电过程的具体流程,用于支持ddr3和ddr4类型的协议,下面具体说明。
参见图3,该图为本申请实施例提供的一种ddr硬核的初始化的流程图。
该流程的步骤如下:
s01:等待fpga进入用户模式。
s02:等待系统复位释放,以及等待pll锁定信号完成和用户初始配置完成。
pll(phaselockedloop,锁相环)用于统一整合时钟信号,以使高频器件能够正常工作。
s03:进行延迟链校准。
由于温度、电压以及工艺的影响,需要及时的进行延迟链(delayline)初始化以准确跟踪延迟链的变化。
s04:复位物理层控制的相关电路。
s05:进行zq校准。
为了提升信号的完整性,增强输出信号的强度,ddr硬核中引入了终端电阻和输出驱动器,以在温度、电压等条件变化的场景下保持信号的完整性。而zq校准保证了系统的ip模块的zq阻抗能够匹配信号完整性的需求。
s06:进行offcal校准。
offcal校准是为了校准io模块的偏差,以使接收数据时的信号质量更好。
s07:进行dram初始化进程,并配置dram的基本参数。
s08:进行写入均衡校准。
写入均衡(writeleveling,wl)校准是为了使系统平衡flyby(飞跃)对数据选取脉冲(dqs)时序的影响。
数据选取脉冲(dqs)是双向信号,读内存时,由内存产生,dqs的沿和数据的沿对齐;写入内存时,由外部产生,dqs的中间对应数据的沿,即此时dqs的沿对应数据最稳定的中间时刻。
dqs是ddrsdram中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。
s09:进行门控电路校准。
门控电路(gate)校准是一种使接收dram数据的门控电路校准,使phy硬核可以正确的接收dram发送的数据。
s10:进行写入均衡调整校准。
写入均衡调整(writelevelingadjustment,wla)校准可以进一步对flyby进行时钟周期级别的调整。
s11:进行读取数据眼图校准。
读取数据眼图(rddataeye)校准是为了使读数据能够更加精准的被系统采样,从而得到更好的眼图。
s12:进行写入数据眼图校准。
写入数据眼图(wrdataeye)校准是为了使写数据更加精确的被发送至dram被dram采用,提高写信号的质量。
s13:进行参考电压vref校准。
可以使得系统找到更好的参考电压,使信号质量更好。
s14:初始化流程结束。
s15:ddr硬核接收控制器mc10的数据,正常对dram进行访问。
其中,在一些实施例中,以上步骤中涉及的各校准步骤可以由校准模块train24实现。
综上所述,利用本申请实施例提供的ddr硬核,实现了使用户可以自己配置fpga的可编程逻辑以灵活访问ddr颗粒,在支持ddr3的同时还支持更高级的ddr4,解决了ddr3和ddr4的兼容性问题,方便用户的灵活选择。并且增加了丰富的校准和补偿机制,增强了传统的ddr算法在抵抗温度、电压、工艺和封装差异化影响时的能力,提供了完整的ddr物理层解决方案。此外,还增加了命令的逻辑控制、可测性控制逻辑、环回测试逻辑和延迟链测试逻辑,进一步提升了设计的完备性。
实施例三:
基于上述实施例提供的fpga内嵌ddr硬核,本申请实施例还提供了一种fpga,下面结合附图具体说明。
参见图4,该图为本申请实施例提供的一种fpga的示意图。
其中,该fpga300包括以上实施例中所述的ddr硬核100,还包括ddr颗粒200.
其中,ddr颗粒规格为ddr3或ddr4,本申请实施例不作具体限定。
进一步的,关于该ddr硬核100的相关说明可以参见以上实施例,本申请实施例在此不再赘述。
本申请提供的fpga内嵌了ddr硬核,该硬核中增加了用户逻辑模块,用于将ddr通信信号和延迟链控制信号与用户的配置进行交互以获取用户配置信号,对ddr涉及中的低速信号进行了复用和优化,即用户可以通过用户逻辑模块更容易的访问ddr内核,实现ddr通信信号和延迟链控制信号与用户的配置的交互,从而解决了与可编程逻辑兼容的问题,进而使得ddr控制信号可以跑在更低的速度上,与fpga可编程逻辑的配合性更好。
此外,通过将用户逻辑模块输出的用户配置信号直接经由io模块向ddr颗粒进行发送,一方面减小了与io模块之间的连线,用较小的代价实现了与io模块之间的互联,缓解了fpga的io模块的连线资源紧张的问题,另一方面便于用户根据需要配置io模块的功能,解决了io模块的兼容性问题,增加了io应用的灵活性,并且便于进行io的多功能复用。
进一步的,该硬核在支持ddr3的同时还支持更高级的ddr4,解决了ddr3和ddr4的兼容性问题,方便用户的灵活选择。并且增加了丰富的校准和补偿机制,增强了传统的ddr算法在抵抗温度、电压、工艺和封装差异化影响时的能力,提供了完整的ddr物理层解决方案。此外,还增加了命令的逻辑控制、可测性控制逻辑、环回测试逻辑和延迟链测试逻辑,进一步提升了设计的完备性。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。