马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 CluThiHab 于 2014-9-12 12:55 编辑
最近调试板卡,遇到FPGA(EP2S60F1020I4)使用ddio,时序不满足的问题,请教大侠。
板卡结构,如下:
AD9957输出100Mhz PDCLK时钟给FPGA,PDCLK由FPGA专用时钟管脚进入。在FPGA内部,PDCLK使用了全局时钟缓冲,然后作为FPGA的处理时钟。最后,FPGA使用了MegaWizard Plug-in manager 实例化了一个altddio_out双沿传输数据的IP核,将18位DAC_D[17:0]数据送出pin外给AD9957,AD9957使用它内部的PDCLK对数据进行锁存。
从altddio_out模块的寄存器,经过pin脚,PCB布线延时,到进入AD9957寄存器。在这整个路径中,分配给FPGA pin外的延时为2ns,这2ns包括布线延迟和AD9957输入寄存器建立时间(数据手册为1.75ns)。在约束文件中加入下面这句约束:
set_output_delay -add_delay -max -clock [get_clocks {PDCLK}] 2.000 [get_ports {DAC_D[0]}]
在quartus ii9.1版本的编译器中,报出关于altddio_out模块的10个数据线(共18个数据线)的建立时间不满足,slack为负的,其余8根没有报建立时间问题。
另外,由AD9957输出的时钟PDCLK,进入FPGA之后,是不是需要使用PLL或者DLL对PDCLK进行锁相,保证由PDCLK锁存后输出的DAC_D[17:0]能够正确地被AD9957内部的PDCLK采样?
图1建立时间不满足,如下:
图2 有10个数据线的建立时间不满足,如下:
图3其中DAC_D[0]不满足建立时间的路径,如下:
图4 AD9957输入寄存器的建立时间为1.75ns,如下:
另外,我还注意到在EP2S60F1020的数据手册中,提到I/O Delays的延时参数如下图所示,FPGA我使用的是-4的速度,LVTTL电平标准,其中 Top的延时都在2ns以上。那么PDCLK为100Mhz,时钟周期为10ns,上升沿下降沿都传数据,上升沿到下降沿就只有5ns。从而,Top的延时加上外部 pcb走线以及AD9957输入寄存器的建立时间非常接近5ns了,是不是EP2S60F1020的管脚连接AD9957,使用DDR方式传输数据很难达到100Mhz (即PDCLK为100Mhz)?
数据手册中写出的FPGA管脚的Top的延时参数,如下:
|