This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DAC38J84: The SYNC cannot be asserted.

Part Number: DAC38J84
Other Parts Discussed in Thread: LMK04828, DAC39J84

Hi

I use Xilinx FPGA and the DAC38J84 to establish the JESD204B developing environment . Now I have some trouble about the SYNC signal. My SYNC can not be toggle. It always stays low. I know CGS is not passed. 

The FPGA always transmit the /K28.5/ and I can see the waveform on the oscilloscope . I don't know what's the matter. Does this error come from he registers configuration or the PCB designe? How do I deal with it?

  • Zhipeng,

    What FPGA are you using? Is this a custom board or are you testing our DAC EVM with a Xilinx FPGA development board? Please send the following to allow me more info to be able to help you:

    1. What JESD204B settings do you have for LMFS, and K?

    2. What is your DAC sample rate? Are you using any interpolation?

    3. What is your SYSREF frequency?

    4. What is your FPGA reference and core clock frequencies?

    5.  Can you send your DAC configuration file?

    Regards,

    Jim

  • Jim.

    I use xilinx  virtex7 xctvx690T FPGA and jesd204b IP core.  I haven't use TI's EVM Xilinx FPGA development board. I program the SPI to config  the DAC.  I can write and read registers correctly.

    1.JESD204B setting : L = 8, M=4, F=1, S=1, HD =1. A sample was transmitted through two lines per DAC. K = 32

    2. DAC sample rate = 600MHz. lane rate = 6Gbps. No interpolation.

    3. SYSREF frequency = 9.375MHz. I think the SYSREF frequency shoule be slower than DAC sample rate(DAC device clock) so that SYSREF' high level  can be sampled by DAC device clock's rising edge.

    4.FPGA reference clock is 150MHz. core clock is 150MHz.

    5.  The accessory file is my DAC config file. It is a part of my verilog code to config the DAC. Areg is the register's address. Dreg is the config data.

    The complex mixer / QMC/ FIR filter / Fractional delay are disabled to simple the configuration.

    I don't know how to config the serdes rate(how to choose the full/half/quarter/eight rate mode). config37 JESDclock / config 61 CDR, ENOC,EQHLD,EQ.

    I can not determine the reasons to result in SYNC's no assert problem. I need your help! 

    Thank you! 

    LvZhipeng

    DACCONFIG.txt
    always @(posedge Clk_1M)                                          
    		begin                                                              
        		 case(S_Cnt)  
          
                       0:	begin   Areg <= 7 'h03;Dreg	<=16'h7380;Tx_Enb<=0;end                         //config 3          Default value 0xF380   (config coarse_dac =7)
                     // step6
                      64:   begin	Areg <= 7 'h1A;Dreg <=16'h0020;Tx_Enb<=0;end                            //config 26	    Default value 0x0020   (pll_sleep =1)
                     128:   begin 	Areg <= 7 'h31;Dreg <=16'h7000;Tx_Enb<=0;end      	                //config 49	    Default value 0x0000   (pll_reset =1)
                     192:   begin 	Areg <= 7 'h32;Dreg <=16'h0120;Tx_Enb<=0;end      	                //config 50	    Default value 0x0000   (M=2,P=4, 0x0120)
                     256:   begin 	Areg <= 7 'h33;Dreg <=16'h35B0;Tx_Enb<=0;end      	                //config 51	    Default value 0x0100    
                     // step7
                     320:   begin 	Areg <= 7 'h3D;Dreg <=16'h0080;Tx_Enb<=0;end     	                //config 61         Default value 0x0000   (ENOC=1)
                     384:   begin 	Areg <= 7 'h3E;Dreg <=16'hE128;Tx_Enb<=0;end      	                //config 62         Default value 0x0000   (ELOS,AC couple,half rate) 
                     448:	begin 	Areg <= 7 'h3B;Dreg <=16'h0800;Tx_Enb<=0;end      	                //config 59         Default value 0x0000   (DACCLK is SerDes PLL refrence input,refclk_div=2)
                     512:   begin 	Areg <= 7 'h3C;Dreg <=16'hC050;Tx_Enb<=0;end     	                //config 60         Default value 0x0000   (ENDIVCLK,mid bandwidth,MPY=10)
                     // step8
                     576:   begin 	Areg <= 7 'h3F;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 63	    Default value 0x0000   (not inverted)
                     640:   begin 	Areg <= 7 'h46;Dreg <=16'h0044;Tx_Enb<=0;end    			//config 70	    Default value 0x0044
                     704:   begin 	Areg <= 7 'h47;Dreg <=16'h190A;Tx_Enb<=0;end    			//config 71         Default value 0x190A
                     768:   begin 	Areg <= 7 'h48;Dreg <=16'h31C3;Tx_Enb<=0;end    			//config 72         Default value 0x31C3
                     832:   begin 	Areg <= 7 'h49;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 73	    Default value 0x0000   (link0)
                     896:   begin 	Areg <= 7 'h4A;Dreg <=16'hFF1E;Tx_Enb<=0;end    			//config 74         Default value 0x001E
                     960:   begin 	Areg <= 7 'h5F;Dreg <=16'h0123;Tx_Enb<=0;end    			//config 95	    Default value 0x0123
                     1024:  begin 	Areg <= 7 'h60;Dreg <=16'h4567;Tx_Enb<=0;end    			//config 96         Default value 0x4567
                     // step9
                     1088:  begin 	Areg <= 7 'h25;Dreg <=16'h2000;Tx_Enb<=0;end    			//config 37	    Default value 0x8000   (clkjesd_div=2,L*interpolation/M)
                     1152:  begin 	Areg <= 7 'h24;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 36         Default value 0x0000   (do not use sysref pulse)!!!
                     1216:  begin 	Areg <= 7 'h00;Dreg <=16'h0018;Tx_Enb<=0;end    			//config 0          Default value 0x0218   (interp=x1,)
                     // step10
                     1280:  begin 	Areg <= 7 'h03;Dreg <=16'h7380;Tx_Enb<=0;end 			   	//config 3	    Default value 0xF380
                     1344:  begin 	Areg <= 7 'h4A;Dreg <=16'hFF1E;Tx_Enb<=0;end			   	//config 74	    Default value 0x001E
                 	 1408:  begin 	Areg <= 7 'h4B;Dreg <=16'h1F00;Tx_Enb<=0;end 			        //config 75	    Default value 0x0000   (rbd=32,f=1)
                 	 1472:  begin 	Areg <= 7 'h4C;Dreg <=16'h1F07;Tx_Enb<=0;end 			        //config 76	    Default value 0x0000   (k=rbd=32,l=8)
                 	 1536:  begin 	Areg <= 7 'h4D;Dreg <=16'h0300;Tx_Enb<=0;end    			//config 77         Default value 0x0300   (m=4,s=1)
                 	 1600:  begin 	Areg <= 7 'h4E;Dreg <=16'h0F4F;Tx_Enb<=0;end    			//config 78	    Default value 0x0F0F   (hd=1,n=16)
                 	 1664:  begin 	Areg <= 7 'h4F;Dreg <=16'h1CC1;Tx_Enb<=0;end    			//config 79         Default value 0x1CC1
                 	 1728:  begin 	Areg <= 7 'h50;Dreg <=16'h0000;Tx_Enb<=0;end                            //config 80         Default value 0x0000
                 	 1792:  begin 	Areg <= 7 'h51;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 81         Default value 0x00FF   (lane0-lane7 assigned to link0)
                 	 1856:  begin 	Areg <= 7 'h52;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 82         Default value 0x00FF
                 	 1920:  begin 	Areg <= 7 'h53;Dreg <=16'h0000;Tx_Enb<=0;end				//config 83			Default value 0x0000  
                 	 1984:  begin 	Areg <= 7 'h54;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 84         Default value 0x00FF  
                 	 2048:  begin 	Areg <= 7 'h55;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 85         Default value 0x00FF
                     2112:  begin 	Areg <= 7 'h5C;Dreg <=16'h0000;Tx_Enb<=0;end				//config 92         Default value 0x1111   !!!
                     2176:  begin 	Areg <= 7 'h61;Dreg <=16'h000F;Tx_Enb<=0;end				//config 97         Default value 0x000F   (link0/link1/link2/link3 sync)
                     // step11                                                         
                     2240:  begin 	Areg <= 7 'h02;Dreg <=16'h2002;Tx_Enb<=0;end				//config 2			Default value 0x2002   (zero the data from JESD block when the link is not established)
                     // NCO Default value  Not use
                     2304:  begin 	Areg <= 7 'h12;Dreg <=16'h0000;Tx_Enb<=0;end				//config 18         Default value 0x0000
                     2368:  begin 	Areg <= 7 'h13;Dreg <=16'h0000;Tx_Enb<=0;end				//config 19         Default value 0x0000
                     2432:  begin 	Areg <= 7 'h14;Dreg <=16'h0000;Tx_Enb<=0;end				//config 20  	    Default value 0x0000	
                     2496:  begin 	Areg <= 7 'h15;Dreg <=16'h0000;Tx_Enb<=0;end				//config 21 	    Default value 0x0000
                     2560:  begin 	Areg <= 7 'h16;Dreg <=16'h0000;Tx_Enb<=0;end				//config 22         Default value 0x0000
                     2624:  begin 	Areg <= 7 'h17;Dreg <=16'h0000;Tx_Enb<=0;end				//config 23         Default value 0x0000
                     2688:  begin 	Areg <= 7 'h18;Dreg <=16'h0000;Tx_Enb<=0;end				//config 24         Default value 0x0000 
                     2752:  begin 	Areg <= 7 'h19;Dreg <=16'h0000;Tx_Enb<=0;end				//config 25         Default value 0x0000
    
                     // PA  Default value   Not use                                                              
                     2816:  begin 	Areg <= 7 'h2D;Dreg <=16'h0000;Tx_Enb<=0;end				//config 45         Default value 0x0000
                     2880:  begin 	Areg <= 7 'h2E;Dreg <=16'hFFFF;Tx_Enb<=0;end				//config 46         Default value 0xFFFF 
    
                     // QMC Default value   Not use
                     2944:  begin 	Areg <= 7 'h08;Dreg <=16'h0000;Tx_Enb<=0;end				//config 8          Default value 0x0000
                     3008:  begin 	Areg <= 7 'h09;Dreg <=16'h0000;Tx_Enb<=0;end				//config 9          Default value 0x0000
                     3072:  begin 	Areg <= 7 'h0A;Dreg <=16'h0000;Tx_Enb<=0;end				//config 10         Default value 0x0000      
                     3136:  begin 	Areg <= 7 'h0B;Dreg <=16'h0000;Tx_Enb<=0;end				//config 11         Default value 0x0000
                     3200:  begin 	Areg <= 7 'h0C;Dreg <=16'h0400;Tx_Enb<=0;end				//config 12         Default value 0x0400
                     3264:  begin 	Areg <= 7 'h0D;Dreg <=16'h0400;Tx_Enb<=0;end				//config 13         Default value 0x0400
                     3328:  begin 	Areg <= 7 'h0E;Dreg <=16'h0400;Tx_Enb<=0;end				//config 14         Default value 0x0400
                     3392:  begin 	Areg <= 7 'h0F;Dreg <=16'h0400;Tx_Enb<=0;end				//config 15         Default value 0x0400
                     3456:  begin 	Areg <= 7 'h10;Dreg <=16'h0000;Tx_Enb<=0;end				//config 16         Default value 0x0000
                     3520:  begin 	Areg <= 7 'h11;Dreg <=16'h0000;Tx_Enb<=0;end				//config 17         Default value 0x0000
    
                     // Fraction Delay Default value   Not use
                     3584:  begin 	Areg <= 7 'h01;Dreg <=16'h0003;Tx_Enb<=0;end				//config 1          Default value 0x0003     
                     3648:  begin 	Areg <= 7 'h6E;Dreg <=16'h0000;Tx_Enb<=0;end				//config 110        Default value 0x0000
                     3712:  begin 	Areg <= 7 'h6F;Dreg <=16'h0000;Tx_Enb<=0;end				//config 111        Default value 0x0000
                     3776:  begin 	Areg <= 7 'h70;Dreg <=16'h0000;Tx_Enb<=0;end				//config 112        Default value 0x0000
                     3840:  begin 	Areg <= 7 'h71;Dreg <=16'h0000;Tx_Enb<=0;end				//config 113        Default value 0x0000
                     3904:  begin 	Areg <= 7 'h72;Dreg <=16'h0000;Tx_Enb<=0;end				//config 114        Default value 0x0000
                     3968:  begin 	Areg <= 7 'h73;Dreg <=16'h0000;Tx_Enb<=0;end				//config 115        Default value 0x0000
                     4032:  begin 	Areg <= 7 'h74;Dreg <=16'h0000;Tx_Enb<=0;end				//config 116        Default value 0x0000
                     4096:  begin 	Areg <= 7 'h75;Dreg <=16'h0000;Tx_Enb<=0;end				//config 117        Default value 0x0000
                     4160:  begin 	Areg <= 7 'h76;Dreg <=16'h0000;Tx_Enb<=0;end				//config 118        Default value 0x0000
                     4224:  begin 	Areg <= 7 'h77;Dreg <=16'h0000;Tx_Enb<=0;end				//config 119        Default value 0x0000       
                     4288:  begin 	Areg <= 7 'h78;Dreg <=16'h0000;Tx_Enb<=0;end				//config 120        Default value 0x0000
                     4352:  begin 	Areg <= 7 'h79;Dreg <=16'h0000;Tx_Enb<=0;end				//config 121        Default value 0x0000
                     4416:  begin 	Areg <= 7 'h7A;Dreg <=16'h0000;Tx_Enb<=0;end				//config 122        Default value 0x0000
                     4480:  begin 	Areg <= 7 'h7B;Dreg <=16'h0000;Tx_Enb<=0;end				//config 123        Default value 0x0000
                     4544:  begin 	Areg <= 7 'h7C;Dreg <=16'h0000;Tx_Enb<=0;end				//config 124        Default value 0x0000
                     4608:  begin 	Areg <= 7 'h7D;Dreg <=16'h0000;Tx_Enb<=0;end				//config 125        Default value 0x0000
    
                     // 30-32                                                                     
                     4672:  begin 	Areg <= 7 'h1E;Dreg <=16'h1111;Tx_Enb<=0;end				//config 30         Default value 0x1111   QMC
                     4736:  begin 	Areg <= 7 'h1F;Dreg <=16'h1140;Tx_Enb<=0;end				//config 31         Default value 0x1140   mixer and NCO
                     4800:  begin 	Areg <= 7 'h20;Dreg <=16'h0000;Tx_Enb<=0;end				//config 32         Default value 0x0000   dither/pap/fir
                     // step12 
                     // step13      
                     4864:  begin	Areg <= 7 'h1B;Dreg <=16'h0208;Tx_Enb<=0;end                            //config 27         Default value 0x0000                                     
                     4928:  begin 	Areg <= 7 'h4A;Dreg <=16'hFF01;Tx_Enb<=0;end			        //config 74         Default value 0x001E  (init_state=0000,jesd_reset_n=1)
                     // step15
                     4992:  begin   Areg <= 7 'h05;Dreg <=16'hFFFF;Tx_Enb<=0;end                //config 5          Default value 0xFFFF  (mask alarm)
                     5056:  begin	Areg <= 7 'h03;Dreg <=16'h7381;Tx_Enb<=1;end                //config 3          Default value 0xF380  	        
                     default:  begin Areg <= Areg;Dreg <=Dreg;Tx_Enb<=Tx_Enb;end         
         endcase                                                       
     end    

  • 3704.DACCONFIG.txt
    always @(posedge Clk_1M)                                          
    		begin                                                              
        		 case(S_Cnt)  
          
                       0:	begin   Areg <= 7 'h03;Dreg	<=16'h7380;Tx_Enb<=0;end                         //config 3          Default value 0xF380   (config coarse_dac =7)
                     // step6
                      64:   begin	Areg <= 7 'h1A;Dreg <=16'h0020;Tx_Enb<=0;end                            //config 26	    Default value 0x0020   (pll_sleep =1)
                     128:   begin 	Areg <= 7 'h31;Dreg <=16'h7000;Tx_Enb<=0;end      	                //config 49	    Default value 0x0000   (pll_reset =1)
                     192:   begin 	Areg <= 7 'h32;Dreg <=16'h0120;Tx_Enb<=0;end      	                //config 50	    Default value 0x0000   (M=2,P=4, 0x0120)
                     256:   begin 	Areg <= 7 'h33;Dreg <=16'h35B0;Tx_Enb<=0;end      	                //config 51	    Default value 0x0100    
                     // step7
                     320:   begin 	Areg <= 7 'h3D;Dreg <=16'h0080;Tx_Enb<=0;end     	                //config 61         Default value 0x0000   (ENOC=1)
                     384:   begin 	Areg <= 7 'h3E;Dreg <=16'hE128;Tx_Enb<=0;end      	                //config 62         Default value 0x0000   (ELOS,AC couple,half rate) 
                     448:	begin 	Areg <= 7 'h3B;Dreg <=16'h0800;Tx_Enb<=0;end      	                //config 59         Default value 0x0000   (DACCLK is SerDes PLL refrence input,refclk_div=2)
                     512:   begin 	Areg <= 7 'h3C;Dreg <=16'hC050;Tx_Enb<=0;end     	                //config 60         Default value 0x0000   (ENDIVCLK,mid bandwidth,MPY=10)
                     // step8
                     576:   begin 	Areg <= 7 'h3F;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 63	    Default value 0x0000   (not inverted)
                     640:   begin 	Areg <= 7 'h46;Dreg <=16'h0044;Tx_Enb<=0;end    			//config 70	    Default value 0x0044
                     704:   begin 	Areg <= 7 'h47;Dreg <=16'h190A;Tx_Enb<=0;end    			//config 71         Default value 0x190A
                     768:   begin 	Areg <= 7 'h48;Dreg <=16'h31C3;Tx_Enb<=0;end    			//config 72         Default value 0x31C3
                     832:   begin 	Areg <= 7 'h49;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 73	    Default value 0x0000   (link0)
                     896:   begin 	Areg <= 7 'h4A;Dreg <=16'hFF1E;Tx_Enb<=0;end    			//config 74         Default value 0x001E
                     960:   begin 	Areg <= 7 'h5F;Dreg <=16'h0123;Tx_Enb<=0;end    			//config 95	    Default value 0x0123
                     1024:  begin 	Areg <= 7 'h60;Dreg <=16'h4567;Tx_Enb<=0;end    			//config 96         Default value 0x4567
                     // step9
                     1088:  begin 	Areg <= 7 'h25;Dreg <=16'h2000;Tx_Enb<=0;end    			//config 37	    Default value 0x8000   (clkjesd_div=2,L*interpolation/M)
                     1152:  begin 	Areg <= 7 'h24;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 36         Default value 0x0000   (do not use sysref pulse)!!!
                     1216:  begin 	Areg <= 7 'h00;Dreg <=16'h0018;Tx_Enb<=0;end    			//config 0          Default value 0x0218   (interp=x1,)
                     // step10
                     1280:  begin 	Areg <= 7 'h03;Dreg <=16'h7380;Tx_Enb<=0;end 			   	//config 3	    Default value 0xF380
                     1344:  begin 	Areg <= 7 'h4A;Dreg <=16'hFF1E;Tx_Enb<=0;end			   	//config 74	    Default value 0x001E
                 	 1408:  begin 	Areg <= 7 'h4B;Dreg <=16'h1F00;Tx_Enb<=0;end 			        //config 75	    Default value 0x0000   (rbd=32,f=1)
                 	 1472:  begin 	Areg <= 7 'h4C;Dreg <=16'h1F07;Tx_Enb<=0;end 			        //config 76	    Default value 0x0000   (k=rbd=32,l=8)
                 	 1536:  begin 	Areg <= 7 'h4D;Dreg <=16'h0300;Tx_Enb<=0;end    			//config 77         Default value 0x0300   (m=4,s=1)
                 	 1600:  begin 	Areg <= 7 'h4E;Dreg <=16'h0F4F;Tx_Enb<=0;end    			//config 78	    Default value 0x0F0F   (hd=1,n=16)
                 	 1664:  begin 	Areg <= 7 'h4F;Dreg <=16'h1CC1;Tx_Enb<=0;end    			//config 79         Default value 0x1CC1
                 	 1728:  begin 	Areg <= 7 'h50;Dreg <=16'h0000;Tx_Enb<=0;end                            //config 80         Default value 0x0000
                 	 1792:  begin 	Areg <= 7 'h51;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 81         Default value 0x00FF   (lane0-lane7 assigned to link0)
                 	 1856:  begin 	Areg <= 7 'h52;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 82         Default value 0x00FF
                 	 1920:  begin 	Areg <= 7 'h53;Dreg <=16'h0000;Tx_Enb<=0;end				//config 83			Default value 0x0000  
                 	 1984:  begin 	Areg <= 7 'h54;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 84         Default value 0x00FF  
                 	 2048:  begin 	Areg <= 7 'h55;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 85         Default value 0x00FF
                     2112:  begin 	Areg <= 7 'h5C;Dreg <=16'h0000;Tx_Enb<=0;end				//config 92         Default value 0x1111   !!!
                     2176:  begin 	Areg <= 7 'h61;Dreg <=16'h000F;Tx_Enb<=0;end				//config 97         Default value 0x000F   (link0/link1/link2/link3 sync)
                     // step11                                                         
                     2240:  begin 	Areg <= 7 'h02;Dreg <=16'h2002;Tx_Enb<=0;end				//config 2			Default value 0x2002   (zero the data from JESD block when the link is not established)
                     // NCO Default value  Not use
                     2304:  begin 	Areg <= 7 'h12;Dreg <=16'h0000;Tx_Enb<=0;end				//config 18         Default value 0x0000
                     2368:  begin 	Areg <= 7 'h13;Dreg <=16'h0000;Tx_Enb<=0;end				//config 19         Default value 0x0000
                     2432:  begin 	Areg <= 7 'h14;Dreg <=16'h0000;Tx_Enb<=0;end				//config 20  	    Default value 0x0000	
                     2496:  begin 	Areg <= 7 'h15;Dreg <=16'h0000;Tx_Enb<=0;end				//config 21 	    Default value 0x0000
                     2560:  begin 	Areg <= 7 'h16;Dreg <=16'h0000;Tx_Enb<=0;end				//config 22         Default value 0x0000
                     2624:  begin 	Areg <= 7 'h17;Dreg <=16'h0000;Tx_Enb<=0;end				//config 23         Default value 0x0000
                     2688:  begin 	Areg <= 7 'h18;Dreg <=16'h0000;Tx_Enb<=0;end				//config 24         Default value 0x0000 
                     2752:  begin 	Areg <= 7 'h19;Dreg <=16'h0000;Tx_Enb<=0;end				//config 25         Default value 0x0000
    
                     // PA  Default value   Not use                                                              
                     2816:  begin 	Areg <= 7 'h2D;Dreg <=16'h0000;Tx_Enb<=0;end				//config 45         Default value 0x0000
                     2880:  begin 	Areg <= 7 'h2E;Dreg <=16'hFFFF;Tx_Enb<=0;end				//config 46         Default value 0xFFFF 
    
                     // QMC Default value   Not use
                     2944:  begin 	Areg <= 7 'h08;Dreg <=16'h0000;Tx_Enb<=0;end				//config 8          Default value 0x0000
                     3008:  begin 	Areg <= 7 'h09;Dreg <=16'h0000;Tx_Enb<=0;end				//config 9          Default value 0x0000
                     3072:  begin 	Areg <= 7 'h0A;Dreg <=16'h0000;Tx_Enb<=0;end				//config 10         Default value 0x0000      
                     3136:  begin 	Areg <= 7 'h0B;Dreg <=16'h0000;Tx_Enb<=0;end				//config 11         Default value 0x0000
                     3200:  begin 	Areg <= 7 'h0C;Dreg <=16'h0400;Tx_Enb<=0;end				//config 12         Default value 0x0400
                     3264:  begin 	Areg <= 7 'h0D;Dreg <=16'h0400;Tx_Enb<=0;end				//config 13         Default value 0x0400
                     3328:  begin 	Areg <= 7 'h0E;Dreg <=16'h0400;Tx_Enb<=0;end				//config 14         Default value 0x0400
                     3392:  begin 	Areg <= 7 'h0F;Dreg <=16'h0400;Tx_Enb<=0;end				//config 15         Default value 0x0400
                     3456:  begin 	Areg <= 7 'h10;Dreg <=16'h0000;Tx_Enb<=0;end				//config 16         Default value 0x0000
                     3520:  begin 	Areg <= 7 'h11;Dreg <=16'h0000;Tx_Enb<=0;end				//config 17         Default value 0x0000
    
                     // Fraction Delay Default value   Not use
                     3584:  begin 	Areg <= 7 'h01;Dreg <=16'h0003;Tx_Enb<=0;end				//config 1          Default value 0x0003     
                     3648:  begin 	Areg <= 7 'h6E;Dreg <=16'h0000;Tx_Enb<=0;end				//config 110        Default value 0x0000
                     3712:  begin 	Areg <= 7 'h6F;Dreg <=16'h0000;Tx_Enb<=0;end				//config 111        Default value 0x0000
                     3776:  begin 	Areg <= 7 'h70;Dreg <=16'h0000;Tx_Enb<=0;end				//config 112        Default value 0x0000
                     3840:  begin 	Areg <= 7 'h71;Dreg <=16'h0000;Tx_Enb<=0;end				//config 113        Default value 0x0000
                     3904:  begin 	Areg <= 7 'h72;Dreg <=16'h0000;Tx_Enb<=0;end				//config 114        Default value 0x0000
                     3968:  begin 	Areg <= 7 'h73;Dreg <=16'h0000;Tx_Enb<=0;end				//config 115        Default value 0x0000
                     4032:  begin 	Areg <= 7 'h74;Dreg <=16'h0000;Tx_Enb<=0;end				//config 116        Default value 0x0000
                     4096:  begin 	Areg <= 7 'h75;Dreg <=16'h0000;Tx_Enb<=0;end				//config 117        Default value 0x0000
                     4160:  begin 	Areg <= 7 'h76;Dreg <=16'h0000;Tx_Enb<=0;end				//config 118        Default value 0x0000
                     4224:  begin 	Areg <= 7 'h77;Dreg <=16'h0000;Tx_Enb<=0;end				//config 119        Default value 0x0000       
                     4288:  begin 	Areg <= 7 'h78;Dreg <=16'h0000;Tx_Enb<=0;end				//config 120        Default value 0x0000
                     4352:  begin 	Areg <= 7 'h79;Dreg <=16'h0000;Tx_Enb<=0;end				//config 121        Default value 0x0000
                     4416:  begin 	Areg <= 7 'h7A;Dreg <=16'h0000;Tx_Enb<=0;end				//config 122        Default value 0x0000
                     4480:  begin 	Areg <= 7 'h7B;Dreg <=16'h0000;Tx_Enb<=0;end				//config 123        Default value 0x0000
                     4544:  begin 	Areg <= 7 'h7C;Dreg <=16'h0000;Tx_Enb<=0;end				//config 124        Default value 0x0000
                     4608:  begin 	Areg <= 7 'h7D;Dreg <=16'h0000;Tx_Enb<=0;end				//config 125        Default value 0x0000
    
                     // 30-32                                                                     
                     4672:  begin 	Areg <= 7 'h1E;Dreg <=16'h1111;Tx_Enb<=0;end				//config 30         Default value 0x1111   QMC
                     4736:  begin 	Areg <= 7 'h1F;Dreg <=16'h1140;Tx_Enb<=0;end				//config 31         Default value 0x1140   mixer and NCO
                     4800:  begin 	Areg <= 7 'h20;Dreg <=16'h0000;Tx_Enb<=0;end				//config 32         Default value 0x0000   dither/pap/fir
                     // step12 
                     // step13      
                     4864:  begin	Areg <= 7 'h1B;Dreg <=16'h0208;Tx_Enb<=0;end                            //config 27         Default value 0x0000                                     
                     4928:  begin 	Areg <= 7 'h4A;Dreg <=16'hFF01;Tx_Enb<=0;end			        //config 74         Default value 0x001E  (init_state=0000,jesd_reset_n=1)
                     // step15
                     4992:  begin   Areg <= 7 'h05;Dreg <=16'hFFFF;Tx_Enb<=0;end                //config 5          Default value 0xFFFF  (mask alarm)
                     5056:  begin	Areg <= 7 'h03;Dreg <=16'h7381;Tx_Enb<=1;end                //config 3          Default value 0xF380  	        
                     default:  begin Areg <= Areg;Dreg <=Dreg;Tx_Enb<=Tx_Enb;end         
         endcase                                                       
     end    

  • Zhipeng,

    I was able to get our DAC EVM running with a VC707 platform using your settings. I then captured all of the register settings of the DAC and compared them to your values. In the attachment, if there was any register settings that did not match, I added our value to the end of the row. There are many that do not  match. Please take a look at these as this may help find what values you may be loading incorrectly. The lane mapping may be different between setups, so I do expect a couple of the registers to not match.

    Regards,

    Jim

     

    DAC38J84_CONFIG.txt
          
                       0:	begin   Areg <= 7 'h03;Dreg	<=16'h7380;Tx_Enb<=0;end                         //config 3          Default value 0xF380   (config coarse_dac =7) 0XA300
                     // step6
                      64:   begin	Areg <= 7 'h1A;Dreg <=16'h0020;Tx_Enb<=0;end                            //config 26	    Default value 0x0020   (pll_sleep =1)
                     128:   begin 	Areg <= 7 'h31;Dreg <=16'h7000;Tx_Enb<=0;end      	                //config 49	    Default value 0x0000   (pll_reset =1)  0X1000
                     192:   begin 	Areg <= 7 'h32;Dreg <=16'h0120;Tx_Enb<=0;end      	                //config 50	    Default value 0x0000   (M=2,P=4, 0x0120)
                     256:   begin 	Areg <= 7 'h33;Dreg <=16'h35B0;Tx_Enb<=0;end      	                //config 51	    Default value 0x0100    
                     // step7
                     320:   begin 	Areg <= 7 'h3D;Dreg <=16'h0080;Tx_Enb<=0;end     	                //config 61         Default value 0x0000   (ENOC=1)  0X88
                     384:   begin 	Areg <= 7 'h3E;Dreg <=16'hE128;Tx_Enb<=0;end      	                //config 62         Default value 0x0000   (ELOS,AC couple,half rate) 0X128
                     448:	begin 	Areg <= 7 'h3B;Dreg <=16'h0800;Tx_Enb<=0;end      	                //config 59         Default value 0x0000   (DACCLK is SerDes PLL refrence input,refclk_div=2)
                     512:   begin 	Areg <= 7 'h3C;Dreg <=16'hC050;Tx_Enb<=0;end     	                //config 60         Default value 0x0000   (ENDIVCLK,mid bandwidth,MPY=10) 0X28
                     // step8
                     576:   begin 	Areg <= 7 'h3F;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 63	    Default value 0x0000   (not inverted)
                     640:   begin 	Areg <= 7 'h46;Dreg <=16'h0044;Tx_Enb<=0;end    			//config 70	    Default value 0x0044	0X1882
                     704:   begin 	Areg <= 7 'h47;Dreg <=16'h190A;Tx_Enb<=0;end    			//config 71         Default value 0x190A	0X1C8
                     768:   begin 	Areg <= 7 'h48;Dreg <=16'h31C3;Tx_Enb<=0;end    			//config 72         Default value 0x31C3	0X3143
                     832:   begin 	Areg <= 7 'h49;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 73	    Default value 0x0000   (link0)
                     896:   begin 	Areg <= 7 'h4A;Dreg <=16'hFF1E;Tx_Enb<=0;end    			//config 74         Default value 0x001E	0XFF01
                     960:   begin 	Areg <= 7 'h5F;Dreg <=16'h0123;Tx_Enb<=0;end    			//config 95	    Default value 0x0123
                     1024:  begin 	Areg <= 7 'h60;Dreg <=16'h4567;Tx_Enb<=0;end    			//config 96         Default value 0x4567
                     // step9
                     1088:  begin 	Areg <= 7 'h25;Dreg <=16'h2000;Tx_Enb<=0;end    			//config 37	    Default value 0x8000   (clkjesd_div=2,L*interpolation/M) 0X2000
                     1152:  begin 	Areg <= 7 'h24;Dreg <=16'h0000;Tx_Enb<=0;end    			//config 36         Default value 0x0000   (do not use sysref pulse)!!!  0X20
                     1216:  begin 	Areg <= 7 'h00;Dreg <=16'h0018;Tx_Enb<=0;end    			//config 0          Default value 0x0218   (interp=x1,)  0X18
                     // step10
                     1280:  begin 	Areg <= 7 'h03;Dreg <=16'h7380;Tx_Enb<=0;end 			   	//config 3	    Default value 0xF380	0XA300
                     1344:  begin 	Areg <= 7 'h4A;Dreg <=16'hFF1E;Tx_Enb<=0;end			   	//config 74	    Default value 0x001E	OXFF01
                 	 1408:  begin 	Areg <= 7 'h4B;Dreg <=16'h1F00;Tx_Enb<=0;end 			        //config 75	    Default value 0x0000   (rbd=32,f=1) 0X1200
                 	 1472:  begin 	Areg <= 7 'h4C;Dreg <=16'h1F07;Tx_Enb<=0;end 			        //config 76	    Default value 0x0000   (k=rbd=32,l=8) 0X1F07
                 	 1536:  begin 	Areg <= 7 'h4D;Dreg <=16'h0300;Tx_Enb<=0;end    			//config 77         Default value 0x0300   (m=4,s=1) 
                 	 1600:  begin 	Areg <= 7 'h4E;Dreg <=16'h0F4F;Tx_Enb<=0;end    			//config 78	    Default value 0x0F0F   (hd=1,n=16) 0XF4F
                 	 1664:  begin 	Areg <= 7 'h4F;Dreg <=16'h1CC1;Tx_Enb<=0;end    			//config 79         Default value 0x1CC1	0X1C61
                 	 1728:  begin 	Areg <= 7 'h50;Dreg <=16'h0000;Tx_Enb<=0;end                            //config 80         Default value 0x0000
                 	 1792:  begin 	Areg <= 7 'h51;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 81         Default value 0x00FF   (lane0-lane7 assigned to link0) 0XDC
                 	 1856:  begin 	Areg <= 7 'h52;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 82         Default value 0x00FF
                 	 1920:  begin 	Areg <= 7 'h53;Dreg <=16'h0000;Tx_Enb<=0;end				//config 83			Default value 0x0000  
                 	 1984:  begin 	Areg <= 7 'h54;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 84         Default value 0x00FF 	 0XFC
                 	 2048:  begin 	Areg <= 7 'h55;Dreg <=16'h00FF;Tx_Enb<=0;end				//config 85         Default value 0x00FF
                     2112:  begin 	Areg <= 7 'h5C;Dreg <=16'h0000;Tx_Enb<=0;end				//config 92         Default value 0x1111   !!! 0X1133
                     2176:  begin 	Areg <= 7 'h61;Dreg <=16'h000F;Tx_Enb<=0;end				//config 97         Default value 0x000F   (link0/link1/link2/link3 sync) 0X211
                     // step11                                                         
                     2240:  begin 	Areg <= 7 'h02;Dreg <=16'h2002;Tx_Enb<=0;end				//config 2			Default value 0x2002   (zero the data from JESD block when the link is not established)
                     // NCO Default value  Not use
                     2304:  begin 	Areg <= 7 'h12;Dreg <=16'h0000;Tx_Enb<=0;end				//config 18         Default value 0x0000
                     2368:  begin 	Areg <= 7 'h13;Dreg <=16'h0000;Tx_Enb<=0;end				//config 19         Default value 0x0000
                     2432:  begin 	Areg <= 7 'h14;Dreg <=16'h0000;Tx_Enb<=0;end				//config 20  	    Default value 0x0000	
                     2496:  begin 	Areg <= 7 'h15;Dreg <=16'h0000;Tx_Enb<=0;end				//config 21 	    Default value 0x0000
                     2560:  begin 	Areg <= 7 'h16;Dreg <=16'h0000;Tx_Enb<=0;end				//config 22         Default value 0x0000
                     2624:  begin 	Areg <= 7 'h17;Dreg <=16'h0000;Tx_Enb<=0;end				//config 23         Default value 0x0000
                     2688:  begin 	Areg <= 7 'h18;Dreg <=16'h0000;Tx_Enb<=0;end				//config 24         Default value 0x0000 
                     2752:  begin 	Areg <= 7 'h19;Dreg <=16'h0000;Tx_Enb<=0;end				//config 25         Default value 0x0000
    
                     // PA  Default value   Not use                                                              
                     2816:  begin 	Areg <= 7 'h2D;Dreg <=16'h0000;Tx_Enb<=0;end				//config 45         Default value 0x0000	0X0001
                     2880:  begin 	Areg <= 7 'h2E;Dreg <=16'hFFFF;Tx_Enb<=0;end				//config 46         Default value 0xFFFF 
    
                     // QMC Default value   Not use
                     2944:  begin 	Areg <= 7 'h08;Dreg <=16'h0000;Tx_Enb<=0;end				//config 8          Default value 0x0000
                     3008:  begin 	Areg <= 7 'h09;Dreg <=16'h0000;Tx_Enb<=0;end				//config 9          Default value 0x0000
                     3072:  begin 	Areg <= 7 'h0A;Dreg <=16'h0000;Tx_Enb<=0;end				//config 10         Default value 0x0000      
                     3136:  begin 	Areg <= 7 'h0B;Dreg <=16'h0000;Tx_Enb<=0;end				//config 11         Default value 0x0000
                     3200:  begin 	Areg <= 7 'h0C;Dreg <=16'h0400;Tx_Enb<=0;end				//config 12         Default value 0x0400
                     3264:  begin 	Areg <= 7 'h0D;Dreg <=16'h0400;Tx_Enb<=0;end				//config 13         Default value 0x0400
                     3328:  begin 	Areg <= 7 'h0E;Dreg <=16'h0400;Tx_Enb<=0;end				//config 14         Default value 0x0400
                     3392:  begin 	Areg <= 7 'h0F;Dreg <=16'h0400;Tx_Enb<=0;end				//config 15         Default value 0x0400
                     3456:  begin 	Areg <= 7 'h10;Dreg <=16'h0000;Tx_Enb<=0;end				//config 16         Default value 0x0000
                     3520:  begin 	Areg <= 7 'h11;Dreg <=16'h0000;Tx_Enb<=0;end				//config 17         Default value 0x0000
    
                     // Fraction Delay Default value   Not use
                     3584:  begin 	Areg <= 7 'h01;Dreg <=16'h0003;Tx_Enb<=0;end				//config 1          Default value 0x0003     
                     3648:  begin 	Areg <= 7 'h6E;Dreg <=16'h0000;Tx_Enb<=0;end				//config 110        Default value 0x0000
                     3712:  begin 	Areg <= 7 'h6F;Dreg <=16'h0000;Tx_Enb<=0;end				//config 111        Default value 0x0000
                     3776:  begin 	Areg <= 7 'h70;Dreg <=16'h0000;Tx_Enb<=0;end				//config 112        Default value 0x0000
                     3840:  begin 	Areg <= 7 'h71;Dreg <=16'h0000;Tx_Enb<=0;end				//config 113        Default value 0x0000
                     3904:  begin 	Areg <= 7 'h72;Dreg <=16'h0000;Tx_Enb<=0;end				//config 114        Default value 0x0000
                     3968:  begin 	Areg <= 7 'h73;Dreg <=16'h0000;Tx_Enb<=0;end				//config 115        Default value 0x0000
                     4032:  begin 	Areg <= 7 'h74;Dreg <=16'h0000;Tx_Enb<=0;end				//config 116        Default value 0x0000
                     4096:  begin 	Areg <= 7 'h75;Dreg <=16'h0000;Tx_Enb<=0;end				//config 117        Default value 0x0000
                     4160:  begin 	Areg <= 7 'h76;Dreg <=16'h0000;Tx_Enb<=0;end				//config 118        Default value 0x0000
                     4224:  begin 	Areg <= 7 'h77;Dreg <=16'h0000;Tx_Enb<=0;end				//config 119        Default value 0x0000       
                     4288:  begin 	Areg <= 7 'h78;Dreg <=16'h0000;Tx_Enb<=0;end				//config 120        Default value 0x0000
                     4352:  begin 	Areg <= 7 'h79;Dreg <=16'h0000;Tx_Enb<=0;end				//config 121        Default value 0x0000
                     4416:  begin 	Areg <= 7 'h7A;Dreg <=16'h0000;Tx_Enb<=0;end				//config 122        Default value 0x0000
                     4480:  begin 	Areg <= 7 'h7B;Dreg <=16'h0000;Tx_Enb<=0;end				//config 123        Default value 0x0000
                     4544:  begin 	Areg <= 7 'h7C;Dreg <=16'h0000;Tx_Enb<=0;end				//config 124        Default value 0x0000
                     4608:  begin 	Areg <= 7 'h7D;Dreg <=16'h0000;Tx_Enb<=0;end				//config 125        Default value 0x0000
    
                     // 30-32                                                                     
                     4672:  begin 	Areg <= 7 'h1E;Dreg <=16'h1111;Tx_Enb<=0;end				//config 30         Default value 0x1111   QMC              0X9999
                     4736:  begin 	Areg <= 7 'h1F;Dreg <=16'h1140;Tx_Enb<=0;end				//config 31         Default value 0x1140   mixer and NCO    0X9980
                     4800:  begin 	Areg <= 7 'h20;Dreg <=16'h0000;Tx_Enb<=0;end				//config 32         Default value 0x0000   dither/pap/fir   0X8008
                     // step12 
                     // step13      
                     4864:  begin	Areg <= 7 'h1B;Dreg <=16'h0208;Tx_Enb<=0;end                            //config 27         Default value 0x0000                                     
                     4928:  begin 	Areg <= 7 'h4A;Dreg <=16'hFF01;Tx_Enb<=0;end			        //config 74         Default value 0x001E  (init_state=0000,jesd_reset_n=1)   0XFF01
                     // step15
                     4992:  begin   Areg <= 7 'h05;Dreg <=16'hFFFF;Tx_Enb<=0;end                //config 5          Default value 0xFFFF  (mask alarm) 0XFF03
                     5056:  begin	Areg <= 7 'h03;Dreg <=16'h7381;Tx_Enb<=1;end                //config 3          Default value 0xF380  	           0XA300
    											    //config 108 0x3003  
                     default:  begin Areg <= Areg;Dreg <=Dreg;Tx_Enb<=Tx_Enb;end         
         endcase                                                       
     end    

  • Jim

    Thank you for your help ! I will try the modified configuration. That is to say my JESD204B parameters(LMFS HD) setting / DAC sample rate / SYSREF frequency / FPGA reference clock and core clock is okay. Do you mean that?

    I also have some questions about the sysref and the config sequence .

    1. As for the sysref , I make the sysref still exist and stay 9.375Mhz, that is okay? And you config the register config36 to 0x20. That is to say sysref_mode = 010,use only the next sysref pulse. I don't know the meaning of "use only the next sysref pulse". Can I choose use all sysref pulse?

    2. I config the registers according to page108(8.3) . Whether I must config the registers as the sequence described by 8.3. Whether the DACCLK and SYSREF must start at the fourth step and the fourteenth step. Does my config sequence have problems?

    3. Every register is 16bits. But I see the configuration you give me , only 8 bits were programmed in some registers just like config61(0x88),config60(0x28),config36(0x20),config84(0xFC) and so on . Could you please give me some explanations? If it is convenient, could you please send a integrity configuration file as my JESD setting.

    Thank you !
    LvZhipeng
  • Zhipeng,

    SYSREF = LMFC / K, so in your case this is 600 / 32 = 18.75MHz. This is the max rate SYSREF can be. It also can be (LMFC / K) / n were n = 1,2,3,... so if n = 2, SYSREF = 9.375MHz, which is your value, so this is OK to use.

    Config36 is set to 0x20 because we normally only pulse SYSREF a few times then turn SYSREF off. You can leave it running to get your link established, but there can be a slight performance degradation if this signal is constantly running.

    Attached is how we program the registers with our GUI. The steps that you do have to follow in order are the following:

    1. Enable power

    2. Provide DACCLK and SYSREF (If you plan on using continuous SYSREF)

    2. Toggle the reset

    3. Program registers

    4. Reset JESD Core

    It is a good idea to set TXENABLE low until everything is stable and up and running to prevent any damage from overdriving the device the DAC is feeding.

    Regards,

    Jim

    DAC_register_settings.csv

  • Jim

    I 'm sorry to reply you late. Recently,I config LMK04828 on my new pcb board. I will modify the DAC38j84 configuration. I 'll turn to you if I have other questions about DAC38j84. Thank you for your reply!

    Regards,

    Zhipeng
  • Jim

    I have turn to you. I have some questions about the dac38j84 as follows.

    1. I map the JESD lane to serdes lane as the imagine. And I config the DATA path A to the DACA, DATA path B to the DACB, DATA path C to the DACC, DATA path D to the DACD.  If I transmit the data to the RX1 and RX2 whether I can get the waveform from DACA corresponding to RX1 and RX2.

    2. What 's the function of the config 4,config 5, config6. Is there any influence to the usage of the DAC if I mask some alarm and error?

    3. What's the function of the serdes fifo. If the fifo is full or empty. How can I modify this error?

    Regards

    LvZhipeng

  • Zhipeng,

    Are you only using 2 lanes? If you are using 8 lanes and want to route RX1 and RX2 to DACA, how do you want the other lanes routed?

    Config4, Config5 and Config6 are error and flag indicators. I would suggest using the default setting for these.

    The function of the serdes fifo is as follows:

    The SERDES FIFO is an asynchronous FIFO that transfers the input characters from each lane’s clk_serdes to the clk domain. The FIFO is reset by either rst_n or init_state and has a programmable read delay to adjust the delay between the read pointer and write pointer if necessary. The FIFO reset is internally synchronized to the write/push clock (SERDES clock) as well as internally held for several clock cycles to avoid meta-stability.

    If the fifo is full or empty, your clock domains are set to the wrong frequency. Please provide the following and I will try to help you as much as possible:

    DAC sample rate

    LMFS settings

    Interpolation rate

    FPGA you are using

    FPGA reference clock

    serdes rate

    K value

    Regards,

    Jim

  • Jim

    1. I'm sorry. Maybe my description confused you.  When I use 8 lanes I map the Serdes lanes  to JESD lanes as the first image shows.Whether the output of the DACA is corresponding to the data input to the RX0 and RX1.  RX2,RX3 == DACB,  RX4 and RX5 == DACC, RX6 and RX7 == DACD.

    If I only use two lanes I make the DACB~DACD at sleep mode.  I map lane2~lane7 to link1 and map lane0, lane1 to link0. I set  sysref_mode_link1 = 000, and sysref_mode_link0 = 001 (config 92 0x0001), I set register config 74' bit15 ~bit8 as 0x03 to only enable the serdes lane0 and lane1. And I map the JESD lanes to the Serdes lanes as the second imagine. If I transmit the data in to RX0 and RX1 whether I can get the output from DACA?

    2. If I mask the error and the flag in config4, config5, config6 whether I can ger the alarm and error indication in config 100~108, and the alarm pin.

    3. I have made a new board and I replace DAC38J84 with DAC39J84. When I only power the DAC39J84 the output pin  IOUTAP~IOUTDP, IOUTAN~IOUTDN have 1.778V output. But the terminal voltage of  IOUTAP~IOUTDP, IOUTAN~IOUTDN are -0.5~1.0V described on page6 of datasheet. Why does the default output of the DAC output is so high? Is it right? What's the correct default output voltage of the DAC39J84.

    4. My DAC sample rate == 600MHz,

              LMF = 841, HD =1 ,k =32, Interpolation rate = 1 , sysref = 9.375MHz, use all sysref mode, I didn't enable DDLY and ADLY in LMK04828.

              FPGA Virtex7 xc7vx690T. 

              FPGA reference clk = 150MHz, serdes rate = 6Gbps. Serdes PLL output is 3GHz, Half rate. I can see the waveform on the oscilloscope through alarm pin, the frequency is serdes pll output/80 == 37.5MHz.

              The config108 shows the serdes PLL is locked.

              My operation sequence : 

             (1) Power the FPGA, DAC39J84 and LMK04828. SYNC_N_AB and SYNC_N_CD are logic high.

             (2) Reset the Xilinx JESD204B IP core and make the JESD204B IP core still reset,The transmitter doesn't transmit any character.

             (3) Config DAC39J84, the SYNC _N_AB and SYNC_N_CD are still high.

             (4) Config LMK04828, DACCLK and sysref are provided to the DAC39J84. SYNC _N_AB and SYNC_N_CD are pulled to low. That is to say DAC39J84 transmit a sync request.

             (5) Remove the reset signal to make the JESD204B IP core normal operation, SYNC_N_AB and SYNC_N_CD are pulled to high and still high.   

    I only use two lanes in this operation. I only enable serdes lane0 and serdes lane1 and make DACB~DACD at sleep mode. SYNC_N_AB and SYNC_N_CD are mapped to link0. The data was input to the RX0 and RX1. The serdes lanes are mapped to the JESD lands as the imagine.  I set  sysref_mode_link1 = 000, and sysref_mode_link0 = 001 (config 92 0x0001).

    I config the registers config81 and config82 as 0xFF,0xFF. The SYNC_N_AB and SYNC_N_CD are still high. I read config 65 , the errcnt_link0 ==0 . That is to say there are no errors described in the config81 and config82. Right? Is it mean that the GCS and ILA has passed?

    But I read config 100 and config101 registes as 0x0703,0x0703. And the DACA doesn't have output. How do I do? Which error indicators registers should I believe? config100,101 or config 81,82, 65.

  • Zhipeng,

    I will look into this. When you are using eight lanes, are you getting a valid output on all four DAC'S?

    Regards,

    Jim

  • Jim

    When I use eight lanes, SYNC will be assert about 360ns and then be pull down. The SYNC takes on a period waveform just like the first imagine.

    I transmit a square wave from FPGA and I get a waveform just like the second imagine. It is not what I want. But it seems like there some output on the DAC'S.

    I take off the error on the registers config 81. I set the config 81 as 0x0080,0x0040,0x0020,0x0010,0x0008,0x0004,0x0002,0x0001 respectively. When I set the config 81 as 0x0020 the SYNC will be a period waveform.  As for the other configurations SYNC is high all the time. Maybe I think the trouble is on the configuration between the FPGA and DAC38J84 about the JESD204b parameter. But I inspect the configuration about LMF K

    S,CS, CF,HD,N,N' and so on. The parameter between the FPGA JESD204B IP core are the same. I read the config 100 to 107 as 0x270b.

    I don't know which error indicator should be reliable. Is it really the trouble from parameters configuration? In addition, why are the serdes fifo  full or empty. And as your reply it is the problem about the clock frequency,

    but I don't think my clk frequency is wrong. 

    DAC sample rate = 600MHz, lane rate = 6Gbps.

    Serdes PLL reference clk = 600MHz, MPY = 5, Serdes rate = half rate. I can get 37.5MHz signal at the alarm pin.

    FPGA reference clk = core clk =150MHz

    Regards

    Zhipeng

  • Zhipeng,

    When you drop from 8 lanes to 2 lanes, if you leave the sample clock as is, the new serdes rate becomes 24Gbps, which is way above the standard max of 12.5Gbps. You must slow down your sample clock and do interpolation to get 2 lane mode to work. The max sample rate you can run with two lanes  is 312.5MHz with int 2x. This will set the serdes rate to 12.5Gbps. See table 12 of the data sheet for these speed limits.

    Regards,

    Jim

  • DAC38J84_841_737p88.pptx3113.DAC3xJ8x Device Initialization and SYSREF Configuration.pdfZhipeng,

    You must get SYNC to remain high out of the DAC for anything to work. If SYNC is toggling, your link is not getting established. What family of FPGA are you using? See if these documents help you.

    Regards,

    Jim

  • Jim

    I' m using Virtex 7 FPGA, xc7vx690T. Today I found the configuration about the JESD204B between FPGA and DAC are mismatched when I used eight lanes . And I modified them.The SYNC can be high all the time. But there are no output waveform on the DAC'S. I read the config 100 to 107 showing as 0x070b.

    LMF = 841, HD = 1 ,S=1 ,K=32.
    My DAC sample rate = 600MHz, SYSREF = 9.375MHz
    FPGA reference clk = 150MHz
    I set MPY == 5 to make serdes PLL out = 3GHz, Serdes rate = half rate. I read the config 108, serdes PLL1 and PLL2 are lock.

    The link has been established. Why don't the DACS have the output?

    Regards

    Zhipeng
  • Zhipeng,

    Let's make sure the DAC is operating by generating an output using the internal NCO. This does not require any data from the JESD link to work. Just follow the instructions attached. After you verified you are getting a tone, we can then focus on the JESD interface.

    Regards,

    Jim

    7384.DAC39J84_NCO_NO_SYSREF.pptx

  • Zhipeng,

    I was able to get the DAC running with no issues using numbers close to yours with a VC707 platform. See attached file for info regarding this. May you have to consult with Xilinx if you are still having problems. I have also attached another document that explains the Xilinx firmware used for this setup which involves using the TI TSW14J10EVM and TI's HSDC Pro GUI.

    Regards,

    Jim

    DAC38J84_841_614p4.pptx1256.SLAU580B.pdf

  • Jim

    Would you mind provide a integrated configuration file about the DAC38J84 and FPGA JESD204B IP core as my parameter setting? I want to compare your configuration with mine.

    Thank you!

    Regards

    Zhipeng
  • Jim

    I used the internal NCO to generate a 300MHz at four DAC'S output. I think the problem is at the JESD interface. The SYNC is high all the time, that is to say the GCS and ILA can be passed. But the user data can not go through the interface. I read the config108. I get 0x00FF. LOS detect alarm asserts. I need your help.

    Regards

    Zhipeng
  • Zhipeng,

    Does your Xilinx JESD204 IP core require a core and reference clock or just a reference clock? We use two with our design. Are you disabling the scrambler on both sides of the link? Please write and read to the registers in the attached file and send this back so we can see what errors you are getting.

    Regards,

    Jim

    clear_read_alarms_registers.csv

     

  • Jim

    My Xilinx JESD204B IP core require both core clock and reference clock. And core clock == reference clock = 150MHz. lane rate = 6Gbps. I disabled the scrambler on both sides.The attached file is about the alarm registers. I write 0x0000 to these registers

    to clear them firstly. When I read them config 100~107 are 0x070b. config 108 == 0x0003, config 109 == 0x00FF.

    The SYNC always be high. why do  bit 15~8 of config100 to config107  still have error notification?  It confused me.

    Regards

    Zhipeng

  • Zhipeng,

    After looking at your error codes, it appears you are never passing CSG. I am not sure why SYNC is high. You need to Chipscope running and verify the K28.5 comma data is coming out of all lanes of the FPGA properly. Have you followed these steps:

    1. Set TXENABLE low

    2. Supply all 0.9-V supplies (VDDDIG, VDDT, VDDDAC, VDDCLK), all 1.8-V supplies (VDDR, VDDS, VQPS,

    VDDIO, VDDAPLL, VDDAREF), and all 3.3-V supplies (VDDADAC). The supplies can be powered up

    simultaneously or in any order. There are no specific requirements on the ramp rate for the supplies.

    3. RESET the JTAG port by either toggling TRSTB low if using the JTAG port or holding TRSTB low if not using

    JTAG.

    4. Start the DACCLK generation

    5. Toggle RESETB low to reset the SIF registers

    6. Program the DAC PLL settings (config26, config49, config50, config51). If the PLL is not used, set pll_sleep

    and pll_reset to “1” and pll_ena to “0”.

    7. Program the SERDES settings (config61, config62) including the serdes_clk_sel and serdes_refclk_div.

    8. Program the SERDES lane settings (config63, config71, config73, config74, config96).

    9. Program clkjesd_div, cdrvser_sysref_mode, and interp.

    10. Program the JESD settings (config3, config74-77, config79, config80-85, config92, config97).

    11. Program the DIG block settings (NCO, PA protection, QMC, fractional delay, etc.) and set the preferred

    SYNC modes for the digital blocks (config30-32).

    12. Verify the SERDES PLL lock status by checking the SERDES PLL alarms: alarm_rw0_pll (alarm for lanes 0

    through 3) and alarm_rw1_pll (alarm for lanes 4 through 7).

    13. Set init_state to “0000” and jesd_reset_n to “1” to start the JESD204B link initialization.

    14. Start the SYSREF generation.

    15. Enable transmission of data by asserting the TXENABLE pin or setting sif_txenable to “1”.

    16. Clear the alarms, then wait approximately 1-2μs and check values

    17. Verify that DAC output is the desired output.

    Regards,

    Jim

  • Jim

    I can see the K28.5 comma data on the oscilloscope as the following picture.

    1.In the previous post, I didn't start the DAC as the sequency you said. After reading your reply I tried the setup order as what you said. Until I operate to the step 15 I read config 100 to 107 as 0x0001. Then I clear the config100 to 107 as 0x0000. After that I read config 100 to 107 again . They are all 0x0000. config 108 == 0x0003, config 109 == 0x0000. The SYNC is always asserted. Whether it means that there are no errors. 

    2.I found an interesting things. I write the other number to config 100 to 107 and then I read back.  I found what I read back are what I wrote to config100 to 107. If I set a link configuration error on purpose when I program the DAC39J84. I read the config100 to 107. They are all 0x2001. Then I clear them and read back. I found they are also 0x2001.  Does it mean that if there are no errors  config100 to 107 can be write as what user's want.  If there are errors the error bits are asserted and the clear operation can not clear them until the correct status present.

    3. When the TX transfer K28.5 I found the SYNC can also be asserted without SYSREF. Is it normal? 

  • Zhipeng,

    When you read back 0x2001, this is an error state which is what is expected if you programmed the link to have an error. Sync can go high without SYSREF. This is how subclass 0 and subclass 2 work. Neither mode uses SYSREF.

    Now that you have established SYNC, what is the status of your output?

    Regards,

    Jim

  • Jim

    1. So if I don't programmed the link to have an error . Until I operate to the step 15 I read config 100 to 107 as 0x0001. Then I clear the config100 to 107 as 0x0000. After that I read config 100 to 107 again . They are all 0x0000. So witch one is the expect status of config 100 ~107? Is there really no errors?

    2. I transmit a square waveform. There is a constant voltage 1.78V at the OUTPUTPa and 1.62V at the OUTPUTN. The OUTPUT is cascaded with a capacitor and 50ohm resister to ground.

    3. DAC39J84 only supports subclass1 mode. Why does the SYNC can be asserted without SYSREF.

    Regards

    Zhipeng
  • Jim

    I read the file that you provide to me. I saw the trace length of Device clock and the SYSREF  are matched as the following picture shows. Whether  the trace length of Device clock and SYSREF to the same device must be same?  If the length of Device clock and SYSREF are different whether the DAC39j84' work status will be influenced. The difference of the trace length between Device and SYSREF on my board is within 40mils. 

    Regards

    Zhipeng

  • Hi, zhipeng,最近我也在使用这颗芯片,目前进展和你差不多,也是卡在这里了。能否留个联系方式交流。

  • Zhipeng,

    This message is in Chinese. Do you have a question?

    Regards,

    Jim
  • Hi,jim,Can help look at this thread:

    e2e.ti.com/.../2138406

  • Jim

    The message in Chinese is not sent by me. I have another question about the setup time between SYSREF and Device clock.

    When LMF = 841 , hd =1 k = 20 the frequency of the device clock is K*R times to SYSREF. That is to say SYSREF will must be sampled by the device clock rise edge in one period time. So whether the setup time between SYSREF and Device clock must be set?

    Zhipeng
  • Zhipeng,

    The SYSREF rising edge needs to occur 50ps before the device clock rising edge and not change for 50ps after the device clock rising edge. For more info regarding this, see sheet 5 of the attached document.

    Regards,

    Jim

    0458.DAC3xJ8x Device Initialization and SYSREF Configuration.pdf