sinara-hw / sinara

Sayma AMC/RTM issue tracker
Other
42 stars 7 forks source link

Urukul v1.0 detailed testing #354

Closed hartytp closed 6 years ago

hartytp commented 7 years ago

Use some fixed reference frequency for all tests, such as 80MHz.

hartytp commented 7 years ago

@gkasprow Can you ship us all but 1 of the AD9910 Urukul prototypes you've ordered as soon as basic functionality/"no smoke" testing is complete (i.e. don't complete the above detailed testing first!).

Thanks!

hartytp commented 7 years ago

@gkasprow @jordens Feel free to add more tests to the above list.

hartytp commented 7 years ago

@gkasprow When you ship the AD9910 DDSs that we paid for, please can you ship one to @jordens?

jordens commented 7 years ago

Updated it a bit. Please ship right after smoke test:

We'll be happy to help with characterization afterwards.

hartytp commented 7 years ago

@gkasprow Is Urukul due to arrive this week? When it arrives, please can we prioritise no smoke/basic functionality testing (see reobert's list) above finishing Zotino -- I'd like to get Urukul prototypes shipped asap. No need to do the detailed testing for now.

Thanks!

gkasprow commented 7 years ago

@hartytp OK, 2 Zotinos + BNC adapters were shipped on Friday. Once I receive DDS, I will test them ASAP.

hartytp commented 7 years ago

Thanks!

gkasprow commented 7 years ago

@hartytp There are no panels for DAC BNC adapters attached - I forgotten about them. Will ship them next time with some other stuff.

hartytp commented 7 years ago

@gkasprow No problem. That can wait.

If there is any time before Urukul arrives, it'd be great to get a few of the analog test for Zotino done.

gkasprow commented 7 years ago

@hartytp Sure, once I repair my bard, will continue with measurements.

hartytp commented 7 years ago

Great, thanks @gkasprow!

jordens commented 7 years ago

@hartytp could you remember to do a bit of triage on the issues you file (i.e. assignee, labels, milestone)?

hartytp commented 7 years ago

sure

hartytp commented 7 years ago

@gkasprow For the current source biasing, my inclination is to go for Daniel's suggestion of the LT3092. They're pretty cheap ($2 in quantity) and seem like a better/easier solution than building our own current source.

@jordens @gkasprow if you're oaky with this approach, then we should buy an eval board at some point and test this out with the v1.0 boards we have. I'm happy to do this testing if that helps -- I probably won't do this until after Christmas, but I don't think we're in a rush for it.

jordens commented 6 years ago

@a-shafir and I will take care of the first round of noise, power, RF switch testing.

hartytp commented 6 years ago

Cool.

Out of curiosity, do you have a proper phase noise/amplitude noise meter? Or, will you just stick this on a spectrum analyser?

jordens commented 6 years ago

We have proper tools.

@gkasprow how are the AD9912 variant boards?

gkasprow commented 6 years ago

@jordens I have them all in my lab but was busy with Sayma Ethernet debugging. You can follow my fight here

gkasprow commented 6 years ago

So the next thing is 9912 testing.

jordens commented 6 years ago

I am following that and involved. Thanks for the AD9912 update. Once you have smoke-tested them like the AD9910 stuff, you can send two of them to me.

a-shafir commented 6 years ago

@gkasprow what was actually flashed into the CPLD on the 9910 board we have in Berlin?

I see 2 options https://github.com/m-labs/sinara/tree/master/ARTIQ_ALTIUM/EEMs/Urukul/CPLD_code or https://github.com/quartiq/urukul

I am testing h/w but can't generate any output on the IO_SESET (P129) and some pins around.

a-shafir commented 6 years ago

@gkasprow how you tested 3U DDS 9910? Have you got DDS ic working? Do you have the code that sent the spi commands, what actually sent to DDS/atten etc?

gkasprow commented 6 years ago

@a-shafir I burned Roberts Verilog code. The only change I did was assignment of test points. Now we have:

assign tp = (cfg_data_rst | ((~en_9910) & tstriple7_i));
assign tp_1 = dds_cs_n;
assign tp_2 = dds_sck;
assign tp_3 = dds_sdi;
assign tp_4 = dds_io_update;
gkasprow commented 6 years ago

I connected 9910 devkit via DIO-Tester module to make sure that Robert's code works. In this way I could communicate with it using LVTTL signals

gkasprow commented 6 years ago

I also modified the verilog code so all 4 channels were active simultaneously. In this way I tested if PLLs are locked. Here is the code: Urukul_CPLD_all_ch.zip

gkasprow commented 6 years ago

To do general purpose communication over SPI I use little Artix 7 devkit with USB and FORTH processor that translates UART commands to bit-bang protocol, i.e. SPI. It works really fast but it's written in FORTH, so probably not really useful for you :)

a-shafir commented 6 years ago

@gkasprow i see io_reset commented in the code. probably some other changes. Please also attach the pin assignment for the code. So what was generating the DDS SPI command? 9910 devkit? I have no devkit. Can you generate a dump (sequence) of the commands? Also what about the reading from DDS when all in parallel?

a-shafir commented 6 years ago

@gkasprow i see why in_sel not working to - it commented out Good that i got this data from you )

gkasprow commented 6 years ago

