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.

ADS6445 /ADC to FMC Rev C adapter / Spartan 6 DSP LX150T

Other Parts Discussed in Thread: ADS6445, FMC-ADC-ADAPTER

 

Hi,

I'm new to the Verilog and some of the ADC terms and concepts so I may be asking something that may seem fundamental to you which I'm not properly grasping

This is a student project so my knowledge of even related technologies may be below expectations of those that usually post questions to this forum, So I apoligize in advance it this questions seem basic in nature.

 

I have read the various posts below

http://e2e.ti.com/support/data_converters/high_speed_data_converters/f/68/p/47555/168049.aspx#168049

http://e2e.ti.com/support/data_converters/high_speed_data_converters/f/68/p/47555/168049.aspx

http://e2e.ti.com/support/data_converters/high_speed_data_converters/f/68/p/72733/264309.aspx#264309

 

So i know that the code that you provided is only a reference and will not dirrectly work with the spartan 6 board I have and that I need to code that myself but I think I'm missing some key concepts or methods on how to do it. I have the datasheets/schematics and application notes but perhaps it's just too much new info/concepts to process at once for me

I'm trying to find out which line will bring the channel A input data from the ADS6445 to my spartan 6 and how to code that from the ADS64XX EVM User's Guide:

www.ti.com.cn/cn/lit/ug/slau196/slau196.pdf

pg 25 pins I see

DA0_M  to pin 32

DA0_P  to pin 34

DA1_M  to pin 38

DA1_P  to pin 40

 

I understand vaguely that the M and P are related as pairs for pos/neg edge of clock readings and assume the 'A' means this is channel A input data? if so then what is the difference  for the 0 and 1 in the designation. is this only used for the defining which header posts to send the data to on the TSW1200 when SW5 is pressed?

using the FMC-ADC-ADAPTER schematic http://www.ti.com/litv/zip/slor101   I see that pin 32/34 on the adapter coresponds with labels IO_4N and IO_4P and the same line on the FMC side corresponds to  pin H17/H16 and from the spartan user guide pg36  https://www.em.avnet.com/common/poptxn/0,2741,RID%253D%2526CID%253D57572%2526CAT%253D0%2526CCD%253DUSA%2526SID%253D32214%2526DID%253DDF2%2526SRT%253D1%2526LID%253D32232%2526PRT%253D0%2526PVW%253D%2526PNT%253D%2526BID%253DDF2%2526CTP%253DEVK,00.html?file=/files/177/xlx_s6_lx150t_dev-ug_rev1.2_120210.pdf  (registration required)   I see H17/H16 corresponds to the label LA11_N/LA11_P 

So does that mean to access the input data from channel A input I simply need to tell my spartan 6 FPGA to read from the LA11_N/LA11_P  pins? or do I also need the data from the 6nd pair of pins from the ADS board to get all of the channel A data?

 

Also the ADS board talks about jumper or pin settings for SCLK and SDATA which, on the EVM board aren't pins at all but merely solder points and tied LOW, from document SLAS513B has 4 possible states default being normal state. I've soldered jumpers to be able to use the jumper settings WITH JUMPER 1-2 being where the TSW1200 can control the high low settings.

 

My question is how do you program the settings in both the 1200 and in general.  refering back to the pinout again I see pins 117/119 being listed as FPGA_SDATA/FPGA_SCLK the FMC adapter equivalent pins being D17/D18 and the spartan 6 equivalent labels being LA13_P/LA13_N 

So for my sparttan6 FPGA if I tell it to change the high/low signals at LA13_P/LA13_N it is the same as setting the high/low for SDATA and SCLK on the ADS6445?

 

 

In http://e2e.ti.com/support/data_converters/high_speed_data_converters/f/68/p/47555/168049.aspx#168049

Posted by replied on 11 May 2010 10:36 AM

it was posted that "If the CLK0_M2C_P/N can only be connected to a clock tree inside the FPGA then i think you would have a problem to implement the circuitry that i described."

the FCLKN/P are connected to the label LA00_P_CC/ LA00_N_CC which connects to 'FPGA Global Clock Inputs' on the spartan 6 FPGA     Does this mean there shouldn't be any problem?

Finally the difference between 1 wire 2 wire, and maybe this actually needed to be explained first since it seems the choice of which setting you choose seems to affect the chip pinout designations.  What is the difference /advantages of 1 wire/2wire DDR/SDR configurations.  I read the pg58-63 of the ADS documentation but am not sure if I'm understanding it properly.

 

