先说症状:
你的这个问题是因为你的时钟上时钟总线,这种情况百分之八十是因为你没有将其约束到clk pin上面。由于普通io到fpga各个位置的走线不同。所以存在excessive skew,也就是可接受范围以外的时钟偏移。所以报了这个warning。
warning里面也提醒你了。0 clk pin 也就是说你的时钟没有从clk pin上输入。
解决办法:
1、把这个clk扔到clk pin上即可。程序应该会自己搞定的,他会自动插入一个“高速时钟总线入口”的器件。下面有讲到。
2、当然有时候设计大了。难免这种问题。明明约束在clk pin上了。结果还是不行。这个时候需要你使用一个时钟总线的“入口”模块。xilinx里面叫BUFG,你可以自行例化一个。
例:
--VHDL version
Library UNISIM;
use UNISIM.vcomponents.all;
--这两句是调用库
--不需要components 声明
BUFG_add: BUFG
port map (
I => input, --你从普通管脚上的输入
O => output --你的时钟输出
);
------------------------分割线---------------------
//verilog version
BUFG bufg_add (
.I(input), //同VHDL
.O(output) //同VHDL
);
注意!!不需要用core generator生成一个的,综合的时候自动认识的。
gpio1是一个从普通管脚的输入时钟,然后你可以让他上时钟总线,然后这个warning就不会有了。
后面搜到一个和你比较像的例子
http://forums.xilinx.com/xlnx/board/crawl_message?board.id=Spartan&message.id=1741你可以参考一下。
如果还不会,可以参考
D:\Xilinx\10.1\ISE\doc\usenglish\books\docs\virtex5_hdl
里面的文档。里面有讲bufg,虽然你可能用的不是v5的,但是xilinx的fpga里面bufg的例化方式和功能是一样的。
再再再有问题。。。。。直接找我吧。。。