-
Notifications
You must be signed in to change notification settings - Fork 4
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
[RFC] Shuttler GW/SW requirements specification #11
Comments
FWIW, although I have been occupied with other things these past couple of months, my current plan is to try to make a Shuttler design that is EEM/Kasli compatible, similar to how Phaser has been developed. If others are interested in pursuing the specificiations above, perhaps we should branch or rename the EEM version to something else? |
Several questions arrive:
|
Going for EEM would mean reduced channel count; I am also looking at ways to reduce power consumption by choosing different DACs and amps. We were doing some DAC testing in the lab before the quarantine but that has been stopped, unfortunately. If the CPCIS form factor works, that's great, but I am hesitant to be the guinea pig here. My preference would be to develop a board as an EEM, which would allow us to get up and running, and ease the debugging process (as with Fastino and Phaser). Down the road, if the design is proven out and there are advantages to using a single card as a DRTIO satellite, rather than running over EEM from Kasli, one could port a lot of the design over. Total channel count desired would be something like ~100 for a given setup, possibly a bit more. I think the primary limitation will be power dissipation in the rack, and thermal management. I don't think we need 24 channels per card, 12-16 would probably be just fine. |
@dhslichter For the development of the Shuttler HW & GW we received already the research grant. It is clearly stated that it should support MTCA so we must somehow cope with it. |
@dhslichter, @gkasprow - very interesting conversation. Interesting enough that it should have its own issue ;-). Please continue at #12 and let's leave this issue for comments on GW/SW specification as it seems to be at least partially independent. |
OK, the form of the module, as well as the interface to ARTIQ is still to be discussed. Nevertheless, what about the rest of the proposed specification? Does it fit your use case? |
@hartytp @dhslichter Do you have any thoughts on HDL / SW side of Shuttler? We'd like to specify it and start work. |
I'm not involved enough in this project to have a useful opinion I'm afraid! |
Replying to top post:
Use AD9117 instead, 14 bit parallel LVCMOS bus with interleaved data (DDR)
My current vision would be to have data streamed to a Shuttler from a Kasli, in the way that Phaser is done, so Shuttler itself would not need DRTIO.
Yes, 125 MHz (max clock for DAC, good general value for RTIO clock too)
Again, I aim envisioning that reduced-representation data are streamed from Kasli to Shuttler. The FPGA on Shuttler would be in charge of turning the reduced representation into samples at the full data rate. For higher resolution, this MAY include performing sigma-delta modulation to increase the output resolution at ~DC. Otherwise, would be simpler.
Again, I envision this happening on Kasli.
Use the same architecture as for waveforms on Fastino or Phaser.
Yes, TBA
See above, FPGA on board hosting Shuttler (via FMC, or directly) will need to do calculations to turn reduced representation of waveform into samples at full data rate.
Let's do this in the same way that Fastino, Phaser, etc do it.
Again, see above, do the same way as Fastino and Phaser. |
Camming back to GW specification:
Shuttler will be mounted on some FMC carrier (maybe AFCv4 or CPCIe carrier like this one). Such carrier can run in standalone mode or be a satellite to Kasli.
Up to my understanding, Fastino works in a different way than Phaser. If I'm to wrong, current GW for Fastino allows setting output levels at specified timestamps whereas Phaser is AWG. @dhslichter What architecture for waveforms do you have in mind? |
I think the goal would be to be more like Phaser. We're looking to have parameterized waveforms, with some combinations of sine waves and splines and products of these -- the specification needs to be determined still. However, the waveforms would for sure be in some reduced representation that is not just (time, voltage) pairs. |
@dhslichter - how do you find the process of determining these specifications? Do you have any timeline for that? Do you think you can specifiy that? |
This is something that we want to contract with M-Labs to have them design for use with ARTIQ. Are you wanting to design your own independent gateware to have it emit pulses, or are you planning to work with M-Labs on a solution for ARTIQ? An official contract for this will take at least two months, maybe more. However, if you are just doing your own independent thing to be able to demonstrate the functionality for grant purposes, we can just discuss a draft specification here on a short timescale. |
Is this contract going to give a rise to something more generic? I mean to be used throughout different boards, e.g. Sayma, Phaser, Shuttler, maybe Fastino? A generic waveform forming API for ARTIQ? |
The initial idea was to have just AWG functionality that is sufficient to run the production tests. If we can do easily something more sexy that makes the end-used happy, we can do that. |
There already exist several different versions of this for e.g. Sayma and Phaser, and @jordens has proposed yet a separate parameterization in quartiq/phaser#2 as well. My general feeling is that the specific applications for ARTIQ are sufficiently varied that probably there isn't a one-size-fits-all method for generating all possible types of waveforms one wants. Different use cases call for different parameterizations.
To be concrete, having waveforms defined as One feature of Shuttler that would be nice to implement, if you are looking for more of a challenge, is delta-sigma modulation of the output to increase the effective bit depth at DC to 16+ bits. This could be an interesting gateware project if you are looking for something a little bit fancier to implement. We did some test experiments at NIST with dithering to increase the low-frequency resolution and this should work. |
@gkasprow @AAWO my concrete suggestion for how to do the AWG in the gateware is as follows:
|
Generally we had some problems with DAC devkit we were working with. I'll looking into this in this month and hope to publish initial version of the gateware at the beginning of August. |
problems with devkit? anything concerning? |
Devkit works with ADI software but for some reason doesn't work with ARTIQ. It looks like a DAC initialization problem. |
meaning that the SPI communications are broken? |
I was not actively taking part in the development up till now. I only know he couldn't get it working and I'll be looking into it as soon as I'm back from vacation (on 20th July). This devkit exposes USB interface for programming DAC and clock tree configuration. From what I have seen so far, provided software is a bit confusing and I hope this is the source of the problem. |
I've read through the issues regarding Shuttler and came up with requirements specification list. The final Shuttler's specification will also be a foundation for future ASIC (multi-channel DAC compatible with Sinara/ARTIQ) specification.
I imagine the operation such that Master sends all experiment's data branches (DAC output value + timestamp + DAC ID + some branch ID) to Shuttler which stores it in the SDRAM - the amount of data sent by Master is constrained by the SDRAM. Then Master can send just current branch ID to Satellite.
Shuttler writes current data branch from SDRAM to required DACs' sequencers FIFOs. If the branch is changed before all data from FIFO is read, then FIFO is cleared and new data is written to it.
The timer can be started after Master's request. The timer's initial value should be dependent on the latency between Master and Shuttler's output as well as the delay between sending the 'start timer' request to next Shuttlers (which should be possible to determine by Master). This way all Shuttlers' timers should be aligned.
Part of the GW (namely: DAC handling) is going to be designed in Verilog, because later on it may be used as a test field for ASIC development.
The text was updated successfully, but these errors were encountered: