08-11-2015 06:24 PM
It appears in simulation and builds that my NIDRU glitches after a short while when the data rate is still what I believe within my PPM spec.
Specifically in simulation:
CASE A- if my external clk is a tiny bit faster I would expect SAMV 1,2,1,2,1,2 at regular intervals to keep the rate balanced, however it either actually goes to 0, or has a long gap of 1's where one can see the PHASE, CTRL, signals also get off, this appears to maybe drop a bit or something and kicks my stm1 out of sync
CASE B- if my external clk is a tiny bit slower I would expect SAMV 0,1,0,1,0,1 at regular intervals to keep the rate balanced, however it is seen as going to 2, where one can see the PHASE, CTRL, signals also get off, this appears to maybe double sample a bit or something and kicks my stm1 out of sync
-via GTX simple optical sfp receives a stm1 at external unknown stm1 clk that may be off +/- 4.5 ppm stm1 spec
-internal clk_stm1 ~155.52MHz which is from the Si570 via the Si5324 to the GTX block
* (not sure on ppm for this clk, how much it may be off.. Si570 data sheet confusing?)
I'm following XAPP1240 as close as possible, but still equations and method for selecting signal/generic values aren't clear to me
see attached spreadsheet for equations selecting parameters I've played with
1- What is the max ppm off I can set my equation for (I would like the max possible)? (I need this to be accurate to choose my G1 and G2 appropriately)
2- G1 and G2 should thus ideally be set to what?
4- I pack my SAM and SAMV follow on myself because DOUT and EN_OUT never change or go high, what should N be, and WDT_OUT?
5- G1_P just keep at 16 right?
I'm working with the simulation and trying to sim my situation - what am I trying to look for and find?..
Any help is appreciated, thanks!
08-11-2015 06:47 PM
also I do see the very similar case
--in tb_sim_nidru.vhd sim_case=4 use those values:
--when 4 =>
---- Use these controls to use 155.52 Mbit/s with 155.52 MHz refclk
--CENTER_F <= b"0000100000000000000000000000000000000";
--clk_hf_hp <= 0.160751 ns;
---- clk_dt_hp <= 3.21502 ns; -- The clock generating the data nominal
---- clk_dt_hp <= 3.215342 ns; -- The clock generating the data is -100ppm
--clk_dt_hp <= 3.214699 ns; -- The clock generating the data is +100ppm
--G1 <= "01000";
--G1_P <= "01111";
--G2 <= "01000";
however this is for +/- 100 ppm ---
in simulation these settings appear to keep lock and not get the glitch state above where I try to make ppm larger on my clks and thus lower G1 and G2 ...
a- How do I know the limits to what I can push ppm on my clks to and still get good NIDRU operation?
b- why does AL_PPM never go high when I push my ppm's out of the accepted range, etc?
08-11-2015 06:57 PM
sorry - it doesn't work with the sim_case = 4 parameters ... same behavior when I kept it running.
See attached simulation.