Again Sorry if these are basic concepts or if parts of my post doesn't make sense or are beyond the duties of your job to explain, and thanks for your help

Justin

 

  • Hi,

    Let me try to take some of these questions in a different order, starting with the ADC and moving over to the adapter board and then to the developemnt platform, seeing if this might help.

    You will need to be come familiar with the 1-wire and 2-wire data formats described in this data sheet.  In 1-wire mode, the sample data is presented on a single LVDS differential data line one bit at a time until all 12 bits (or 14 or 16 depending on device and mode) are transmitted.  In 12 bit mode, this means that the data rate of the bits must be 12x that of the sample clock in order to get all 12 bits out during the sample period.  The data 'channel' is LVDS, which is differential in nature so there is a 'P' side and an 'N' side that are always to be inverses of each other.  In 12bit seriaization 1-wire mode, the clock that goes with the data need only be 6x that of the sample clock since we can use both rising and falling edges of this bit clock to register the data into the FPGA.  And finally there is also a frame clock that is needed to identify where the sample boundary is on the serialized data.  The frame clock can be though of as an extra data pair that happens to have a known and fixed data value each sample, so that you can look at the place where frame clock goes from low to high and know that on the data pair also this is the place where bits from one sample finishes up and the bits for the next sample start.

    One drawback of 1-wire serial mode is that the speed of the LVDS data limits the sample rate that you can process.  For example, in 16bit mode at 125Msps, this would mean 16 x 125M = 2Gbps on the LVDS data pair.  That is too fast for an FPGA LVDS input.  So we offer the option of serializing half the bits on one LVDS data pair and the other half of the bits on another LVDS data pair.  This doubles the number of LVDS data pairs needed but cuts the data rate required down by half.  So yes, DA0_M and DA0_P refer to the data for one of the wires for channel A, and DA1_M adn DA1_P refers to the other wire for channel A if 2-wire mode is employed.  Regardless of how many chanels or 1-wire or 2-wire mode, only one bit clock is needed for all the LVDS data pairs and frame clock, and only one frame clock is needed to identify the sample boundary on all data pairs.

    So you would need to trace out on the EVM the connector assignments for all the LVDS data pairs, which you have.   The LVDS pairs for channel A go to certain pin assignments on the connector and the schematic in the EVM User's Guide calls out the assignments.  The FMC adapter card also has a routing assignment to get the LVDS data pairs over to the FMC connector, and you also know how to trace this out.  So now you know which signals are getting to the development platform and on which FMC connector pins. 

    Regarding the SPI port, this is a simple 3-wire control bus that lets you write into the register space of the ADC to set certain modes of operation.  The EVM is configured by default to *not* use the SPI signals for this purpose, but rather to let the jumpers on the EVM choose the more common modes of operation.  To change the EVM over to let the FPGA drive the SPI, *four* surface mount 0-ohm resistors must be moved.  The RESET signal must be moved from being tied high to the other position.  The signals SCLK, SDATA, SEN must have their resistors moved from conneecting to the 4-position jumpers to connecting to the connector to the FPGA.   Then the TSW1200 or your developement platform can drive the SPI signals.

    The TSW1200 User Interface GUI has an option under the 'TEST' selection to choose the SPI Setup test.   (If you are using version 2.0 or newer of the TSW1200 GUI)  In this window you can enter the address of a SPI register and the value of the data you want to write to that address, and add that to a queue of register accesses.  Then when you press Send Data all of the register accesses in the queue are sent to the FPGA which in turn controls the SPI access to the data converter on the EVM by bringing SEN low and then bringing SCLK low then high or high then low for each bit of addess and data on the SDATA line.  Then bringing SEN back high after each register write.

    The posting you quoted towards the end there was in relation to how the frame clock is to be used.  And because of this frame clock, we had to revise the bridge card and come out with a new revision of the circuit board.  (We are currently up to revision C)  The first revision of the adapter routed the frame clock to a pin on the FMC connector that connected to a clock input on the FPGA.  But earlier in this posting I mentioned that the frame clock can be thought of as another data pair that has a known data pattern.  And in fact the frame clock is to be latched into the FPGA using the bit clock just like it was any other data input.  So for revision C we moved frame clock to an FMC pair that goes to just another data input, not a global clock input.

    Regards,

    Richard P.

  • Hi Richard,

    Just some followup/additional questions,

    When you put the ADC into sync mode sclk(low) sdata(high) and a sync pattern is output on all channels that means all 8 pairs, right?  From DA0_M/P, DA1_M/P ....DD1_M/P?  But is a sync signal generated on DCLK and FCLK pairs as well or must i set those up as per your above post?

    For the sync signal is there a default pattern built in or must it be set on first run, and if it is built in, can it be changed to a new default or does it need to be set each time you run it after a power down?

    Lastly, again from the ADS6445 documentation, p25 shows the RGC package pinouts for 2-wire config, and p28 for pinouts of the 1-wire config.  In the 1-wire config the need for half the channel pairscreated 4 pairs of UNUSED pins and shifted the position of the remaining channel input pairs.  Does this affect the pinouts for the Samtec connector as well from slau195 p25 ads64xx user guide where it shows all 8 channel pairs?  Are the pinouts accurate for 1 wire and if not do you have the proper pinouts for 1 wire for the Samtec connector.

     

    Justin

  •  

    Regarding the SPI port, this is a simple 3-wire control bus that lets you write into the register space of the ADC to set certain modes of operation.  The EVM is configured by default to *not* use the SPI signals for this purpose, but rather to let the jumpers on the EVM choose the more common modes of operation.  To change the EVM over to let the FPGA drive the SPI, *four* surface mount 0-ohm resistors must be moved.  The RESET signal must be moved from being tied high to the other position.  The signals SCLK, SDATA, SEN must have their resistors moved from conneecting to the 4-position jumpers to connecting to the connector to the FPGA.   Then the TSW1200 or your developement platform can drive the SPI signals.

    Unless I'm missing something my EVM version doesn't have these 0 ohm resistors, for J6 and J8.

    So you're saying I need to move the 0 ohm resistor on J5 from  position 2-3 to position 1-2 and put 0ohms in the 1-2 position for J6 and J8 as well.  but the thing you said about the reset i'm not sure about.  Are you saying that J7 must have the resistor moved from 2-3 to 1-2? if so doesn't that mean I can't use Parallel outputs?


  • Hi,

    i think you may be right that two of those jumper positions may not have a resistor at all in the default condition - if by leaving the position open circuit means that the ADC itself does not use these pins for parallel configuration.  Ah yes, SCLK (J6) and SDATA (J8) when pulled both low = normal operation and there are pull down resistors for these pins on the board.  So yes, you would have to add the 0-ohm resistors to these positions.

    For reset, yes J7 must have the resistor moved to position 1-2.   By Parallel configuration, this means simply that a number of pins are used for configuring the device rather than using three serial pins to configure the internal registers.  This has nothing to do with the sample outputs, which are on a parallel bus of pins that each have sample data serialized out on them.

    Regards,

    Richard P.

  • Hi,

    The SYNC pattern is the same pattern as is presented on the Frame Clock pin - which is '1' for half the sample period and then '0' for half the sample period.  Yes, this pattern is then presented at all the data pairs.  The bit clock will still be the DDR clock that normally is present on this pair or else you would not be able to latch that Sync pattern into your FPGA.  And the Frame Clock is already that same Sync pattern already.    Table 26 shows the Sync pattern for each mode of operation, and this matches what is on FCLK for each mode as well.

    The Sync pattern is a pre-set pattern that is available.  That is separate from the 'Custom' pattern in which you first have to write to the register space to set the desired pattern and then you enable the custom pattern output.  Custom pattern is handy for checking your deserialization with a walking '1's pattern.  First set the custom pattern to '00 0000 0000 0001' and then next set it to '00 0000 0000 0010' and so on until you see that on the receiving end you are getting each bit back in its proper location.

    The EVM routes all 8 data pairs to the Samtec connector, and the firmware that comes in the TSW1200 was only written for 2-wire mode of operation - so it uses all 8 data pairs as input.  The firmware in the TSW1200 *could* have been written for 1-wire operation in which case only the pertinent data pairs would be deserialized.  If you were writing TSW1200 firmware code for 1-wire operation then you would simply ignore the four pairs that are not used.   We use the same firmware for the ADS62xx 2-channel family and in that case we again simply ignore the pairs that are not being used in the 2channel case compared to the 4channel case. 

    Regards,

    Richard P.