CN104795091B - 在fpga中实现zbt读写的时序稳定度的系统及方法 - Google Patents
在fpga中实现zbt读写的时序稳定度的系统及方法 Download PDFInfo
- Publication number
- CN104795091B CN104795091B CN201510211568.2A CN201510211568A CN104795091B CN 104795091 B CN104795091 B CN 104795091B CN 201510211568 A CN201510211568 A CN 201510211568A CN 104795091 B CN104795091 B CN 104795091B
- Authority
- CN
- China
- Prior art keywords
- zbt
- clock
- output
- write
- fpga
- 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.)
- Expired - Fee Related
Links
Abstract
本发明公开了在FPGA中实现ZBT读写的时序稳定度的系统及方法,所述系统包括ZBT SRAM读写控制器,ZBT SRAM读写控制器包括:时钟树、主控状态机、全局复位模块、伪随机数产生器、时钟相位调整模块、读写测试模块、ZBT读操作控制器、ZBT写操作控制器及输入输出延时控制器。本发明可以确保ZBT读写时序稳定,FPGA开发工程师可以将主要精力放在产品的功能调试上,而不必再通过费时费力的增量编译、手工布局布线、区域反标注、甚至盲目调整输出时钟相位的方式等技巧实现。
Description
技术领域
本发明属于集成电路领域,具体涉及一种在FPGA中实现ZBT读写的时序稳定度的系统及方法。
背景技术
FPGA是现场可编程门阵列的英文简称,它内部包含了大量的可编程资源,主要包括查找表LUT、寄存器、存储器、硬件乘法器、PLL等。FPGA芯片内部的可编程资源可以实现并行工作,因而具有极其强大的处理能力,其运算能力可达传统CPU的数百倍甚至更高。也正因此,在许多信号处理平台中,FPGA承担着运算与调度核心的功能,其主要开发手段则依赖于硬件描述语言(以下简称HDL)。
在许多场合下,由于FPGA片内存储资源有限,必须为其配置大容量外存储器。这其中,静态存储器SRAM具有功耗低、速度快、无需动态刷新等优点,而ZBT SRAM则是高速SRAM的最典型产品。它消除了传统SRAM的总线等待周期,在读/写状态下总线利用率均可以达到100%。目前,单片ZBT SRAM的典型存储容量可达72Mbit,访问速度最高可达250MHz。
当工作频率较低时,在FPGA中实现ZBT读写控制器难度较小,只需要控制数据总线比地址总线延迟2个时钟周期即可,然而。随着器件工作频率的不断提高,尤其是在频率突破100MHz以后,时钟周期已缩短至10ns以下,稳定的读写时间窗口大大减少,传统的设计手段已无法保证设计的稳定性。而FPGA设计中的布局布线延时信息事先根本无法预估,甚至设计过程中的代码微量更改都会引起时序特性的显著变化进而使ZBT读写操作失败,最终导致FPGA开发工作返工并严重影响产品开发进度。
发明内容
本发明的目的之一是为解决上述难题,提供一种提高ZBT读写的时序稳定度及工作频率的在FPGA中实现ZBT读写的时序稳定度的系统及方法。
本发明提供一种在FPGA中实现ZBT读写的时序稳定度的系统,包括ZBT SRAM读写控制器:所述ZBT SRAM读写控制器外接ZBT SRAM芯片;所述ZBT SRAM读写控制器包括:时钟树、主控状态机、全局复位模块、伪随机数产生器、时钟相位调整模块、读写测试模块、ZBT读操作控制器、ZBT写操作控制器及输入输出延时控制器;所述ZBT SRAM芯片包括第一ZBTSRAM芯片及第二ZBT SRAM芯片;所述输入输出延时控制器包括第一输入输出延时控制器及第二输入输出延时控制器;所述时钟树连至所述主控状态机、全局复位模块、伪随机数产生器、时钟相位调整模块、ZBT读操作控制器及ZBT写操作控制器;所述主控状态机连接所述第一输入输出延时控制器、第二输入输出延时控制器、伪随机数产生器、读写测试模块及ZBT读操作控制器;所述伪随机数产生器与所述ZBT写操作控制器连接;所述读写测试模块连接所述ZBT读操作控制器及ZBT写操作控制器;所述第一输入输出延时控制器用于外接第一ZBT SRAM芯片,第二输入输出延时控制器用于外接第二ZBT SRAM芯片。
进一步的:
所述时钟树包括第一时钟管理器、第二时钟管理器及第三时钟管理器;
所述第一时钟管理器、第二时钟管理器及第三时钟管理器内部均包括一个锁相环电路PLL;
外部输入时钟经过缓冲单元后进入第一时钟管理器,并输出4路工作时钟,包括第一输出时钟、第二输出时钟、第三输出时钟及第四输出时钟;所述第二时钟管理器和第三时钟管理器的输出相位均可以通过控制端口使其输出时钟相对输入时钟的相位超前或滞后;所述第一输出时钟经缓冲后直接输出供FPGA内部逻辑使用,所述第四输出时钟用于实现PLL时钟反馈,所述第二输出时钟及第三输出时钟经过缓冲后分别进入独立的所述第二时钟管理器及第三时钟管理器;然后再次经过缓冲后输出至FPGA引脚,并经过PCB走线分别送至所述第一ZBT SRAM芯片及第二ZBT SRAM芯片的CLK端。
进一步的,所述时钟相位调整模块用于调整第二时钟管理器及第三时钟管理器的输出时钟相位,对外接口信号分别是工作时钟PSCLK、时钟相位调整功能使能信号PSEN、用于代表是减少还是增加相位步进的PSINCDEC及相位步进调整完成指示信号PSDONE。
进一步的,所述全局复位模块设有相互级联的第一寄存器、第二寄存器及第三寄存器;所述全局复位模块用于实现复位信号的同步化,然后经过全局走线资源成为所有寄存器的复位信号。
进一步的,所述伪随机数产生器用于产生ZBT读写测试数据,所述伪随机数产生器包括基于M序列的伪随机数发生器。
进一步的,所述读写测试模块用于进行读写错误统计,并将测试结果记录至6位宽的2进制向量err_array的最低位,同时err_array左移一位,然后由所述主控状态机控制所述时钟相位调整模块进行调整并置ZBT工作时钟至最佳相位;
所述读写测试模块的对外输入接口可用于接收:所述时钟树的工作时钟、所述全局复位模块的复位信号和所述主控状态机的使能模块;
所述读写测试模块可向所述ZBT写操作控制器输出21比特宽度的伪随机数的信号。
进一步的,所述ZBT读操作控制器用于将外部模块输入的读使能及读地址进行多级寄存,同时将所述ZBT SRAM芯片输出的数据寄存至FPGA工作时钟域并向外部模块输出;
所述ZBT写操作控制器用于将外部模块输入的写地址、写使能及写数据经所述第一寄存器寄存一级后再输出至所述ZBT SRAM芯片。
进一步的,所述输入输出延时控制器的工作时钟为200MHz,最大延时量为32个单位步进,延时量大于4ns。
进一步的,所述主控状态机用于对各个子模块的使能信号,同时接收各子模块的状态指示信号,并依此决定状态机的跳转。
本发明还提供一种在FPGA中实现ZBT读写的时序稳定度的方法,包括如下步骤:
S1、系统上电后,产生全局复位信号,复位所有寄存器和状态机;
S2、禁用第一ZBT SRAM芯片及第二ZBT SRAM芯片输出使能,置第一ZBT SRAM芯片及第二ZBT SRAM芯片写使能有效,初始化所述伪随机数产生器的随机种子,并将伪随机数产生器输出数据连续写入第一ZBT SRAM芯片及第二ZBT SRAM芯片中的每一个地址;
S3、禁用第一ZBT SRAM芯片及第二ZBT SRAM芯片写使能,并置第一ZBT SRAM芯片及第二ZBT SRAM芯片输出使能有效,开始回读ZBT数据,同时再次初始化伪随机数种子,将每一个地址回读得到的ZBT数据与伪随机数产生器输出数据比较;
S4、如果所述步骤S3中二者比较数据不完全相同,证明读写ZBT SRAM中发生了时序违反情况进而导致读写错误,由时钟相位调整模块对ZBT工作时钟进行相位调整,每次相位调整步进约10~20度;
S5、如果所属步骤S3中二者比较数据完全相同,证明上一轮ZBT读写时序正常,继续进行相位调整,并继续测试读写是否有误,在连续6次以上调整ZBT工作时钟相位均读写无误时,证实已经找出覆盖整个合法时序裕量窗口的位置,再将输出时钟相位反相调整3次,以获得最大的时序裕量;
S6、在时钟相位调整完毕后,即可开始正常的ZBT读写操作。
本发明的有益效果在于,本发明提供的在FPGA中实现ZBT读写的时序稳定度的系统及方法利用M序列发生器构建伪随机数发生器,并以此为测试数据源,为控制器增加了随机读写测试功能;使能了FPGA内部时钟管理模块的动态相位高速功能,通过遍历所有相位的方式,找出最佳的数据采样时刻,进而保证了ZBT读写时序的稳定性,而且不再受代码调试、修改、以及高低温变化的影响,总可以确保数据读写正确;为通过施加合理的OFFSET约束控制IOB引脚延时,并通过IODELAY高级可编程资源进一步补偿各引脚的延时分布,达到了所有信号延时分布基本一致的良好效果。
本发明可以确保ZBT读写时序稳定,FPGA开发工程师可以将主要精力放在产品的功能调试上,而不必再通过费时费力的增量编译、手工布局布线、区域反标注、甚至盲目调整输出时钟相位的方式等技巧实现。
附图说明
图1所示为本发明在FPGA中实现ZBT读写的时序稳定度的系统的模块图。
图2所示为本发明中时钟树结构图。
图3所示为本发明中时钟相位调整模块连接关系图。
图4所示为本发明中全局复位模块结构图。
具体实施方式
下文将结合具体附图详细描述本发明具体实施例。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。
如图1所示,本发明提供一种在FPGA中实现ZBT读写的时序稳定度的系统,包括ZBTSRAM读写控制器:ZBT SRAM读写控制器外接ZBT SRAM芯片;ZBT SRAM读写控制器包括:时钟树1、主控状态机2、全局复位模块3、伪随机数产生器4、时钟相位调整模块5、读写测试模块6、ZBT读操作控制器7、ZBT写操作控制器8及输入输出延时控制器;ZBT SRAM芯片包括第一ZBT SRAM芯片11及第二ZBT SRAM芯片12;输入输出延时控制器包括第一输入输出延时控制器9及第二输入输出延时控制器10;时钟树1连至主控状态机2、全局复位模块3、伪随机数产生器4、时钟相位调整模块5、ZBT读操作控制器7及ZBT写操作控制器8;主控状态机2连接第一输入输出延时控制器9、第二输入输出延时控制器10、伪随机数产生器4、读写测试模块6及ZBT读操作控制器7;伪随机数产生器4与ZBT写操作控制器8连接;读写测试模块6连接ZBT读操作控制器7及ZBT写操作控制器8;第一输入输出延时控制器9用于外接第一ZBT SRAM芯片11,第二输入输出延时控制器10用于外接第二ZBT SRAM芯片12。
如图2所示,时钟树1包括第一时钟管理器13、第二时钟管理器14及第三时钟管理器15;
第一时钟管理器13、第二时钟管理器14及第三时钟管理器15内部均包括一个锁相环电路PLL;
外部输入时钟经过缓冲单元后进入第一时钟管理器13,并输出4路工作时钟,包括第一输出时钟、第二输出时钟、第三输出时钟及第四输出时钟;第二时钟管理器14和第三时钟管理器15的输出相位均具有相位调整功能,可以通过控制端口使其输出时钟相对输入时钟的相位超前或滞后,可以实现输出时钟的任意相位调整,本发明正是通过该功能达到了无论与ZBT SRAM接口的控制及总线信号何时变化,总可以通过调整时钟输出相位实现稳定的数据读写的功能。其中第一输出时钟经缓冲后直接输出供FPGA内部逻辑使用,第四输出时钟用于实现PLL时钟反馈,第二输出时钟及第三输出时钟经过缓冲后分别进入独立的第二时钟管理器14及第三时钟管理器15;然后再次经过缓冲后输出至FPGA引脚,并经过PCB走线分别送至第一ZBT SRAM芯片11及第二ZBT SRAM芯片12的CLK端。
如图3所示,时钟相位调整模块5用于调整第二时钟管理器14及第三时钟管理器15的输出时钟相位,对外接口信号分别是工作时钟PSCLK、时钟相位调整功能使能信号PSEN、用于代表是减少还是增加相位步进的PSINCDEC及相位步进调整完成指示信号PSDONE。
目前主流FPGA器件的时钟管理模块动态相位调整功能的调整步进可达其内核PLL周期的1/56,而PLL周期一般在1ns左右,因此单次动态相位调整对应的时间延迟可控制在20ps以下。如此高的相位调整精度已大大超过系统需要。因此可以通过多次置PSEN信号有效的方式增加调整步进至约10~20度即可满足需要。
复位信号用于在系统上电时将所有模块的寄存器和状态机复位至确知状态,由于复位信号来源于外部端口输入,对FPGA内部工作时钟是一个典型的异步信号,用于实现复位信号的同步化,如图4所示,全局复位模块3设有相互级联的第一寄存器16、第二寄存器17及第三寄存器18;然后经过全局走线资源成为所有寄存器的复位信号,实现了同步复位、同步释放的效果:RST为输入信号,RST_D1~RST_D3为经过D寄存器同步后的信号,其中RST_D3已经经过了3级寄存器,使亚稳态的概率降低至可忽略不计,因此,该信号可用作可靠的全局复位信号。而且,采用同步复位可比异步复位策略使综合后电路的最高工作频率得到改善,静态时序分析效率也大为提高。
进一步的,本发明采用了基于M序列的伪随机数发生器,仅使用32个寄存器及一系列反馈线,即可生成循环长度高达2^32-1的伪随机数,循环长度已超过目前市场上容量最大的ZBT SRAM芯片CY7C1470的存储深度。此外,该产生器的随机种子可以动态变化以得到更好的随机特性。
进一步的,读写测试模块6则用于进行读写错误统计,在读写测试阶段,每次开始写ZBT SRAM芯片及回读数据时,均需对随机种子进行初始化,然后开始连续地址读写测试,先写入长度达2^21-1的伪随机数,然后再逐一回读。只有当全部写入数据和全部回读数据完全相同时才认为当前读写操作成功。并将测试结果(0代表无误,1代表有错误)记录至6位宽的2进制向量err_array的最低位,同时err_array左移一位,该向量初始值为全1,因此只有在连续6次检测到读写成功后,err_array变量才会变成零值,这代表已经找出最佳读写时序窗口,然后由主控状态机2控制时钟相位调整模块5反相调整3个步进即可置ZBT工作时钟为最佳相位。
在正常工作阶段,伪随机数产生器4及读写测试模块6模块可处于禁用阶段以降低动态功耗。
该模块的对外输入接口信号主要有:
工作时钟:来源于时钟树1资源;
复位信号:来源于全局复位模块3;
使能模块:来源于主控状态机2;
对外输出信号则是21比特宽度的伪随机数,送至ZBT写操作控制器8。
进一步的,ZBT读操作控制器7用于将外部模块输入的读使能及读地址进行多级寄存,同时将ZBT SRAM芯片输出的数据寄存至FPGA工作时钟域并向外部模块输出;
该模块对外接口信号主要有:
工作时钟:输入信号,来源于时钟树1资源;
复位信号:输入信号,来源于全局复位模块3;
ZBT SRAM芯片请求读地址总线:输入信号,来源于主控模块;
ZBT数据总线:输出信号,该信号为经过ZBT读操作控制器7同步化后的数据总线,可直接供其它模块使用。
ZBT SRAM芯片数据总线:输入信号,来源于ZBT SRAM芯片;
ZBT SRAM芯片地址总线:输出信号,送至ZBT SRAM芯片。
ZBT写操作控制器8用于将外部模块输入的写地址、写使能及写数据经第一寄存器16寄存一级后再输出至ZBT SRAM芯片,由于此前的ZBT读写测试功能已经确保ZBT工作时钟恰好出现在其所有输入数据变化时刻的中间位置,因此不会带来任何时序违反问题。
该模块对外接口信号主要有:
工作时钟:输入信号,来源于时钟树1资源;
复位信号:输入信号,来源于全局复位模块3;
ZBT SRAM芯片请求写地址总线:输入信号,来源于主控模块;
ZBT写数据总线:输入信号,来源于主控模块;
ZBT写数据使能:输入信号,来源于主控模块;
ZBT SRAM芯片数据总线:输出信号,送至ZBT SRAM芯片;
ZBT SRAM芯片地址总线:输出信号,在与ZBT读操作控制器7的地址总线作仲裁后最终输出送至ZBT SRAM芯片。
进一步的,为本发明采用了FPGA中的高级可编程I/O资源IDELAYCTRL和IODEALY,其中前者是后者的控制中枢,输入工作时钟可选200MHz或300MHz,后者则用于完成精确的输入输出延时调整,在200MHz下,延时单位步进为78ps,在300MHz下,延时单位步进可达52ps,更重要的是,IODEALY是专用于IOB引脚的输入输出延时控制模块,它不占用任何寄存器及LUT资源,也不会降低输出信号质量,高低温上的延时参数保持不变,十分适合在高速高频场合下采用。本发明中,IDELAYCTRL工作时钟为200MHz,IODELAY最大延时量为32个单位步进,因此最大延时量为2.5ns,但事实上,还要考虑到接入IODELAY带来的额外走线延时(约1~2ns),因此实际上IODELAY延时量可超过4ns,这样的延时控制已足以补偿由于布局布线造成的IOB输入输出不一致性。
进一步的,主控状态机2是所有其余子模块的控制中枢,它采用了一个复杂的同步状态机实现,共分成以下10个状态:
IDLE:系统复位及上电后的初始状态,解除复位后即自动跳至INIT_REG状态;
INIT_REG:该状态用于初始化伪随机数产生种子,初始化完成后即跳至WRITE_ZBT状态;
WRITE_ZBT:用于完成对ZBT所有地址的伪随机数据写入,写入完毕后跳至CLR_CNT状态;
CLR_CNT:用于清除ZBT读写计数器值,为回读作准备,清零完成后跳至READBACK_ZBT状态,同时该状态再次初始化伪随机数产生种子;
READBACK_ZBT:用于回读所有地址的ZBT数据,并与伪随机数产生器4的输出数据进行比较,统计是否完全一致,统计完成后进入PS_MODIFY状态;
PS_MODIFY:该状态由时钟相位调整模块5对第二时钟管理器14和第三时钟管理器15的输出时钟相位进行调整,每次相位调整步进10~20度,然后跳转至WAIT_PSDONE状态;
WAIT_PSDONE:在该状态,等待PSDONE信号置高,以表明时钟管理器2和3输出时钟相位调整已经完毕,然后检测最近6次的错误统计结果是否均无误,若是则进入SET_OPT_VALUE状态,否则转至INIT_REG状态,继续新的时钟相位下的读写测试;
SET_OPT_VALUE:在该状态,将由时钟相位调整模块5对第二时钟管理器14和第三时钟管理器15的输出时钟相位进行反向调整3次,以使ZBT工作时钟的上升沿出现在总线及控制信号变化的中间时刻,从而达到最大的时序裕量,调整完毕后跳至WAIT_PSDONE2状态;
WAIT_PSDONE:同样地,在该状态,等待PSDONE信号置高,以表明第二时钟管理器14和第三时钟管理器15输出时钟相位调整已经完毕,调整完毕后,判断当前是否是第一次进入该状态,若是代表此时第一ZBT SRAM芯片11时序调整已经完成,但第二ZBT SRAM芯片12还未进行,因此需要跳转INIT_REG状态,对第二ZBT SRAM芯片12重复第一ZBT SRAM芯片11调整的所有工作,若已经是第二次进入该状态,则证明所有ZBT SRAM芯片已经调整完毕,可跳转至INIT_DONE状态;
INIT_DONE:该状态为时序调整完成后的正常工作状态,此时外部模块可以通过其读写数据端口完成对ZBT SRAM芯片的同时数据读写,达到乒乓缓冲效果。
主控模块的对外接口主要是各个子模块的使能信号,同时接收各子模块的状态指示信号,并依此决定状态机的跳转。
本发明还提供一种在FPGA中实现ZBT读写的时序稳定度的方法,包括:
S1、系统上电后,产生全局复位信号,复位所有寄存器和状态机;
S2、禁用第一ZBT SRAM芯片11及第二ZBT SRAM芯片12输出使能,置第一ZBT SRAM芯片11及第二ZBT SRAM芯片12写使能有效,初始化所述伪随机数产生器4的随机种子,并将伪随机数产生器4输出数据连续写入第一ZBT SRAM芯片11及第二ZBT SRAM芯片12中的每一个地址;
S3、禁用第一ZBT SRAM芯片11及第二ZBT SRAM芯片12写使能,并置第一ZBT SRAM芯片11及第二ZBT SRAM芯片12输出使能有效,开始回读ZBT数据,同时再次初始化伪随机数种子,将每一个地址回读得到的ZBT数据与伪随机数产生器4输出数据比较;
S4、如果步骤S3中二者比较数据不完全相同,证明读写ZBT SRAM中发生了时序违反情况进而导致读写错误,由时钟相位调整模块5对ZBT工作时钟进行相位调整,每次相位调整步进约10~20度;
S5、如果所属步骤S3中二者比较数据完全相同,证明上一轮ZBT读写时序正常,继续进行相位调整,并继续测试读写是否有误,在连续6次以上调整ZBT工作时钟相位均读写无误时,证实已经找出覆盖整个合法时序裕量窗口的位置,再将输出时钟相位反相调整3次,以获得最大的时序裕量;
S6、在时钟相位调整完毕后,即可开始正常的ZBT读写操作。
实施例:
本实施例选择目前速度最快、容量最大的Cypress公司的CY7C1470为ZBT SRAM器件代表,以Xilinx公司中端器件Virtex6LX130为FPGA器件典型代表。整个设计采用2片CY7C1470组成乒乓缓冲系统,从而可实现数据流的连续读写,进一步提高数据吞吐量。工作频率设定为160MHz。
CY7C1470的容量为2M*36bit,是典型的流水模式ZBT SRAM,最高工作频率超过200MHz,其主要对外接口信号介绍如下:
A0~A20:21位地址总线,输入端口;
D0~D35:36位数据总线,双向端口;
WE_N:写使能,低电平代表写操作,高电平代表读操作,输入端口;
CLK:工作时钟,所有信号变化均与该信号的上升沿同步,输入端口;
OE_N:输出使能信号,只有在该信号为低电平时,数据总线D0~D35才能对外输出数据,否则总线处于高阻态,输入端口。
按照CY7C1470产品数据手册,所有输入信号相对于CLK上升沿的建立时间要求是不小于1.4ns,保持时间要求不小于0.4ns。而输出信号D0~D35相对于CLK上升沿的延迟时间不超过3ns。
对FPGA器件,不同制造工艺、不同档次、不同驱动电平的芯片引脚输入输出延时均有所不同,详细的参数可参见FPGA器件的数据手册。以Virtex6器件和LVTTL电平为例,在低温下,输入信号从引脚至FPGA内部寄存器的走线延时一般不超过2ns,然而在高温及高扇出情况下,走线延时可以上升至7ns甚至更高。同样地,输出信号的走线延时变化范围也可达5ns左右。
针对上述延时估计,可将160MHz下ZBT输入输出偏移约束设置为:
TIMEGRP"zbt1_abus"OFFSET=out 7ns AFTER"FPGA_CLK";
TIMEGRP"zbt1_dbus"OFFSET=out 7ns AFTER"FPGA_CLK";
TIMEGRP"zbt1_ctr"OFFSET=out 7ns AFTER"FPGA_CLK";
TIMEGRP"zbt2_abus"OFFSET=out 7ns AFTER"FPGA_CLK";
TIMEGRP"zbt2_dbus"OFFSET=out 7ns AFTER"FPGA_CLK";
TIMEGRP"zbt2_ctr"OFFSET=out 7ns AFTER"FPGA_CLK";
TIMEGRP"zbt1_dbus"OFFSET=in 7ns BEFORE"FPGA_CLK";
TIMEGRP"zbt2_dbus"OFFSET=in 7ns BEFORE"FPGA_CLK";
其中,abus代表地址总线,dbus代表数据总线,ctr代表读写使能、输出使能等控制信号。
在160MHz下,按照与3.2.5类似的时序分析过程,可以计算出从FPGA给出地址总线信息,到FPGA内部寄存器可以稳定寄存ZBT输出数据的总路径延时约22ns,大于3个时钟周期而小于4个时钟周期,因此该情况下从ZBT读写控制器接收到外部模块给出的ZBT读地址开始,需要等待1+4+1=6个时钟周期后得到正确数据,与200MHz下的结果相比,相当于读数据减少了一个时钟周期,在其它工作频率下的延时分析仍可基于相同机理分析,此处不再赘述。
整个设计经过ISE13.4软件完成布局布线后,报告所有静态时序报告均合法,同时该控制器仅占用432个寄存器和232个查找表。具有较好的资源经济性。
本发明提供的在FPGA中实现ZBT读写的时序稳定度的系统及方法利用M序列发生器构建伪随机数发生器,并以此为测试数据源,为控制器增加了随机读写测试功能;使能了FPGA内部时钟管理模块的动态相位高速功能,通过遍历所有相位的方式,找出最佳的数据采样时刻,进而保证了ZBT读写时序的稳定性,而且不再受代码调试、修改、以及高低温变化的影响,总可以确保数据读写正确;为通过施加合理的OFFSET约束控制IOB引脚延时,并通过IODELAY高级可编程资源进一步补偿各引脚的延时分布,达到了所有信号延时分布基本一致的良好效果。
本发明可以确保ZBT读写时序稳定,FPGA开发工程师可以将主要精力放在产品的功能调试上,而不必再通过费时费力的增量编译、手工布局布线、区域反标注、甚至盲目调整输出时钟相位的方式等技巧实现。
本文虽然已经给出了本发明的一些实施例,但是本领域的技术人员应当理解,在不脱离本发明精神的情况下,可以对本文的实施例进行改变。上述实施例只是示例性的,不应以本文的实施例作为本发明权利范围的限定。
Claims (10)
1.在FPGA中实现ZBT读写的时序稳定度的系统,包括ZBT SRAM读写控制器,其特征在于:所述ZBT SRAM读写控制器外接ZBT SRAM芯片;所述ZBT SRAM读写控制器包括:时钟树、主控状态机、全局复位模块、伪随机数产生器、时钟相位调整模块、读写测试模块、ZBT读操作控制器、ZBT写操作控制器及输入输出延时控制器;所述ZBT SRAM芯片包括第一ZBT SRAM芯片及第二ZBT SRAM芯片;所述输入输出延时控制器包括第一输入输出延时控制器及第二输入输出延时控制器;所述时钟树连至所述主控状态机、全局复位模块、伪随机数产生器、时钟相位调整模块、ZBT读操作控制器及ZBT写操作控制器;所述主控状态机连接所述第一输入输出延时控制器、第二输入输出延时控制器、伪随机数产生器、读写测试模块及ZBT读操作控制器;所述伪随机数产生器与所述ZBT写操作控制器连接;所述读写测试模块连接所述ZBT读操作控制器及ZBT写操作控制器;所述第一输入输出延时控制器用于外接所述第一ZBT SRAM芯片,所述第二输入输出延时控制器用于外接所述第二ZBT SRAM芯片。
2.如权利要求1所述的在FPGA中实现ZBT读写的时序稳定度的系统,其特征在于:所述时钟树包括第一时钟管理器、第二时钟管理器及第三时钟管理器;
所述第一时钟管理器、第二时钟管理器及第三时钟管理器内部均包括一个锁相环电路PLL;
外部输入时钟经过缓冲单元后进入第一时钟管理器,并输出4路工作时钟,包括第一输出时钟、第二输出时钟、第三输出时钟及第四输出时钟;所述第二时钟管理器和第三时钟管理器的输出相位均通过控制端口使其输出时钟相对输入时钟的相位超前或滞后;所述第一输出时钟经缓冲后直接输出供FPGA内部逻辑使用,所述第四输出时钟用于实现PLL时钟反馈,所述第二输出时钟及第三输出时钟经过缓冲后分别进入独立的所述第二时钟管理器及第三时钟管理器;然后再次经过缓冲后输出至FPGA引脚,并经过PCB走线分别送至所述第一ZBT SRAM芯片及第二ZBT SRAM芯片的CLK端。
3.如权利要求2所述的在FPGA中实现ZBT读写的时序稳定度的系统,其特征在于,所述时钟相位调整模块用于调整所述第二时钟管理器及第三时钟管理器的输出时钟相位,对外接口信号分别是工作时钟PSCLK、时钟相位调整功能使能信号PSEN、用于代表是减少还是增加相位步进的PS I NCDEC及相位步进调整完成指示信号PSDONE。
4.如权利要求1所述的在FPGA中实现ZBT读写的时序稳定度的系统,其特征在于,所述全局复位模块设有相互级联的第一寄存器、第二寄存器及第三寄存器;所述全局复位模块用于实现复位信号的同步化,然后经过全局走线资源成为所有寄存器的复位信号。
5.如权利要求1所述的在FPGA中实现ZBT读写的时序稳定度的系统,其特征在于,所述伪随机数产生器用于产生ZBT读写测试数据,所述伪随机数产生器包括基于M序列的伪随机数发生器。
6.如权利要求1所述的在FPGA中实现ZBT读写的时序稳定度的系统,其特征在于,所述读写测试模块用于进行读写错误统计,并将测试结果记录至6位宽的2进制向量err_array的最低位,同时err_array左移一位,然后由所述主控状态机控制所述时钟相位调整模块进行调整并置ZBT工作时钟至最佳相位;
所述读写测试模块的对外输入接口可用于接收;所述时钟树的工作时钟、所述全局复位模块的复位信号和所述主控状态机的使能模块;
所述读写测试模块可向所述ZBT写操作控制器输出21比特宽度的伪随机数的信号。
7.如权利要求4所述的在FPGA中实现ZBT读写的时序稳定度的系统,其特征在于,所述ZBT读操作控制器用于将外部模块输入的读使能及读地址进行多级寄存,同时将所述ZBTSRAM芯片输出的数据寄存至FPGA工作时钟域并向外部模块输出;
所述ZBT写操作控制器用于将外部模块输入的写地址、写使能及写数据经所述第一寄存器寄存一级后再输出至所述ZBT SRAM芯片。
8.如权利要求1所述的在FPGA中实现ZBT读写的时序稳定度的系统,其特征在于,所述输入输出延时控制器的工作时钟为200MHz,最大延时量为32个单位步进,延时量大于4ns。
9.如权利要求1所述的在FPGA中实现ZBT读写的时序稳定度的系统,其特征在于,所述主控状态机用于对各个子模块输出使能信号,同时接收各子模块的状态指示信号,并依此决定状态机的跳转。
10.一种基于权利要求1所述系统实现的在FPGA中实现ZBT读写的时序稳定度的方法,其特征在于,包括如下步骤:
Sl、系统上电后,产生全局复位信号,复位所有寄存器和状态机;
S2、禁用第一ZBT SRAM芯片及第二ZBT SRAM芯片输出使能,置第一ZBT SRAM芯片及第二ZBT SRAM芯片写使能有效,初始化所述伪随机数产生器的随机种子,并将伪随机数产生器输出数据连续写入第一ZBT SRAM芯片及第二ZBT SRAM芯片中的每一个地址;
S3、禁用第一ZBT SRAM芯片及第二ZBT SRAM芯片写使能,并置第一ZBT SRAM芯片及第二ZBT SRAM芯片输出使能有效,开始回读ZBT数据,同时再次初始化伪随机数种子,将每一个地址回读得到的ZBT数据与伪随机数产生器输出数据比较;
S4、如果所述步骤S3中二者比较数据不完全相同,证明读写ZBT SRAM中发生了时序违反情况进而导致读写错误,由时钟相位调整模块对ZBT工作时钟进行相位调整,每次相位调整步进约10—20度;
S5、如果所述步骤S3中二者比较数据完全相同,证明上一轮ZBT读写时序正常,继续进行相位调整,并继续测试读写是否有误,在连续6次以上调整ZBT工作时钟相位均读写无误时,证实已经找出覆盖整个合法时序裕量窗口的位置,再将输出时钟相位反相调整3次,以获得最大的时序裕量;
S6、在时钟相位调整完毕后,即可开始正常的ZBT读写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510211568.2A CN104795091B (zh) | 2015-04-29 | 2015-04-29 | 在fpga中实现zbt读写的时序稳定度的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510211568.2A CN104795091B (zh) | 2015-04-29 | 2015-04-29 | 在fpga中实现zbt读写的时序稳定度的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104795091A CN104795091A (zh) | 2015-07-22 |
CN104795091B true CN104795091B (zh) | 2017-05-03 |
Family
ID=53559847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510211568.2A Expired - Fee Related CN104795091B (zh) | 2015-04-29 | 2015-04-29 | 在fpga中实现zbt读写的时序稳定度的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104795091B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335105B (zh) * | 2015-12-22 | 2018-05-15 | 信阳师范学院 | 一种适用于fpga的qdr iv超高速存储控制器 |
CN107786402B (zh) * | 2016-08-31 | 2024-01-19 | 北京昱连科技有限公司 | Ttcan控制通讯模块和车辆的ttcan控制通讯系统 |
CN108596822A (zh) * | 2018-04-24 | 2018-09-28 | 上海顺久电子科技有限公司 | 数据存储方法、装置及图像处理系统 |
CN111881645B (zh) * | 2020-07-03 | 2021-05-04 | 广芯微电子(广州)股份有限公司 | 一种基于噪声时序的时钟树抗干扰方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933385A (en) * | 1997-07-31 | 1999-08-03 | Integrated Silicon Solution Inc. | System and method for a flexible memory controller |
CN201429841Y (zh) * | 2009-06-29 | 2010-03-24 | 北京理工大学 | 一种fpga阵列处理板 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4236901B2 (ja) * | 2002-10-23 | 2009-03-11 | Necエレクトロニクス株式会社 | 半導体記憶装置及びその制御方法 |
-
2015
- 2015-04-29 CN CN201510211568.2A patent/CN104795091B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933385A (en) * | 1997-07-31 | 1999-08-03 | Integrated Silicon Solution Inc. | System and method for a flexible memory controller |
CN201429841Y (zh) * | 2009-06-29 | 2010-03-24 | 北京理工大学 | 一种fpga阵列处理板 |
Non-Patent Citations (1)
Title |
---|
高速数字信号处理中的双缓冲ZBT SRAM控制器设计;钱博等;《沈阳理工大学学报》;20080430;第27卷(第2期);第40-43页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104795091A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101471237B1 (ko) | 적응형 전압 스케일링 최적화를 이용하는 집적 회로들을 설계하기 위한 시스템 및 방법 | |
Sjogren et al. | Interfacing synchronous and asynchronous modules within a high-speed pipeline | |
US6550044B1 (en) | Method in integrating clock tree synthesis and timing optimization for an integrated circuit design | |
CN104795091B (zh) | 在fpga中实现zbt读写的时序稳定度的系统及方法 | |
EP3105761B1 (en) | Memory physical layer interface logic for generating dynamic random access memory (dram) commands with programmable delays | |
CN103905038B (zh) | 周期预计算偏斜补偿电路及其fpga片内延迟锁定环方法 | |
CN101369814B (zh) | 数字锁相环和消除毛刺的方法 | |
US6651230B2 (en) | Method for reducing design effect of wearout mechanisms on signal skew in integrated circuit design | |
CN103177145A (zh) | 一种用于集成电路的多个时序模式合并的方法和系统 | |
CN109376467A (zh) | 集成电路中时钟树布局流程方法和时钟树偏差补偿装置 | |
CN115080494B (zh) | Spi从机电路、spi通信方法、接口和芯片 | |
US5790838A (en) | Pipelined memory interface and method for using the same | |
CN100576140C (zh) | 产生数字信号处理器和存储器的时钟信号的电路和方法 | |
US20020188923A1 (en) | High-level synthesis apparatus, high-level synthesis method, method for producing logic circuit using the high-level synthesis method, and recording medium | |
CN105227257A (zh) | 一种改进型时钟同步镜像延迟电路 | |
US20090271747A1 (en) | Logic circuit designing device, logic circuit designing method and logic circuit designing program for asynchronous logic circuit | |
CN101645301A (zh) | 一种用于读数据采样的温度自适应调整方法及装置 | |
CN101192820B (zh) | 一种延迟模块装置以及开回路控制装置与方法 | |
US20110295586A1 (en) | Clock simulation device and methods thereof | |
CN106708167B (zh) | 一种调整时钟的方法及控制器 | |
CN104216462A (zh) | 一种基于fpga的大动态高精度可编程延时装置 | |
CN102790605B (zh) | 异步信号同步器 | |
CN104268352B (zh) | 一种fpga实现中时钟歪斜的快速修复方法 | |
CN109871611A (zh) | 一种异步电路自动延迟匹配的方法 | |
CN206282270U (zh) | 一种处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170503 Termination date: 20180429 |
|
CF01 | Termination of patent right due to non-payment of annual fee |