摆平了!下面是用ISE 调用synplify pro用modelsim仿真成功的程序,供有兴趣的新手参考.
module dll_standard
(
CLKIN,
RST,
CLK0,
CLK2X,
LOCKED,
CLKDV
);
defparam dll.CLKDV_DIVIDE = 16.0;
input CLKIN
//,RESET
;
output CLK0,
CLK2X,
LOCKED
,CLKDV
,RST
;
wire CLKIN_w,
RST,
CLK0_dll,
CLK2X_dll,
LOCKED_dll
,CLKDV_dll
;
IBUFG clkpad (
.I(CLKIN),
.O(CLKIN_w)
);
//IBUF rstpad (
//.I(RESET),
//.O(RESET_w)
//);
CLKDLL dll
(
.CLKIN(CLKIN_w),
.CLKFB(CLK0),
.RST(1'b0),
.CLK0(CLK0_dll),
.CLK90(),
.CLK180(),
.CLK270(),
.CLK2X(CLK2X_dll),
.CLKDV(CLKDV_dll),
.LOCKED(LOCKED_dll)
);
BUFG clkvg (
.I(CLKDV_dll),
.O(CLKDV)
);
BUFG clkg (
.I(CLK0_dll),
.O(CLK0)
);
BUFG clk2xg (
.I(CLK2X_dll),
.O(CLK2X)
);
OBUF lckpad (
.I(LOCKED_dll),
.O(LOCKED)
);
SRL16 SRL16_inst
(
.Q(LOCK), // SRL data output
.A0(1'b1), // Select[0] input
.A1(1'b1), // Select[1] input
.A2(1'b1), // Select[2] input
.A3(1'b1), // Select[3] input
.CLK(CLKDV_dll), // Clock input
.D(LOCKED_dll) // SRL data input
);
xor (RST,LOCKED_dll,LOCK);
endmodule
不过有一个问题:好象在那本资料上看见过不要用LOCK信号产生RESET信号,因为DLL 锁存之后,DLL LOCK 信号并不能保证随时都能插入LOCK 信号.
不知道我这样产生RST稳不稳定??????
请高手开课!!!!!! |