-
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
Sinara FMC and VHDCI support #148
Comments
I'm pulling together the list of features that are expected to be supported in v0.1 software and gateware for Sinara #139. This is intended to be a minimal list of what /will/ be implemented not a wish-list. One decision to be made is how to use the FMC on PCB_Melino and PCB_Sayma_AMC. Proposal:
|
@dtcallcock says
I like this suggestion. FMC-VHDCI is more extensible than the Creotech board and fits better with the Kasli 3U ecosystem. |
It is not so much about gateware reuse. It is about limiting the number of bitstreams: there are a bunch of problems with supporting dynamic reconfiguration of what e.g. one extension connector on the VHDCI board does. E.g. we can't really switch between a TTL and a SPI without having separate bitstreams. |
@jordens Good point. I'd naively assumed that I'd be able to run the DAC extension board from the VHDCI carrier if I need to. Forgive me if it's a stupid question, but what prevents us from muxing the SPI and TTL in gateware? |
answering my own question: given the number of different ways one could wire up multiple SPI busses, anything sufficiently flexible to be genuinely useful is too messy/complex to be practical to implement... |
It is not impossible but there are many unknows. |
@gkasprow Please confirm the extent to which the FMC is VITA 57.1 compliant? |
How about if we fixed a pinout for a couple of combinations like 'all TTLs' and '1xSPI + TTLs' and just supported muxing in gateware between those. That would cover most use cases and only add a modest number of PHYs. Then we'd just accept Camera link, SERDES TTLs and non-standard pinouts would need a different bitstream. |
It is LPC connectivity on Sayma. There is only one exception - the gigabit transceiver link is routed to IOSERDES so it works up to about 2Gbit/s depending on device speed grade.
|
@dtcallcock sure. we could consider restricting the extension usage the following way: It still doubles the number of PHYs and requires agreement about exactly how we pin-out an SPI bank. |
@jordens How bad is doubling the number of PHYs? Where are we on FPGA resources? |
For what I outlined you need to have twice as many PHYs as you can actually use. Every pin can be used for just one of two PHYs. |
@dtcallcock Yes. That would not work. It is one reason why we should not try to bend "standard SPI" too much. 4xTTL (for LDAC and a couple of additional CS) + 1xSPI would work. |
@jordens point taken. The extra DAC isn't worth the pain of having to maintain a custom bitstream. We'll go to one DAC then. |
This is something we should agree on before any SPI extension boards get made. What would your preferred pin-out be? |
This was arbitrary. And just for four extensions. But yes, if there are good SPI-to-I2C converters (SC18IS600), then why not. Or one could look at making the SPIMaster core so generic that it can just as well talk I2C. Like the serial protocol engines in modern µCs. But it's quite some work.
One CameraLink would likely occupy two extension headers.
Sure. Same problem there.
It costs a handful cycles of latency. i.e. SPI reads would be even slower than they are now. The coding required is not gigantic. It is more about tedious corner cases and attempting to get resource usage and timing closure lined up for these highly multiplexed designs.
The exact order doesn't matter much. |
Let's not bother with I2C for now. If it becomes a problem then we can look into upgrading SPIMaster later.
Sorry my mistake. Thanks for clarifying.
Okay, let's not bother with this for now, and stick to something along the lines of your original suggestion.
Maybe, use one VHDCI exclusively for SERDES IO, and multiplex the other one? |
Issue title updated to reflect need to decide on support for both FMC and VHDCI. I started to summarize conclusions about this Issue in the leading post. Metlino VHDCI anticipates applications that a) require very-low latency, high bandwidth link to ARTIQ Core Device (Metlino) or b) convenient re-use of 3U peripherals via VHDCI Carrier. CameraLink does not fit this profile for the following reasons.
A broader comment is that we don't have to anticipate all future uses of FMC/VHDCI this winter. Let's settle on something simple for now. Based on discussion thus far and assuming CameraLink is dropped I propose the following. Call it jbqubit_p1. gateware configuration optionsConfiguration options for groups of 8 I/O.
VHDCIPCB_Metlino VHDCI 1 FMC
PCB_Melino HPC FMC
PCB_Sayma_AMC LPC FMC
|
@hartytp Would c2 permit operation of Zotino using VHDCI Carrier? I've not followed exactly how Zotino uses the SPI LDAC line.
|
I'll still bother with I2C. We need it.
One should probably collect use cases and determine priorities... |
Does somebody have an imminent use case not covered by the proposal I made earlier today? We don't have to anticipate all future uses of FMC/VHDCI, just enough to get Sinara off the ground. It's gateware so accommodating @jmizrahi @jasonamini is what I proposed compatible with your many-channel PMT-readout scheme? |
What camera link standard do you want to use?
Base or Medium/Full one?
There are 2 ways to do that – using IOSERDES or external deserializer (http://www.ti.com/product/DS90CR287)
The deserializer gives just 28 signals + clock which would fit to 2 IDC cables (we treat them as 2x16 LVTTL).
But it is just Base configuration + serial link + 2 control signals. The advantage is simple implementation in the FPGA.
Medium configuration would need 4 IDC cables and second deserializer.
Another way is of course IOSERDES where for Base configuration we could use just one IDC cable (4 LVDS @595Mbit + 1x LVDS clock @85MHz)
This also means that Kasli banks have to be routed to the IDCs in standardized way. We can define first LVDS pair as the clock/io.
3 remaining LVDS signals will be used for serial communication and synchronization.
Second IDC would add another video channel + remaining 3 LVDS control channels
Third IDC would be just supplement for 64 bit video required by Full standard
The CameraLink standard defines 4 synchronisation LVDS channels and 2 serial channels. How do you plan to use them? I assume you used frame grabber that took care of communication. Is Andor control protocol described?
So do you want to have just Base configuration that consumes 2 IDCs or implement Full configuration that would need one more IDC?
Of course we can make IO board wired for Full configuration and give an option to use 1, 2 or 3 IDC channels (Limited Base, Medium or Full)
|
Let's move CameraLink discussion to #156. |
@jordens said
How is I2C used? |
The wiki answers my question. "I2C from each VHDCI is routed to TCA9548 8-ch multiplexer on VHDCI Carrier." |
@jordens @sbourdeauducq Is my proposed specification from 10 days ago acceptable? If so please close Issue. |
@jbqubit It is unwise and unsound IMO but certainly acceptable. Closing. |
It might help to reiterate the intended scope of this Issue.
I don't want to discourage others from developing other interfaces including CameraLink (#156). The present discussion is intended to come up with a simple baseline specification for the FMC and VHDCI IO.
What aspects of what I proposed (jbqubit_p1) cause you concern? |
@jbqubit Who is your target audience here? Is this a specification that you plan to have implemented or would you like someone else to fund this? Please consolidate and clean this up w.r.t. the proposals and data elsewhere (e.g. in #129, #149). From the top of my head:
|
My target audience is M-Labs who is implementing v0.1 support for the Sinara hardware.
I don't recall where this conversation is at the moment. Can you link to it? Is there an estimate as to the speed penalty?
PCB_Metlino and PCB_Sinara_AMC are distinct targets and will already have their own .bit files. I see no harm in supporting FMC HPC for PCB_Metlino and FMC LPC for PCB_Sinara_AMC.
OK. VHDCI on PCB_Metlino is directly connected to the Metlino FPGA. This is the primary low-latency (10's ns) IO in the Sinara system. It is desirable to use SERDES_TTL_PHY for the VHDCI IO. The (VHDCI Carrier)[https://github.com/m-labs/sinara/wiki/VHDCI%20carrier] is intended to provide IO breakout for use with (EEM)[https://github.com/m-labs/sinara/wiki/EEM] peripherals.
Good point. I provided to concrete examples of FMC cards. One for PCB_Metlino and one for PCB_Sayma_AMC. Please plan support for each in the respective bit files. Accommodation of other FMC can be addressed down the line. In light of your comments I propose a variation as follows labeled: jbqubit_p2. Define configuration options for groups of 8 I/O.
PCB_MetlinoVHDCI 1
VHDCI 2
FMC
PCB_Sayma_AMCFMC
|
WE use FMC LPC for both Sayma and Metlino.
At least from FPGA IO pins point of view, it is LPC so the IP cores would be the same.
The only difference is on number of GTP links assigned. That’s why HPC connector is used and we call it HPC.
|
Again. SERDES_TTL_PHY is a superset of TTL_PHY. Toggling between them is idiotic. |
The intent of supporting "togging" between c1 and c2 is a) to permit attachment of either fast TTL hardware or TTL+SPI hardware b) to compile only a single .bit to cover a range of use cases. The duty cycle for switching any given EXTn from c1 to c2 is weeks or months. So if I understand your statement about latency, it's OK if toggling takes many micro-seconds. @jordens This is what you proposed several weeks ago.
@jordens Do you mean the Sayma or Metlino FPGA? Do you have @sbourdeauducq What are the resource requirements of SERDES_TTL_PHY and SPI_PHY with a FIFO depth of, say, 128? Since the intent is for the Kasli Carrier and VHDCI Carrier to be interchangeable we need to square this away. I expect Kasli implementation will also support multiple IO configurations in a single .bit for each of the 8 EMM ports. Configurations based on planned peripherals includes 8 of SERDES_TTL_PHY (eg BNC DIO breakout) and xx TTL + SPI_PHY (eg Zotino, Novogorny). |
No Joe. Being able to toggle is a speed penalty for SPI (always). |
--Updated at 7:40pm GMT--
Call the following variation jbqubit_p3. PCB_MetlinoVHDCI 1 and VHDCI 2
FMC
PCB_Sayma_AMCFMC
|
Recap of discussion in this Issue.
Physical resources
I/O options offered by ARTIQ
default support
to be determined by this Issue...
The text was updated successfully, but these errors were encountered: