Hi, Joe,

The ADCs on the ADC16 board are somewhat different from other ADCs used on 
other CASPER ADC boards.  The ADC chips on the ADC16x250-8 board do not fully 
power up when power is applied.  They need to be turned on via software and 
then the FPGA input delay blocks need to be calibrated to account for the 
design-specific clock skew at the FPGA SERDES inputs and to properly frame the 
de-serialized bytes.

Here is a high level overview of the startup sequence:

Program FPGA with ADC16 design
Turn on ADC chips via software
Re-program FPGA with same design
Calibrate input delays
Bitslip SERDES blocks until data if properly framed

There is software already written to do this.  It is written in Ruby.  You need 
to have Ruby (1.9 or later recommended) and Rubygems installed.  You can then 
install the ADC16 software with:

gem update --source http://astro.berkeley.edu/~davidm/gems adc16

This will give you a command "adc16_init.rb" that you can use to program the 
FPGA and perform all the calibration steps required.  Here is a sample command 
line session using adc16_init.rb:

$ adc16_init.rb pf1 roach2_fengine.bof
Connecting to pf1...
Programming pf1 with roach2_fengine.bof...
Design built for ROACH2 rev2 with 8 ADCs (ZDOK rev2)
Resetting ADC, power cycling ADC, and reprogramming FPGA...
ZDOK0 clock OK, ZDOK1 clock OK
Calibrating SERDES blocks...ABCDEFGH
SERDES calibration successful.
Selecting analog inputs...
Done!

The adc16_init.rb script expects/requires the bof file to be in the 
tcpborphserver's boffiles directory (i.e. already on the ROACH2 filesystem).  
The adc16_init.rb script does NOT support dynamically uploading the BOF via the 
"?uploadbof" command.

Hope this helps,
Dave

On Oct 8, 2013, at 3:38 PM, Kujawski, Joseph wrote:

> I have a simple design which implements an A/D conversion on port A1 of the 
> ADC16 board and maps the ADC output as follows:
> 
> LED 0 <= A1[4] 
> LED 1 <= not A1[4] 
> LED 2 <= A1[5] 
> LED 3 <= not A1[5] 
> LED 4 <= A1[6] 
> LED 5 <= not A1[6] 
> LED 6 <= A1[7] 
> LED 7 <= '1' 
> 
> when the clock 'sys_clk' is selected with a rate of 150MHz, LED 7, LED 5, LED 
> 3, and LED 1 lit while the rest of the LEDs are not lit.  This is the 
> expected behavior if the ADCs are not capturing data (A1 is stuck at zero).
> 
> when the clock 'adc0_clk' is selected with a rate of 150MHz and a 150MHz sine 
> at 3 dbm is presented to the ADC clock input of the Roach 2 board, none of 
> the LEDs are lit.  This behavior seems to be consistent with the xilinx chip 
> not receiving a clocking input.
> 
> Can someone provide a clue as to how to fix this problem?
> 
> Thanks,
> 
> -Joe Kujawski
> 


Reply via email to