This page describes the functionality that needs to be added on the nanoFIP chip gateware.
The FMC-nanoFIP will also be updated to support the new gateware functionality and also reliability issues.
--> The current gateware version available here
1. Data Interface
- Addition of SPI interface
- A pin to select SPI/ WISHBONE; the 2 interfaces would share the same lines
- Check EPC ser/des: https://gitlab.cern.ch/cce/cce/-/blob/master/fgclite/cb/nf/src/rtl/nf_top.vhd
2. JTAG
1 new JTAG variable; ideally 2 sets of JTAG ports on nanoFIP
- Addition of another set of JTAG signals (TMS, TCK, TDI, TDO, TRST) so that nanoFIP can either reprogram the System Board OR the chain of peripherals. Or this we could do with multiplexers on the Carrier/Mezzanine?
- Addition of a new variable that would define:
- which JTAG output to select
- the beginning and the end of a JTAG reprogramming; this would drive the TAP TRST (*)
3. Diagnostics data
Decision: 2 bytes per slave every cycle from .. Note: upon startup masterFIP has Sending of the DI/OT crate diagnostics data. Here I see few ways we could do it and let's discuss to nominate the best:)
a) Adding a new variable for diagnostics data; this would require:
- number of bytes: ˜45 Crate Monitoring Data
- increasing nanoFIP memory (or using reserved bytes?)
- adding a set of var_rdy and var_acc lines
- this would be a cyclically exchanged variable, which means it would reduce the effective bandwidth
- let's assume 1 Mbps and that we go for an 8-bytes-long-variable; counting ID_DAT and turnaround-time, this would "cost" ~200us x #crates on every macrocycle.
b) Using some bits of the Presence and Identification variables to pass the diagnostics data
- the presence/identification variables are usually not addressed on every cycle, this is embedded in the WorldFIP protocol; Julien to confirm though the use on the cern applications; adding diagnostic data there won't affect the users
- We could use the Identification variable bytes 3-9 and/or presence variable bytes 4 and 6
- Presence and Identification are always addressed at the end of a macrocycle; the bytes could be added together with all the var1 bytes, upon a var1_rdy
c) Using the "nanoFIP status byte"
- This byte with some access diagnostics; it is not being used by any of our users.
- It is an extra byte that if configured (NOSTAT configuration pin) it is sent together with every nanoFIP-produced variable.
4. Pinout
Please check FMC-nanoFIP redesign page.