-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
3U DDS (URUKUL) discussion #191
Comments
Can you remind me what the plan for clock distribution is? Is the idea that we'll distribute a ~100MHz clock to Kasli + Urukul (via SMAs/backplane/CDR from DRTIO) and then use local PLLs to generate the DAC clock? Will you use the PLL inside the DAC, or add an external IC (HMC830 or similar)? |
At the moment the clock can be taken either from front panel SMA or Kasli clock distribution. I assume we use the PLL in DDS chip. |
While we are in the early stages: we might consider using AD9914 instead of AD9912, for two reasons:
Particularly for DDS chips which are programmed over serial, profile mode is very handy because it can allow fast frequency/phase/amplitude hopping with deterministic timing at faster timescales than one can reprogram everything over SPI. We use this methodology for our microwave generation in the magtrap. The user does not need to use profile mode if they don't need/want it, but it can be handy e.g. for hopping around the hyperfine manifold. Also, a 1 GHz clock on the DDS limits us to ~400 MHz (assuming we put reconstruction filters etc on the Urukul board). If you go with the AD9914, you can run at e.g. 2 GHz clock frequency, which lets you go up to ~800 MHz output frequencies, which is handy for some groups that drive 600 MHz AOMs, for example. We run ours at 2.4 GHz. I would use an external PLL for the reference clock generation (e.g. HMC830, something already in Sayma so the gateware will be written) because I think they tend to be better/more flexible than the internal DDS PLLs. |
Third reason: we already know the main silicon bugs of the 9914, but not those of the 9912. |
That being said, if someone from ADI can confirm that the 9912 is bug-free, I would prefer it. |
Take into account that ad9914 cost is 188$ while AD9912 is 61$. This is the most expensive part on the board. It consumes 3W of power while AD9914 consumes about 1.3W. 12W (4 channels) of power dissipation just for DDS chips is quite a lot. I have devkit with 9912 so can test some functionalities. |
This cost difference is not zero, but given the additional functionality I'd argue it's definitely worth it. $120 per channel is a very small cost in the types of setups these boards would be used in. The power dissipation is definitely an issue to be considered; however, with forced air this can certainly be handled (and this is in fact what we do with our hardware). The decision that needs to be made here is basically about how capable we want/need Urukul to be. Is the target market just to do simple CW signal generation for AOMs? Or are people going to use these to generate signals for pulsed setups (with some modulation or switch afterward)? What kind of flexibility would be desired? From my standpoint, the AD9914 gives the option for substantially broader use cases, at a pretty low cost ($500/board extra, assuming a 4-channel board), and with no additional complexity on the gateware/programming side. One of the main issues I see is that people may want a solution which can do pulsed operations, or fast frequency/phase switching, but may not be ready to commit to the full Sayma system in the crate (which is very large and expensive compared with the Kasli/EEM ecosystem). By changing the Urukul to the AD9914, one would be able to bridge this functionality gap more readily, and provide a more "mid-grade" performance solution. |
For me the only difference at the moment is that I already purchased devkit with 9912. To do quick tests with 9914 I would need another devkit for 700$. They have different interfaces so cannot connect my board with 9914 to 9912 devkit. |
How do you want to connect the profile pins to Kasli? Bearing in mind that the IDC only has 8 LVDS pairs to control all 4 DDS channels, we'd need to use multiplexed IO. Depending on how we do that, it may not end up being that much faster than reprogramming the DDS over SPI.
Currently, we're budgeting for 6W (0.5A of 12V) per EEM. If we go for the AD9914, we should probably increase that to more like 1.5A per EEM. That would mean increasing the current rating of the power connectors on Kasli/VHDCI carrier (currently 5A IIRC). |
How about giving users the option of using two IDCs? In that case the timing-critical profile selects and RF switches would have dedicated lines. It would also mean that you only have to draw 0.75A per IDC. Even in the AD9912 case, it's not clear how the RF switches are controlled. |
@gkasprow |
@jordens +1 to all of that. Also FWIW, we'd much prefer the AD9912 to the AD9914. We would also really like this design to run from a single IDC. |
@gkasprow When you produce the prototypes for this board please can we buy 5? We'd like these asap, and don't mind using prototype hardware... |
@hartytp So we will make at least 6 prototypes of DDS? One stays at WUT, others go abroad. Anybody else wants first prototypes? |
@gkasprow Thanks! That sounds good. Just send me the quote when you're ready. |
I agree with @dtcallcock; my vision was that you have two IDCs to cover the 4 channels (allowing for profile select, plus fast rf switch open/close). |
I doubt NIST will be buying any of these boards if the AD9912 is used. That is not intended as an attempt to influence the design, but rather just informational -- it would just be a major step below what we already have in terms of capability. I also think that one could end up making two board designs: an Urukul "basic DDS" board and another board with higher performance (fast switching, higher clock frequency) featuring AD9914s and two IDCs. This of course doubles the design and prototyping work and requires additional funding from someone else. I do think that the market for fast switching and higher output frequencies is substantial, and that it should be an important consideration for developing an ARTIQ hardware ecosystem in general. I recognize that Oxford has their own set of priorities here, and that they are focused on that. |
@dhslichter We can always make two wersions of DDS board. One - simplified with minimal cost, second - high performance used with two IDCs. |
@hartytp just curious, why the "much prefer" for AD9912? |
@gkasprow you read my mind :) |
@hartytp @dhslichter @jordens Guys, we can make variant design. |
This sounds quite complicated. Can we please keep the Kasli ecosystem simple? |
@sbourdeauducq This is low cost alternative to having two boards design. We can even call them differently :) |
@dhslichter Maybe "much prefer" is too strong, but prefer nonetheless. To explain our priorities: We are setting up an experiment which will have two ion traps, each with Ca + Sr. We will use Sayma for qubit manipulations, which require pulse shaping etc. For everything else (cooling AOMs etc) we hope to use Urukul, with Novogorny for noise eating (initially in software, but eventually in gateware). Given that we need 60+ channels of RF for this, both cost and power consumption are important to us (our labs' AC is only 10kW). As the AD9912 can do everything we would want, and is cheaper and less power hungry, we prefer it. Beyond that, I think there's a lot of advantage to keeping the Kasli ecosystem as simple and low cost as possible and avoid adding features that aren't actually needed. IMO the profiles on the AD9914 aren't that useful since one can reprogram the DDS over SPI in ~1us, which is fast enough for most cases. Using up two IDCs for this design is a pain: more ribbon cable wiring (or backplane sockets taken up); and reduces the number of these one can run from a Kasli. This is particularly true for our initial experiments, where we want to run as many of these as possible from a single KC705. Edit: in a similar vein, I'd be pro using the DDS's internal PLLs rather than an external synth IC unless it's really necessary... |
If we end up with both 9912 and 9914, I would prefer two board designs, and keep each one as simple as possible. |
Separating two different issues here: (1) whether we multiplex the RF switch TTLs, or just run them directly from the IDC; and (2) how we update the DDS chips. (1) While I agree that @gkasprow's proposal would work in principle, I also agree with @sbourdeauducq and @dhslichter that it wouldn't fit in well with the way we would use this hardware in the lab. I think the extra complexity it introduces isn't worth saving the IDC. So, I'd prefer to run the switches directly from the IDC (1 LVDS pair per switch). (2) As I mentioned above, our main use case for this hardware would be running the DDSs in "constant update" mode as part of an intensity servo. This is a bit messy because the user can only change the DDS frequency/phase/amplitude at fixed times, but there isn't a way of getting around that without introducing an extra amplitude modulator of some form after the DDS. In practice (aside from the servo loop), the user would only update the DDSs while the switches are shut, so that they aren't sensitive to the DDS update timing. If we do put 2 DDSs on the same SPI bus then the delay between updates is ~3us, which is a bit long for some of the experiments we want to do. So, it might be worth considering using DDR to update both DDSs at once. As the DDSs are identical, this doesn't introduce the kinds of corner cases that @dhslichter is worried about. |
@hartytp @dhslichter So we could use double channel DDR SPI bus to control 4 DDS chips at once. This would consume 7 of 8 LVDS lines. The last one would be used for UPDATE signal. |
@dhslichter Another issue is with AD9914. With second IDC connector, we will use 4 signals to control the output switches and remaining 4 to switch DDS profiles. But each DDS has 3 profile inputs. How would you like to connect them? One LVDS line per each DDS chip connected to one profile input or some fast serial register that handles all 4 chips * 3 inputs = 12 signals. |
@jordens @hartytp @dhslichter
|
@jordens @hartytp @dhslichter |
@gkasprow Thanks for doing that @gkasprow! The schematics look really nice. Should we consider using a different output amplifier? AFAICT, there's no need for a special low phase noise amp here (e.g. we're using the DDS's internal PLLs), so we could go for something which dissipates less power and is a bit cheaper. Not sure what P1dB people want for this design -- although, if it's used with the RF PA, which has 40dB of gain, then even 0dBm is enough -- but, something like a AG203-63, which can run directly from a 3V3 rail might be a good choice. This is a little cheaper and would shave 1.6W off the design, which would make thermal management a bit easier. Edit: anyway, there are plenty of good options for this. @jordens if you specify a P1dB and lowest frequency of operation then we can make a choice. |
|
How about a single bi-colour LED: green power/temp good; red over-temperature. I don't see the point having LEDs to indicate switch/profile statuses. |
@hartytp |
@gkasprow Thinking more about thermal management: the LVDS interface takes up quite a lot of power in this design. Is there any way we can simplify it/reduce the power a bit without sacrificing performance?
|
Another point for consideration: we can potentially shave another Watt from the power budget by replacing the ADCLK948 with an ADCLK846. This doesn't provide a mux, but personally I'd be happy with solder jumpers for that. My guess is that users won't switch clock sources often at all, so the solder jumper is fine. |
@hartytp we can also use CDCLVD1208RHDT which consumes same amount of power but has input mux. Cost is also the same. |
@gkasprow From a quick look at the data sheets, that looks fine to me. Comments:
|
@hartytp Generally, PECL devices have much better characteristics than LVDS ones due to much lower output resistance and sharper edges. But power consumption is real nightmare. This is the main reason why LVPECL is used mainly for clock distribution. |
@gkasprow Do you think we'll get decent performance using only half of the LVDS signal for the clock daisy-chaining (after including a bit of loss in cabling etc)? Or, do you think we'll need baluns on the clock input and output after all? If there is a doubt, then maybe we should add DNF pads for the baluns. |
Can the clock daisy chaining circuit have a powerdown? It would be nice to have a reasonable quality clock available if people want, but be able to DIP switch/jumper to disable (and thus get rid of the power dissipation too). Waiting for @jordens to weigh in but to my mind, if you are driving AOMs, you'll need another power amp anyway so you might cut down on power dissipation by doing away with the output amp altogether, just using a reconstruction filter (user solderable) and the digital attenuator and switch. This assumes sufficient gain in the power amps though (probably at least ~40 dB would be required). Most of the DDS chips will work with a sinusoidal input clock and a balun. How about just using a passive splitter and requiring the user to supply all clocks externally? This seems to me to be not so different in terms of the complexity of external wiring (you are still not sending any signals over a backplane, all on front panel), but it cuts down on power dissipation, will not degrade the clock quality, and can work for clocks up to 1 GHz. |
Agreed, if one has a PA with decent gain then the output amp on Urukul is not required. I'd be happy scrapping it. |
I'd definitely prefer to keep the clock buffer IC on this design.
Assuming one can just leave the SMA un-terimated when not in use, the clock daisy chaining circuit doesn't dissipate any power if it's not used. Thus, there's nothing to do here. Even if one does terminate it, the extra power consumption of a single LVDS line is pretty negligible for this design. I'm not sure that's the right place to try to optimise. |
I'll catch up on the remaining pile of comments later. Thanks to all for participating in this! AFAICT we are heading for two board version here. The DDS requirements for Oxford and optIclock are already different. And the IDC connector usage is as well. I have updated the current idea as far as I could on the wiki: https://github.com/m-labs/sinara/wiki/Urukul#idc-usage Let's try to discuss the individual topic areas in individual issues, like @sbourdeauducq did with #193 |
@gkasprow What's the timeline for finishing the designs for Urukul & Kasli and ordering prototype hardware? |
So far they are not funded yet, I mean the projects officially don't exist
at WUT. And we are focused on other hardware.
I've just published updated Kasli schematics which seem to be complete.
Once we accept them, can begin with routing.
|
I did early estimation of available board area.
It seems that we can easily fit 4 channels on 100x160 Eurocard.
There are several questions which need to be answered before we continue with schematics:
I assume we don't need clock shaping circuit in AD9912 and we will route DAC output (pins 50,51) directly to the circuit copied from Allaki.
do we need to measure output level as it is done in Allaki design? Should I remove AD8363 or add some I2C/SPI ADC ?
we need to control several IO lines per channel. Which one can be common and which can be common?
I assume that DDS Reset, S4...S1, IO_update, CLKMODESEL can be common while PWRDOWN should be individual. For output channel switch, we would need individual RFSW control. Attenuator can have common LE, CLK and RSTn.
How we distribute SYSCLK? I assume we have SMA input on front panel and some other connector (i.e. mmcx) on the other side of PCB to route via jumpers to Kasli clock distribution. I assume we will use 1:4 clock splitter and input circuit as it is on Sayma RTM.
I copy loop filter from devkit
What about SPI control? I can connect 4x HMC542 to have 32bit data and one CS. I can also connect them as 2x 16bit but additional CS will be needed.
the same I can do with SPI registers (SN74LV595) to have 32it data.
I will use 8 output address decoder ('138) to connect to all CSn lines. We can route additional CSn or treat state 000 as none SPI selected. SPI address decoder map:
000 - no slave selected
001 - DDS1
010 - DDS2
011 - DDS3
100 - DDS4
101 - attenuators CS
110 - serial register CS
111 - reserved
LVDS assignment:
LVDS1: SCKI
LVDS2: SDI
LVDS3: SDO
LVDS4: SEL CSN3
LVDS5: SEL CSN2
LVDS6: SEL CSN1
LVDS7: IO_UPDATE ??
LVDS8: RESET ??
for supply I want to use similar double output converter modules as for Sayma RTM + LDOs regulating down to +5V and 3.3/1.8V
do we plan to compensate for clock delays? We can use one of clock outputs and route it back to Kasli phase detector.
below is initial component placement on PCB. Each channel will have individual shield.
The text was updated successfully, but these errors were encountered: