Rev 5.0 GBT-SCA The Slow Control Adapter for the GBT System Alessandro Gabrielli (Kostas Kloukinas, Paulo Moreira, Alessandro Marchioro, Sandro Bonacini, Filipe Sousa) Preliminary 1 Rev 5.0 1. DOCUMENT HISTORY 18/04/2008 Rev 1.0 28/04/2008 Rev 1.1 07/05/2008 Rev 1.2 26/05/2008 Rev 1.3 28/05/2008 Rev 1.4 12/06/2008 Rev 1.5 18/11/2008 Rev 1.6 27/12/2008 Rev 2.0 16/01/2009 Rev 2.1 22/05/2009 Rev 2.2 26/10/2010 Rev 3.0 20/11/2010 Rev 4.0 23/05/2011 Rev 4.1 16/06/2011 Rev 4.2 20/10/2011 Rev 4.3 22/11/2011 Rev 5.0 Preliminary 2 Rev 5.0 2. GENERAL This document describes the GBT-SCA, a general-purpose integrated circuit for the monitoring and control of the electronics in HEP experiments. This document focuses on the user-visible aspects of the component such as its logical and electrical interfaces, programming features and operating modes. It also includes detailed descriptions and specifications of the chip pin-out and electrical characteristics. The Slow Control Adapter (SCA) chip is designed to work in parallel with to the GBT optical link bidirectional transceiver system of which it extends the functionality. To understand the SCA in a system using GBT links, a brief explanation of a GBT based system is provided in the next section. 2.1. Overview of the GBT System Typical High Energy Physics systems are today composed of three functional subsystems each of which traditionally implements its transmission system from the control room to the electronics located in the detectors. These systems are: A fast timing distribution system responsible to deliver to the experiment the system clock and several fast trigger signals, and sometimes some fast signal from the detector to the control room A data acquisition link carrying the collected data from the detector to the control room A Slow control system carrying bidirectional traffic from and to the control room and the embedded electronics in the detectors The GBT project aims at providing a bidirectional system carrying all three types of traffics mentioned above. Clearly this is achieved by sharing a common medium, which in the GBT system is expected to be a pair of unidirectional optical fibers each one with a capacity of about 4.8 Gbit/s. An appropriate bandwidth is allocated to each of the three tasks in the GBT system. The slow control part is one of the subsystems served by the GBT. The GBT protocol is totally transparent to the slow control protocol. The GBT encoded slow control information in the counting room, carries it along the other traffic on the optical fibers, and delivers the information unmodified to the GBT-SCA in the embedded system. A block diagram of the GBT system in illustrated in Figure 1 The GBT system consists physically of a dedicated ASIC called GBTX in the embedded electronics and of an FPGA called GBTFA containing several GBT channels in the counting room. The GBTSCA is connected physically to the GBTX, which implements the long-haul transmission medium for it. As the GBT system is based on a point-to-point architecture, the slow control system consists essentially in a local area network using a point-to-point topology. The bandwidth allocated by the GBT system to the slow control function is 80 Mbit/s. Preliminary 3 Rev 5.0 Figure 1 Control module, simplified view The arrangement shown in the figure assumes that the connection between the GBT13 and the GBTFA is done via optical fibers, the connections between embedded Control modules is done electrically using low voltage differential lines (LLVDS). 2.2. Overview of the GBT-SCA Architecture A complete system for the control of the embedded electronics is normally composed of the following four components: A computer in a remote control room is the brain of the system: it runs an operating system and an application program that by performing remote actions on an SCA is capable of reading and writing the user registers in peripheral chips connected to the SCA peripheral ports. A transport network, in this case the GBT system, carries physically information under the form of packets in a unified format between the counting room and the embedded SCA. The SCA itself is the embedded node of the system and translates the unified packets sent by the computer above into a transfer to one of the peripheral ports or an action performed by one of the embedded peripherals. The SCA has two independent e-ports to connect to the GBTs. One of the two ports is primary and must be connected in any case. The second one is to be used if two different GBTs need to share the slow-control. In this way, even if one of the two e-link brakes up, the second one can take the control of the SCA. Thus, this schema allows interfacing with one individual SCA Preliminary 4 Rev 5.0 through two different GBTs. In this way an automatic double e-port redundancy is guaranteed. A block diagram of this redundancy is shown in Figure 2. Figure 2 E-port Redundancy The peripherals to the SCA are electronic components accessible via one of the buses implemented in the SCA. These buses are, for example, I2C, JTAG, parallel I/O bus etc, as we will explain in detail below. In an HEP experiment these components can be front-end chips dedicated to the read-out of specific detectors, or monitoring chips for the control of environmental variables such as local voltages, temperatures etc. The communication protocol used between the control remote computer and the peripheral chips is a system is based on two layers: The first layer connects the remote control computer to the SCAs; the protocol on this layer is message based and is implemented in a way similar to standard computer LAN networks. In the GBT-SCA system, the GBT is completely agnostic to this protocol; packets from the remote computer to the SCA are transmitted unmodified by the GBT link. The second layer connects the SCA to the peripheral chips in the system via so called Channel Ports. The protocols used here are called the Channel Protocols. The first layer is unified and common to all SCAs, and is based on LAN architecture transporting data packets to and from the GBT and remote controllers. The second layer is specific to the channel, and different kind of physical implementations of the channels are foreseen. The SCA contains the blocks as shown in Fig. 3: On the GBT side A MAC Controller A Network Controller (NC). The SCA internal control and status registers are seen through a special interface capable for instance to report the status of the other SCA channels. An Arbiter, based upon Round-Robin technique, to enable the user ports, the monitors or the NC, one at a time, to send data backwards towards the GBT upon reply of previous requests. In this view the NC is also seen like the other ports and if a command is addressed to the NC, it sends an enable request to the Arbiter before sending data backwards. On the user side the SCA has a number of channel ports, sometimes including dedicated controllers, and organized as follows: A group of 16 I2C master controllers One JTAG master controller A group of 4 8-bit fully programmable and bidirectional IO ports, functionally similar the ones used in the Motorola PIA etc. These ports are multiplexed with the Memory Channel to save I/O pads. The selection is made via a hardwired input pin. Preliminary 5 Rev 5.0 One memory-like bus master controller with 8 bit data and 16 bit address data path, to access devices such as static memories, A/D converters etc. As stated above, this port is multiplexed with the 4 PIA ports. One serial SPI master bus. 32 analog channels, to be used one at a time, to be converted to a 12-bit value via an ADC port. 4 DAC 8-bit ports. 4 asynchronous external interrupts. These interrupts are continuously polled by the NC that provides a dedicated packet backwards to the GBT to let the users aware of the interrupt requests. The communication between these user accessible ports and the Network Controller handling the high level protocol with the remote computer is done via appropriate internal buses and is not visible by the user of the SCA. The dual network layer architecture introduced above is necessary to support applications where long cables/fibers are used between the control room of the experiment and the embedded SCA (therefore generating long delays) and to support the relatively slow buses chosen to interface to the front end chips, such as the I2C bus. This architecture assumes that the control is done by sending data packets (messages) to the respective channels, which interpret the messages as commands, execute them on their external interfaces (for example just a read or write operation to a memory bus) and return a status reply to the GBT via another message. The commands can be either addressed to registers located within the channel ports – configuration registers – or to devices located in the far front-end. In this latter case the command interpretation and execution is demanded to the front-end electronics. This protocol assumes that the remote devices controlled by the SCAs are seen from the control computer as remote independent channels, each one with a particular set of control registers and/or allocated memory locations. The channels operate independently from each other to allow concurrent transactions. The channels can perform transfers to their end-devices concurrently. To decouple the operation on the channel ports with respect to the one of the GBT link, the architecture assumes that all operations on the channels are asynchronous and do not demand an immediate response. Basically this means that all commands carried by the GBT link under the form of network messages are posted to the channel interfaces. This is easy to implement for write operations, where practically one works by posting write operations to the channels. For read operations a read request is sent to the channel; the channel performs the operation on its interface and returns a request of attention to the Arbiter. All upwards packets are acknowledged via either status or data words depending on the command type. Read commands send data backwards, which are auto-acknowledged; write commands send just the status of the channel as a backward reply. Figure 3 shows the GBT-SCA architecture as described above. A few details concerning the internal channels are also provided. Figure 4 instead shows a block schema of the MAC controller. Figure 4 shows the Reset Tree of the SCA. In particular the chip and internal blocks can be reset in different ways via: an external asynchronous reset pin that resets the entire chip, a GBT command to the MAC controller. In this way all the blocks except the MAC controller are reset as it was used the external asynchronous reset pin, a GBT command delivered through the NC to the uniquely addressed IO port, a GBT command to the NC that is broadcasted to all the IO ports except the Arbiter. Preliminary 6 Rev 5.0 Figure 3: block diagram of the GBT-SCA: Figure 4: Logic Reset Tree of the GBT-SCA Preliminary 7 Rev 5.0 Figure 5: MAC to Network Controller interface 2.3. Radiation tolerance features To be able to operate in an LHC environment, the SCA is designed with some rad-tolerant features. These features include: Resistance to high total ionizing dose (TID) as required by LHC electronic systems Inclusion of triple redundant circuitry on some critical logic blocks for single event effects (SEE) robustness. Critical control state machines and logic are protected by redundancy. This will be implemented using either spatial or temporal redundancy as required. The data path on the SCA instead is not protected by redundancy and errors that will occur due to SEE will be detected through parity mechanisms. Such errors are not critical for the operation of the SCA, as corrupted commands can be re-executed by the remote controlling software. Preliminary 8 Rev 5.0 3. SCA PACKET DESCRIPTION 3.1. The protocol The SCA exchanges information with the remote computer using as transport layer the GBT link. The packets exchanged along this route are of a unified format. The remote computer typically initiates all actions by sending some commands to the SCA which then translates this command into an action to be performed onto one of its peripheral ports. The connection between the remote computer and the embedded SCA is of a point-to-point type therefore no addressing information is needed to be dispatched to the SCA along the GBT link. To acknowledge reception of each command packet, the SCA returns the received packet to the remote computer. In this way the remote computer knows that the command has been received at the destined SCA. The link between the SCA and the computer (through the GBT) exchanges only two types of packets: IDLE: when no useful information is to be sent, an idle is inserted by the transmitter and discarded at the receiver. This packet is a single byte long. DATA: Useful information is instead encapsulated in a structure which is defined as follows: o A Start Of Frame (SOF) byte o PAYLOAD bytes o A CRC byte o An End Of Frame (EOF) byte The length of this packet is variable and delimited by the EOF byte. The MAC reads also the content of the LEN byte (see below) in the PAYLOAD and checks that the length of the packet is correct by verifying that the last byte is indeed an EOF byte. The MAC also verifies the correctness of the CRC. The MAC adapter strips the SOF, CRC and EOF at the input of the SCA, and only the PAYLOAD content is delivered to the internal part of the SCA. The SCA can also generate packets to the control computer. Such messages are generated, for instance, upon generation of an interrupt in the SCA and upon completion of a read operation on an external peripheral port. In any case the SCA acknowledges the packets coming from the GBT via a so-called acknowledge packet. Figure 5 shows the forward and backward packet communications. When not transmitting useful data packets, the SCA generates idle packets. These idle packets are the same in both directions. Figure 6: SCA Packet communication system Preliminary 9 Rev 5.0 3.2. PAYLOAD Format The content of the PAYLOAD section is depicted below: CH# TR# CMD DATA Optional (LEN) 1 byte 1 byte 1 byte 1 to N bytes Figure 7: SCA-to-Port Command Packet example Figure 6 shows how a command is sent to a specific port. In any case a reply - Fig. 7 - is foreseen and this is sent back with a different PAYLOAD. In particular, the ACK byte is used to state the command status. In this way is the command has been correctly received by the addressed port is visible through the ACK byte. Only the RESET commands sent to the ports are not acknowledged with a reply packet. CH# TR# ACK DATA 1 byte 1 byte 1 byte 1 to N bytes Figure 8: Port-to-SCA Reply Packet example This is delivered by the SCA Node Controller to the channel identified by the CHAN field. The different field are defined as follows:: CH# specifies the SCA internal port to be addressed – i.e. I2C, JTAG, NC, SPI, etc. -, TR# is a byte used to identify the operation being carried out. This value is returned during the acknowledgement of completion of operations by the SCA to the remote computer. CMD is a command code that specifies a given operation to be performed on a channel port. The operation can refer to a specific internal register of the channel – i.e. a configuration register – or to a n external bus related operation, such as, for example, an I2C read or write. In this case an address field follows the command. DATA is a command dependent variable length field. LEN is an optional field that specifies the PAYLOAD length and can be considered as part of the DATA field. It is only used for I2C channels and accepts values from 1 to 28 depending on the commands: if the commands is the multiple write in extended addressing mode, i.e. two bytes are used for the address, 26 bytes can be written at most. On the contrary, if the command is the multiple write with normal addressing mode, i.e. one byte only is used for the address, then 27 bytes are available for writing. Preliminary 10 Rev 5.0 4. CHANNELS IN GBT-SCA 4.1. General Channels receive commands from the node controller and control the actions on the bus to which they connect as masters. These commands are contained in the data packet and therefore data contents, in a given packet, interpreted differently by each channel. The command sub-field (typically the third byte in a message to a channel) contains the code for the requested operation. Each channel has a set of valid commands as explained in this chapter. Channels receiving an invalid command do not execute any action and report the error condition to the node controller. Upon reception of a command a channel performs the required operation on its interface and then, depending on the specifics of the command, can return a reply to the node controller as a data block, which is then transmitted, to the destination in a message packet. The distinction between channels at the level of the GBT is performed essentially by software. The following paragraphs specify the content of the packets for each type of channel. In this implementation, the GBT-SCA does not support command queuing for the I2C channels. Only one command can be in execution at any one time. 4.2. Allocations of channels in the GBT-SCA Each channel in a network data packet (message) is identified by the first data byte in the data payload. The following table gives the internal address allocation for channels in the GBT-SCA: Channel Number [Hex] Function 0x00 Network Controller 0x02 Master SPI (Serial Peripheral Interface) 0x100x1F Master I2C Channels (16 identical) 0x300x33 Master PIA Channels (4 identical) 0x40 Master Memory Channel 0x60 Master JTAG Channel 0x70 1 out of 32 selectable Analog Input Channels (ADC) 0x800x83 DAC Analog Output Channel (4 identical) 0xAA SCA Reset channel, if combined with 0xAA command 0xFC Interrupt Channel 0, not addressable, active low 0xFD Interrupt Channel 1, not addressable, active low 0xFE Interrupt Channel 2, not addressable, active low 0xFF Interrupt Channel 3, not addressable, active low Figure 9: Channel number allocation The 0xFC-0xFF addresses are Reserved for the interrupts so cannot be used for CH#. 0xFF is then a Reserved TR# ID. Preliminary 11 Rev 5.0 4.3. GBT-SCA controller The GBT-SCA controller is a dedicated logic block inside each GBT-SCA, which is needed mainly for network and internal channels supervision. The GBT-SCA controller is reachable with the same protocol used to transfer data to the other port channels. The following registers are defined in the controller: Name Function CRA Control Register A - general CRB Control Register B – I/O Port Enable – default is 0, disabled CRC Control Register C – I/O Port Enable – default is 0, disabled CRD Control Register D – I/O Port Enable – default is 0, disabled CRE Control Register E – I/O Port Enable – default is 0, disabled SRA Status Register A SRB Status Register B Figure 10: Control and Status registers in GBT-SCA Controller Control registers are all read/write registers. They can be read back after a write operation to verify their contents. Status registers are read-only registers, as they are set typically by hardware inside the GBT-SCA. 4.3.1.1. Control Register A Control register A is a general control register for the GBT-SCA. It contains control bits, which are relevant for the operation of all channels in the GBT-SCA. The following bits are defined: Bit 0 1-4 Name MEM_PIA Function Comment Memory vs PIA selection Default at 0 to select the 4 PIA ports. When at 1 Memory channel is available Generates external reset Writing a “1” to this bit generates a 10 μs reset pulse on the Reset_Out pin. This bit is always read back as “0”. Read as a “1” during the reset time. Reserved 5 EXTRES 6 Reserved 7 Reserved Figure 11 Network Controller control register A Preliminary 12 Rev 5.0 4.3.1.2. Control Register B-C-D-E The node controller Control registers B-C-D-E are defined to enable, individually, the ports in such a way that if any port is disabled, it does not receive the clock. In this way the power consumption can be reduced at the lowest value according to the user constraints. By default all the ports are disabled. Bit Name Function B-0 B0 Enable port I2C-0 Enable address 0x10 B-1 B1 Enable port I2C-1 Enable address 0x11 B-2 B2 Enable port I2C-2 Enable address 0x12 B-3 B3 Enable port I2C-3 Enable address 0x13 B-4 B4 Enable port I2C-4 Enable address 0x14 B-5 B5 Enable port I2C-5 Enable address 0x15 B-6 B6 Enable port I2C-6 Enable address 0x16 B-7 B7 Enable port I2C-7 Enable address 0x17 C-0 C0 Enable port I2C-8 Enable address 0x18 C-1 C1 Enable port I2C-9 Enable address 0x19 C-2 C2 Enable port I2C-10 Enable address 0x1A C-3 C3 Enable port I2C-11 Enable address 0x1B C-4 C4 Enable port I2C-12 Enable address 0x1C C-5 C5 Enable port I2C-13 Enable address 0x1D C-6 C6 Enable port I2C-14 Enable address 0x1E C-7 C7 Enable port I2C-15 Enable address 0x1F D-0 D0 Enable port JTAG Enable address 0x60 D-1 D1 Enable port SPI Enable address 0x02 D-2 D2 Enable port Memory Enable address 0x40 D-3 D3 Enable port ADC Enable address 0x70 D-4 D4 Enable port PIA-A Enable address 0x30 D-5 D5 Enable port PIA-B Enable address 0x31 D-6 D6 Enable port PIA-C Enable address 0x32 D-7 D7 Enable port PIA-D Enable address 0x33 E-0 E0 Enable port DAC-0 Enable address 0x80 E-1 E1 Enable port DAC-1 Enable address 0x81 E-2 E2 Enable port DAC-2 Enable address 0x82 E-3 E3 Enable port DAC-3 Enable address 0x83 E-4 E4 Enable port Interrupt0 Enable address 0xFC E-5 E5 Enable port Interrupt1 Enable address 0xFD E-6 E6 Enable port Interrupt2 Enable address 0xFE E-7 E7 Enable port Interrupt3 Enable address 0xFF Figure 12 Control register B-C-D-E in Network Controller Preliminary 13 Comment Rev 5.0 4.3.1.3. Status Register A The node controller status register A is defined as follows: Bit Name Function 0 Err CHN Flag Error invalid channel 1 Err ERR Flag Error error bit on AI 2 Err TR Flag Error invalid Transaction (FF is Reserved for Interrupts) 3 Err CMD Flag Error invalid command GE This bit is the global OR of all error bits generated in any channel in the GBT-SCA. 4-6 7 Figure 13 Node Controller status register A 4.3.1.4. Status Register B The status register B is an 8-bit register containing the transaction number (TR#) of the last correctly received command for any of the GBT-SCA channels. This is necessary to support the case when a packet traveling through the network gets corrupted after having reached the destination and the GBT has to find out whether the packet had already reached its destination or not. 4.3.1.5. Command codes The following table summarizes the commands accepted by the node controller for operations on its registers. Below CH# is 0x40 except for “SCA Reset”. Command Write CRA CMD Command and [Hex] Reply Formats 0x00 C: CH# + TR# + CMD + DW Operation The CRA is written with a byte R: CH# + TR# + ACK + CRA Write CRB 0x01 C: CH# + TR# + CMD + DW The CRB is written with a byte R: CH# + TR# + ACK + CRB Write CRC 0x02 C: CH# + TR# + CMD + DW The CRB is written with a byte R: CH# + TR# + ACK + CRC Write CRD 0x03 C: CH# + TR# + CMD + DW The CRC is written with a byte R: CH# + TR# + ACK + CRD Write CRE 0x04 C: CH# + TR# + CMD + DW The CRE is written with a byte R: CH# + TR# + ACK + CRE Read CRA 0x10 C: CH# + TR# + CMD Read CRA R: CH# + TR# + ACK + CRA Read CRB 0x11 C: CH# + TR# + CMD Read CRB R: CH# + TR# + ACK + CRB Read CRC 0x12 C: CH# + TR# + CMD Read CRC R: CH# + TR# + ACK + CRC Read CRD 0x13 C: CH# + TR# + CMD R: CH# + TR# + ACK + CRD Preliminary 14 Read CRD Rev 5.0 Read CRE 0x14 C: CH# + TR# + CMD Read CRE R: CH# + TR# + ACK + CRE Read SRA 0x20 C: CH# + TR# + CMD Send back the status register A R: CH# + TR# + ACK + SRA Read SRB 0x21 C: CH# + TR# + CMD Send back the status register B R: CH# + TR# + ACK + SRB Reset 0xFF C: CH# + TR# + CMD Reset the NC R:none SCA Reset 0xAA C: CH#=0xAA + TR# + CMD=0xAA R:none Figure 14 Commands for the Network Controller Preliminary 15 Reset the NC and all the front-end ports Rev 5.0 5. I2C CHANNEL 5.1. General The I2C interface implements normal 7 bit addressing, long 10 bit addressing I2C transactions and extended RAL mode transfers. The operations performed by the I2C interface are: Single byte read-write with normal 7 bit I2C addressing Single byte read-write extended I2C with 10 bits addressing Multi byte read-write extended I2C with 10 bits addressing 5.1.1.1. I2C interface registers Several registers control the operation of the I2C interface and are implemented in each of the 16 I2C channels. The registers are cleared at reset. Name Comment CRA Control register A MSK Mask register for logical operations SRA Status register A SRB Status register B Figure 15 Control and Status registers in I2C channel 5.1.2. I2C Control registers The Control register A in the I2C interface is defined as follows: Bit Name 1-0 SPEED Function Denotes the speed of operation of the I2C interface (SCL clock rate): 00 – 100 kHz 01 – 200 kHz 10 – 400 kHz 11 – 1 MHz 2-4 ----- 5 EBRDCST Enable broadcast operations. Once set to “1” this bit enables the channel to accept I2C broadcast operations. This bit is initialised to “0” after reset. 6 FACKW Force acknowledge for write or RMW operation Write operations and RMW operations, which do not generate errors, are not acknowledged. Setting this bit to “1” forces an acknowledgement packet. This bit is cleared at reset. 7 ----- Reserved Reserved Figure 16 Control register A in I2C interface 5.1.3. Logical mask register This register can be written with an 8-bit value, which is used during logical operations on the I2C bus. Read-modify-write operations and can only be executed in single-byte mode. Preliminary 16 Rev 5.0 Three basic operations are allowed: Logical AND, Logical OR, Logical XOR and are performed in the following way: 1. the I2C interface reads a byte from the specified address 2. a logical operation is performed with the mask register value 3. the result is written back into the I2C address 4. the original value is returned to the GBT (if CRA[6] is set). 5.1.4. I2C Status Registers Several registers are used to report the status of the I2C channel 5.1.4.1. Status Register A This register contains the following information: Bit Name Function 0 Flag_error_Byte2NC This bit reports the reply from the I2C port to the NC. It is set if the reply word to the NC fails. 1 Flag_error_PortBusy This bit reports I2C port busy status. If a new command arrives when the port is still busy the flag is set. 2 SUCC This bit is set when the last transaction was successfully executed. 3 I2CLOW This bit is set to ‘1’ if the I2C master port finds that the SDA line is pulled low (“0”) before initiating a transaction. If this happens the I2C bus is probably broken. The bit represents the status of the SDA line and cannot be reset. 4 Flag_error_rw This bit is set if the commands that requires a specific code for read and write operations make conflicts the command code. 5 INVCOM This bit is set if an invalid command was sent to the I2C channel. The bit is cleared by a channel reset. 6 NOACK This bit is set if the last operation has not been acknowledged by the I2C slave acknowledge. This bit is set/reset at the end of each I2C transaction 7 GE This bit is set if any error has occurred on the I2C channel and is cleared only by a channel reset command I2C Figure 17 Status register A in I2C interface 5.1.4.2. Status Register B Status register B contains the number of the last correctly executed transaction (TR#). This register is overwritten after every I2C transaction except read and write operations to/from the control and status register. Preliminary 17 Rev 5.0 5.1.5. I2C Commands The following table summarizes all the commands accepted by the I2C channels. Below CH# is 0x10-0x1F except for “SCA Reset”. Command CMD Command and Reply Format [Hex] Single byte write normal mode 0x00 C: CH# + TR# + CMD + A[7:0] + DW R: CH# + TR# + ACK + DR Single byte read normal mode 0x01 C: CH# + TR# + CMD + A[7:0] R: CH# + TR# + ACK + DR Single mode byte write extended Single byte read extended mode 0x02 C: CH# + TR# + CMD + A[9:8] + A[7:0] + DW R: CH# + TR# + ACK + DR 0x03 C: CH# + TR# + CMD + A[9:8] + A[7:0] R: CH# + TR# + ACK + DR RMW-AND in normal mode 0x80 C: CH# + TR# + CMD + A[7:0] R: CH# + TR# + ACK + DR RMW-OR in normal mode 0x81 C: CH# + TR# + CMD + A[7:0] R: CH# + TR# + ACK + DR RMW-XOR in normal mode 0x82 C: CH# + TR# + CMD + A[7:0] R: CH# + TR# + ACK + DR RMW-AND in extended mode 0x83 C: CH# + TR# + CMD + A[9:8] + A[7:0] R: CH# + TR# + ACK + DR RMW-OR in extended mode 0x84 C: CH# + TR# + CMD + A[9:8] + A[7:0] R: CH# + TR# + ACK + DR RMW-XOR in extended mode 0x85 C: CH# + TR# + CMD + A[9:8] + A[7:0] R: CH# + TR# + ACK + DR Multiple Byte Write in extended mode (LEN <=28=2xA+26xDW) 0x86 Multiple Byte Read in extended mode (LEN <=28=2+26) 0x87 Multiple Byte Write in normal mode (LEN <=28=1xA+27xDW) 0x88 Multiple Byte Read in normal mode (LEN <=28=1-A+27-DR) 0x89 Write Control register A 0xf0 C: CH# + TR# + CMD + LEN + A[9:8] + A[7:0] + DW R: CH# + TR# + ACK + DR C: CH# + TR# + CMD + LEN + A[9:8] + A[7:0] R: CH# + TR# + ACK + DR (LEN -2 bytes) C: CH# + TR# + CMD + LEN + A[7:0] + DW R: CH# + TR# + ACK + DR C: CH# + TR# + CMD + LEN + A[7:0] R: CH# + TR# + ACK + DR (LEN -1 bytes) C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + DR Read Control register A 0xf1 C: CH# + TR# + CMD R: CH# + TR# + ACK + DR Read Status register A 0xf2 C: CH# + TR# + CMD R: CH# + TR# + ACK + DR Preliminary 18 Rev 5.0 Read Status register B 0xf3 C: CH# + TR# + CMD R: CH# + TR# + ACK + DR Write Mask register 0xf6 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + DR Read Mask register 0xf7 C: CH# + TR# + CMD R: CH# + TR# + ACK + DR I2C channel reset 0xff C: CH# + TR# + CMD R:none SCA Reset 0xAA C: CH#=0xAA + TR# + CMD=0xAA R: none Reset the NC and all the front-end ports Figure 18 Commands for I2C channel Preliminary 19 Rev 5.0 6. ADC CHANNEL 6.1. General 6.1.1. ADC Commands The commands used for operating the ADC interface are defined in this paragraph. Below CH# is 0x70 except for “SCA Reset”. Action CMD Command Packet Format [Hex] ADC Reset channel 0xFF C: CH# + TR# + CMD R: none Write control register 0xF0 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + CR Read Control Register 0xF1 C: CH# + TR# + CMD R: CH# + TR# + ACK + CR Read Status Register 0xF2 C: CH# + TR# + CMD R: CH# + TR# + ACK + SR Write ADC register 0xF3 C: CH# + TR# + CMD + ADR<X,X,5:0> + DATA R: CH# + TR# + ACK + SR Read ADC register 0xF4 C: CH# + TR# + CMD + ADR<X,X,5:0> R: CH# + TR# + ACK + DR SCA Reset 0xAA C: CH#=0xAA + TR# + CMD=0xAA R: none Reset the NC and all the front-end ports Figure 19 ADC channel Commands NB. Here the ADC Reset and SCA Reset commands force the ADC internal channel to be reset for 20 clock cycles. There are 32 external inputs for the ADC module plus 2 internal channels - 6-bit addressing - for temperature and supply voltage monitoring. The architecture of the ADC is shown in Figure 32. Preliminary 20 Rev 5.0 Figure 20 SCA_ADC architecture 6.1.2. ADC Blocks The ADC contains the following main blocks: a wishbone slave interface, a bandgap voltage reference, a 12-bit ADC, calibration registers, conversion and Calibration Logic a set of fuses that fixes the bandgap voltage reference. The access to the internal registers of the ADC is available through a wishbone interface. The user can select one of the ADC input channels, start an ADC acquisition and read the ADC output simply by accessing different registers. A bandgap voltage reference gives to the ADC a stable reference voltage which can be adjusted for a specific voltage by fusing the fuses. The reference voltage can also be adjust by adjusting the value of the bandgap register. Specifications Digital interface I/O: Wishbone Standard Protocol Operating temperature range: -50°C -> +80°C Power consumption: < X??XmW (VDD = 1.2V, T = 25°C ⇒ I = X??X mA) ????? Supply voltage: single VDD @ 1.2V Clock frequency: 40MHz Preliminary 21 Rev 5.0 6.1.1. SCA_ADC Internal Registers The ADC contains thirteen user-accessible registers, which are listed in Table 1. Three registers [SREG, DLREG, and DHREG] are read only. All the others are write/read. However only ICREG and CALREG can be written at any time, the others may be written with some time restriction [see details on the definition of each registers]. To address a specific register 4 bits are used, the address for each register is indicated on the table below. Wishbone address ADR_I<3:0> 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 9 10 11 12 1000 1001 1010 1011 1100 Default content [after reset] Register name Status Register Control Register Input Channel Register Data High Register Data Low Register Calibration Register BandgapCal High Register BandgapCal Low Register GmCal High Register GmCal Low Register IdCal High Register IdCal Low Register Test Register SREG CREG ICREG DHREG DLREG CALREG 0000_0000 0000_0000 0000_0000 0000_0000 0000_0000 BGHREG <fuses> BGLREG <fuses> GMHREG GMLREG IDHREG IDLREG TREG 0000_0001 1111_1111 0000_0001 1111_1111 0000_0000 Table 1. The SCA_ADC register file 6.1.1.1. Status Register (SREG) The Status Register is used to inform the user of the actual state of the converter. Bit(s) 7 Name ready 6 done 5 4 3 2 <1:0> calibrating converting sleeping testing UNUSED Description If “1” ready for a new conversion If “1” conversion is finished and the value is available in DATA Calibration in progress Conversion in progress If “1” ADC is in power save mode If “1” ADC is in test mode Table 2. Bit assignment of Status register (SREG). ready: when [SREG<7> = “1”] the ADC is prepared to follow a new command. done: if [SREG<6> = “1”] it means that the value on the Data registers is ready to be fetched. Otherwise the value on DHREG and DLREG are not meaningful. calibrating, converting, sleeping: reports the actual state of the converter. 6.1.1.2. Control Register (CREG) [write/read] This register is used to control the converter. This registers can only be written when [SREG<7> = “1”] or [SREG<3> = “1”], this is, the converter is “ready” or in “power save” state. Bit(s) Name 7 RESET 6 WAKE UP Preliminary Description “1” to reset and after it is automatically set to “0” after reset “1” to end the “power save” mode 22 Rev 5.0 5 CALIBRATE 4 CONVERT 3 <2:0> SLEEP TEST MODE “1” to calibrate the ADC and in the end is automatically set to “0” “1” to start an A to D conversion and in the end is automatically set to “0” “1” to set ADC in “Power save” mode “111” to start test mode Table 3. Bit assignment of Control register (CREG). reset: setting this bit to “1” all the register will be set to their default value. This bit is also set automatically to “0” during the reset state. wake_up : setting [CREG<6> = “1”] when the ADC is in “power save” state will make the ADC leave that same state. Otherwise the bit CREG<6> will have no effect. In both cases the bit is set “0” on the following clock cycle. calibrate: when [CREG<5> = “1”] the converter will start the calibration routine if the converter is “ready ” [SREG <5> = “7”]. After the calibration routine start the bit is set to “0”. convert: when [CREG<4> = “1”] the converter will start the calibration routine if the converter is “ready ” [SREG <5> = “7”] and [CREG<5> = “0”]. After the calibration routine start the bit is set to “0”. sleep: if [CREG<3> = “1”] and only when [CREG<5> = CREG<4>= “0”] the converter will enter in the “power save” state. This bit is only set to “0” by the user or if the converter is reset. Which means that while this bit is “1” and if no more command are to be done the converter will enter/stay in the power mode state. test_mode: when [CREG<2:0> = “1”] the test mode is enable. 6.1.1.3. Input Channel Register (ICREG) This register will select the input channel from which the ADC will convert. Bit(s) <7:6> <5:0> Name UNUSED CHANNEL Description Selects the ADC input channel Table 4. Bit assignment of Input channel register (ICREG). 6.1.1.4. Data High/Low Registers When [SREG<6> = “1”] the value stored in DATA is the result of the last acquisition. Register DHREG DLREG Bit(s) <7:5> <4:0> <7:0> Name UNUSED DATA<12:8> DATA<7:0> Table 5. Bit assignment of Data High and Low registers (DHREG/DLREG). 6.1.1.5. Calibration Register (CALREG) Bit(s) 7 6 5 <4:0> Name Enable_bgCal Enable_gmCal Enable_idCal UNUSED Description “1” to use bgCal instead of fuses “1” to allow the user to write into gmCal register “1” to allow the user to write into idCal register Table 6. Bit assignment of Calibration register (CALREG). Enable_bgCal: when set [SREG<7> = “1”] bits {BGHREG<1:0>, BGLREG<7:0>} can be changed to set the badgap voltage to another value. Enable_gmCal : when set [SREG<6> = “1”] bits {GMHREG<1:0>, GMLREG<7:0>} can be changed to set another value for the maximum charge current. Preliminary 23 Rev 5.0 Enable_idCal : when set [SREG<5> = “1”] bits {BGHREG<1:0>, BGLREG<7:0>} can be changed to set the another value for the maximum discharge current. 6.1.1.6. BandgapCal High/Low Registers: Register Bit(s) <7:2> <1:0> <7:0> BGHREG BGLREG Name UNUSED bgCal <9:8> bgCal<7:0> Table 7. Bit assignment of BandgapCal High and Low registers (BGHREG/BGLREG). 6.1.1.7. GmCal High/Low Registers Register Bit(s) <7:2> <1:0> <7:0> GMHREG GMLREG Function/internal signals UNUSED gmCal <9:8> gmCal<7:0> Table 8. Bit assignment of GmCal High and Low registers (GMHREG/GMLREG). 6.1.1.8. IdCal High/Low Registers Register IDHREG IDLREG Bit(s) Function/internal signals <7:2> <1:0> <7:0> UNUSED idCal <9:8> idCal<7:0> Table 9. Bit assignment of IdCal High and Low registers (IDHREG/IDLREG). 6.1.1.9. Test Register (TREG) The bit allocation of the Test Register is described below: Bit(s) <7:3> Name UNUSED 2 noWait 1 0 noGM noID Function When “1” the change from the charging phase to the discharge phase is made in one clock cycle, this is, without having a clock cycle where the capacitor is not charging nor discharging If testing mode is active this bit should be set equal to CALREG<6> If testing mode is active this bit should be set equal to CALREG<5> Table 10. Bit assignment of Test register (TREG). noWait : when set [TREG<2> = “1”] the change from the charging phase to the discharge phase is made in one clock cycle, this is, without having a clock cycle where the capacitor is not charging nor discharging. noGM, noID : When both are “1” and if test mode active no calibration routine is performed. 6.1.1.10. Register Access via the wishbone bus WISHBONE is a system-on-Chip (SOC) interconnection architecture for portable IP cores, which define parallel communication protocol between IP cores. (1) The ADC has a Wishbone Slave Interface that allows the user to read and write on the registers. Interface description: Preliminary 24 Rev 5.0 Input Pin CLK_I RST_I Activity – HIGH WE_I HIGH CYC_I STB_I ADR_I[3:0] DAT_I[7:0] HIGH HIGH – – Output Pin Activity ACK_O HIGH DAT_O[7:0] – Description Clock input Synchronous reset Write Enable input indicates the current local bus cycle: HIGH for write cycles, LOW for read cycles Cycle input indicates that a valid bus cycle is in progress. Strobe input indicates that the slave is selected. Address input bus Unidirectional data input bus Description Acknowledge output indicates the termination of a normal bus cycle Unidirectional data output bus Table 11. Wishbone signals 6.1.2. Supported cycles 6.1.2.1. SINGLE READ Cycle The figure shows a SINGLE READ cycle. The bus protocol works as follows: CLOCK EDGE 0: MASTER presents a valid address on [ADR_I()] . MASTER negates [WE_I] to indicate a READ cycle. MASTER asserts [CYC_I] to indicate the start of the cycle. MASTER asserts [STB_I] to indicate the start of the phase. SETUP, EDGE 1: SLAVE decodes inputs, and responding SLAVE asserts [ACK_O]. SLAVE presents valid data on [DAT_O()]. SLAVE asserts [ACK_O] in response to [STB_I] to indicate valid data. MASTER monitors [ACK_O], and prepares to latch data on [DAT_O()]. Figure 21 Single read cycle CLOCK EDGE 1: MASTER latches data on [DAT_O()] . MASTER negates [STB_I] and [CYC_I] to indicate the end of the cycle. SLAVE negates [ACK_O] in response to negated [STB_I]. 6.1.2.2. SINGLE WRITE Cycle The figure shows a SINGLE WRITE cycle. The bus protocol works as follows: CLOCK EDGE 0: MASTER presents a valid address on [ADR_I()]. MASTER presents valid data on [DAT_I()]. MASTER asserts [WE_I] to indicate a WRITE cycle. MASTER asserts [CYC_I] and to indicate the start of the cycle. MASTER asserts [STB_I] to indicate the start of the phase. SETUP, EDGE 1: SLAVE decodes inputs, and responding SLAVE asserts [ACK_O]. SLAVE prepares to latch data on [DAT_I()]. Preliminary 25 Figure 22 Single write cycle Rev 5.0 SLAVE asserts [ACK_O] in response to [STB_I] to indicate latched data. MASTER monitors [ACK_O], and prepares to terminate the cycle. CLOCK EDGE 1: SLAVE latches data on [DAT_I()]. MASTER negates [STB_I] and [CYC_I] to indicate the end of the cycle. SLAVE negates [ACK_O[ in response to negated [STB_I]. 6.1.2.3. Block Read and Write cycle Block Read and Block Write cycle allows read/write in every clock cycle. The protocol is the same for the single Cycle with the difference that the master should keep the CYC_I and STB_I signals always to “1” during the block cycle. Description General description: Specification 8-bit Wishbone SLAVE SLAVE, READ/WRITE SLAVE, BLOCK READ/WRITE Supported cycles: Data port, size: (1) Data port, granularity: Data port, maximum operand size: Data transfer ordering: Data transfer sequencing: 8-bit 8-bit 8-bit little endian Undefined Clock frequency constraints: 40M Hz Signal Name ACK_O ADR_I(3..0) CLK_I CYC_I DAT_I(7..0) DAT_O(7..0) RST_I STB_I WE_I Supported signal list and cross reference to equivalent WISHBONE signals: WISHBONE Equiv. ACK_O ADR_I() CLK_I CYC_I DAT_I() DAT_O() RST_I STB_I WE_I Table 12. WISHBONE DATASHEET for the SCA_ADC 6.1.2.4. ADC Operations HW reset A hardware reset of the SCA_ADC registers is performed forcing to 1 the WB_RST pin. As this reset is used also to reset the bangap the WB_RST pin should be forced to “1” no less than 250ns [or 10 clock cycles @ 40 MHz]. SW reset A software reset of the SCA_ADC is performed when a “1” is written into the bit 7 of the Control Register CREG [CREG<7>]. Wake up When the ADC is in the “power save” state and in order to start a calibration or a conversion it is needed to write a “1” into the bit 5 of the Control Register CREG [CREG<5> -> wake_up] or write a “0” into the bit 3 of the Control Register CREG [CREG<3> -> sleep]. Calibration A calibration is performed when a “1” is written into the bit 5 of the Control Register CREG [CREG<5>] and only if the ADC is on “ready” state [SREG<7> = “1”]. Set input channel Preliminary 26 Rev 5.0 The user should select which input channel the ADC must use. For doing that is enough to write in the Input Channel Register [ICREG] the address of corresponding input channel according with the table below. ICREG<5:0> 000000 000001 000010 000011 000100 000101 000110 000111 001000 001001 001010 001011 001100 001101 001110 001111 Name InputChannel_1 InputChannel_2 InputChannel_3 InputChannel_4 InputChannel_5 InputChannel_6 InputChannel_7 InputChannel_8 InputChannel_9 InputChannel_10 InputChannel_11 InputChannel_12 InputChannel_13 InputChannel_14 InputChannel_15 InputChannel_16 ICREG<5:0> 010000 010001 010010 010011 010100 010101 010110 010111 011000 011001 011010 011011 011100 011101 011110 011111 100000 100001 100010 100011 Name InputChannel_17 InputChannel_18 InputChannel_19 InputChannel_20 InputChannel_21 InputChannel_22 InputChannel_23 InputChannel_24 InputChannel_25 InputChannel_26 InputChannel_27 InputChannel_28 InputChannel_29 InputChannel_30 InputChannel_31 InputChannel_32 GND BandGap voltage Half_VDD GND Table 13. Input channel addresses. Conversion/acquisition A conversion is performed when a “1” is written into the bit 4 of the Control Register CREG [CREG<4>] and only if the ADC is on “ready” state [SREG<7> = “1”] and CREG<5> is “0”, this is, no calibration command is pending. o o Read Result When the bit 6 of the Status Register SREG<6> contains a “1”, the result of the last acquisition can be read: Data<12:8> = DHREG<4:0> Data<7:0> = DLREG<7:0> SCA_ADC conversion Operation A conversion cycle of the ADC can be simply started by setting the proper channel address in the Input Channel Register and setting the conversion bit in the Control Register CREG<4>. The conversion bit CREG<4> is cleared automatically at the beginning of the conversion. For instance, a conversion on the input channel 5 can be started by writing “00000100” [0x04] into ICREG to select the desired input channel and then writing “00010000” [0x10] into the Control Register [CREG]. Preliminary 27 Rev 5.0 7. JTAG CHANNEL 7.1. General A simplified JTAG master channel is implemented in the GBT-SCA. The JTAG master generates the three signals TCK, TMS and TDO.TCK is the scan chain clock, TMS the mode control bit for the JTAG slave state machines and TDO is the serial data sent to the scan chain. Data is returned on the TDI line. The transitions on TMS and TDO take place upon the rising edge of TCK. TDI is sampled on the positive edge of TCK. There is no autonomous JTAG controller – TAP state machine –and the protocol must be implemented in software. Each command is composed of 256 bits, which are split into 128 couples of TMS and TDO bits. It takes 16 clock cycles to load the command into the port BUFFER as the Wish-Bone bus is 16-bit wide. The control register CRA contains an ENREAD bit that, if set at 1 via a JTAG CMD WRITE CRA command, indicates that the TDI bit must be sampled and sent back along with the reply packet. Hence, there are two possible replies, one is the normal reply packet to acknowledge the command and the other one contains also the TDI data which is sampled to fill the first128 LSB bits of the same BUFFER. Thus, any JTAG command must be fragmented into frames of 128 couples of 128 bits – (TMS,TDO) – from the SCA to the front end and into frames of 128 bits (TDI) from the front end to the SCA. In other words, a command of any length can be composed into fragments of 128 bits for TDO and TDI and the last fragment must be completed with idle bits. In addition, a RES_OUT pin (CRA[7]) is available to force an output pin to a continuous reset value. 16-bit WB bus TCK BUFFER 256-bit (TMS TDO) TMS TDO TDI RES_OUT Figure 23 256-bit JTAG BUFFER Through the WishBone bus the packets are segmented and transferred via couples of bytes as shown in the top side of the figure below. WishBone segmentation BYTE JTAG segmentation The JTAG packets are segmented with an unlimited number of bytes. Figure 24 JTAG packets The following registers control the operation of each JTAG channel: Preliminary 28 Rev 5.0 Name Function CRA Control Register SRA Status Register Figure 25 Registers in JTAG bus The JTAG Control register CRA is defined as follows: Bit 1-0 4-2 Name SPEED ----- 5 ENREAD 6 FACKW 7 RES_OUT Function Denotes the width of the strobe signals on the port 00 – 1000ns 01 – 500ns 10 – 200ns 11 – 100ns. Initialised to “00” after power up and reset. Reserved Enable read Reset Output Pin: default @ 0 Figure 26 Control Register in JTAG channel The JTAG Status register SRA is defined as follows: Bit 1-0 2 4-3 Name ----SUCC ----- Function Reserved Command succeded Reserved 5 INVCOM Invalid Command 6 NOACK No acknowledge 7 GE Global error Figure 27 Staus Register in JTAG channel Preliminary 29 Rev 5.0 7.1.1. JTAG command The following table summarizes all the commands accepted by the JTAG channel. Below CH# is 0x60 except for “SCA Reset”. Action CMD Command Packet Format [Hex] JTAG CMD WRITE CRA 0xF0 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + SRA JTAG CMD READ CRA 0xF1 C: CH# + TR# + CMD R: CH# + TR# + ACK + CRA JTAG CMD READ SRA 0xF2 C: CH# + TR# + CMD R: CH# + TR# + ACK + SRA JTAG CMD RW 0xF3 C: CH# + TR# + CMD + (TMS,TDO)[255:0] R: CH# + TR# + ACK + TDI[127:0] if ENREAD=1 R: CH# + TR# + ACK + CRA JTAG CMD RESET 0xFF if ENREAD=0 C: CH# + TR# + CMD R: none SCA Reset 0xAA C: CH#=0xAA + TR# + CMD=0xAA R: none Reset the NC and all the front-end ports Figure 28 Commands in JTAG port Preliminary 30 Rev 5.0 8. MEMORY CHANNEL 8.1. General The Memory Data bus implemented on the GBT-SCA can address a 64KB memory through a 16-bit address and16-bit wide data interface. It can perform single and multiple byte read-write operations as on a normal byte-wide memory device. The operations foreseen are: single byte read-write to address multiple (up to 2K) bytes read-write to address with automatically incremented addresses read-modify-write single byte to address with mask Several registers control the operation of the memory bus channel. Name Comment CRA Control register A SRA Status register A Figure 29 Registers in memory bus channel To simplify the design of simple peripheral devices connected to the GBT-SCA memory channel, the GBT-SCA provides pre-decoding of up to two memory ranges defined in the window registers. 8.1.1. Memory Bus Control registers The Control register is defined as follows: Bit Name --- ------ Function Reserved Figure 30 Control register A in memory channel 8.1.2. Memory Bus Status Registers Bit Name Function 0-4 ------ Reserved 5 INVCOM Invalid command received. Cleared by channel reset. 6 INVADD Invalid address. One command with a memory write operation was received with an address outside both window ranges. Cleared by channel reset. 7 GE Global error. Logical OR of all error conditions in the interface Figure 31 Status register in memory channel Preliminary 31 Rev 5.0 8.1.3. Memory Bus Commands The commands used for operating the Memory Bus interface are defined in this paragraph. Below CH# is 0x40 except for “SCA Reset”. Action CMD Command Packet Format [Hex] MBUS Reset channel 0xFF C: CH# + TR# + CMD R: none Write control register A 0x01 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + CRA Read Control Register A 0x02 C: CH# + TR# + CMD R: CH# + TR# + ACK + CRA Read Status Register 0x0f C: CH# + TR# + CMD R: CH# + TR# + ACK + SRA Single 16-bit Word Write to memory 0x10 Single 16-bit Word Read from memory 0x11 SCA Reset 0xAA C: CH# + TR# + CMD + AH + AL + DH + DL R: CH# + TR# + ACK + SRA C: CH# + TR# + CMD + AH + AL R: CH# + TR# + ACK + DH + DL C: CH#=0xAA + TR# + CMD=0xAA R: none Reset the NC and all the front-end ports Figure 32 Memory Bus channel Commands The Memory address is divided into the two bytes AH and AL, for the high and low part of the address respectively. The block length (max 2 K) is also divided into two bytes, LENH and LENL. In case of corrupted the GBT-SCA signals the error condition through the bit 0 in Status Register A in the Network Controller. Figure 33 Memory Bus Command Windows Preliminary 32 Rev 5.0 9. PARALLEL I/O CHANNEL BUS (PIA) 9.1. General The parallel I/O bus channel is an adapter similar to a Motorola PIA interface, allowing parallel connections with individually programmable direction in groups of 8 bits. Four independent byte PIA adapter channels are available in the GBT-SCA. These PIA ports are selected by default, at power on, over the Memory channel as they share the same 40 output pins. To deselect this mode, and serve the Memory channel, please refer to Network Controller CRA<0> bit that must be set to 1 via a CRA write command. The 4 PIA ports also have The following registers control the operation of each PIO channel: Name Function GCR General control register SR Status Register DDR Data direction register for Port DREG_IN Data input register DREG_OUT Data output register Figure 34 Registers in Parallel IO bus 9.1.1. Registers in PIA channel The functions of the registers are detailed in the following paragraphs. An input strobe (STRIN), active high, is used to latch the PIO port to the DREG_IN register. The STRIN ping is sampled by the clock and synchronized to avoid metastability. For this reason it is required the STRIN pin being high for at least 25 ns. Thus, at the rising edge of this pin the PIA port is read out and saved into the DREG_IN, according to the DDREG bits, i.e. only the input pins are updated. The seventh bit of the GCR, EN_STRIN, can force the update independently of the STRIN pin. In this case, with EN_STRIN at 1, the DREG_IN is continuously updated. The STROUT pin indicated when the DREG_OUT has been updated to the PIA port. STRIN PIA STROUT 8 GCR, SR, DDR DREG_IN DREG_OUT Preliminary 33 PIA Rev 5.0 9.1.1.1. General Control Register in PIO The PIO Control register is defined as follows: Bit 0 - 4 Name ----- 5 ENINTA 6 ----- 7 EN_STRIN Function Reserved Enables generation of Interrupt message to GBT on reception of STRIN. The reply will be in the form: <#PORT> + FF + 00 + <DREG_IN> Reserved Enables the DATA_IN register to be automatically updated with the PIA port: no STROBE_IN is required. Default @ 0. Figure 35 General Control Register in PIO channel 9.1.1.2. Status Register in PIA Bit 0 1-4 Name INT An interrupt was generated by a strobe on Port. Cleared by writing a “1” to the CLR bit in GCR. Reserved 5 INVCOM 6 ----- 7 Function GE Invalid command received. Cleared by channel reset. Does not generate a GE bit (see below) Reserved Global error. Logical OR of all error conditions in the PIO interface Figure 36 Status register in PIO channel Preliminary 34 Rev 5.0 9.1.2. Commands for PIA channel The following commands are defined for the PIO channel. Below CH# is 0x30-0x33 except for “SCA Reset”. Action CMD Command Packet Format [Hex] Write General Register (GCR) Control Read General Register (GCR) Control 0x01 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + GCR 0x02 C: CH# + TR# + CMD R: CH# + TR# + ACK + GCR Read Status Register (SR) 0x03 C: CH# + TR# + CMD R: CH# + TR# + ACK + SR Write Data Register (DDR) Direction Read Data Register (DDR) Direction 0x04 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + DDR 0x05 C: CH# + TR# + CMD R: CH# + TR# + ACK + DDR Write Data Register Out (DREG_OUT) 0x06 Read Data Register Out (DREG_OUT) 0x07 CMD Read/Write PIA 0x08 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + DREG_OUT C: CH# + TR# + CMD R: CH# + TR# + ACK + DREG_OUT C: CH# + TR# + CMD R: CH# + TR# + ACK + DREG_IN PIA Reset channel 0xFF C: CH# + TR# + CMD R: none SCA Reset 0xAA C: CH#=0xAA + TR# + CMD=0xAA R: none Reset the NC and all the front-end ports Figure 37 Commands for PIO channel Preliminary 35 Rev 5.0 10. DAC CHANNEL 10.1. General 10.1.1. DAC Commands The commands used for operating the DAC interface are defined in this paragraph. It consists of an 8-bit register that can be written or read out. Its value is then converted to the output analog port. Below CH# is 0x80-83 except for “SCA Reset”. Action CMD Command Packet Format [Hex] DAC Reset channel 0xFF C: CH# + TR# + CMD R: none Write control register 0xF0 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + CR Read Control Register 0xF1 C: CH# + TR# + CMD R: CH# + TR# + ACK + CR Read Status Register 0xF2 C: CH# + TR# + CMD R: CH# + TR# + ACK + SR Write DAC register 0xF3 C: CH# + TR# + CMD + DATA R: CH# + TR# + ACK + SR Read DAC register 0xF4 C: CH# + TR# + CMD R: CH# + TR# + ACK + DR SCA Reset 0xAA C: CH#=0xAA + TR# + CMD=0xAA R: none Reset the NC and all the front-end ports Figure 38 DAC channel Commands NB. Here the DAC Reset and SCA Reset commands force the ADC internal channel to be reset for 20 clock cycles. Preliminary 36 Rev 5.0 11. SPI CHANNEL 11.1. General The Serial Peripheral Interface (SPI) bus is a synchronous byte-oriented serial data link standard that operates in full duplex mode. Devices communicate only in master-to-slave mode where the master device initiates the data frame. The SPI master generates the three signals Serial Clock (SCK), Slave Select (SSb) and Master Output Slave Input (MOSI).SCK is the clock, SSb the mode control bit for the SPI slave state machines and MOSI is the serial data sent to the port. Data is returned on the Master Input Slave Output (MISO) line. The transitions on all the signals take place on the positive edge of SCK. Each command can be composed of 8/16/32 MOSI bits. It takes 1 to 2 clock cycles to load the command into the port BUFFER - 32 bytes - as the Wish-Bone bus is 16-bit wide. The control register CRA contains an ENREAD bit that, if set at 1 via a SPI CMD WRITE CRA command, indicates that the MISO bit must be sent back along with the reply packet. Hence, there are two possible replies, one is the normal reply packet to acknowledge the command and the other one contains also the MISO data which is sampled to fill the same BUFFER. Thus, any SPI command must be fragmented into frames of 8/16/32 MOSI bits from the SCA, plus the 3 common bytes CH#, TR#, CMD, to the front end and into frames of 8/16/32 MISO bits from the front end to the SCA. In other words, a command of any length can be composed into fragments for MOSI and MISO and the last fragment must be completed with idle bits. SCK 16-bit WB bus MASTER SPDAT 8-256-bit MOSI SLAVE SSb MOSI SPDAT 8-256-bit MISO MISO Figure 39 32-bit SPI SPDAT buffer The following registers control the operation of each SPI channel: Name Function SPCR Control Register SPSR Status Register SPDAT 32-byte Register Figure 40 Registers in SPI bus Preliminary 37 Rev 5.0 The SPI Control register is defined as follows: Bit 1-0 Name Function SPEED Denotes the width of the strobe signals on the port 00 – 1000ns 01 – 500ns 10 – 200ns 11 – 100ns. Initialised to “00” after power up and reset. 2 CPHA Fixed to 0 3 CPOL Fixed to 1 4 MSTR 5 DWOM 6 SPE 7 ENREAD Enable read Figure 41 Control Register in SPI channel The SPI Status register is defined as follows: Bit Name Function 0 INVCOM Invalid Command 1 NOACK No acknowledge 2 GE Global Error 3 ----- Reserved 4 MODF 5 ----- 6 WCOL 7 SPIF Reserved Figure 42 Staus Register in SPI channel Preliminary 38 Rev 5.0 11.1.1. SPI command The following table summarizes all the commands accepted by the SPI channel. Below CH# is 0x02 except for “SCA Reset”. Action CMD Command Packet Format [Hex] SPI CMD SPCR WRITE SPI CMD SPCR READ 0xF0 C: CH# + TR# + CMD + DW R: CH# + TR# + ACK + SRA SPI CMD READ SPSR 0xF1 C: CH# + TR# + CMD R: CH# + TR# + ACK + CRA 0xF2 C: CH# + TR# + CMD R: CH# + TR# + ACK + SRA SPI CMD RW 1 byte 0xF3 C: CH# + TR# + CMD + DW (MOSI) R:CH# + TR# + ACK + DR (MISO) SPI CMD RW 8 bytes SPI CMD RW 32 bytes SPI CMD RESET 0xF4 0xF5 0xFF C: CH# + TR# + CMD + 8*DW (MOSI) R:CH# + TR# + ACK + DR (MISO) if ENREAD=0 R:CH# + TR# + ACK + 8*DR (MISO) if ENREAD=1 C: CH# + TR# + CMD + 32*DW (MOSI) R:CH# + TR# + ACK + DR (MISO) if ENREAD=0 R:CH# + TR# + ACK + 32*DR (MISO) if ENREAD=1 C: CH# + TR# + CMD R: none SCA Reset 0xAA C: CH#=0xAA + TR# + CMD=0xAA R: none Reset the NC and all the front-end ports Figure 43 Commands in SPI port 11.1.2. SPI Timing Figure 44 SPI Timing Windows Preliminary 39 Rev 5.0 12. INTERRUPTS Four asynchronous interrupts, active low, are handled. The 4 channels cannot be addressed but they can reply. These interrupts are polled via the Network Controller that can provide dedicated packets backwards to the GBT. The interrupts packets are handled like the other reply packets coming from the other ports and hence there is no priority on the ports. The 0xFF transaction IDs are Reserved for the External and PIA interrupts so cannot be used as normal TR# Name Active Coded Channel Reply Interrupt 0 Low 0xFC 0x FC-FF-00-FC Interrupt 1 Low 0xFD 0x FD-FF-0-0FD Interrupt 2 Low 0xFE 0x FE-FF-00-FE Interrupt 3 Low 0xFF 0x FF-FF-00-FF Figure 45 Interrupts encoding Preliminary 40 Rev 5.0 13. 1 2 3 4 5 6 7 8 9 0 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 PINOUT – 150 PINS Left Side PIN Name Notes Bottom Side PIN Name Notes Right Side PIN Name Notes Top Side PIN Name Notes Pery VDD Pery GND Dig VDD Dig GND Ana VDD Ana GND Link_clk_0+ Link_clk_0Rx_sd_0+ Rx_sd_0Tx_sd_0+ Tx_sd_0Link_clk_1+ Link_clk_1Rx_sd_1+ Rx_sd_1Tx_sd_1+ Tx_sd_1SCL_o<15> SCL_o<14> SCL_o<13> SCL_o<12> SCL_o<11> SCL_o<10> SCL_o<9> SCL_o<8> SCL_o<7> SCL_o<6> SCL_o<5> SCL_o<4> SCL_o<3> SCL_o<2> SCL_o<1> SCL_o<0> Int0 Int1 Int2 Int3 PWR GND PWR GND PWR GND ELINK-I ELINK-I ELINK-I ELINK-I ELINK-O ELINK-O ELINK-I ELINK-I ELINK-I ELINK-I ELINK-O ELINK-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O I2C-O Interrupt-I Interrupt-I Interrupt-I Interrupt-I SDA_o<15> SDA_o<14> SDA_o<13> SDA_o<12> SDA_o<11> SDA_o<10> SDA_o<9> SDA_o<8> SDA_o<7> SDA_o<6> SDA_o<5> SDA_o<4> SDA_o<3> SDA_o<2> SDA_o<1> SDA_o<0> MISO MOSI SCK SSb MEM_PIA_o<13> MEM_PIA_o<12> MEM_PIA_o<11> MEM_PIA_o<10> MEM_PIA_o<9> MEM_PIA_o<8> MEM_PIA_o<7> MEM_PIA_o<6> MEM_PIA_o<5> MEM_PIA_o<4> MEM_PIA_o<3> MEM_PIA_o<2> MEM_PIA_o<1> MEM_PIA_o<0> Reset_in Ext_Reset_Out ADC ADC I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO I2C-IO SPI-I SPI-O SPI-O SPI-O Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO RESET-I RESET-O ADC ADC MEM_PIA_o<39> MEM_PIA_o<38> MEM_PIA_o<37> MEM_PIA_o<36> MEM_PIA_o<35> MEM_PIA_o<34> MEM_PIA_o<33> MEM_PIA_o<32> MEM_PIA_o<31> MEM_PIA_o<30> MEM_PIA_o<29> MEM_PIA_o<28> MEM_PIA_o<27> MEM_PIA_o<26> MEM_PIA_o<25> MEM_PIA_o<24> MEM_PIA_o<23> MEM_PIA_o<22> MEM_PIA_o<21> MEM_PIA_o<20> MEM_PIA_o<19> MEM_PIA_o<18> MEM_PIA_o<17> MEM_PIA_o<16> MEM_PIA_o<15> MEM_PIA_o<14> TDI TMS TCK TDO RES_OUT Eth-Sel Ana VDD Ana GND Dig VDD Dig GND Pery VDD Pery GND Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO Shared-IO JTAG-I JTAG-I JTAG-I JTAG-O JTAG-O Output Info PWR GND PWR GND PWR GND ADC<31> ADC<30> ADC<29> ADC<28> ADC<27> ADC<26> ADC<25> ADC<24> ADC<23> ADC<22> ADC<21> ADC<20> ADC<19> ADC<18> ADC<17> ADC<16> ADC<15> ADC<14> ADC<13> ADC<12> ADC<11> ADC<10> ADC<9> ADC<8> ADC<7> ADC<6> ADC<5> ADC<4> ADC<3> ADC<2> ADC<1> ADC<0> DAC-0 DAC-1 DAC-2 DAC-3 Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-I Analog-O Analog-O Analog-O Analog-O Table 14. GBT-SCA pinout table Preliminary 41 Rev 5.0 14. INDEX 14.1. Index of Paragraphs 1. 2. Document History ......................................................................................................................... 2 General .......................................................................................................................................... 3 2.1. Overview of the GBT System ................................................................................................ 3 2.2. Overview of the GBT-SCA Architecture............................................................................... 4 2.3. Radiation tolerance features ................................................................................................... 8 3. SCA PACKET description............................................................................................................ 9 3.1. The protocol ........................................................................................................................... 9 3.2. PAYLOAD Format .............................................................................................................. 10 4. ChannelS IN GBT-SCA .............................................................................................................. 11 4.1. General ................................................................................................................................. 11 4.2. Allocations of channels in the GBT-SCA ............................................................................ 11 4.3. GBT-SCA controller ............................................................................................................ 12 5. i2c channel ................................................................................................................................... 16 5.1. General ................................................................................................................................. 16 5.1.2. I2C Control registers ..................................................................................................... 16 5.1.3. Logical mask register .................................................................................................... 16 5.1.4. I2C Status Registers ...................................................................................................... 17 5.1.5. I2C Commands ............................................................................................................. 18 6. ADC Channel .............................................................................................................................. 20 6.1. General ................................................................................................................................. 20 6.1.1. ADC Commands ........................................................................................................... 20 6.1.2. ADC Blocks .................................................................................................................. 21 6.1.1. SCA_ADC Internal Registers ....................................................................................... 22 6.1.2. Supported cycles ........................................................................................................... 25 7. JTAG Channel............................................................................................................................. 28 7.1. General ................................................................................................................................. 28 7.1.1. JTAG command ............................................................................................................ 30 8. Memory Channel......................................................................................................................... 31 8.1. General ................................................................................................................................. 31 8.1.1. Memory Bus Control registers ...................................................................................... 31 8.1.2. Memory Bus Status Registers ....................................................................................... 31 8.1.3. Memory Bus Commands .............................................................................................. 32 9. parallel i/o Channel bus (pia) ...................................................................................................... 33 9.1. General ................................................................................................................................. 33 9.1.1. Registers in PIA channel ............................................................................................... 33 9.1.2. Commands for PIA channel .......................................................................................... 35 10. DAC Channel ............................................................................................................................ 36 10.1. General ............................................................................................................................... 36 10.1.1. DAC Commands ......................................................................................................... 36 11. SPI Channel............................................................................................................................... 37 11.1. General ............................................................................................................................... 37 11.1.1. SPI command .............................................................................................................. 39 11.1.2. SPI Timing .................................................................................................................. 39 12. interrupts ................................................................................................................................... 40 13. PINOUT – 150 pins .................................................................................................................. 41 Preliminary 42 Rev 5.0 14. INDEX ...................................................................................................................................... 42 14.1. Index of Paragraphs ........................................................................................................... 42 14.1. Index of Terms ................................................................................................................... 44 14.2. Index of Figures ................................................................................................................. 45 14.3. Index of Tables................................................................................................................... 45 Preliminary 43 Rev 5.0 14.1. Index of Terms ADC, 6, 11, 13, 20, 21, 22, 23, 24, 26, 27, 36 BGHREG, 22, 23, 24 BGLREG, 22, 23, 24 Block Read and Write cycle, 26 BUFFER, 28, 37 Calibration, 21, 22, 23, 26 CALREG, 22, 23, 24 Channel Number, 11 Conversion/acquisition, 27 CRA, 12, 14, 16, 17, 28, 29, 30, 31, 32, 33, 37, 39 CRC, 9, 12, 14 CRD, 12, 14 CRE, 12, 14, 15 CREG, 22, 23, 26, 27 DAC, 6, 11, 13, 36 DHREG, 22, 23, 27 DLREG, 22, 23, 27 DREG_IN, 33, 34, 35 DREG_OUT, 33, 35 ENREAD, 28, 29, 30, 37, 38, 39 Err CHN, 14 Err ERR, 14 Err TR, 14 GBT, 1, 3, 4, 5, 6, 7, 9, 11, 12, 14, 17, 28, 31, 32, 33, 34, 40 GBT-SCA, 1, 3, 4, 5, 6, 7, 11, 12, 14, 20, 28, 31, 32, 33, 36, 37 GE, 14, 17, 29, 31, 34, 38 GmCal, 22, 24 HW reset, 26 I2C, 5, 6, 10, 11, 13, 16, 17, 18, 19 ICREG, 22, 23, 27 Interrupt Channel, 11 interrupts, 6, 11, 40 INVCOM, 17, 29, 31, 34, 38 JTAG, 5, 10, 11, 13, 28, 29, 30 Preliminary memory, 6, 31, 32 Memory Channel, 5, 11 MISO, 37, 39 MOSI, 37, 39 MSK, 16 Network Controller, 5, 6, 8, 11, 12, 15, 32, 33, 40 NOACK, 17, 29, 38 PIA, 5, 6, 11, 12, 13, 33, 34, 35, 40 Read Control Register, 20, 32, 36 Read Result, 27 Read Status Register, 20, 32, 35, 36 RES_OUT, 28, 29 Reset Tree, 6 Reset_Out, 12, 41 SCA Reset, 11, 14, 15, 18, 19, 20, 30, 32, 35, 36, 39 SCK, 37 Set input channel, 26 SINGLE READ Cycle, 25 SINGLE WRITE Cycle, 25 SPI, 6, 10, 11, 13, 37, 38, 39 SRA, 12, 15, 16, 29, 30, 31, 32, 39 SRB, 12, 15, 16 SREG, 22, 23, 24, 26, 27 SSb, 37 STRIN, 33, 34 STROUT, 33 SW reset, 26 TCK, 28 TDI, 28, 30 TDO, 28, 30 TMS, 28, 30 TREG, 22, 24 Wake up, 26 Write control register, 20, 32, 36 44 Rev 5.0 14.2. Index of Figures Figure 1 Control module, simplified view ............................................................................................ 4 Figure 2 E-port Redundancy ................................................................................................................ 5 Figure 3: block diagram of the GBT-SCA: .......................................................................................... 7 Figure 4: Logic Reset Tree of the GBT-SCA ...................................................................................... 7 Figure 5: MAC to Network Controller interface ................................................................................. 8 Figure 6: SCA Packet communication system.................................................................................... 9 Figure 7: SCA-to-Port Command Packet example ........................................................................ 10 Figure 8: Port-to-SCA Reply Packet example ................................................................................ 10 Figure 9: Channel number allocation ................................................................................................. 11 Figure 10: Control and Status registers in GBT-SCA Controller ...................................................... 12 Figure 11 Network Controller control register A............................................................................... 12 Figure 12 Control register B-C-D-E in Network Controller .............................................................. 13 Figure 13 Node Controller status register A ...................................................................................... 14 Figure 14 Commands for the Network Controller ............................................................................. 15 Figure 15 Control and Status registers in I2C channel ...................................................................... 16 Figure 16 Control register A in I2C interface .................................................................................... 16 Figure 17 Status register A in I2C interface ...................................................................................... 17 Figure 18 Commands for I2C channel ............................................................................................... 19 Figure 19 ADC channel Commands .................................................................................................. 20 Figure 20 SCA_ADC architecture ..................................................................................................... 21 Figure 23 256-bit JTAG BUFFER ..................................................................................................... 28 Figure 24 JTAG packets .................................................................................................................... 28 Figure 25 Registers in JTAG bus ....................................................................................................... 29 Figure 26 Control Register in JTAG channel .................................................................................... 29 Figure 27 Staus Register in JTAG channel ........................................................................................ 29 Figure 28 Commands in JTAG port................................................................................................... 30 Figure 29 Registers in memory bus channel ...................................................................................... 31 Figure 30 Control register A in memory channel .............................................................................. 31 Figure 31 Status register in memory channel ..................................................................................... 31 Figure 32 Memory Bus channel Commands...................................................................................... 32 Figure 33 Memory Bus Command Windows .................................................................................... 32 Figure 34 Registers in Parallel IO bus ............................................................................................... 33 Figure 35 General Control Register in PIO channel .......................................................................... 34 Figure 36 Status register in PIO channel ........................................................................................... 34 Figure 37 Commands for PIO channel .............................................................................................. 35 Figure 38 DAC channel Commands .................................................................................................. 36 Figure 39 32-bit SPI SPDAT buffer .................................................................................................. 37 Figure 40 Registers in SPI bus ........................................................................................................... 37 Figure 41 Control Register in SPI channel ........................................................................................ 38 Figure 42 Staus Register in SPI channel ............................................................................................ 38 Figure 43 Commands in SPI port ....................................................................................................... 39 Figure 44 SPI Timing Windows ........................................................................................................ 39 Figure 45 Interrupts encoding ............................................................................................................ 40 14.3. Index of Tables Table 1. The SCA_ADC register file ................................................................................................................................ 22 Table 2. Bit assignment of Status register (SREG). .......................................................................................................... 22 Table 3. Bit assignment of Control register (CREG). ....................................................................................................... 23 Preliminary 45 Rev 5.0 Table 4. Bit assignment of Input channel register (ICREG). ............................................................................................ 23 Table 5. Bit assignment of Data High and Low registers (DHREG/DLREG). ................................................................. 23 Table 6. Bit assignment of Calibration register (CALREG). ............................................................................................ 23 Table 7. Bit assignment of BandgapCal High and Low registers (BGHREG/BGLREG). ............................................... 24 Table 8. Bit assignment of GmCal High and Low registers (GMHREG/GMLREG)....................................................... 24 Table 9. Bit assignment of IdCal High and Low registers (IDHREG/IDLREG). ............................................................. 24 Table 10. Bit assignment of Test register (TREG). .......................................................................................................... 24 Table 11. Wishbone signals .............................................................................................................................................. 25 Table 12. WISHBONE DATASHEET for the SCA_ADC .............................................................................................. 26 Table 13. Input channel addresses. ................................................................................................................................... 27 Table 14. GBT-SCA pinout table ..................................................................................................................................... 41 Preliminary 46