[Quartus] 程序实现问题,诡异的报错~

[复制链接]
6675|30
 楼主| duthongbin 发表于 2012-3-27 08:56 | 显示全部楼层 |阅读模式
TI, TE, AN, ck, ST
100MHz的输入时钟,经过clock wizard分频一个50MHz的,然后输出到3个IO上供给印制板调试用。HDL顶层文件中定义了3个输出量test、fs_adclk、xw_adclk,利用中间信号f_50MHz分别给3个输出量,综合没问题,实现的时候报错了:
ERROR:Place:1205 - This design contains a global buffer instance,
   <gen_freq1/clkout3_buf>, driving the net, <xw_adclk_OBUF>, that is driving
   the following (first 30) non-clock load pins off chip.
   < PIN: test.O; >
   < PIN: fs_adclk.O; >
   < PIN: xw_adclk.O; >
   This design practice, in Spartan-6, can lead to an unroutable situation due
   to limitations in the global routing. If the design does route there may be
   excessive delay or skew on this net. It is recommended to use a Clock
   Forwarding technique to create a reliable and repeatable low skew solution:
   instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
   Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
   .C1. If you wish to override this recommendation, you may use the
   CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
   this message to a WARNING and allow your design to continue. Although the net
   may still not route, you will be able to analyze the failure in FPGA_Editor.
   < PIN "gen_freq1/clkout3_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >

以下是芯片型号和软件:
spartan-6: xc6sl150     
ISE  version : 13.3

请高手们指点,谢谢!
Backkom80 发表于 2012-3-27 09:12 | 显示全部楼层
PIN "gen_freq1/clkout3_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
将这句写入.ucf试试
 楼主| duthongbin 发表于 2012-3-27 09:18 | 显示全部楼层
2# Backkom80

我去试试看
 楼主| duthongbin 发表于 2012-3-27 09:43 | 显示全部楼层
综合,实现都没报错,但是JTAG调试时,3个管脚没有时钟输出? 2# Backkom80
Backkom80 发表于 2012-3-27 10:23 | 显示全部楼层
chipscope捕信号看的,还是说用外接示波器看的?
 楼主| duthongbin 发表于 2012-3-27 10:37 | 显示全部楼层
用的外接示波器。 6# Backkom80
Backkom80 发表于 2012-3-27 10:50 | 显示全部楼层
用chipscope捕下输出端口的信号看看是不是有信号输出,来确定是片内问题还是片外问题。chipscope的采样时钟要100M,是输出信号50M的两倍,这样可以看到方波这个波形,否则采样时钟50M,被采信号50M,看到的要么是0,要么是1。
dan_xb 发表于 2012-3-27 11:23 | 显示全部楼层
这个你仔细看一下错误报告吧,已经给你说得很清楚了。如果你要输出时钟,用ODDR2这个原语输出出去
 楼主| duthongbin 发表于 2012-3-27 12:10 | 显示全部楼层
就是不会用ODDR2这个原语输出出去:'( ,示范下吧。 9# dan_xb
Backkom80 发表于 2012-3-27 12:11 | 显示全部楼层
ODDR2 #(
      .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
      .INIT(1'b0),    // Sets initial state of the Q output to 1'b0 or 1'b1
      .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
   ) ODDR2_inst (
      .Q(Q),   // 1-bit DDR output data
      .C0(C0),   // 1-bit clock input
      .C1(C1),   // 1-bit clock input
      .CE(CE), // 1-bit clock enable input
      .D0(D0), // 1-bit data input (associated with C0)
      .D1(D1), // 1-bit data input (associated with C1)
      .R(R),   // 1-bit reset input
      .S(S)    // 1-bit set input
   );
 楼主| duthongbin 发表于 2012-3-27 12:14 | 显示全部楼层
之前也是用chipscope捕获AD采集的信号是否进到FPGA,100M的时钟在chipscope中是灰色的。 8# Backkom80
 楼主| duthongbin 发表于 2012-3-27 12:21 | 显示全部楼层
针对我想要实现的目的,用ODDR2原语应该怎么写呢? 11# Backkom80
心愿wish 发表于 2012-3-27 17:25 | 显示全部楼层
:)看看
Backkom80 发表于 2012-3-27 21:20 | 显示全部楼层
之前也是用chipscope捕获AD采集的信号是否进到FPGA,100M的时钟在chipscope中是灰色的。 8# Backkom80
duthongbin 发表于 2012-3-27 12:14


灰的?
GoldSunMonkey 发表于 2012-3-27 23:23 | 显示全部楼层
这个你仔细看一下错误报告吧,已经给你说得很清楚了。如果你要输出时钟,用ODDR2这个原语输出出去
dan_xb 发表于 2012-3-27 11:23
是的:)应该如此:)
GoldSunMonkey 发表于 2012-3-27 23:23 | 显示全部楼层
他已经给你说了,解决方案。看下报错的内容即可。
dan_xb 发表于 2012-3-28 09:59 | 显示全部楼层
提示是这样的:
instantiate an ODDR2 component;
tie the .D0 pin to Logic1;
tie the .D1 pin to Logic0;
tie the clock net to be forwarded to .C0;
tie the inverted clock to .C1

所以应该写成:
ODDR2 #(
      .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
      .INIT(1'b0),    // Sets initial state of the Q output to 1'b0 or 1'b1
      .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
   ) ODDR2_inst (
      .Q(fs_adclk),   // 1-bit DDR output data
      .C0(clk50),   // 1-bit clock input
      .C1(~clk50),   // 1-bit clock input
      .CE(1'b1), // 1-bit clock enable input
      .D0(1'b1), // 1-bit data input (associated with C0)
      .D1(1'b0), // 1-bit data input (associated with C1)
      .R(1'b0),   // 1-bit reset input
      .S(1'b0)    // 1-bit set input
   );
ty新气象 发表于 2012-3-28 10:29 | 显示全部楼层
留印的学习的干活,怕下次碰到类似的问题。
 楼主| duthongbin 发表于 2012-3-28 21:17 | 显示全部楼层
他已经给你说了,解决方案。看下报错的内容即可。
GoldSunMonkey 发表于 2012-3-27 23:23
程序是用VHDL写的,Verilog语言不太会。ODDR2原语也不能直接放在顶层文件吧。
 楼主| duthongbin 发表于 2012-3-28 21:20 | 显示全部楼层
灰的?
Backkom80 发表于 2012-3-27 21:20
恩,是灰色的,分频出来的信号倒是可用的。我改了下程序,管脚上除了时钟输出不出来,高低电平都是没问题的。什么问题呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

33

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部