Wiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
resources:eval:user-guides:ad-fmcomms2-ebz:testing [02 Apr 2018 19:40] – [Required hardware] Robin Getzresources:eval:user-guides:ad-fmcomms2-ebz:testing [27 Jun 2022 15:01] – [Required software] Monica Constandachi
Line 1: Line 1:
-====== Production testing of the AD-FMCOMMS2 / AD-FMCOMMS3 / AD-FMCOMMS4 / AD-FMCOMMS5 / ADRV9363 ======+====== Production testing of the AD-FMCOMMS2 / AD-FMCOMMS3 / AD-FMCOMMS4 / AD-FMCOMMS5  ======
  
 ===== Overview ===== ===== Overview =====
Line 5: Line 5:
 The production testing is quite simple. Since each board has been completely characterized, and we know the layout is good, we can just look for gross errors. The production testing is quite simple. Since each board has been completely characterized, and we know the layout is good, we can just look for gross errors.
  
-There are multiple test files for the different boards. (all in [[https://github.com/analogdevicesinc/iio-oscilloscope/tree/master/profiles|github]]) +There are multiple test files for the different boards. (all in GitHub
-  * FMComms1_test.ini : used to test AD-FMCOMMS1-EBZ  +  * test_fmcomms2-3_prod : used to test AD-FMCOMMS2-EBZ and AD-FMCOMMS3-EBZ 
-  * FMComms2_test.ini : used to test AD-FMCOMMS2-EBZ and AD-FMCOMMS3-EBZ +  * test_fmcomms4_prod: used to test AD-FMCOMMS4-EBZ  
-  * FMComms4_test.ini : used to test AD-FMCOMMS4-EBZ  +  * test_fmcomms5_prod : used to test AD-FMCOMMS5-EBZ 
-  * FMComms5_test.ini : used to test AD-FMCOMMS5-EBZ +
-  * ADRV9363_test.ini : used to test ADRV9363-PCBZ +
  
-The tests and test parameters are in in the ''./iio-oscilloscope/profiles/FMComms2_test.ini'' file. This is broken down into the following sections:+The tests and test parameters are in in the "**pyadi-iio/tests/test_fmcomms2-3_prod.py**" file. This is broken down into the following sections: 
 +  -Temperature 
 +  -Voltage 
 +  - RF 
 +  - Peaks 
 +  - DCXO 
 +  - Loopback
  
-==== Temperature ====+===== Required hardware =====
  
-<source master/profiles/FMComms2_test.ini:/temp/-/^$/ shell iio-oscilloscope>+  * Zynq ZC706  
 +  * Raspberry Pi4 
 +  * [[adi>AD-FMCOMMS2-EBZ]] or [[adi>AD-FMCOMMS3-EBZ]] or [[adi>AD-FMCOMMS4-EBZ]] or [[adi>AD-FMCOMMS5-EBZ]] card 
 +  * RF loopback cables (2x for FMCOMMS2/3/4, 4x for FMCOMMS5) 
 +  * External monitor connected to the Raspberry Pi via micro HDMI 
 +  * Keyboard and mouse (with USB hub if they aren't part of a combo device) 
 +  * Ethernet cable (needs to be plugged into the internet) 
 +  * QR code scanner 
 +  * For the FMCOMMS2/3/4: Frequency counter with a USB-GPIB port (tested with an HAMEG Instruments, HM8123,5.12)  and with a probe and grounding clip attachment 
 +===== Required software =====
  
-The ''ad7291.in_temp0_raw'' is the raw results from the AD7291 - which is 0.25°C. 80 refers to 80 steps of 0.25°C or 20°Cand 160 refers to 40°C. This allows the tests to be done in normal lab setting. While the AD9361 & speced over the full industrial temperature range (−40°C to +85°C), the typical numbers in the datasheets are provided at a T<sub>A</subof 25°C, and this is where the test numbers come from.+**Creating a ZY706 carrier SD test card** 
 +  * Firstwrite the latest available SD card image found to a spare card and prepare the card to boot into Linux. 
 +<WRAP hi round download 80%> 
 +  * **18 January 2022 release ** 
 +  *  [[https://swdownloads.analog.com/cse/prod_test_rel/fmcomms4_test/zc706_fmcomms4_prod_test_2022.img.xz|Actual file for FMCOMMS4]] 
 +</WRAP> 
 +<WRAP hi round download 80%> 
 +  * **27 June 2022 release ** 
 +  *  [[https://swdownloads.analog.com/cse/prod_test_rel/fmcomms2-3_test/fmcomms2-3_carrier_production.zip|Actual file for FMCOMMS2-3]]
  
-==== Voltage ====+</WRAP>
  
-<source master/profiles/FMComms2_test.ini:/number/-2/^$/ shell iio-oscilloscope>+**Note that different board use different test scripts as seen in the following mapping:** 
 +  * test_fmcomms2-3_prod.py  - FMCOMMS2/FMCOMMS3 
 +  * test_fmcomms4_prod.py    FMCOMMS4 
 +  * test_fmcomms5_prod.py    FMCOMMS5
  
-This section needs quick peek at the [[./hardware#downloads|schematics]]. Sheet 3 shows how the AD7291 is connected. 1% resistors connect various voltages, and things are divided down to ensure that the voltage levels don't exceed full scale. +**Creating Raspberry Pi SD test card** 
- +  * The SD image used is based on Raspbian with desktop. 
-Since ''VDDA_GPO'' should be between 1.8 and 3.3V (according to the datasheet, and comes from 3P3V (on the schematic), which is the 3.3V pins on the FMC connector (which is spec'ed to ±5% in the FMC spec), we can assume that things will be 3.3V ± 5%, or 3.135V to 3.465V. This 3.135V to 3.465V translates to 1.929231 to 2.132308V (due to the 16k/(16k+10k) voltage divisor). Now that all that is left to do is determine the raw converter code values. To do this, it's just a simple matter of determining the LSB of the converters (in the AD7291 datasheet) - 12 bits, 2.5V full scale reference, or 2.5V / 2 <sup>12</sup> or 0.0006103515625V per LSB. This means that 3161 and 3494 are the actual 12 bit codes that we should be comparing against. +<WRAP hi round download 80%> 
- +  * **18 January 2022 release ** 
-These codes do not accounts for the ±1% resistors, and ±0.3% reference inside the AD7291, and the ±4.5 LSB (for worse case Offset Error from the AD7291). +   [[https://swdownloads.analog.com/cse/prod_test_rel/fmcomms4_test/pi_fmcomms_prod_test_2022.img.xz|Actual Raspberry Pi file for FMCOMMS4]] 
- +  * [[https://swdownloads.analog.com/cse/prod_test_rel/fmcomms2-3_test/pi_test_fmcomms2-3_production.zip|Actual Raspberry Pi file for FMCOMMS2-3]]
-^ Input channel ^ Description ^ Nominal Voltage ^ Tolerance ^  V<sub>HIGH</sub>  ^^^  V<sub>LOW</sub>  ^^^ +
-^                                                      Voltage  ^ (16kΩ+1%)/(16kΩ+1%+10kΩ-1%)  ^ Codes ((Comes from 2.5V-0.3% 4096 code + 4.5 LSB)) ^  Voltage  ^ (16kΩ-1%)/(16kΩ-1%+10kΩ+1%)  ^ Codes ((Comes from 2.5V+0.3% 4096 code - 4.5 LSB)) ^ +
-|  0  |   VDDA_GPO      |  3.3V  |  ±5%  |  3.465V  |  2.148672V     | 3629 |  3.135V  |  1.914356V  | 3045 +
- 1  |   3P3V          |  3.3V  |  ±5%  |  3.465V  |  2.148672V     | 3629 |  3.135V  |  1.914356V  | 3045 | +
-|  2  |   3.3VAUX        3.3V  |  ±5%  |  3.465V  |  2.148672V     | 3629 |  3.135V  |  1.914356V  | 3045 | +
-|  3  |  1P3_SUPPLY_A    1.3V  |        1.33V    0.824743V  | 1393 |  1.267V  |  0.773681V  | 1231 | +
-|  4  |  VDD_INTERFACE  |  1.8-2.5V  |  ±5%  |  2.625V  |  1.627782V  | 2749 |  1.71V  |  1.044194V  | 1661 | +
-|  5  |  1P3_SUPPLY_B    1.3V  |        1.33V    0.824743V  | 1393 |  1.267V  |  0.773681V  | 1231 | +
- +
-Other boards (like FMCOMMS5) need to monitor other voltages, but use the same scheme. +
- +
-^ Description ^ Nominal Voltage ^ Tolerance ^  V<sub>HIGH</sub>  ^^^  V<sub>LOW</sub>  ^^^ +
-^                                        Voltage  ^ (16kΩ+1%)/(16kΩ+1%+10kΩ-1%)  ^ Codes ((Comes from 2.5V-0.3% 4096 code + 4.5 LSB)) ^  Voltage  ^ (16kΩ-1%)/(16kΩ-1%+10kΩ+1%)  ^ Codes ((Comes from 2.5V+0.3% 4096 code 4.5 LSB)) ^ +
-1P8V | 1.8V | ±5% | 1.89V | 1.172003V | 1980 | 1.71V | 1.044194V | 1661 | +
-| 5V((uses different resistors)) | 5.0V | ±5% | 5.25V | 2.359288V | 3985 | 4.75V | 2.087680V | 3321 | +
- +
-It's just a matter of determining what the voltage should be (by following it back on the schematic), and doing a few simple calculations. +
- +
-==== RF ==== +
- +
-<source master/profiles/FMComms2_test.ini:/channels/-5/^$/ shell iio-oscilloscope> +
- +
-This sets and checks various RF settings - it should be mostly human readable. If it's not, please ask. +
- +
-==== DCXO ==== +
- +
-For the FMCOMMS2/3/4, where the AD9361/64 are tied to a crystal, there is the ability to "tune" the crystal by making micro adjustments to the frequency in order to ensure that it matches its target station. This is calibrated during the tests using a frequency counter that continuously seeks towards the reference clock frequency while adjusting coarse and fine registers. Once it's as close as possible to the reference clock, the coarse and fine tuning values are stored as ASCII into the FRU EEPROM in the "Tuning" field using a command similar to the following: +
- +
-<WRAP box bggreen fgblack> +
-<xterm> +
-# **fru_dump -i /sys/bus/i2c/devices/0-0051/eeprom -o /sys/bus/i2c/devices/0-0051/eeprom -t 0c0bb8** +
-</xterm>+
 </WRAP> </WRAP>
 +<note tip>To write an image on a SD card you can follow the instructions [[https://www.raspberrypi.com/documentation/computers/getting-started.html|Installing Pi Images]]</note>
  
-Note that the value passed to the tuning option consists of two hex bytes for the coarse value followed by 4 hex bytes for the fine value, i.e. coarse = 12 and fine = 3000 in the command above+===== Required setup ===== 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:setup_1.1.png|}} 
 +   - Attach the RF loopback cables to the board. The images at the bottom of the page show the correct placement for each type of AD-FMCOMMS board. 
 +   - Insert the SD card into the carrier board. 
 +   - Insert the FMCOMMS board onto the carrier 
 +   - Connect the HDMI cable to Raspberry Pi 
 +   - Connect USB keyboard to Raspberry Pi 
 +   - Insert SD card into Raspberry Pi 
 +   - Connect Ethernet cable between Raspberry Pi and the carrier 
 +   - Connect the scanner to Raspberry Pi 
 +   - Connect the frequency counter to Raspberry Pi 
 +   - Power the carrier board and Raspberry Pi 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:picture2.png |}} 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:frequency_counter.png?nolink&600 |}}
  
-For the FMCOMMS5, only the current value of the reference clock is measured and saved since it doesn't support the coarse/fine tuning mechanism. 
  
 +<note>Before testing the board, please make sure to add a QR code sticker with the serial number as shown below.</note>
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:qr_code.png?600 |}}
  
-===== Creating an SD test card =====+Make sure to connect to your WIFI Network before testing. You can exit the test window by pressing CTRL+C in order to access the connection. Reboot the system in order to return to the test window. 
 +{{ :resources:eval:user-guides:pzsdr:wifi_connection.png?&600 |}}
  
-First, write the latest available SD card image found at https://wiki.analog.com/resources/tools-software/linux-software/zynq_images to a spare card and prepare the card to boot into Linux as detailed on that page for the target FMCOMMS and carrier boards (copy the right BOOT.BIN and devicetree.dtb files into the base directory of the SD card's boot partition). 
  
-Then the card needs to be modified to run the tests automatically on boot. Test scripts are provided in https://github.com/analogdevicesinc/linux_image_ADI-scripts that automate initializing osc with the correct profile and environment.+===== Test process =====
  
-Note that different boards use different tests scripts as seen in the following mapping:+Firstly, make sure all the required steps from the setup explained above are completed. Once the setup is ready, testing should be done using the following steps: 
 +  *  Power the carrier board and the Raspberry Pi. The following screen will appear once the system has booted. 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:test_1.png |}} 
 +  * The testing sequence can be started by selecting one of the menu items. **In order to start testing, an Ethernet cable should be connected between Raspberry Pi and DUT**.  
 +  * Start the DCXO test by writing the following command in the terminal: 1 
 +  * At the beginning of every test, the connection with DUT is checked. If the connection is correctly established, the following message will be printed. 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:test_2.png|}} 
 +  * Use the scanner to scan the QR code on the board 
 +  * If the DCXO test has been completed, the PASSED message will appear on the screen 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:test_4.png |}} 
 +  * Secondly, start the FMCOMMS4 test by writing the following command in the terminal: 2 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:test_5.png |}} 
 +  * In the beginning, scan the QR code on the board 
 +  * If connections are OK, the test will begin. Below is an example of a test running: 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:test_6.png|}} 
 +  * If the FMCOMMS test has been completed, the PASSED message will be printed on the screen. This means that the DUT passed all the assigned tests
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:test_7.png |}} 
 +  * If one of the tests failed, the FAILED message will be printed as in the screen capture below: 
 +{{ :resources:eval:user-guides:ad-fmcomms2-ebz:test_8.png |}} 
 +  * In case of a failed test, the tester can repeat the test immediately. The test can be repeated an undefined number of times. 
 +  * After completing the test, power off the carrier by typing 4. After several seconds, power off the carrier board using the physical switch. 
 +  * In order to power off Linux, please type 3 and enter. 
 +  * Remove the FMCOMMS card and previously used board. Return to step 1 with the next board.
  
