sinara-hw / sinara

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

Urukul schematic review #266

Closed hartytp closed 7 years ago

hartytp commented 7 years ago

Thanks for posting the updated Urukul schematic @gkasprow! Starting a review of it...

hartytp commented 7 years ago

@jordens Can you remind me what the plan for synchronising DDSs is for the "wide bandwidth" case?

gkasprow commented 7 years ago

@hartytp Thanks for quick review. There is 4 position DIP switch. So can be used for clock selectrion, IDC utlisation, LED assignment, etc. Instead of "DNP" I use variants, check PDF file now. The LTC regulators go up to 500mA. We need much more than that. We can use dedicated LDOs per DDS chip but we would need plenty of them. For CPLD update we would need to write bit-bang driver over I2C. I treat this CPLD as hardwired logic which used don;t need to touch. If there is some volunteer who will write such update software, I can add I2C extender that controls JTAG lines.

hartytp commented 7 years ago

@gkasprow Likewise -- thanks for the quick fixes!

There is 4 position DIP switch. So can be used for clock selectrion, IDC utlisation, LED assignment, etc.

Thanks.

The LTC regulators go up to 500mA. We need much more than that. We can use dedicated LDOs per DDS chip but we would need plenty of them.

Okay, so long as the LDOs you've chosen are reasonably low noise, let's stick with them.

If we have issues with noise or supply-line-related cross-talk, we can consider moving to 1 LDO per DDS in the next revision.

For CPLD update we would need to write bit-bang driver over I2C. I treat this CPLD as hardwired logic which used don;t need to touch. If there is some volunteer who will write such update software, I can add I2C extender that controls JTAG lines.

@jordens may feel differently, but I think it's worth adding the I2C extended, even if it's DNP by default. That way, at least we have the option of programming over I2C if we decide to write the loader later on.

jordens commented 7 years ago

Wide bandwidth case?

jordens commented 7 years ago

Awesome!

gkasprow commented 7 years ago

@jordens I used this LVDS fanout because it has individual output enables and I need LVDS not LVPECL. However I cannot use it as clock fanout because it runs up to 700MHz.

hartytp commented 7 years ago

Wide bandwidth case?

The mode used in the NU servo (that's what it's called on the Wiki atm).

jordens commented 7 years ago

@hartytp use the ad9910 sync mechanism and either drive that sync from the servo or sync the servo to it. AFAICT either should work.

hartytp commented 7 years ago

@gkasprow On the new version of the schematic, all the repeated blocks are now included multiple times (e.g. 4 identical pages of DDSs). In the past, there was just one copy of each, which was better IMO. Can we go back to just one copy of each identical block, please?

Also, obvious point, but have you double checked the termination/matching required for all the DDS inputs/outputs? (IIRC, there are a few quirks about how the various pins are terminated/need to be terminated/matched).

hartytp commented 7 years ago

@hartytp use the ad9910 sync mechanism and either drive that sync from the servo or sync the servo to it. AFAICT either should work.

@jordens My memory of the AD9910 is a little rust now, but IIRC:

However, as currently described on the Wiki, neither of those signals are connected to the IDCs in the "wide bandwidth" case. Or, am I missing something?

gkasprow commented 7 years ago

@hartytp notice that pages differ by component designators. Altium prints each channel separately when assembly variants are used because each channel can differ. Another option is to use DNP marking for not mounted components. But then we cannot have variants for 9912 and 9910. SYNC_OUT from DDS0 can be routed via IC9 to LVDS1 directly to avoid TTL->LVDS buffer delay

hartytp commented 7 years ago

Altium prints each channel separately when assembly variants are used because each channel can differ. Another option is to use DNP marking for not mounted components. But then we cannot have variants for 9912 and 9910.

Okay, that makes sense. If the variants option is useful for maintaining multiple population options then I don't object to using it...

SYNC_OUT from DDS0 can be routed via IC9 to LVDS1 directly to avoid TTL->LVDS buffer delay

My question was more about pin usage on the IDC connector; for the "wide bandwidth" case, where we have lines for each MOSI and for each switch, there aren't any lines spare for SYNC_IN/SYNC_OUT (although, these could be multiplexed with the attenuator control lines using a CS and the PLD).

jordens commented 7 years ago

(items moved to OP)

@hartytp re synchronization. we would use the CPLD to enable driving SYNC_IN from the FPGA during the startup phase.

hartytp commented 7 years ago

@hartytp re synchronization. we would use the CPLD to enable driving SYNC_IN from the FPGA during the startup phase.

Thanks for clarifying, that sounds good. Do you think that, once synchronised, synchronisation will be maintained for months? Do we need a way of checking for sync errors?

Edit: otherwise, since the attenuators won't be reprogrammed often, we could mux the SYNC_IN and attenuators, so that SYNC_IN is applied to the DDSs whenever the attenuators aren't being reprogrammed (will need a little care to avoid glitches)...

hartytp commented 7 years ago

@jordens Re isolated GNDs on Urukul SMAs: I think it's nice to have the pads on the PCB so that floating the grounds is easy (just means altering the FP) if required. However, I'm not sure it's worth the hassle of actually fitting isolated washers by default (depends a little on how much it adds to the cost, and how good it is mechanically). Isolating the grounds is certainly not actually required for anything I'm planning to do with these boards...

hartytp commented 7 years ago

TR1 should be a 1:sqrt(2) transformer. Does minicircuits have anything closer to that (e.g. 1:1.5)? Or is 1:2 already optimized for some reason I don't see? I know it is on the eval board...

@sbouhabib Can you remind me why we didn't do this for Allaki? Shouldn't that also have been a 1:sqrt(2) rather than 1:2?

jordens commented 7 years ago

I agree on the shield AC coupling. But it should be done consistently for the SMA clock input and the SMA DDS outputs. I.e. also make the clock input AC-couplable.

hartytp commented 7 years ago

I have a vague memory (but didn't see anything in a quick skim through the data sheet) of the SYNC_CLK output of the AD9910 only having a really weak current drive. Needing something like 1k min termination. Does that ring any bells @cjbe?

hartytp commented 7 years ago

@jordens does it matter that IO_UPDATE and SYNC_IN/IO_UPDATE_RED will be on different IDCs, while Kasli/VHDCI_CARRIER currently only do length matching between lines on the same IDC? (i.e. IO_UPDATE and SYNC_IN paths will not be length matched)?

gkasprow commented 7 years ago

@hartytp It says only that CMOS outputs deliver 0.4 or 2.8V at 1mA load. Which means that the output resistance is roughly 400...500OHms.

hartytp commented 7 years ago

Thanks @gkasprow!

So, given that SNC_CLK is a low current CMOS output:

jordens commented 7 years ago

The fanout (andf the CPLD) are there to do the buffering. SYNC_OUT only needs to be matched on the branches to the DDS (SYNC_IN, as I described above). The rest doesn't matter.

hartytp commented 7 years ago

The fanout (andf the CPLD) are there to do the buffering.

ACK, but let's increase the termination resistance a bit.

gkasprow commented 7 years ago

@hartytp the SYNC_CLK is delivered to the IC4 via level conversion resistive network. One can increase R31 to even 1kOhm. We need only to make sure that LVDS buffer see signal amplitude at least 200mV.

hartytp commented 7 years ago

@gkasprow Okay, if you're happy this will work reliably, that's fine then.

jordens commented 7 years ago

I split the pending open items from this issue into #270 #271 #272 #273 #274 #275 #276 #277 #278 #279 #280 #281 #282