完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我正在使用Virtex-6 FPGA在ADC和FPGA之间实现LVDS接口。
我根据下图设计了一个项目(取自xapp1071.pdf - 第6页): 当我尝试生成比特流文件(生成编程文件)时,我收到了以下消息: ERROR PhysDesignRules:2066 - 组件serdes_bitclock / iserdese1_master配置为ISERDESE1。 从/ ILOGIC_X0Y87 / DDLY到/ ILOGIC_X0Y87 / O引脚的路由,为DDLY引脚配置第二个输入路径与ISERDESE1配置冲突。 我找到了以下解决方案(http://www.xilinx.com/support/answers/43194.htm): 描述 BitGen报告了以下DRC错误:“ERROR:PhysDesignRules:2066 - 组件xxxxxx配置为ISERDESE1。从/ ILOGIC_XmYn / DDLY到/ ILOGIC_XmYn / O引脚的路由,为DDLY引脚配置第二个输入路径是冲突的 使用ISERDESE1配置。“Howcan Iresolve此错误? 解 发生此错误是因为使用了ISERDESE1组件中的DDLY到O routethru,但是与ISERDESE1配置冲突。当使用ISISDESE1并且D引脚用于顺序数据输入时,DDLY到O routethru仅在ISERDESE1的IOBDELAY属性设置为 “都”。 要解决此错误,请将ISERDESE1的IOBDELAY属性更改为“BOTH”。 注意:当顺序数据输入不仅进入ISERDESE1的D引脚,而且进入输出焊盘,片,MMCM等其他组件时,由于路由资源限制,将使用DDLY到O路由。 当我将IOBDELAY属性设置为“BOTH”时问题得以解决,但根据SelectiO资源文档(ug361.pdf),O组合和Q1-Q6注册输出将由ISERDESE1的DDLY输入驱动。 但我需要在D输入端输入数据,而不是在ISERDESE1的DDLY输入端输入数据。 我怎么解决这个问题? |
|
相关推荐
9个回答
|
|
我在Virtex 5中遇到了类似的问题,并使用IBUFDS_DIFF_OUT解决了这个问题
将其O输出连接到一个负载,将OB连接到另一个负载。 你需要调整你的逻辑 因为OB输出是反转的。 这避免了使用的路由路径 IODELAY块。 - Gabor - Gabor 在原帖中查看解决方案 |
|
|
|
我在Virtex 5中遇到了类似的问题,并使用IBUFDS_DIFF_OUT解决了这个问题
将其O输出连接到一个负载,将OB连接到另一个负载。 你需要调整你的逻辑 因为OB输出是反转的。 这避免了使用的路由路径 IODELAY块。 - Gabor - Gabor |
|
|
|
AR43194并不完全正确。
将IOBDELAY设置为IBUF也可以。 有关详细信息,请查看应用说明。 (顺便说一下,下载Xilinx Document Navigator来管理所有Xilinx文档): http://www.xilinx.com/support/documentation/application_notes/xapp880.pdf tiago.dezotti@eldorado.org.br写道: 我正在使用Virtex-6 FPGA在ADC和FPGA之间实现LVDS接口。 我根据下图设计了一个项目(取自xapp1071.pdf - 第6页): 当我尝试生成比特流文件(生成编程文件)时,我收到了以下消息: ERROR PhysDesignRules:2066 - 组件serdes_bitclock / iserdese1_master配置为ISERDESE1。 从/ ILOGIC_X0Y87 / DDLY到/ ILOGIC_X0Y87 / O引脚的路由,为DDLY引脚配置第二个输入路径与ISERDESE1配置冲突。 我找到了以下解决方案(http://www.xilinx.com/support/answers/43194.htm): 描述 BitGen报告了以下DRC错误:“ERROR:PhysDesignRules:2066 - 组件xxxxxx配置为ISERDESE1。从/ ILOGIC_XmYn / DDLY到/ ILOGIC_XmYn / O引脚的路由,为DDLY引脚配置第二个输入路径是冲突的 使用ISERDESE1配置。“Howcan Iresolve此错误? 解 发生此错误是因为使用了ISERDESE1组件中的DDLY到O routethru,但是与ISERDESE1配置冲突。当使用ISISDESE1并且D引脚用于顺序数据输入时,DDLY到O routethru仅在ISERDESE1的IOBDELAY属性设置为 “都”。 要解决此错误,请将ISERDESE1的IOBDELAY属性更改为“BOTH”。 注意:当顺序数据输入不仅进入ISERDESE1的D引脚,而且进入输出焊盘,片,MMCM等其他组件时,由于路由资源限制,将使用DDLY到O路由。 当我将IOBDELAY属性设置为“BOTH”时问题得以解决,但根据SelectIO资源文档(ug361.pdf),O组合和Q1-Q6注册输出将由ISERDESE1的DDLY输入驱动。 但我需要在D输入端输入数据,而不是在ISERDESE1的DDLY输入端输入数据。 我怎么解决这个问题? 干杯,吉姆 |
|
|
|
|
|
|
|
我试图在IOBDELAY属性上使用“IBUF”,但它没有用。
我在路由方面遇到了问题。 我已经下载了Xilinx Document Navigator。 感谢您提供xapp880.pdf文档。 我不知道。 谢谢,吉姆。 |
|
|
|
嗯,我在几个设计中使用XAPP880中的电路没有任何问题。
你可以发布你的代码片段,显示从输入缓冲区到IODELAY,ISERDES,BUFR等的所有连接吗? tiago.dezotti@eldorado.org.br写道: 我试图在IOBDELAY属性上使用“IBUF”,但它没有用。 我在路由方面遇到了问题。 我已经下载了Xilinx Document Navigator。 感谢您提供xapp880.pdf文档。 我不知道。 谢谢,吉姆。 干杯,吉姆 |
|
|
|
吉姆,这是我的代码显示连接:
电线w_bitclock; 电线w_clkdiv; 电线w_clk_p; wire data_out1; wire data_out2; 电线w_ce1; 电线w_inc1; 电线w_ce2; 电线w_inc2; 电线; 电线[5:0] q; wire [4:0] w_tap1; IBUFDS#( .IOSTANDARD( “LVDS_25”), .DIFF_TERM(“TRUE”) ) ibufds( .I(DCLK_P), .IB(DCLK_M), .O(w_bitclock) ); IODELAYE1 #( .IDELAY_TYPE(“VARIABLE”), .ODELAY_TYPE(“FIXED”), .DELAY_SRC(“我”), .IDELAY_VALUE(16), .ODELAY_VALUE(0), .HIGH_PERFORMANCE_MODE(“TRUE”), .SIGNAL_PATTERN(“CLOCK”), .REFCLK_FREQUENCY(200.0), .CINVCTRL_SEL(“FALSE”) ) iodelaye1_clk( .C(w_clkdiv), .CE(w_ce1), .INC(w_inc1), .IDATAIN(w_bitclock), .RST(重置), .DATAOUT(data_out1), .CNTVALUEOUT(w_tap1), //未使用的连接 .T(1'b0), .DATAIN(1'b0), .ODATAIN(1'b0), .CNTVALUEIN(5'b00000), .CLKIN(1'b0), .CINVCTRL(1'b0) ); IODELAYE1 #( .IDELAY_TYPE(“VARIABLE”), .ODELAY_TYPE(“FIXED”), .DELAY_SRC(“DATAIN”), .IDELAY_VALUE(16), .ODELAY_VALUE(0), .HIGH_PERFORMANCE_MODE(“TRUE”), .SIGNAL_PATTERN(“CLOCK”), .REFCLK_FREQUENCY(200.0), .CINVCTRL_SEL(“FALSE”) ) iodelaye2_clk( .C(w_clkdiv), .CE(w_ce2), .INC(w_inc2), .DATAIN(data_out1), .RST(重置), .DATAOUT(data_out2), .CNTVALUEOUT(), //未使用的连接 .IDATAIN(1'b0), .T(1'b0), .ODATAIN(1'b0), .CNTVALUEIN(5'b00000), .CLKIN(1'b0), .CINVCTRL(1'b0) ); ISERDESE1 #( .DATA_RATE(“SDR”), .DATA_WIDTH(6), .INTERFACE_TYPE(“网络”), .DYN_CLKDIV_INV_EN(“FALSE”), .DYN_CLK_INV_EN(“FALSE”), .NUM_CE(2), .OFB_USED(“FALSE”), .IOBDELAY(“BOTH”), //.IOBDELAY(“NONE”), .SERDES_MODE(“MASTER”)) iserdese1_master( .Q1(q [0]), .Q2(q [1]), .Q3(q [2]), .Q4(q [3]), .Q5(q [4]), .Q6(q [5]), .SHIFTOUT1(), .SHIFTOUT2(), .BITSLIP(1'b0), .CE1(1'b1), .CE2(1'b1), .CLK(w_clk_p), .CLKB(), .CLKDIV(w_clkdiv), .D(w_bitclock), .DDLY(), .RST(重置), .SHIFTIN1(1'b0), .SHIFTIN2(1'b0), .DYNCLKDIVSEL(1'b0), .DYNCLKSEL(1'b0), .OFB(1'b0), .OCLK(1'b0), .O()); BUFIO bufio_inst ( .O(w_clk_p), .I(data_out2) ); BUFR #( .SIM_DEVICE(“VIRTEX6”), .BUFR_DIVIDE(“6”)) clkout_buf_inst(.O(w_clkdiv), .CE(1'b1), .CLR(RESET), .I(data_out2)); 感谢您的关注。 |
|
|
|
我看到了问题。
您需要从xapp880建立如下图所示的连接:IODELAY.DATAOUT - > ISERDES.DDLY - > ISERDES.O - > BUFR / BUIO.I。 当然,将ISERDES的IOBDELAY设置为IBUF,以便ISERDES.Q获得D输入,ISERDES.O获得DDLY输入。 tiago.dezotti@eldorado.org.br写道: 吉姆,这是我的代码显示连接: 电线w_bitclock; 电线w_clkdiv; 电线w_clk_p; wire data_out1; wire data_out2; 电线w_ce1; 电线w_inc1; 电线w_ce2; 电线w_inc2; 电线; 电线[5:0] q; wire [4:0] w_tap1; IBUFDS#( .IOSTANDARD( “LVDS_25”), .DIFF_TERM(“TRUE”) ) ibufds( .I(DCLK_P), .IB(DCLK_M), .O(w_bitclock) ); IODELAYE1 #( .IDELAY_TYPE(“VARIABLE”), .ODELAY_TYPE(“FIXED”), .DELAY_SRC(“我”), .IDELAY_VALUE(16), .ODELAY_VALUE(0), .HIGH_PERFORMANCE_MODE(“TRUE”), .SIGNAL_PATTERN(“CLOCK”), .REFCLK_FREQUENCY(200.0), .CINVCTRL_SEL(“FALSE”) ) iodelaye1_clk( .C(w_clkdiv), .CE(w_ce1), .INC(w_inc1), .IDATAIN(w_bitclock), .RST(重置), .DATAOUT(data_out1), .CNTVALUEOUT(w_tap1), //未使用的连接 .T(1'b0), .DATAIN(1'b0), .ODATAIN(1'b0), .CNTVALUEIN(5'b00000), .CLKIN(1'b0), .CINVCTRL(1'b0) ); IODELAYE1 #( .IDELAY_TYPE(“VARIABLE”), .ODELAY_TYPE(“FIXED”), .DELAY_SRC(“DATAIN”), .IDELAY_VALUE(16), .ODELAY_VALUE(0), .HIGH_PERFORMANCE_MODE(“TRUE”), .SIGNAL_PATTERN(“CLOCK”), .REFCLK_FREQUENCY(200.0), .CINVCTRL_SEL(“FALSE”) ) iodelaye2_clk( .C(w_clkdiv), .CE(w_ce2), .INC(w_inc2), .DATAIN(data_out1), .RST(重置), .DATAOUT(data_out2), .CNTVALUEOUT(), //未使用的连接 .IDATAIN(1'b0), .T(1'b0), .ODATAIN(1'b0), .CNTVALUEIN(5'b00000), .CLKIN(1'b0), .CINVCTRL(1'b0) ); ISERDESE1 #( .DATA_RATE(“SDR”), .DATA_WIDTH(6), .INTERFACE_TYPE(“网络”), .DYN_CLKDIV_INV_EN(“FALSE”), .DYN_CLK_INV_EN(“FALSE”), .NUM_CE(2), .OFB_USED(“FALSE”), .IOBDELAY(“BOTH”), //.IOBDELAY(“NONE”), .SERDES_MODE(“MASTER”)) iserdese1_master( .Q1(q [0]), .Q2(q [1]), .Q3(q [2]), .Q4(q [3]), .Q5(q [4]), .Q6(q [5]), .SHIFTOUT1(), .SHIFTOUT2(), .BITSLIP(1'b0), .CE1(1'b1), .CE2(1'b1), .CLK(w_clk_p), .CLKB(), .CLKDIV(w_clkdiv), .D(w_bitclock), .DDLY(), .RST(重置), .SHIFTIN1(1'b0), .SHIFTIN2(1'b0), .DYNCLKDIVSEL(1'b0), .DYNCLKSEL(1'b0), .OFB(1'b0), .OCLK(1'b0), .O()); BUFIO bufio_inst ( .O(w_clk_p), .I(data_out2) ); BUFR #( .SIM_DEVICE(“VIRTEX6”), .BUFR_DIVIDE(“6”)) clkout_buf_inst(.O(w_clkdiv), .CE(1'b1), .CLR(RESET), .I(data_out2)); 感谢您的关注。 干杯,吉姆 |
|
|
|
吉姆
我试图像你说的那样建立连接,但它没有用。 我认为问题是我使用两个IODELAYS来增加我的水龙头范围。 当我这样做时,我无法在IOSERDES的DDLY输入中连接第二个IODELAY的DATAOUT输出。 我只与一个IODELAY建立了联系,但它确实有效。 我觉得对吗? 吉姆,我感谢你的关注。 |
|
|
|
只有小组成员才能发言,加入小组>>
2380 浏览 7 评论
2797 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2262 浏览 9 评论
3335 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2428 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
755浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
543浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
365浏览 1评论
1961浏览 0评论
681浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:54 , Processed in 1.389270 second(s), Total 93, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号