The original DDS was working in parallel. So I didn't read the status from externally connected ones. You can compare this code with one @jordens posted. I did not touch the pins assignment. My CPLD project is here

gkasprow commented 6 years ago

This is how typical setup with devkit looks like. I this case I connected Sampler module, but the idea is same. 20170915_102313

gkasprow commented 6 years ago

this is the FORTH code I use to talk to LV595 registers. The FORTH ascii is executed in FPGA and is toggling IOs routed to an IO register with a few MHz rate. CPU runs with 50MHz clock. The function below writes 16 bits via SPI to the register and reads them back.

: spi_LV595 ( a ) 

    1 OUT0_SET_REG io! \ SCK hi
    1 16 lshift OUT0_SET_REG io! \ OE buff active
    1 2 lshift OUT0_CLR_REG io! \ RCLK low

    16 0 do
        dup
        1 15 lshift and
        if
           1 1 lshift OUT0_SET_REG io!
        else
           1 1 lshift OUT0_CLR_REG io!
        then
        1 OUT0_CLR_REG io! \ SCK low
        2*
        INP0_REG io@ 4 rshift 1 and +
        1 OUT0_SET_REG io! \ SCK hi 
    loop

     1 2 lshift OUT0_SET_REG io! \ RCLK high
     1 2 lshift OUT0_CLR_REG io! \ RCLK low
     1 16 lshift OUT0_CLR_REG io! \ OE buff inactive
     $ffffff and  \ return only valid bits
;
gkasprow commented 6 years ago

@a-shafir you are right - I had to modify the reset pin state to make it working.

gkasprow commented 6 years ago

And the code you have burned in your CPLD is in Urukul_CPLD_1ch.v file

gkasprow commented 6 years ago

@jordens here is your 9912 :) urukul9912

jordens commented 6 years ago

@gkasprow Nice! Other than the missing amplifier, are there any other issues? Is the solder on the underside bad as well?

hartytp commented 6 years ago

Nice!

gkasprow commented 6 years ago

I got this amp separately. The PN is wrong so they got ones with straight leads and had to replace them. It seems that the ICs they got had problems with wetting because other chips are fine. Anyway, it's their responsibility to solder it right

jordens commented 6 years ago

Are you returning the AD9912 boards to Technosystem to be fixed as well?

gkasprow commented 6 years ago

I will fix one piece myself to test it. Rest of the boards will be returned. I talked with the company and they say that it is quite standard thing that some chips have poor wetting and side contacts are not always covered by the tin. The flux that is part of the soldering paste is only roughly 10..15% of it and is not always able to clean the contact side. The joint still maintains the contact because it is low side of it which does the job. Side area does not need to be covered, but if we want, they can fix it.

jordens commented 6 years ago

IMHO it is likely that the joints are bad on the underside as well if they fail to wet that dramatically on the edge. And since they probably didn't inspect those joints there is no telling. I'd like to see them fix it.

gkasprow commented 6 years ago

I just desoldered the chip and the bottom pads are correctly soldered. Anyway it just looks non professional and should be fixed.

a-shafir commented 6 years ago

This is a long known for the technologists that too much solder is not helping and even can cover some problem. But in this case it is not about the professionalism but about Optical inspection standards. All the packages designed that way that there is possibility to ensure by inspection the proper electrically and mechanically soldering. For this package there must be wetting on the side edges of the pads. This indicates that there is wetting under the pads and also improves mechanical properties.

For some of the packages we have (BGA and some of the qfn with signal pads under) the OIS will not enough. I think need to check if the factory can do x-ray inspection, they must have it in or out house at least for BGA but also for some regulator chips etc. Visual inspection of the QFN etc is the must. It shall not increase the cost of the samples production more than few %

Any way investing our time to solving the technological issues is the worst case scenario.

a-shafir commented 6 years ago

Urukul 9910, 4th channel, 10.000MHz, variable attenuation test, no termination: ds1z_quickprint1

gkasprow commented 6 years ago

@a-shafir look here

a-shafir commented 6 years ago

@gkasprow ok, this is a news for me too. There are 3 similar looking "QFN-style" packages:

That minds for us:

a-shafir commented 6 years ago

Gateware, core drivers and experiment for Urukul AD9910 rev 1.0 board.

The current setup is for KC705, see the details here: https://github.com/m-labs/artiq/commit/dd3c8a336dc12cda33cadebdf3bafc77c0bc1565

The experiment initializes FMC DIO, the Urukul board and configures the single tone for all 4 channels. Attenuator and SW are supported.

There are 2 "interference generator loops" (for DDS3 SPI and for ATT SPI). Each can be activated in the experiment. Note: with the current RTIO gateware it is not possible to generate the NU-mode intensive SPI communication so if any interference from the SPI clock will be seen on the output it will be not the worst case scenario.

The 4-channels DDS output: ds1z_quickprint11

The setup: img_20171218_011736

jordens commented 6 years ago

More data and screenshots to follow.

dhslichter commented 6 years ago

@a-shafir why are you using scope probes to look at the DDS outputs instead of SMA cables?

gkasprow commented 6 years ago

@jordens in such setup you easily receive and induce current from every short wave radio station including CB :)

jordens commented 6 years ago

@gkasprow in general yes, but not if you are in a room that is as insanely shielded as the one we are doing the tests in ;)