赛灵思
直播中

秦玫

7年用户 186经验值
私信 关注
[问答]

如何反转采样时钟信号使其没有任何偏斜?

亲爱的大家,
我对时钟信号和数据信号进行采样,想要馈送到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)

钱一辰

2019-6-11 06:26:50
你能举个例子吗?
会产生偏差吗?
非常感谢你!

以上来自于谷歌翻译


以下为原文

can u give me example?
will it produce skew?
 
Thank you very much!
举报

张晓宁

2019-6-11 06:54:32
除了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.
举报

钱一辰

2019-6-11 07:10:03
嗨,谢谢你!
但如何为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.
举报

张晓宁

2019-6-11 07:22:47
嗨,谢谢你!
但如何为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:

  • Drive IDDR2 .C0, .C1 from BUFG, using "~ddr_clk" at .C1 input
  • Drive IDDR2 .C0, .C1 from IBUFG, using "~ddr_clk" at .C1 input
  • Drive IDDR2 .C0 from BUFIO2/IOCLK, drive IDDR2 .C1 from 2nd BUFIO2/IOCLK (with I-INVERT="TRUE")
These do not work

  • Drive IDDR2 .C0 from BUFIO2/IOCLK, Drive IDDR2 .C1 from 2nd BUFIO2/IOCLK (with I-INVERT="FALSE")
  • Drive IDDR2 .C0, .C1 from single BUFIO2/IOCLK
Here's my code (with the various options selectively commented out)
 
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.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分