打印
[Quartus]

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

[复制链接]
5637|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

使用特权

评论回复
5
Backkom80| | 2012-3-27 10:23 | 只看该作者
chipscope捕信号看的,还是说用外接示波器看的?

使用特权

评论回复
6
duthongbin|  楼主 | 2012-3-27 10:37 | 只看该作者
用的外接示波器。 6# Backkom80

使用特权

评论回复
7
Backkom80| | 2012-3-27 10:50 | 只看该作者
用chipscope捕下输出端口的信号看看是不是有信号输出,来确定是片内问题还是片外问题。chipscope的采样时钟要100M,是输出信号50M的两倍,这样可以看到方波这个波形,否则采样时钟50M,被采信号50M,看到的要么是0,要么是1。

使用特权

评论回复
8
dan_xb| | 2012-3-27 11:23 | 只看该作者
这个你仔细看一下错误报告吧,已经给你说得很清楚了。如果你要输出时钟,用ODDR2这个原语输出出去

使用特权

评论回复
9
duthongbin|  楼主 | 2012-3-27 12:10 | 只看该作者
就是不会用ODDR2这个原语输出出去:'( ,示范下吧。 9# dan_xb

使用特权

评论回复
10
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
   );

使用特权

评论回复
11
duthongbin|  楼主 | 2012-3-27 12:14 | 只看该作者
之前也是用chipscope捕获AD采集的信号是否进到FPGA,100M的时钟在chipscope中是灰色的。 8# Backkom80

使用特权

评论回复
12
duthongbin|  楼主 | 2012-3-27 12:21 | 只看该作者
针对我想要实现的目的,用ODDR2原语应该怎么写呢? 11# Backkom80

使用特权

评论回复
13
心愿wish| | 2012-3-27 17:25 | 只看该作者
:)看看

使用特权

评论回复
14
Backkom80| | 2012-3-27 21:20 | 只看该作者
之前也是用chipscope捕获AD采集的信号是否进到FPGA,100M的时钟在chipscope中是灰色的。 8# Backkom80
duthongbin 发表于 2012-3-27 12:14


灰的?

使用特权

评论回复
15
GoldSunMonkey| | 2012-3-27 23:23 | 只看该作者
这个你仔细看一下错误报告吧,已经给你说得很清楚了。如果你要输出时钟,用ODDR2这个原语输出出去
dan_xb 发表于 2012-3-27 11:23
是的:)应该如此:)

使用特权

评论回复
16
GoldSunMonkey| | 2012-3-27 23:23 | 只看该作者
他已经给你说了,解决方案。看下报错的内容即可。

使用特权

评论回复
17
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
   );

使用特权

评论回复
18
ty新气象| | 2012-3-28 10:29 | 只看该作者
留印的学习的干活,怕下次碰到类似的问题。

使用特权

评论回复
19
duthongbin|  楼主 | 2012-3-28 21:17 | 只看该作者
他已经给你说了,解决方案。看下报错的内容即可。
GoldSunMonkey 发表于 2012-3-27 23:23
程序是用VHDL写的,Verilog语言不太会。ODDR2原语也不能直接放在顶层文件吧。

使用特权

评论回复
20
duthongbin|  楼主 | 2012-3-28 21:20 | 只看该作者
灰的?
Backkom80 发表于 2012-3-27 21:20
恩,是灰色的,分频出来的信号倒是可用的。我改了下程序,管脚上除了时钟输出不出来,高低电平都是没问题的。什么问题呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

33

帖子

1

粉丝