Line 107... |
Line 107... |
.CLKOUT_PHASE_SHIFT("FIXED"),
|
.CLKOUT_PHASE_SHIFT("FIXED"),
|
.CLK_FEEDBACK("1X"),
|
.CLK_FEEDBACK("1X"),
|
.DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),
|
.DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),
|
.DLL_FREQUENCY_MODE("LOW"),
|
.DLL_FREQUENCY_MODE("LOW"),
|
.DUTY_CYCLE_CORRECTION("TRUE"),
|
.DUTY_CYCLE_CORRECTION("TRUE"),
|
// At a clock of 92MHz ...
|
// At a clock of 80MHz ...
|
// Didn't work at -64, -70, -76 is worse than the other two
|
|
// -56: Write works, 0x96 reads work
|
|
// -48: Write fails, 0x0183 or 0x351 is first write that fails
|
|
// -40: Write fails, 0x071a,176a,0x576
|
|
// -56 was my working choice at 92 MHz
|
|
// That would be about a 2.4ns delay from clock to
|
|
// data.
|
|
// Suddenly needed to shift to 80 MHz.
|
|
// -56 no longer sort of works
|
|
// -49 writes seem to work, reads ... not so much
|
|
// -45 writes no longer working ??
|
|
// Read fails @ 0x891, 0x58e, @0x3d65, @0x0aec,
|
|
// @0x11b8, @0beb, @0x01014
|
|
// Trying a different approach: register in i_ram_feedback_clk,
|
|
// followed by o_ram_clk, instead of registering on
|
|
// clk_s second. Starting build at 1857
|
|
// Okay, so that was an error, now they are referenced to
|
|
// intermediate_clk, and I still need to try
|
|
// intermediate_clk_n if that doesn't work.
|
|
// THIS NEEDS A DELAY ADJUSTMENT: WBSDRAMNG adjusted from
|
|
// 6 to 5, and rebuild started at 1914. (finished by 1930)
|
|
// This one has read bugs at 0x027, 0x030, 0x039, 0x021
|
|
// etc. So we are worse.
|
|
// (We also failed timing--I did nothing to fix that)
|
|
//
|
|
// tho ... even if this works, it is wrong. The data lines
|
|
// going into wbsdramng need to be clocked on the system clock
|
|
// on entrance. Thus, the last always@ block must clock these
|
|
// lines on clk_s. This is fixed, and cannot change.
|
|
// This leaves us with a couple options for clocking the first
|
|
// always block:
|
|
//
|
|
// i_ram_feedback_clk, posedge (the right answer ... but
|
|
// giving me problems)
|
|
// clk_s pos/neg edge
|
|
// intermediate_clk posedge (Build started at 1932)
|
|
// Result: much worse!!
|
|
// intermediate_clk_n posedge (delay of 6 needed, not
|
|
// tested as a result.
|
|
//
|
//
|
|
// This clock needs to be delayed so that what takes
|
|
// place within the SDRAM takes place at the middle
|
|
// of the clock interval. This is separate from all the
|
|
// rest of the logic in the FPGA where what takes place
|
|
// happens at the clock transition.
|
//
|
//
|
.PHASE_SHIFT(-45),
|
.PHASE_SHIFT(-45),
|
.STARTUP_WAIT("TRUE")
|
.STARTUP_WAIT("TRUE")
|
) u1( .CLKIN(clk_s),
|
) u1( .CLKIN(clk_s),
|
.CLK0(ck_zero_1),
|
.CLK0(ck_zero_1),
|