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

基于FPGA的DDR2SRAM接口电路及其相位调整方法与流程

2022-02-25 20:16:28 来源:中国专利 TAG:

基于fpga的ddr2 sram接口电路及其相位调整方法
技术领域
1.本发明属于通信技术领域,尤其涉及一种基于fpga的ddr2 sram接口电路及其相位调整方法。


背景技术:

2.现有技术在生成sram读、写时钟时基于mmcm等时钟资源;但是,当系统中有较多sram芯片时,每个sram芯片的随路时钟经过mmcm调整相位,会占用较多的时钟资源。


技术实现要素:

3.本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的在于提出一种基于fpga的ddr2 sram接口电路及其相位调整。
4.为了解决上述技术问题,本发明的实施例提供如下技术方案:
5.一种基于fpga的ddr2 sram接口电路,包括:
6.控制模块,所述控制模块用于发出控制命令以及时钟信号;所述时钟信号为phy_clk;
7.sram模块,所述sram模块与所述控制模块连接;
8.读写数据模块,所述读写数据模块基于所述phy_clk的时钟域,根据所述控制命令将数据写入所述sram模块或者读取所述sram模块的数据;
9.相位调整模块,所述相位调整模块与所述读写模块连接,所述相位调整模块用于调整写相位和读相位。
10.可选的,所述相位调整模块包括写相位调整单元以及读相位调整单元;所述写相位调整单元与读相位调整单元均与所述读写数据模块连接。可选的,所述读写数据模块包括写数据单元、读数据单元以及iobuf单元;
11.所述写数据单元与读数据单元均与所述iobuf单元连接。
12.可选的,所述读数据单元包括iddr单元以及idelay2单元;
13.所述sram模块的待读取数据依次经过所述iobuf单元、idelay2单元以及iddr单元,进入所述控制模块;
14.其中,所述idelay2单元与所述读相位调整单元连接。
15.可选的,所述写数据单元包括oddr单元;
16.所述控制模块输出的待写入数据依次经过oddr单元以及iobuf单元,写入所述sram模块。
17.可选的,还包括时钟模块,所述时钟模块包括oddr单元、odelay2单元以及obufds单元;
18.所述odelay2单元对所述oddr单元发送的偏移时钟信号进行延迟处理,获取延迟时钟;
19.所述odelay2单元将所述延迟时钟通过所述obufds单元发送至所述sram模块;
20.其中,所述odelay2单元与所述读相位调整单元连接。
21.本发明的实施例还提供一种基于fpga的ddr2 sram接口电路的相位调整方法,基于如上所述的电路,包括:
22.发出读命令后立刻产生读数据有效标志,并对读数据有效标志打拍延迟,设定固定延迟拍数为p;
23.预设odelay_tap_count以及idelay_tap_count的初始值分别为m=0、n=0;
24.确定读写正确的组合集;
25.根据所述组合集,确定目标写相位的tap值;
26.根据所述目标写相位的tap值,确定所述目标读相位的tap值。
27.可选的,所述确定读写正确的组合集,包括:
28.遍历idelay_tap_count范围0-31;
29.每次调整idelay_tap_count的值时进行多次随机读写,获取读写结果;
30.若所述读写结果正确,则记录对应的组合值(l,m,n);
31.多个所述组合值(l,m,n)组成所述组合集。
32.可选的,所述根据所述组合集,确定目标写相位的tap值,包括:
33.遍历idelay_tap_count的所有取值后,odelay_tap_count值n=n 1,直至odelay_tap_count遍历至n=31;
34.获取odelay_tap_count连续的最大窗口;
35.根据所述odelay_tap_count连续的最大窗口,确定odelay_tap_mid的值;
36.根据所述odelay_tap_mid的值,确定目标写相位的tap值。
37.可选的,根据所述目标写相位的tap值,确定所述目标读相位的tap值,包括:
38.基于所述目标写相位的tap值,确定所述idelay_tap_count连续的最大窗口;
39.根据所述idelay_tap_count连续的最大窗口,确定idelay_tap_mid的值;
40.根据所述odelay_tap_mid的值,确定目标读相位的tap值。
41.本发明的实施例,具有如下技术效果:
42.本发明的上述技术方案,1)ddr2 sram写数据和读数据在同一个时钟域下,无需对读返回数据做跨时钟处理。
43.2)当系统中有多个sram芯片,且在fpga中不同的时钟区域时可使用同一个接口时钟phy_clk,可减少fpga时钟资源的占用。
44.本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
45.图1是本发明实施例提供的基于fpga的ddr2 sram接口电路的读写数据通路结构示意图;
46.图2时本发明实施例提供的写时序示意图;
47.图3是本发明实施例提供的产生读写命令信号的结构示意图;
48.图4是本发明实施例提供的基于fpga的ddr2 sram接口电路的相位调整方法的流程示意图;
49.图5为本发明实施例寻找odelay_tap_count连续的最大窗口的原理示意图。
具体实施方式
50.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
51.本发明提到的,fpga:现场可编程门阵列;sram:(static random access memory)静态随机存取存储器;tap:延迟单元调节计数值;dq:数据线;io接口:输入输出接口;idelay2:输入延迟单元,可实现对数据或时钟的延迟;odelay2:输出延迟单元,可实现对数据或时钟的延迟;odelay2和idelay2原语是高精度的、环形的、tap值范围为0-31的延迟调节单元,可实现输出和输入数据的延迟调节;oddr:可实现fpga io双沿数据输出;iddr:可实现fpga io输入的双沿数据采集;obuf:输出缓冲器;iobuf:输入缓冲器;obufds:输出缓冲器;mmcm:混合模式时钟管理器,用于生成时钟和调节相位。
52.结合图1,本发明的实施例提供一种基于fpga的ddr2 sram接口电路,包括:
53.控制模块,所述控制模块用于发出控制命令以及时钟信号;所述时钟信号为phy_clk;
54.sram模块,所述sram模块与所述控制模块连接;
55.读写数据模块,所述读写数据模块基于所述phy_clk的时钟域,根据所述控制命令将数据写入所述sram模块或者读取所述sram模块的数据;
56.相位调整模块,所述相位调整模块与所述读写模块连接,所述相位调整模块用于调整写相位和读相位。
57.本发明的该实施例,ddr2 sram写数据和读数据在同一个时钟域下,无需对读返回数据做跨时钟处理;当系统中有多个sram模块,且在fpga中不同的时钟区域时可使用同一个接口时钟phy_clk,可减少fpga时钟资源的占用。
58.本发明一可选的实施例,所述相位调整模块包括写相位调整单元以及读相位调整单元;所述写相位调整单元与读相位调整单元均与所述读写数据模块连接。
59.本发明的该实施例,通过设置相位调整模块,实现了对读相位和写相位的调整,实现了正确的读写。
60.本发明一可选的实施例,所述读写数据模块包括写数据单元、读数据单元以及iobuf单元;
61.所述写数据单元与读数据单元均与所述iobuf单元连接。
62.具体的,读、写数据时用户接口的信号定义如下表1所示:
63.表1
64.结合图2,确定了写数据过程上述信号的时序。
[0065][0066]
本发明的实施例,通过设置读数据单元和写数据单元,可以实现根据控制模块的控制命令将数据写入所述sram模块或者读取所述sram模块的数据。
[0067]
本发明一可选的实施例,所述读数据单元包括iddr单元以及idelay2单元;
[0068]
所述sram模块的待读取数据依次经过所述iobuf单元、idelay2单元、以及iddr单元,进入所述控制模块;
[0069]
其中,所述idelay2单元与所述读相位调整单元连接。
[0070]
具体的,idelay2单元设有c端口,用于获取phy_clk;
[0071]
iddr单元包括c端口、d端口、q1端口以及q2端口;其中,d端口用于接收idelay2单元发送的待读取数据,iddr单元的c端口用于获取phy_clk,q1端口以及q2端口用于将待读取数据输出至控制模块的用户接口。
[0072]
具体包括:控制模块生成读数据命令;所述生成读数据命令包括:
[0073]
如图3所示,用户接口发出读数据命令,确定访问地址,同时拉低cmd_load信号,并拉高cmd_rw信号;
[0074]
结合图2,所述读数据命令、访问地址、cmd_load以及cmd_rw信号均与所述phy_clk同步。
[0075]
通过obuf单元将写数据命令信号发送至r/w接口。
[0076]
当读数据命令有效时,产生相应的读数据有效标识(rd_vld),读数据有效标识与phy_clk时钟同步,固定做可配置的p个phy_clk时钟周期延迟。
[0077]
用户接口根据读数据有效标识可以获取有效待读取数据。
[0078]
读数据时,iobuf单元的控制信号t保持高电平,dq线上的待读取数据经过iobuf单元后进入idelay2单元;其中,idelay2单元可实现对待读取数据与phy_clk相位关系的调整;端口d收到双沿数据后,在iddr单元的端口c的phy_clk时钟域下进行采样,当待读取数据与phy_clk满足相位关系时可正确采样并从端口q1以及端口q2将待读取数据并行输出至用户接口。
[0079]
本发明的该实施例,通过iddr单元fgpa io输入的双沿数据采集,同时基于同一时钟域进行写数据,节省了资源。
[0080]
本发明一可选的实施例,所述写数据单元包括oddr单元;
[0081]
所述控制模块输出的待写入数据依次经过oddr单元以及iobuf单元,写入所述sram模块。
[0082]
具体的,oddr单元包括c端口、q端口、d1端口以及d2端口;其中,d端口用于将待写入数据发送至sram模块的dq线,oddr单元的c端口用于获取phy_clk,d1端口以及d2端口用于获取控制模块发出的待写入数据。
[0083]
控制模块生成写数据命令;所述生成写数据命令包括:
[0084]
如图3所示,用户接口发出写数据命令,同时确定访问地址和写数据掩码信号,并拉低cmd_load以及cmd_rw信号;
[0085]
结合图2,所述写数据命令、访问地址、写数据掩码、cmd_load以及cmd_rw信号均与所述phy_clk同步。
[0086]
通过obuf单元将写数据命令信号发送至r/w接口;
[0087]
通过obuf单元将cmd_load信号发送至ld#接口;
[0088]
通过obuf单元将访问地址信号发送至a接口;
[0089]
通过obuf单元将写数据掩码信号发送至bw接口;
[0090]
其中,io接口包括r/w接口、ld#接口、a接口以及bw接口。
[0091]
写数据时,控制模块在phy_clk的时钟域下将wr_data[35:0]通过d1、d2线发送至oddr单元;oddr单元对通过d1和d2端口获取的待写入数据进行采样后,从q端口输出采样后的双沿待写入数据,并在时钟上升沿将d1端口的待写入数据从q端口输出,在时钟下降沿将d2端口的待写入数据从q端口输出;写数据时,拉低iobuf单元的t控制信号,并通过iobuf单元将待写入数据发送至dq线上。
[0092]
本发明的该实施例,通过oddr单元实现了fgpa io双沿数据输出,同时基于同一时钟域进行读数据,无需对读返回数据做跨时钟处理,节省了资源。
[0093]
本发明一可选的实施例,还包括时钟模块,所述时钟模块包括oddr单元、odelay2单元以及obufds单元;
[0094]
所述odelay2单元对所述oddr单元发送的偏移时钟信号进行延迟处理,获取延迟时钟;
[0095]
所述odelay2单元将所述延迟时钟通过所述obufds单元发送至所述sram模块;
[0096]
其中,所述odelay2单元与所述读相位调整单元连接。
[0097]
具体的,控制模块通过用户接口输入的phy_clk作为oddr单元的c端口(输入值设置d1=1,d2=0)的输入时钟,q端口输出和phy_clk相位偏移90
°
的偏移时钟;偏移时钟依次经过odelay2单元、obufds单元生成sram模块所需要的差分时钟信号。
[0098]
其中,odelay2单元可实现k时钟相位的调整,生成k#时钟,用于对k时钟相位进行纠正。
[0099]
本发明的该实施例,生成了sram模块所需要的差分时钟信号并对k时钟相位进行了纠正。
[0100]
如图4所示,本发明的实施例还提供一种基于fpga的ddr2 sram接口电路的相位调
整方法,包括:
[0101]
步骤s1:发出读命令后立刻产生读数据有效标志,并对读数据有效标志打拍延迟,设定固定延迟拍数为p;
[0102]
步骤s2:预设odelay_tap_count以及idelay_tap_count的初始值分别为m=0、n=0;
[0103]
步骤s3:确定读写正确的组合集;
[0104]
步骤s4:根据所述组合集,确定目标写相位的tap值;
[0105]
步骤s5:根据所述目标写相位的tap值,确定所述目标读相位的tap值。
[0106]
本发明的该实施例,通过调整相位可以找到合适的写数据与写时钟的相位,读数据与读时钟的相位,实现数据的正确写入和读出。
[0107]
本发明一可选的实施例,步骤s3中,所述确定读写正确的组合集,包括:
[0108]
步骤s31:遍历idelay_tap_count范围0-31;
[0109]
具体的,所述odelay_tap_count与idelay_tap_count的取值范围为0~31。
[0110]
步骤s32:每次调整idelay_tap_count的值时进行多次随机读写,获取读写结果;
[0111]
步骤s33:若所述读写结果正确,则记录对应的组合值(l,m,n)。
[0112]
步骤s34:多个所述组合值(l,m,n)组成所述组合集。
[0113]
本发明的该是实施例,确定了正确的读写结果对应的组合值,以便于获取正确的组合集。
[0114]
本发明一可选的实施例,步骤s4中,所述根据所述组合集,确定目标写相位的tap值,包括:
[0115]
步骤s41:遍历idelay_tap_count的所有取值后,odelay_tap_count值n=n 1,直至odelay_tap_count遍历至n=31;
[0116]
步骤s42:获取odelay_tap_count连续的最大窗口;
[0117]
步骤s43:根据所述odelay_tap_count连续的最大窗口,确定odelay_tap_mid的值;
[0118]
步骤s44:根据所述odelay_tap_mid的值,确定目标写相位的tap值。
[0119]
本发明的该实施例,实现了获取正确的写相位以及时钟相位,以便于正确的写数据。
[0120]
本发明一可选的实施例,步骤s5中,根据所述目标写相位的tap值,确定所述目标读相位的tap值,包括:
[0121]
步骤s51:基于所述目标写相位的tap值,确定所述idelay_tap_count连续的最大窗口;
[0122]
步骤s52:根据所述idelay_tap_count连续的最大窗口,确定idelay_tap_mid的值;
[0123]
步骤s53:根据所述odelay_tap_mid的值,确定目标读相位的tap值。
[0124]
本发明的该实施例,实现了获取正确的读相位以及时钟相位,以便于正确的读数据。
[0125]
如下表2为相位调整过程中,用户接口信号的定义:
[0126]
表2
[0127]
具体的,odelay2单元用于调节写相位;idelay2单元用于调节读相位;其中,
[0128][0129]
read_data_valid_delay是最大计数值为p的读数据有效信号延迟计数,可实现rd_vld的有效延迟选定。
[0130]
结合图5,rd_vld的有效延迟选定具体可以通过如下方式实现:
[0131]
1)预设p的值为20;
[0132]
2)设定read_data_valid_delay初始值l=0,odelay_tap_count初始值m=0,idelay_tap_count初始值n=0。
[0133]
3)遍历idelay_tap_count范围0-31;每次调整idelay值时进行一万次随机读写;如果随机读写正确则记录当前的组合值(l,m,n),获取包含多个组合值(l,m,n)的组合集。
[0134]
4)idelay_tap_count遍历一圈后,odelay_tap_count值n=n 1,直至odelay_tap_count遍历至n=31。
[0135]
5)odelay_tap_count遍历一圈后,read_data_valid_delay值l=l 1。再重新执行步骤3),4),5);直至read_data_valid_delay遍历到设置值p。
[0136]
6)在步骤3)记录的组合值中寻找odelay_tap_count连续的最大窗口,并计算中间值odelay_tap_mid;设定好odelay_tap_mid中间值为写相位的最终调整值;
[0137]
7)再次遍历idelay_tap_count值,寻找idelay_tap_count连续的最大窗口,并计算中间值idelay_tap_mid,将此idelay_tap_mid设定为读相位的最终tap值。
[0138]
另外,本发明实施例的电路的其他构成及作用对本领域的技术人员来说是已知的,为减少冗余,此处不做赘述。
[0139]
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设
备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0140]
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0141]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0142]
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0143]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0144]
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0145]
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
[0146]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述
实施例进行变化、修改、替换和变型。
再多了解一些

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

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

相关文献