参考原文地址:http://blog.csdn.net/u012727853/article/details/42458209
感谢分享!
贴上自己错误的源代码,
/****************************************************************************
* Top_module.v
****************************************************************************/
`timescale 1ns / 100ps
/**
* Module: Top_module
*
* TODO: Add module documentation
*/
module Top_module(
input CLK_50M_IN,
input RSTn,
input [3:0]key_in,
output [3:0]led_out
);
wire RESET_ALL;
wire CLK_PLL_12M5;
wire CLK_PLL_25M;
wire CLK_PLL_50M;
wire CLK_PLL_100M;
wire CLK_PLL_150M;
wire CLK_PLL_LOCKED;
/* input CLK_25M_IN,
* RST_PORT 正常为1 按下为0;
* input RST_PORT,
* output RST_ALL
*/
System_Reset system_reset_top(
.CLK_50M_IN(CLK_50M_IN),
.RST_PORT(RSTn),
.RST_ALL(RESET_ALL) // 按下 100ms 后输出 RESET_ALL 信号
);
System_Clk sys_clk_top(
.RST_ALL(RSTn),
.CLK_50M_IN(CLK_50M_IN),
.CLK_12M5_OUT(CLK_PLL_12M5),
.CLK_25M_OUT(CLK_PLL_25M),
.CLK_50M_OUT(CLK_PLL_50M),
.CLK_100M_OUT(CLK_PLL_100M),
.CLK_150M_OUT(CLK_PLL_150M),
.CLK_LOCKED(CLK_PLL_LOCKED)
);
reg [3:0]led_tmp;
always@(posedge CLK_50M_IN)
led_tmp = key_in;
assign led_out[0] = RESET_ALL;
assign led_out[1] = led_tmp[1];
assign led_out[2] = led_tmp[2];
assign led_out[3] = led_tmp[3];
endmodule
错误编号:2035
提示错误:
Xst:2035 - Port <CLK_50M_IN> has illegal connections. This port is connected to an input buffer and other components.
错误直接原因:
使用Clock_wizard ( 即FPGA时钟定制IPcore )时,将作为IPcore输入的sys_clk连接到了其他模块。
错误本质原因:
两个块的缓冲区不同。Clock_wizard 在内部已经添加了I/O缓冲,一个经过缓冲的时钟和另一个未经过缓冲的时钟在后端的电路中造成时钟不能同一个时间到达;