-  * test_fmcomms2.sh : used to test AD-FMCOMMS2-EBZ and AD-FMCOMMS3-EBZ 
-  * test_fmcomms4.sh : used to test AD-FMCOMMS4-EBZ  
-  * test_fmcomms5.sh : used to test AD-FMCOMMS5-EBZ 
-  * test_adrv9363.sh : used to test ADRV9363-PCBZ 
  
-Select the correct script above for target test setup and alter the launcher for osc to run that test script instead of a regular osc instance. See the following example diff for required changes to the launcher to run the FMCOMMS2/3 tests on boot: +<note important>When testing is finished, ZC706 and the Raspberry Pi should always be powered off from terminal before power is unpluggedotherwise the SD cards can be corruptedFirst select item 4 to power off the carrier. After few secondsturn off the switchAfter the ZC706 is off, the Raspberry Pi can be turned off selecting item 3. </note>
- +
-<code diff> +
---- ./.config/autostart/config_autostart_osc.desktop 2013-12-09 15:55:41.774730469 -0500 +
-+++ ./.config/autostart/config_autostart_osc.desktop 1969-12-31 19:20:18.000000000 -0500 +
-@@ -1,11 +1,11 @@ +
-  +
- [Desktop Entry] +
- Type=Application +
--Exec=/usr/local/bin/osc +
-+Exec=sudo /usr/local/bin/test_fmcomms2.sh +
- Hidden=false +
- NoDisplay=false +
- X-GNOME-Autostart-enabled=true +
-</code> +
- +
-===== Required hardware ===== +
- +
-  * [[xilinx>zc706|Zynq ZC706]] (FMCOMMS5) or a [[xilinx>products/boards-and-kits/1-8dyf-11.html|ZedBoard]] (FMCOMMS2/3/4) +
-  * [[https://www.avnet.com/shop/us/products/avnet-engineering-services/aes-fmc-ext-g-3074457345628965476/|Avnet AES-FMC-EXT-G]] (FMC Extender Board) - we permanently plug this into the above development boardand then plug the board under test into thisThis way - this Extender board fails, not the expensive carrier. +
-  * [[adi>AD-FMCOMMS2-EBZ]] or [[adi>AD-FMCOMMS3-EBZ]] or [[adi>AD-FMCOMMS4-EBZ]] or [[adi>AD-FMCOMMS5-EBZ]] card +
-  * RF loopback cables (2x for FMCOMMS2/3/4, 4x for FMCOMMS5) +
-  * External monitor connected to the carrier via HDMI +
-  * Keyboard and mouse (with USB hub if they aren't part of a combo device) +
-  * USB OTG adapter (to plug in the keyboard/mouse) +
-  * Ethernet cable (needs to be plugged into the internet) +
-  * For the FMCOMMS2/3/4: Frequency counter with a USB-GPIB port (tested with an [[http://www.keysight.com/en/pd-1000001385:epsg:pro-pn-53131A/225-mhz-universal-frequency-counter-timer|Agilent 53131A]] and [[http://prologix.biz/gpib-usb-controller.html|Prologix GPIB-USB controller]]) with probe and grounding clip attachment +
- +
-===== Required setup ===== +
- +
-  * Plug in the external monitor and connect it via HDMI to the carrier board. +
-  * Connect the USB OTG adapter (and USB hub if needed) to the USB port on the carrierthen plug in the keyboard and mouse as well. +
-  * Plug in the carrier board, insert the SD card for running the tests, and confirm that the carrier board is set to boot from SD (TODO: insert image). +
-  * Attach the carrier board via the Ethernet cable to a network connection with Internet accessibility (used for time syncing). +
-  * For the FMCOMMS2/3/4plug in and turn on the frequency counter. Make sure the probe cable is attached to channel 1 and place the probes similarly to  following image: {{ resources:eval:user-guides:ad-fmcomms2-ebz:fmcomms-clk_out.jpg?600 }} Specifically the probe should go into the CLK_OUT through-hole on the FMCOMMS board and the clip should be grounded. In addition, make sure the frequency counter is set to use a GPIB address of 16. On the Agilent 53131A, the current GPIB address is shown on the screen in the form of a message similar to "GPIB AT 16" soon after power on. To set it, see section 3-4 "Configuring the GPIB" in the [[http://fy.chalmers.se/~f7xlh/elmatB/Instrument/53131_Prog.pdf|Agilent 53131A user guide]]. +
- +
-===== Test process =====+
  
-  - Attach the RF loopback cables to the card. See the images at the bottom of the page for correct placement for each type of board. 
-  - Plug the card into the carrier board. 
-  - Power on the carrier board. 
-  - When prompted with a window similar to the following image (TODO: insert image), enter the serial number found on the board and select the correct EEPROM file to write to the card. 
-  - When tests pass, the following window should be shown (TODO: insert image) and if tests fail, a window similar to the following image should be shown (TODO: insert image). In either case, hit the OK button to halt Linux and after several seconds power off the carrier board via the physical switch. 
-  - Remove the FMCOMMS card and return to step 1 to continue with the next board. 
  
 ^  RF loopback cable placement  ^^^ ^  RF loopback cable placement  ^^^
 | {{resources:eval:user-guides:ad-fmcomms2-ebz:fmcomms3-loopback.jpg}} | {{resources:eval:user-guides:ad-fmcomms2-ebz:fmcomms4-loopback.jpg}} | {{resources:eval:user-guides:ad-fmcomms2-ebz:fmcomms5-loopback.jpg}} | | {{resources:eval:user-guides:ad-fmcomms2-ebz:fmcomms3-loopback.jpg}} | {{resources:eval:user-guides:ad-fmcomms2-ebz:fmcomms4-loopback.jpg}} | {{resources:eval:user-guides:ad-fmcomms2-ebz:fmcomms5-loopback.jpg}} |
 ^  FMCOMMS2/ ^  FMCOMMS4  ^  FMCOMMS5  ^ ^  FMCOMMS2/ ^  FMCOMMS4  ^  FMCOMMS5  ^
resources/eval/user-guides/ad-fmcomms2-ebz/testing.txt · Last modified: 13 Jun 2023 16:24 by Ramona Alexandra Nechita