完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
亲爱的大家,
我对时钟信号和数据信号进行采样,想要馈送到IDDR2,但它需要两个时钟。 所以我的采样时钟 信号无法直接馈入IDDR2,需要反向采样时钟信号, 如何反转它使反转信号没有任何偏斜& 与采样时钟有关的延迟? 顺便说一句,我觉得斯巴达太麻烦了,为什么需要两个时钟? 为什么它不能将IDDR作为virtex? 非常感谢你! 以上来自于谷歌翻译 以下为原文 Dear all, I sampled both clock signal and data signal, want to feed to IDDR2, however it requires two clocks. So my sampled clock signal can not feed directly to IDDR2, needs an inverted sampled clock signal, how to invert it so that the inverted signal without any skew & delay related to the sampled clock? BTW, I feel spartan is so troublesome, why it need two clock? why it can not have IDDR as virtex? Thank you very much! |
|
相关推荐
21个回答
|
|
你能举个例子吗?
会产生偏差吗? 非常感谢你! 以上来自于谷歌翻译 以下为原文 can u give me example? will it produce skew? Thank you very much! |
|
|
|
除了Ed(mcgett)的回复之外,请参阅UG381(v1.4),表2-2(第54页)。
另请参见第52页的图2-3。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 In addition to Ed's (mcgett's) reply, refer to UG381 (v1.4), table 2-2 (on page 54). Also Figure 2-3 on page 52. - Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
嗨,谢谢你!
但如何为my_clock和~my_clock使用原语? 因为我的MAP失败了: IDDR2符号“physical_group_ *”(*)的C0和C1时钟引脚由相同的BUFIO2驱动,但是一个时钟引脚被反转而另一个时钟引脚不被反相。 这将导致硬件无法支持的情况。 当相同的BUFIO2驱动时,请确保C0和C1具有相同的极性。 以上来自于谷歌翻译 以下为原文 Hi, Thank you! but how to use primitives for my_clock and ~my_clock? because my MAP failed: IDDR2 symbol "physical_group_*" (*) has its C0 and C1 clock pins driven by the same BUFIO2, but one clock pin is inverted while the other is not. This will result in a situation that cannot be supported in the hardware. Please ensure that C0 and C1 have the same polarity when driven by the same BUFIO2. |
|
|
|
嗨,谢谢你!
但如何为my_clock和~my_clock使用原语? 因为我的MAP失败了: 嗯,这比我想象的更有趣...... 我尝试了在WinVista64上运行ISE12.4的快速实验,这就是我发现的...... 这些工作正常: 从BUFG驱动IDDR2 .C0,.C1,在.C1输入端使用“~ddr_clk” 从IBUFG驱动IDDR2 .C0,.C1,在.C1输入端使用“~ddr_clk” 从BUFIO2 / IOCLK驱动IDDR2 .C0,从第二个BUFIO2 / IOCLK驱动IDDR2 .C1(I-INVERT =“TRUE”) 这些都行不通 从BUFIO2 / IOCLK驱动IDDR2 .C0,从第二个BUFIO2 / IOCLK驱动IDDR2 .C1(I-INVERT =“FALSE”) 从单个BUFIO2 / IOCLK驱动IDDR2 .C0,.C1 这是我的代码(有选择地注释掉各种选项) module s6_adder(输入ddr_inclk,输入ddr_data_in,输出ddrQ_a,ddrQ_b); // IBUFG#(。IOSTANDARD(“LVCMOS33”))//指定输入I / O标准// IBUFG_inst(// .O(ddr_clk),/ /时钟缓冲输出// .I(ddr_inclk)); //时钟缓冲输入(直接连接到顶级端口)BUFG BUFG_inst(.O(ddr_clk),// 1位输出时钟缓冲输出.I(ddr_inclk)); // 1位输入时钟缓冲输入// BUFIO2#(。DIVIDE(1),// DIVCLK分频器(1-8)//。DIVIDE_BYPASS(“TRUE”),//旁路分频器电路(TRUE / FALSE) // .I_INVERT(“FALSE”),//反转时钟(TRUE / FALSE)// .USE_DOUBLER(“FALSE”))//使用倍频电路(TRUE / FALSE)// BUFIO2_A(// .DIVCLK(), // 1位输出分频时钟输出// .IOCLK(ddr_clk),// 1位输出I / O输出时钟// .SERDESSTROBE(),//。I(ddr_inclk)); // 1位输入时钟输入// BUFIO2#(。DIVIDE(1),// DIVCLK分频器(1-8)//。DIVIDE_BYPASS(“TRUE”),//旁路分频器电路(TRUE / FALSE)/ / .I_INVERT(“TRUE”),//反转时钟(TRUE / FALSE)// .USE_DOUBLER(“FALSE”))//使用倍频电路(TRUE / FALSE)// BUFIO2_B(// .DIVCLK(),/ / 1位输出分频时钟输出// .IOCLK(ddr_clkn),// 1位输出I / O输出时钟// .SERDESSTROBE(),//。I(ddr_inclk)); // 1位输入时钟输入(连接到IBUFG)IDDR2#(。DDR_ALIGNMENT(“C0”),//将输出对齐设置为“NONE”,“C0”或“C1”.INIT_Q0(1'b0),/ /设置Q0输出的初始状态.INIT_Q1(1'b0),//设置Q1输出的初始状态.SRTYPE(“SYNC”)//指定“SYNC”或“ASYNC”设置/复位)IDDR2_inst(.Q0 (ddrQ_a),//用C0时钟.Q1(ddrQ_b)捕获的1位输出,//用C1时钟捕获的1位输出.C0(ddr_clk),// 1位时钟输入.C1(~ddr_clk), // 1位时钟输入.CE(1'b1),// 1位时钟使能输入.D(ddr_data_in),// 1位DDR数据输入.R(1'b0),. S(1' b0)); endmodule - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 Hi, Thank you! but how to use primitives for my_clock and ~my_clock? because my MAP failed:Well, this was more fun than I thought... I tried a quick experiment with ISE12.4 running on WinVista64, and here's what I've found... These work fine:
module s6_adder ( inputddr_inclk, inputddr_data_in, outputddrQ_a, ddrQ_b ) ; //IBUFG #( .IOSTANDARD("LVCMOS33") ) // Specify the input I/O standard //IBUFG_inst ( //.O (ddr_clk), // Clock buffer output //.I (ddr_inclk) ); // Clock buffer input (connect directly to top-level port) BUFG BUFG_inst ( .O (ddr_clk), // 1-bit output Clock buffer output .I (ddr_inclk) ); // 1-bit input Clock buffer input //BUFIO2 #(.DIVIDE(1), // DIVCLK divider (1-8) //.DIVIDE_BYPASS ("TRUE"), // Bypass the divider circuitry (TRUE/FALSE) //.I_INVERT ("FALSE"), // Invert clock (TRUE/FALSE) //.USE_DOUBLER ("FALSE") ) // Use doubler circuitry (TRUE/FALSE) //BUFIO2_A ( //.DIVCLK (),// 1-bit output Divided clock output //.IOCLK (ddr_clk),// 1-bit output I/O output clock //.SERDESSTROBE (), //.I (ddr_inclk) );// 1-bit input Clock input //BUFIO2 #( .DIVIDE (1),// DIVCLK divider (1-8) //.DIVIDE_BYPASS ("TRUE"),// Bypass the divider circuitry (TRUE/FALSE) //.I_INVERT ("TRUE"),// Invert clock (TRUE/FALSE) //.USE_DOUBLER ("FALSE") )// Use doubler circuitry (TRUE/FALSE) //BUFIO2_B ( //.DIVCLK (),// 1-bit output Divided clock output //.IOCLK (ddr_clkn),// 1-bit output I/O output clock //.SERDESSTROBE (), //.I (ddr_inclk) );// 1-bit input Clock input (connect to IBUFG) IDDR2 #(.DDR_ALIGNMENT ("C0"), // Sets output alignment to "NONE", "C0" or "C1" .INIT_Q0 (1'b0), // Sets initial state of the Q0 output .INIT_Q1 (1'b0), // Sets initial state of the Q1 output .SRTYPE ("SYNC") // Specifies "SYNC" or "ASYNC" set/reset ) IDDR2_inst ( .Q0 (ddrQ_a), // 1-bit output captured with C0 clock .Q1 (ddrQ_b), // 1-bit output captured with C1 clock .C0 (ddr_clk), // 1-bit clock input .C1 (~ddr_clk), // 1-bit clock input .CE (1'b1), // 1-bit clock enable input .D (ddr_data_in), // 1-bit DDR data input .R (1'b0), .S (1'b0) ); endmodule- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
嗨,谢谢你!
但如何为my_clock和~my_clock使用原语? 因为我的MAP失败了: IDDR2符号“physical_group_ *”(*)的C0和C1时钟引脚由相同的BUFIO2驱动,但是一个时钟引脚被反转,而 其他不是。 这将导致无法支持的情况 在硬件中。 请确保C0和C1具有相同的极性 当由相同的BUFIO2驱动时。 当我尝试复制你的设计时 - BUFIO2.IOCLK驱动IDDR2 .C0和.C1输入,内部反转.C1 - 我收到两条错误信息,其中一条与你引用的信息类似: 错误:LIT:648 - IDDR2符号“physical_group_ddrQ_a_OBUF / IDDR2_inst”(输出信号= ddrQ_a_OBUF)的引脚C0和C1由相同的BUFIO2或BUFPLL驱动。 请修改您的设计以避免这种不可路由的情况.ERROR:LIT:585 - IDDR2符号“physical_group_ddrQ_a_OBUF / IDDR2_inst”(输出信号= ddrQ_a_OBUF)的C0和C1时钟引脚由相同的BUFIO2驱动,但是一个时钟引脚被反转而 其他不是。 这将导致硬件无法支持的情况。 当相同的BUFIO2驱动时,请确保C0和C1具有相同的极性。 第一条错误消息(不可路由)似乎是合理的,但第二条似乎是一个软件错误。 如果它不是软件错误,那么我正在读UG381(v1.4)表2-2不正确或UG381导致我误入歧途。 如果我用BUFG或IBUFG替换BUFIO2(保持IDDR2.C1输入反转),我没有收到任何错误或警告消息。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 Hi, Thank you! but how to use primitives for my_clock and ~my_clock? because my MAP failed:When I try to duplicate your design -- BUFIO2.IOCLK driving IDDR2 .C0 and .C1 inputs, with .C1 inverted internally -- I get two error messages, one of which is similar to the message you quoted: ERROR:LIT:648 - IDDR2 symbol "physical_group_ddrQ_a_OBUF/IDDR2_inst" (outputThe first error message (unroutable) seem plausible, but the second seems like a software bug. If it isn't a software bug, then either I'm reading UG381 (v1.4) Table 2-2 incorrectly or UG381 is leading me astray. If I replace the BUFIO2 with either a BUFG or IBUFG (keeping the IDDR2.C1 input inversion), I get no error or warning messages. -- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
嗨,谢谢你!
但如何为my_clock和~my_clock使用原语? 因为我的MAP失败了: IDDR2符号“physical_group_ *”(*)的C0和C1时钟引脚由相同的BUFIO2驱动,但是一个时钟引脚被反转,而 其他不是。 这将导致无法支持的情况 在硬件中。 请确保C0和C1具有相同的极性 当由相同的BUFIO2驱动时。 当我尝试复制你的设计时 - BUFIO2.IOCLK驱动IDDR2 .C0和.C1输入,内部反转.C1 - 我收到两条错误信息,其中一条与你引用的信息类似: 错误:LIT:648 - IDDR2符号“physical_group_ddrQ_a_OBUF / IDDR2_inst”(输出信号= ddrQ_a_OBUF)的引脚C0和C1由相同的BUFIO2或BUFPLL驱动。 请修改您的设计以避免这种不可路由的情况.ERROR:LIT:585 - IDDR2符号“physical_group_ddrQ_a_OBUF / IDDR2_inst”(输出信号= ddrQ_a_OBUF)的C0和C1时钟引脚由相同的BUFIO2驱动,但是一个时钟引脚被反转而 其他不是。 这将导致硬件无法支持的情况。 当相同的BUFIO2驱动时,请确保C0和C1具有相同的极性。 第一条错误消息(不可路由)似乎是合理的,但第二条似乎是一个软件错误。 如果它不是软件错误,那么我正在读UG381(v1.4)表2-2不正确或UG381导致我误入歧途。 如果我用BUFG或IBUFG替换BUFIO2(保持IDDR2.C1输入反转),我没有收到任何错误或警告消息。 - 鲍勃埃尔金德 以上来自于谷歌翻译 以下为原文 Hi, Thank you! but how to use primitives for my_clock and ~my_clock? because my MAP failed:When I try to duplicate your design -- BUFIO2.IOCLK driving IDDR2 .C0 and .C1 inputs, with .C1 inverted internally -- I get two error messages, one of which is similar to the message you quoted: ERROR:LIT:648 - IDDR2 symbol "physical_group_ddrQ_a_OBUF/IDDR2_inst" (outputThe first error message (unroutable) seem plausible, but the second seems like a software bug. If it isn't a software bug, then either I'm reading UG381 (v1.4) Table 2-2 incorrectly or UG381 is leading me astray. If I replace the BUFIO2 with either a BUFG or IBUFG (keeping the IDDR2.C1 input inversion), I get no error or warning messages. -- Bob Elkind |
|
|
|
谢谢你,eteam00,
但它似乎不适合时机。 我检查时序报告,数据对同时不在Q0和Q1引脚上呼吸,一个延迟超过一个时钟周期,可能是由于反相时钟信号。 你能来看看吗? 以上来自于谷歌翻译 以下为原文 Thank you, eteam00, But it doesn't seem to work in timing. I check the timing report, the data pair doesn't appeal at Q0 and Q1 pin at the same time, one is delayed more than one clock cycle compared to the other, porbably due to the inverted clock signal. Could you have a look? |
|
|
|
谢谢,我对DDR时钟和数据进行了采样,然后使用BUFG原语来缓冲采样的DDR时钟来驱动IDDR2。
我运行时序分析器(工具 - >时序分析器 - >后映射),从时序报告中,我可以看到Q0和Q1的数据延迟是 几乎不一样,但它们之间有很大的延迟。 >我持怀疑态度。 您使用的是哪种时钟分配方案? 这是模拟结果还是测量结果? 以上来自于谷歌翻译 以下为原文 Thanks, I sampled both DDR clock and data, then use BUFG primitive to buffer sampled DDR clock to drive IDDR2. I ran Timing Analyzer ( Tools-> Timing Analyzer-> Post-Map), from timing report, I can see the data delay from Q0 and Q1 are not almost the same, but has large delays between them. >I'm skeptical. Which clock distribution scheme are you using? Is this simulated results, or measured results? |
|
|
|
binpersonal写道:
谢谢,我对DDR时钟和数据进行了采样,然后使用BUFG原语来缓冲采样的DDR时钟来驱动IDDR2。 我运行时序分析器(工具 - >时序分析器 - >后映射),从时序报告中,我可以看到Q0和Q1的数据延迟几乎不相同,但它们之间有很大的延迟。 请发布时间报告的相关部分和IDDR2端口连接。 您获得的时间报告结果和地图错误消息似乎与知识渊博的Xilinx支持人员在这些论坛中发布的信息相矛盾。 我不是Xilinx的员工,但我很确定这会得到一些 来自Xilinx的人们的注意力,他们了解正在发生的事情。 我对此很期待。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 binpersonal wrote:Please post the relevant sections of the timing report, and the IDDR2 port connections. - Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
下面是从时序报告中选择的,read_data0连接到Q1(延迟为1.229ns),read_data1连接到Q0(延迟为4.569ns),延迟之间的差值为4.569-1.229 = 3.34 ns,大于2.5ns
,这是DDR时钟的周期并连接到C1,反相DDR时钟连接到IDDR2的C0。 慢进程角的最大数据路径:ddrif_inst / data_path_iobs_0 / IDDR2_inst_到ddrif_inst / data_path_iobs_0 / Mshreg_shf_reg_2_1 位置延迟类型延迟(ns)物理资源逻辑资源------------------------------------ ------------- ------------------- ILOGIC_X3Y117.Q4 Tickq 1.229 ddrif_inst / data_path_iobs_0 / read_data0 ddrif_inst / data_path_iobs_0 / IDDR2_inst_ SLICE_X22Y109.DX net(fanout = 1)e 4.569 ddrif_inst / data_path_iobs_0 / read_data1 SLICE_X22Y109.CLK Tds -0.100 ddrif_inst / data_path_iobs_0 / shf_reg_2 ddrif_inst / data_path_iobs_0 / Mshreg_shf_reg_2_1 ---------------------------------- --------------- ---------------------------总计5.698ns(1.129ns逻辑, 4.569ns路线)(19.8%逻辑,80.2%路线)------------------- >请发布时间报告的相关部分和IDDR2 港口连接。 时序报告结果和>映射错误消息 你们两个似乎都与这些论坛中发布的信息相矛盾 知识渊博的Xilinx>支持人员。 我不是Xilinx的员工,但是 我很确定这会得到一些 来自Xilinx的人们的关注,他们>了解正在发生的事情。 我 期待它。 以上来自于谷歌翻译 以下为原文 Below is selected from the timing report, read_data0 is connected to Q1 (delay is 1.229ns) , read_data1 is connected to Q0 (delay is 4.569ns), the difference between delays are 4.569-1.229 = 3.34 ns, it is larger than 2.5ns, which is the period of DDR clock and connected to C1, an inverted DDR clock is connected to C0 of IDDR2. Maximum Data Path at Slow Process Corner: ddrif_inst/data_path_iobs_0/IDDR2_inst_<3> to ddrif_inst/data_path_iobs_0/Mshreg_shf_reg_2_1 Location Delay type Delay(ns) Physical Resource Logical Resource(s) ------------------------------------ ------------- ------------------- ILOGIC_X3Y117.Q4 Tickq 1.229 ddrif_inst/data_path_iobs_0/read_data0<3> ddrif_inst/data_path_iobs_0/IDDR2_inst_<3> SLICE_X22Y109.DX net (fanout=1) e 4.569 ddrif_inst/data_path_iobs_0/read_data1<3> SLICE_X22Y109.CLK Tds -0.100 ddrif_inst/data_path_iobs_0/shf_reg_2<9> ddrif_inst/data_path_iobs_0/Mshreg_shf_reg_2_1 ------------------------------------------------- --------------------------- Total 5.698ns (1.129ns logic, 4.569ns route) (19.8% logic, 80.2% route) ------------------- >Please post the relevant sections of the timing report, and the IDDR2 port connections. The timing report results and the >map error message you've gotten both seem to contradict information posted in these forums by knowledgeable Xilinx >support folks. I'm not a Xilinx employee, but I'm pretty sure this will get some attention from the folks at Xilinx who >understand what's going on. I'm looking forward to it. |
|
|
|
嗯...
您看到的大部分延迟是从寄存器Q到下一个寄存器输入的ROUTE延迟,而不是逻辑延迟。 也许我误读了你的输出报告,但是报告了两个不同路径的任何一部分,或者只显示了一个路径报告。 我希望看到两组Tickq,net和Tds数字,而不是一组。 这是我的快速/脏测试设计的结果,显示clk =>输出延迟的紧密匹配。 时钟ddr_inclk到Pad ------- + ---------- + ------- + ---------- + ------- + -------- + -------- + | Max | | 最小| | | | |(最慢)| | (最快)| | | | Desti | clk(edge)| Process | clk(edge)| Process | Internal | 时钟| 国家| 到PAD | 角| 到PAD | 角|时钟(县)| 阶段| ------- + ---------- + ------- + ---------- + ------- + ---- ---- + -------- + ddrQ_a | 9.932(R)| 慢| 3.932(R)| FAST | ddr_clk | 0.000 | ddrQ_b | 10.423(R)| 慢| 4.161(R)| FAST | ddr_clk | 0.000 | ------- + ---------- + ------- + ---------- + ------- + ---- ---- + -------- + 当然,这与Spartan6目标有关。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 Hmmm... Most of the delay you are seeing is in ROUTE delay from register Q to the next register input, not logic delay. And maybe I'm misreading your output report, but either parts of two different path are reported, or only one path report is shown. I would expect to see two sets of Tickq, net, and Tds numbers, not one. here are the results of my quick/dirty test design, showing close matching of clk => output delays. Clock ddr_inclk to Pad -------+----------+-------+----------+-------+--------+--------+ |Max | | Min | | | | |(slowest) | | (fastest)| | | | Desti |clk (edge)|Process|clk (edge)|Process|Internal| Clock | nation | to PAD | Corner| to PAD | Corner|Clock(s)| Phase | -------+----------+-------+----------+-------+--------+--------+ ddrQ_a | 9.932(R)| SLOW | 3.932(R)| FAST |ddr_clk | 0.000| ddrQ_b | 10.423(R)| SLOW | 4.161(R)| FAST |ddr_clk | 0.000| -------+----------+-------+----------+-------+--------+--------+ This is with Spartan6 target, of course. - Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
我认为在我的报告中报告了两条不同的路径:read_data0和read_data1,它们之间的差异大于1个时钟周期。
以及如何显示像你的桌子? >您看到的大多数差异是从寄存器Q到下一个寄存器输入的ROUTE延迟,而不是逻辑延迟。 >也许我误读了你的输出报告,但两者都是 报告不同的路径,或仅显示一个路径报告。 我会 期望看到两组Tickq,net和Tds数字,而不是一组。 以上来自于谷歌翻译 以下为原文 I think two different path are reported in my report: read_data0<3> and read_data1<3>, the discrepancy between them is larger then 1 clock period. And how to display table like yours? >Most of the discrepancy you are seeing is in ROUTE delay from register Q to the next register input, not logic delay. >And maybe I'm misreading your output report, but either parts of two different path are reported, or only one path report is >shown. I would expect to see two sets of Tickq, net, and Tds numbers, not one. |
|
|
|
下面是从时序报告中选择的,read_data0连接到Q1
(延迟为1.229ns),read_data1连接到Q0(延迟为4.569ns), 延迟之间的差异是4.569-1.229 = 3.34 ns,它更大 超过2.5ns,这是DDR时钟的周期并连接到C1,a 反相DDR时钟连接到IDDR2的C0。 有意义的时间路径是: DDR_Din设置为DDR_clock的上升沿 DDR_Din设置为DDR_clock的下降沿 如果到IDDR2寄存器的路径中存在任何不匹配的时钟延迟(例如,由于无法匹配的反相器延迟),这两条路径(上图)就是出现不匹配的地方。 以下是这些路径的结果,对于我的快速/肮脏实验: 设置/保持时钟ddr_inclk ------------ + ------------ + ------- + ------------ + --- ---- + -------- + ----- + | Max Setup to | Process | Max Hold to | Process | Internal | Clock | 来源| clk(边缘)|角落| clk(边缘)|角|时钟|相位| ------------ + ------------ + ------- + ------------ + --- ---- + -------- + ----- + ddr_data_in | -0.319(R)| 快点| 1.957(R)| 慢| ddr_clk | 0.000 | | -0.319(F)| 快点| 1.957(F)| 慢| ddr_clk | 0.000 | ------------ + ------------ + ------- + ------------ + --- ---- + -------- + ----- + 在IDDR2模块内部,捕获数据的两个“相位”与.C1输入时钟对齐,方法是跟随.C0输入时钟输出的寄存器输出,该寄存器由.C1输入时钟提供时钟。 见图2-7中的UG381。 在IDDR2块的输出端,Q0和Q1都应该是无法区分的。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 Below is selected from the timing report, read_data0 is connected to Q1 (delay is 1.229ns) , read_data1 is connected to Q0 (delay is 4.569ns), the difference between delays are 4.569-1.229 = 3.34 ns, it is larger than 2.5ns, which is the period of DDR clock and connected to C1, an inverted DDR clock is connected to C0 of IDDR2.The meaningful timing paths are:
Here are the results for these paths, for my quick/dirty experiment: Setup/Hold to clock ddr_inclk ------------+------------+-------+------------+-------+--------+-----+ |Max Setup to|Process|Max Hold to |Process|Internal|Clock| Source | clk (edge) |Corner | clk (edge) |Corner |Clock(s)|Phase| ------------+------------+-------+------------+-------+--------+-----+ ddr_data_in | -0.319(R)| FAST | 1.957(R)| SLOW |ddr_clk |0.000| | -0.319(F)| FAST | 1.957(F)| SLOW |ddr_clk |0.000| ------------+------------+-------+------------+-------+--------+-----+ Internal to the IDDR2 block, the two "phases" of captured data are aligned to .C1 input clock, by following the output of the register clocked by .C0 input clock with a register clocked by .C1 input clock. See UG381 figure 2-7. At the output of the IDDR2 block, both Q0 and Q1 should be indistinguishable. - Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
我认为我的报告中报告了两条不同的路径:
read_data0和read_data1之间的差异 它们比1个时钟周期大。 你发布的内容显然只是一条路。 为什么不发布显示与IDDR2块连接的源代码,并且它足够简单,可以指出另一条路径。 在任何情况下,IDDR2块输出后的路径延迟与时钟反转延迟(或无延迟)无关。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 I think two different path are reported in my report: read_data0<3> and read_data1<3>, the discrepancy between them is larger then 1 clock period.What you posted is clearly a single path. Why don't you post your source code showing the connections to the IDDR2 block, and it will be simple enough to point out one path from another. In any case, the path delay following the output of the IDDR2 block has nothing to do with clock inversion delay (or no delay). - Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
以及如何显示像你的桌子?
我在ISE Navigator中使用了Timing> Run Analysis工具。 我手动重新格式化报告,使其适合论坛消息窗口而不换行。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 And how to display table like yours?I used the Timing > Run Analysis tool from within ISE Navigator. I manually reformatted the report so it would fit in the forum message window without line wrapping. - Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
这个主题已经涵盖了在ISE12.4中如何处理IDDR2的一些不一致,并且它已经涵盖了原始海报的一些(可能的)混淆。
对于可能正在阅读本文的Xilinx支持人员,这里是此线程的执行摘要(目前为止)。 从内部反转IDDR2.C1的单个BUFIO2 / IOCLK输出驱动IDDR2 .C0,.C1时,我收到两条错误消息: 错误:LIT:648 - IDDR2符号“physical_group_ddrQ_a_OBUF / IDDR2_inst”(输出信号= ddrQ_a_OBUF)的引脚C0和C1由相同的BUFIO2或BUFPLL驱动。 请修改您的设计以避免这种不可路由的情况.ERROR:LIT:585 - IDDR2符号“physical_group_ddrQ_a_OBUF / IDDR2_inst”(输出信号= ddrQ_a_OBUF)的C0和C1时钟引脚由相同的BUFIO2驱动,但是一个时钟引脚被反转而 其他不是。 这将导致硬件无法支持的情况。 当相同的BUFIO2驱动时,请确保C0和C1具有相同的极性。 第一条错误消息(不可路由)似乎是合理的,但是 第二个似乎是一个软件错误。 如果它不是软件错误,那么 或者我正在读UG381(v1.4)表2-2错误或UG381是 把我引入歧途(它说两个.C0和.C1输入都是可逆的)。 如果我用BUFG或IBUFG替换BUFIO2(保持IDDR2.C1输入反转),我没有收到任何错误或警告消息。 我可能是错的,但我认为我已经完成了我今天的好事...... - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 This thread has covered some inconsistencies with how IDDR2 is handled in ISE12.4, and it has covered some (probable) confusion on the part of the original poster. For the Xilinx support folks who might be reading this, here is the EXECUTIVE SUMMARY (so far) for this thread. When driving IDDR2 .C0, .C1 from a single BUFIO2/IOCLK output with IDDR2.C1 inverted internally -- I get two error messages: ERROR:LIT:648 - IDDR2 symbol "physical_group_ddrQ_a_OBUF/IDDR2_inst" (outputThe first error message (unroutable) seem plausible, but the second seems like a software bug. If it isn't a software bug, then either I'm reading UG381 (v1.4) Table 2-2 incorrectly or UG381 is leading me astray (where it says both .C0 and .C1 inputs are invertible). If I replace the BUFIO2 with either a BUFG or IBUFG (keeping the IDDR2.C1 input inversion), I get no error or warning messages. I could be wrong, but I think I've done my good deed for the day... - Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
如何在Timing> Run Analysis之后看到“Setup / Hold to clock ddr_inclk”?
我使用了Timing> Run Analysis ISE Navigator中的工具。 我手动重新格式化报告 它将适合论坛消息窗口,没有换行。 以上来自于谷歌翻译 以下为原文 And how to see " Setup/Hold to clock ddr_inclk" after Timing> Run Analysis? I used the Timing > Run Analysis tool from within ISE Navigator. I manually reformatted the report so it would fit in the forum message window without line wrapping. |
|
|
|
如何在Timing> Run Analysis之后看到“Setup / Hold to clock ddr_inclk”?
在“设计摘要”窗格中,选择“设计概述”>“静态时序” - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 And how to see " Setup/Hold to clock ddr_inclk" after Timing> Run Analysis?In the Design Summary pane, select Design Overview > Static Timing - Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
>谢谢,我对DDR时钟和数据进行了采样,然后使用BUFG原语缓冲采样的DDR时钟以驱动IDDR2。
你的描述很不寻常。 Bob要求您发布源代码,请执行此操作。 ------您是否尝试在Google中输入问题? 如果没有,你应该在发布之前。太多结果? 尝试添加网站:www.xilinx.com 以上来自于谷歌翻译 以下为原文 > Thanks, I sampled both DDR clock and data, then use BUFG primitive to buffer sampled DDR clock to drive IDDR2. Your description is quite unusual. Bob asked you to post your source code, please do this. ------Have you tried typing your question into Google? If not you should before posting. Too many results? Try adding site:www.xilinx.com |
|
|
|
只有小组成员才能发言,加入小组>>
2423 浏览 7 评论
2824 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2294 浏览 9 评论
3374 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2465 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1195浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
590浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
452浏览 1评论
2006浏览 0评论
731浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 11:57 , Processed in 1.672791 second(s), Total 114, Slave 98 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号