Massachusetts Institute of Technology Kavli Institute for Astrophysics and Space Research (MKI) FPE Firmware Design Specification Dwg. No. 37-14011 Revision C Date 6/15/2015 37-32002 Page 1 of 34 Revision C Table of Contents 1 PREFACE 1.1 1.2 1.3 5 REVISIONS REFERENCES OPEN QUESTIONS 5 5 6 2 SCOPE 6 3 FPE FIRMWARE DESIGN 8 3.1 3.2 3.3 3.4 3.4.1 3.4.2 3.5 4 OVERVIEW CCD CONTROL PIXEL TRANSFER DHU INTERFACES DATA DOWNLINK (DDL) SERIAL SYNCHRONOUS BUS FOR COMMAND FPE HOUSEKEEPING 8 8 9 9 9 9 9 INTERFACES 10 4.1 EXTERNAL INTERFACES DIAGRAM 4.2 INTERFACE DESCRIPTIONS 4.3 CMD BUS 4.3.1 CMD PACKETS 4.3.1.1 Command Packet Format 4.4 DATA DOWNLINK (DDL) 4.4.1 OVERVIEW 4.4.2 TIMING 4.4.3 PACKETS 4.4.3.1 Pixel Packets 4.4.3.2 Housekeeping Packets 4.4.3.3 Requested Memory Packets 4.4.3.4 Primary Control Byte (For Synchronization, Pixel, Housekeeping, and Memory) 4.4.3.5 Secondary Control Byte (For Memory) 4.4.3.6 Status Byte 1 4.4.3.7 Status Byte 2 4.4.3.8 Order of Pixel Packet Transfer (lineA/line B) 4.4.3.9 Order of HSK Packet Transfer 4.4.3.10 Order of Memory Packet Transfer 4.5 CCD DATA INPUT 4.5.1 OVERVIEW 4.5.2 FOCAL PLANE CCD CONNECTIONS 4.5.3 FOCAL PLANE CCD TIMING 4.6 CCD CLOCKS 4.6.1 CONFIGURATION 4.7 HOUSEKEEPING 4.7.1 OVERVIEW 4.7.2 INTERFACE SIGNALS 4.7.3 CONFIGURATION 37-14011 Page 2 of 34 Revision C 10 10 10 10 11 12 12 12 13 13 13 13 13 14 14 15 15 16 16 16 16 17 17 17 17 18 18 19 19 4.8 VOLTAGE CONTROL 4.9 JTAG/DEBUG 4.10 OSCILLATOR CLOCK 4.11 CHIP I/O 5 20 20 20 20 MEMORIES 22 5.1 MEMORY OVERVIEW 5.2 MEMORY DESCRIPTIONS 5.2.1 PROGRAM MEMORY 5.2.2 SEQUENCE MEMORY 5.2.3 HOUSEKEEPING MEMORY 5.2.4 VOLTAGE CONTROL MEMORY 5.2.4.1 Software Programming of Clock Level Voltage Memory 5.2.4.2 Firmware Execution of DAC writes 6 REGISTERS 22 22 22 23 24 24 25 25 26 6.1 REGISTER WRITES 6.2 REGISTER READS 6.3 REGISTER ADDRESS MAP 6.4 REGISTER DESCRIPTIONS 6.4.1 PRG_FS_PTR 6.4.2 HSK_TIME_CONV 6.4.3 HSK_TIME_BTN_SAMPLES 6.4.4 HSK_TOTAL_SAMPLES 6.4.5 HSK_SAMPLES_PER_FRAME 6.4.6 CHARGE_PUMP_ENA 6.4.7 FORCE_STATUS 6.4.8 FRAMES_XMT 6.4.9 TEST_MODE 6.4.10 HSK_SBIT_ERR_CNT 6.4.11 SEQ_SBIT_ERR_CNT 6.4.12 CMD_SBIT_ERR_CNT 7 7.1 7.2 7.3 8 8.1 9 9.1 26 26 26 26 26 27 27 27 27 27 27 28 28 29 29 29 RESETS 29 POWER UP RESET FRAME START 29 30 30 CLOCKS 30 CLOCK TREE 30 FPGA CONFIGURATION 31 TYPICAL CONFIGURATION PROCEDURE 31 10 CONVENTIONS 31 11 RADIATION MITIGATION 31 37-14011 Page 3 of 34 Revision C 11.1 CONFIGURATION MEMORY 11.2 ON-CHIP BLOCK RAM 11.3 DESIGN LOGIC 11.3.1 REGISTERS 11.3.2 LOGIC UPSET DETECTION 11.3.2.1 Loss of sync/bad downlink control byte 11.3.2.2 Frame start/Frame end does not occur when expected 11.3.2.3 Commands 11.3.3 LOGIC UPSET MITIGATION 12 DESIGN FOR TEST (DFT) 12.1 12.2 32 32 32 32 32 32 32 33 33 33 DEBUG I/O IMAGE GENERATION 33 33 13 CURRENT POWER ESTIMATES 33 14 ACRONYMS/ABBREVIATIONS 34 Tables in Document Table 1: List of Memories ................................................................................................................................ 22 Table 2: Register Address Map ..................................................................................................................... 26 Table 3: Clocks ..................................................................................................................................................... 30 Table 4: Acronyms/Abbrevations................................................................................................................ 34 Figures in Document Figure 1: FPE/DHU Overview ........................................................................................................................... 7 Figure 2: Block Diagram ..................................................................................................................................... 8 Figure 3: External Interfaces.......................................................................................................................... 10 37-14011 Page 4 of 34 Revision C 1 Preface 1.1 Revisions Rev. 01q Aq 1.2 ECO 37093 37142 Bq 37203 C 37263 Description New release Author KHaworth Date 8/26/2014 Updates for I/O pinout, KHaworth sequencer and command memories Reorganization of KHaworth document, and updates to command and data downlink packets, incorporated feedback from peer review. 1. Changed primary KHaworth control byte data field. 2. Specified MSB first on clock level voltage control memories. 3. Separated correctable and uncorrectable errors in the seq, hsk, and prg memories. 4. Modified housekeeping interface and DAC select pins to do multiplexing on the FPGA. 5. Added serial upper registers and increased size of sequence memory. 6. Transition from sync byte to 10-bit start/stop/data transfer. 10/6/2014 2/5/2015 6/15/2015 References Data Sheet DHU FPGA Specification 37-14011 Reference 37-14010-Bq Page 5 of 34 Notes Revision C Xilinx FPGA 7-series Data Overview TESS Focal Plane Electronics Manual Analog Devices Data Sheets 1.3 ds180_7Series_Overview.pdf The overview has a link to all relevant FPGA documentation TBD AD7894, AD5382 Open Questions Open questions. Indicated in the document as TBD. 1 The pixel interface readout is not defined. 2 TESS FPE isn’t yet in the ECO system. 2 Scope The purpose of this document is to describe the firmware requirements for the Transiting Exoplanet Survey Satellite (TESS) Focal Plane Electronics (FPE) board. The TESS satellite has four cameras. A camera includes Focal Plane Electronic (FPE) boards. The FPE boards include the Video board and the Interface board, where the FPE FPGA resides. One DHU FPGA handles all command/telemetry as well as collecting frames from two FPE FPGAs. This is shown in the following image. 37-14011 Page 6 of 34 Revision C Figure 1: FPE/DHU Overview 37-14011 Page 7 of 34 Revision C 3 FPE Firmware Design 3.1 Overview Figure 2: Block Diagram Each FPE FPGA provides clocks and control for the four CCDs in one camera. Commands and telemetry are exchanged with the DHU, and full frame data is transmitted to the DHU. The Artix7, part number XQ7A50T-FG484 will be used for these FPGAs. There are four primary tasks of this FPGA: 1. CCD Control 2. Pixel Transfer 3. DHU Interface 4. FPE Housekeeping 3.2 CCD Control The FPE board has four 18-bit ADCs that interface to each of four CCDs (total sixteen). Four 15MHz SCLK signals and four conversion signals are provided to the ADCs. Each ADC will provide a serial data input to the FPGA. Over a 24-cycle period, the conversion signal will be high for 8 37-14011 Page 8 of 34 Revision C cycles, and 16 bits of data will be clocked into shift registers on the FPGA during the remaining cycles. This results in a 625 kHz serial pixel rate for the CCDs. Because there are 16 output ports from the camera (4 per CCD), 16 pixels will be available every 1.6 microseconds. 3.3 Pixel Transfer Sixteen pixels will be transferred to the DHU every 1.6 microseconds. 3.4 DHU Interfaces 3.4.1 Data Downlink (DDL) Two LVDS twisted pairs will be used to transfer pixels to the DHU until the full frame is complete. Housekeeping and requested status values will be transmitted between frames. 3.4.2 Serial Synchronous Bus for Command A serial synchronous RS-422 interface running at 3 MHz will be used to transmit commands to the FPE from the DHU. It will also be used to upload the bitfile during initialization. 3.5 FPE Housekeeping Housekeeping will be collected at each frame according to a configurable list held in programmable memory. A total of 120 housekeeping sources will be sampled and sent to the DHU, with variable samples per frame. 37-14011 Page 9 of 34 Revision C 4 Interfaces 4.1 External Interfaces Diagram Figure 3: External Interfaces 4.2 Interface Descriptions The FPE has the following interfaces: CMD: Configuration and Command from the DHU to the FPE. DDL: Data Downlink that transfers pixel, housekeeping, and register/memory data from the FPE to the DHU. HSK: Housekeeping control and data input CLV: Clock Level Voltage Control CCD Clocks: CCD clocking interface CCD Data: CCD Pixel Data JTAG/Debug Oscillator Clock 4.3 CMD Bus A serial synchronous over RS-422 carries commands from the DHU FPGA to the FPE FPGA. This bus will operate at 3 MHz. This bus shares a multipurpose data line (DIN) with the configuration bus. While in configuration, DIN will transfer the bitfile. After configuration, DIN will be used for command data. 4.3.1 CMD Packets This section describes command data over the CMD bus. 37-14011 Page 10 of 34 Revision C 4.3.1.1 Command Packet Format For commands, between 1 and 1025 32-bit words will be sent per access. The first 32-bit symbol will be the control value, with bits as shown in the following table. Bit 31:24 Field Name SYNC 23:21 OPERATION Description x“5A” Used to identify to the control word. If the command does not have this value, it is dropped, and an interrupt message is sent to the DHU. 000 – Frame Start. Ignore all other fields. This starts frame transfer and resets all state machines. 001 – Dump Immediately. Check READ_TYPE field. Note that after the first Frame Start has been issued, this command will be ignored. If Frame Start has been issued, only a reset will allow memory access. 010 – Reset the FPE. Includes all state machines and register values, but not memory. If this value is set, the value in (11:0) must be 0xA96 or else this command will be ignored. 011 – Write request. Ignore DUMP field. 20:19 READ_TYPE 18:16 WRITE_TYPE 100 – FPE Reprogram Request. If this value is set, the value in (15:0) must be set to 0x53C. 00 – Housekeeping data 01 – Program memory 10 – Sequencer memory 11 – Housekeeping memory Note that requesting memory reads is a debug operation, and should not be done while transferring frames. When this is a write command, this field designates the memory to be loaded. 000 = PMEM Program memory. 001 = SMEM Sequencer memory. 010 = HMEM Housekeeping memory. 011 = VMEM Clock voltage levels memory. (invalid for dump) 100 = REG Load the registers. Note that for PMEM, SMEM, VMEM and HMEM, it is required that the entire memory be written. 37-14011 Page 11 of 34 Revision C Bit 15:12 11:0 Field Name Description Registers may be written individually or consecutively, depending on REG_ADDR and REG_NUM fields. REG_ADDR Offset start address of write, when accessing registers. This is ignored when memories are accessed (all memories must be written from 0). REG_NUM or If the operation is a RESET or a REPROGRAM, this RST_PROG_VALID value must be set as specified in the OPERATION description. How many consecutive registers are to be written. If this is a register write, a value of 0 means the command will be ignored. If this is a memory write, a value of 0 means the entire memory will be written. Note that a value other than 0 will allow a partial memory write from address 0. This is for simulation purposes, and should not be used in normal operation. 4.4 Data Downlink (DDL) 4.4.1 Overview Raw pixels (overclock and data) are downloaded over the DDL. The two twisted pairs will run at 120 Mbps (60 MHz with DDR) on a TX-only LVDS connection. Every 1.6 microseconds, sixteen pixels will be split and transferred over the two lines, along with FPE status. Between frames, housekeeping and requested memory dumps will be transmitted. A new frame will start when a FRAME_START operation is received from the DHU. This will occur every 2 seconds. A reset will occur when a RST_FPE operation is received from the DHU. In the interim between frame transfers, if requested, housekeeping and/or memory data will be sent. When no data is available, a sync byte will be sent. 4.4.2 Timing Raw 16-bit pixels are clocked out over 24 15-MHz (66.7 ns) timeslot periods for a total of 1.6 microseconds. A packet will be generated that combines these pixels with one control byte and one status byte per line. 37-14011 Page 12 of 34 Revision C Each line will run at 60 MHz, with data on both clock edges, providing an effective 120 Mbps transfer rate. Over 1.6 microseconds, 192 bits can be transmitted. Each byte transmitted will have a start and stop bit, bringing the total to 10 transfer bits per data byte. Each line will transmit eight pixels of two bytes each, plus one control byte and two status bytes. At 10 bits each, this is 190 bits total. The remaining two bits in the 192 bit transfer will be stop bits. For more information about the control byte and pixel format, see the data packet descriptions. 4.4.3 Packets This section describes the download of full-frame images, housekeeping, and requested memory dumps. All bytes are sent contiguously. 4.4.3.1 Pixel Packets Images are transmitted in packets of one control byte, two status bytes and eight pixels of two bytes each per DDL line. 4.4.3.2 Housekeeping Packets Housekeeping is downloaded at the end of each frame in packets of three control bytes and a programmable number of housekeeping data values of two bytes each. The HSK_SEL bits in the control bytes indicate the pointer in the housekeeping memory that determines which values are to be transferred. The number of values to be transferred is dependent on the value in the HSK_SAMPLES_PER_FRAME register. 4.4.3.3 Requested Memory Packets Requested memory values are downloaded on demand at the end of each frame after the housekeeping packet. These are sent in packets of 32 bytes at a time. There are two control bytes, with the second byte designating which packet is being sent. The number of packets is dependent on the type of telemetry requested. The first and last packets are denoted in the control byte. 4.4.3.4 Primary Control Byte (For Synchronization, Pixel, Housekeeping, and Memory) The following table shows a control byte during normal frame operation. This can represent a synchronization byte, or control for pixel data or memory/housekeeping. Bit Field 7:5 Name DATA 4:0 INFO 37-14011 Description 000 = data packet of upper 8 pixels with 2 bytes (pixels 8 – 15 of packet) FPE status 001 = hsk packet: housekeeping data and registers 010 = synchronization byte 011 = mem packet: housekeeping memory 100 = mem packet: sequencer memory 101 = mem packet: program memory 110 = data packet of lower 8 pixels with 2 bytes (pixels 0 – 7 of packet) FPE status 111 = unused Sync Byte 10011 Data Packet 4:3 - Unused Page 13 of 34 Revision C Bit Field Name Description HSK Packet Mem Packet Interrupt 2 - FRAME_START (1 = start of frame) 1 - FRAME_END (1 = end of frame) 0 - TYPE (Data = 0, Overclock = 1) 4:1 = unused 0 - HSK_SEL bit (8) Bits 4:0 - unused Unused (00000) 4.4.3.5 Secondary Control Byte (For Memory) The following table shows the secondary control byte when a memory dump is in progress. Bit Field 7:3 Name NUM_PKT 1:0 FIRST/LAST Description The number of the packet being sent, starting at 0 for each memory block. 00 = Packet in progress 01 = First packet 10 = Last packet 11 = Unused 4.4.3.6 Status Byte 1 The value of this status register will be sent to the DHU after each pixel, housekeeping, and memory packet. These do not clear until the error has been resolved. Field Name CFG_CRC_ERR Field 7 CFG_ECC_ERR 6 37-14011 Reset Description Resolution 0 The configuration memory has reported a CRC mismatch. This means that more than one error has been detected in a frame. This is unfixable, and the configuration must be reloaded. 0 The configuration memory has reported a single or double bit error. This will be automatically cleared if fixed. If unable to fix, CRC_ERR will be Page 14 of 34 Revision C REG_ERR 5 0 HSK_ERR 4 0 PRG_ERR 3 0 SEQ_ERR 2 0 CMD_REJECT 1 0 CMD_INVALID 0 0 asserted. One of the registers has a parity error. The housekeeping memory has an uncorrectable ECC error. The program memory has an uncorrectable ECC error. The sequence memory has an uncorrectable ECC error. An attempt to write/read memory while the FPE is enabled has been made. A command has been detected, but it does not decode to a known operation. 4.4.3.7 Status Byte 2 The ID of the FPGA. Field Name VERSION Field 7:5 Type RO ID 4:0 RO Reset Depends on version Depends on camera Description The version of the FW. The status of the strapped FPGA ID pins 4.4.3.8 Order of Pixel Packet Transfer (lineA/line B) Order 1 2 3 … 16 17 18 19 37-14011 Byte Primary Control Byte Pixel8 Data 15:8/Pixel0 Data 15:8 Pixel8 Data 7:0/Pixel0 Data 7:0 Pixel15 Data 15:8/Pixel7 Data 15:8 Pixel15 Data 7:0/Pixel7 Data 7:0 Status Byte 1 Status Byte 2 Page 15 of 34 Revision C 4.4.3.9 Order of HSK Packet Transfer A housekeeping packet consists of the FPE housekeeping data requested, along with the current status of all registers in the FPE. The size of the packet is determined by the register HSK_SAMPLES_PER_FRAME. The number of 16-bit samples requested, added to the number of register values (see register section), is the total data transferred in a HSK packet. Order 1 2 3 4 5 … Byte Primary Control Byte HSK_SEL(7:0) Number of bytes to follow HSK1_upper (15:8) HSK1_lower (7:0) HSKN_upper (15:8) HSKN_lower Register0(15:8) Register1(7:0) … RegisterM(15:8) RegisterM(7:0) 4.4.3.10 Order of Memory Packet Transfer Memory packets are transmitted 32 bytes at a time, with the packet number sent after the control byte. Order 1 2 3 … 34 4.5 Byte Primary Control Byte Secondary Control Byte MEM byte 0 + Packet Number*32 MEM byte 31 + Packet Number * 32 CCD Data Input 4.5.1 Overview The FPGA controls and captures data from 16 Analog to Digital Converters, Part # AD7984 (spec 37-99012.01). Each ADC requires a 15 MHz clock and a conversion bit, and outputs 18 serial data bits during acquisition phase. Of these bits, only the 16 most significant are clocked out. 37-14011 Page 16 of 34 Revision C 4.5.2 Focal Plane CCD Connections Readout TBD. 4.5.3 Focal Plane CCD Timing The ADC components are clocked at 15 MHz. One ADC timeframe is divided in 24 timeslots. Of these, 18 timeslots are used for conversion, and the remaining 16 timeslots are used to clock out 16 pixels of data simultaneously from the CCDs. The conversion bit in the sequencer memory determines when the conversion will be asserted, after which the data will be clocked in. 4.6 CCD Clocks The CCD signals and the ADC conversion are controlled by the sequencer. Before reviewing this section, review the sequencer and program memories in the Memories section. Signal Name IA1, 2, 3 FS1, 2, 3 S1, 2, 3 ID RG CNV Clamp, Int, Hold Signal Description Imaging array clocks. These are repeated per CCD. Frame store clocks. These are repeated per CCD. Serial register clocks Injection Diode Reset Gate ADC conversion ADC control 4.6.1 Configuration A combination of the program and sequence memory is used to clock the CCDs. The program memory is used to select specific sequences. Both memories must be programmed before the first frame start is received. Memory details can be found in the Memories section. For example, suppose the following program is desired to run at frame start: 1. Transfer the frame from image array to storage. 2. Transfer out 10 overclock rows of 528 pixels, with each row transfer followed by a transfer from storage to serial. 3. Transfer out 2064 rows of 10 overclocks, 508 data pixels, and 10 overclocks, with each row transfer followed by a transfer from storage to serial. 4. Transfer out 10 overclock rows of 528 pixels, with each row transfer followed by a transfer from storage to serial. 5. Transfer out a row of 528 pixels to flush out the serial register(not data). 6. Integrate. Four different sequences would need to be in the sequencer memory as follows: 1. Transfer the frame from image array to storage. (143 addresses 0x0A7 – 0x135) 2. Transfer a row from storage to serial. (143 addresses 0x018 – 0x0A6) 3. Transfer a pixel out. (24 addresses 0x000 – 0x017) 37-14011 Page 17 of 34 Revision C 4. Integrate (1 address starting at 0x135) The program memory is programmed as follows. Note that “--" means not applicable. It will be ignored by the sequencer and can be filled with 0s. Prog Addr 0x000 SEQ Start 0x0A7 SEQ End 0x135 Rpt Type 0 Rpt Loop Data Type 0x2 Fra me 0 Action -- Ho ld 0 1 0x001 0x000 0x017 0 528 -- 0 0x1 1 0 1 -- 0 0x2 1 -- 1 10 0x001 0 0x2 1 Transfer a row of overclocks out Transfer a row from storage to serial Repeat from 0x001 10 times 0x002 0x018 0x0A6 0x003 -- 0x004 0x000 0x017 0 10 -- 0 0x1 1 0x005 0x000 0x017 0 508 -- 0 0x0 1 0x006 0x000 0x017 0 10 -- 0 0x1 1 0x007 0x008 0x018 -- 0x0A6 -- 0 1 1 2064 -0x004 0 0 0x2 0x2 1 1 0x009 0x000 0x017 0 528 -- 0 0x1 1 0x00A 0x00B 0x018 -- 0x0A6 -- 0 1 1 10 -0x009 0 0 0x2 0x2 1 1 0x00C 0x000 0x017 0 528 -- 0 0x2 0 Flush out a row of no data 0x00D 0x135 0x135 0 -- -- 1 0x2 0 Integrate 4.7 Image array to storage Transfer 10 overclocks Transfer 508 pixels Transfer 10 overclocks Storage to serial Repeat from 0x004 2064 times Transfer a row of overclocks Storage to serial Repeat from 0x009 10 times Housekeeping 4.7.1 Overview Housekeeping monitors temperatures and voltages from 120 different sources and transfers the information to the DHU. A programmable memory is used in order to control the housekeeping select. At the end of each frame, the number of values set in the HSK_SAMPLES_PER_FRAME register will be read from the memory and output to the housekeeping mux on the board. Data will be collected, with a programmable pause between each sample, and transferred to the DHU. 37-14011 Page 18 of 34 Revision C 4.7.2 Interface Signals The housekeeping ADCs on the board are controlled by the following signals: Signal Dir Description from FPGA HSK_ADC_SCK O 15 MHz gated clock. This runs only for 16 clocks when housekeeping data is being sampled. HSK_ADC_CNV O The active low conversion signal for the ADCs. HSK_ADC_SDI I Serial data input, available after conversion on the rising edge of the HSK_ADC_SCK. HSK_ADC_SEL[2] O Address select for the housekeeping multiplexors. HSK_ADC_nn O Individual, active high selects for each multiplexor. 4.7.3 Configuration To configure the Housekeeping to sample data at each frame: 1. Write a value into the HSK_SAMPLES_PER_FRAME register. If this register remains at 0, no housekeeping values will be sampled. 2. Write a value into the HSK_TIME_CONV register to indicate the number of 15 MHz clocks that the conversion signal will be held high for each sample. 3. Write a value into the HSK_TIME_BTN_SAMPLES to indicate the number of 15 MHz clocks to wait between taking samples. 4. Write a value into the HSK_TOTAL_SAMPLES to indicate how many values are in the housekeeping memory. 5. Write the sequence of housekeeping desired into the housekeeping memory. See housekeeping memory format for specifics. 6. Write a ‘1’ into the DUMP_HSK in the Command Packet Control Word at each frame. The housekeeping state machine will sample the values set in the memory until it reaches the HSK_SAMPLES_PER_FRAME. On the next frame, it will continue sampling from the point it left off until it reaches HSK_TOTAL_SAMPLES, when it will return to the beginning of the memory. To reset the pointer, set the HSK_RST bit in the SOFT_RST register. 37-14011 Page 19 of 34 Revision C 4.8 Voltage Control CCD clock voltages are controlled via DACs. A 4-bit DCS line is used to control a board decoder that handles multiple DACs on the Video Board, and four individual CS lines are used to program specific DACs on the Interface Board. A 15 MHz clock and sync signals are provided for the DACs. There are 128 16-bit voltage control registers. Once the last value is written, all clock level voltages will be programmed. In order to reprogram, the memory must be rewritten. Values in the memory are not stored, so may not be read back. See the Voltage Memory for programming details. 4.9 JTAG/Debug A JTAG bus allows configuration for test purposes as well as debug. There are also 8 general purpose signals available for debug. 4.10 Oscillator Clock The board oscillator delivers a 60 MHz clock to the FPGA. 4.11 Chip I/O I/ O I PULLUP/ DOWN/ NONE UP I I UP UP I O O O O O O O O O O O I NONE Name FPE_SN[4:0] Cmd_DIN_pin Cmd_SCK_pin osc_clk_60_pin CCD_FS1_pin[3:0] CCD_FS2_pin[3:0] CCD_FS3_pin[3:0] CCD_IA1_pin[3:0] CCD_IA2_pin[3:0] CCD_IA3_pin[3:0] CCD_InputDiode_pin CCD_ResetGate_pin CCD_S1_pin CCD_S2_pin CCD_S3_pin Drive Str (mA) Type Description LVCMOS25 Denotes which camera is hooked to the FPGA. Command Data from the DHU Command Clock from the DHU 60 MHz clock CCD FS clocks (3) for all CCDs (4) LVCMOS33 LVCMOS33 8 8 8 8 8 8 8 8 8 8 8 UP LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 LVCMOS33 HSK_ADC_Sdi_pin O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 HSK_ADC_0_pin HSK_ADC_8_pin HSK_ADC_16_pin HSK_ADC_32_pin 37-14011 Page 20 of 34 CCD IA clocks (3) for all CCDs (4) Input Diode Reset Gate CCD Serial register clocks (3) Housekeeping ADC Serial data in HSK Interface Board ADC select 0 HSK Interface Board ADC select 8 HSK Interface Board ADC select 16 HSK Interface Board ADC Revision C O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 O 8 LVCMOS33 8 8 LVCMOS33 LVCMOS33 HSK_ADC_40_pin HSK_ADC_48_pin HSK_ADC_56_pin HSK_ADC_64_pin HSK_ADC_72_pin HSK_ADC_80_pin HSK_ADC_88_pin HSK_ADC_96_pin HSK_ADC_104_pin HSK_ADC_112_pin HSK_ADC_120_pin HSK_ADC_Cnv_pin HSK_ADC_Sck_pin O O UP I UP HSK_ADC_Sel_pin[2:0] CCD_ADC_Sdi_pin[15:0] CCD_ADC_Clamp CCD_ADC_Int CCD_ADC_Hold CCD_ADC_Cnv_pin CCD_ADC_Sck_pin CLC_CS8_11_pin[3:0] CLC_DAC_Din_pin LVCMOS25 O O O O O O 8 8 8 8 8 8 LVCMOS25 LVCMOS25 LVCMOS25 LVCMOS25 LVCMOS25 LVCMOS25 O O 8 8 LVCMOS25 LVCMOS25 O 8 LVCMOS25 O O O O O O O O O 8 8 8 8 8 8 8 8 8 LVCMOS25 LVCMOS25 LVCMOS25 LVCMOS25 LVCMOS25 LVCMOS25 LVCMOS25 LVCMOS25 LVDS_25 CLC_DAC_Sck_pin CLC_DCS_0_pin CLC_DCS_8_pin CLC_DCS_16_pin CLC_DCS_24_pin CLC_DCS_32_pin CLC_DCS_40_pin CLC_DCS_48_pin CLC_DCS_56_pin CLC_DCS_96_pin dataA_out_pin_p/n 37-14011 Page 21 of 34 select 32 HSK Interface Board ADC select 40 HSK Interface Board ADC select 48 HSK Interface Board ADC select 56 HSK Interface Board ADC select 64 HSK Interface Board ADC select 72 HSK Interface Board ADC select 80 HSK Interface Board ADC select 88 HSK Interface Board ADC select 96 HSK Interface Board ADC select 104 HSK Interface Board ADC select 112 HSK Interface Board ADC select 120 ADC Conversion for housekeeping Serial clock for housekeeping Video Board address select for housekeeping Serial Data input from CCDs (16) Conversion for CCD ADCs Clock for CCD ADCs Clock Level Control Chip Selects for Interface board— active low Clock Level Control DAC Data Clock Level Control DAC Clock, 15 MHz Clock Level Control Interface Board Selects Twisted pair LVDS Data to DHU, Line A. Off-chip termination FD_100 Revision C dataB_out_pin_p/n DebugStatus_pins[7:0] O 8 LVDS_25 O 4 LVCMOS25 5 Memories 5.1 Memory Overview Twisted pair LVDS Data to DHU, Line B. Off-chip termination FD_100 Debug/Unused Table 1: List of Memories Name Registers SEQ_MEM PRG_MEM HSK_SEL_MEM VOLT_MEM 5.2 Size 16x16 1024x36 512x64 512x7 128x16 Description Control and Status Registers Sequencer Memory Program Memory Housekeeping Select Memory Voltage Levels Control Memory Memory Descriptions 5.2.1 Program Memory The program memory consists of programs that control the sequencer. Each program is 64 bits wide, and formatted as follows: Bit Field 63:47 46:37 36:27 26 Name Unused ST_ADDR END_ADDR RPT_TYPE 25:13 RPT 12:4 LOOP 3 HOLD 2:1 DATA_TYPE 0 FRAME 37-14011 Description Start address in the Sequence memory End address in the Sequence memory 0 = Repeat the sequence the number of times indicated in the RPT field. 1 = Repeat a number of consecutive sequences the number of times indicated in the RPT field. How many times to repeat a sequence, or a set of consecutive sequences. Note that 0 or 1 has the same result—no repeat is executed. If RPT_TYPE = 1, then loop back to this program memory address RPT number of times. Continue to process this sequence indefinitely (until Frame Start resets). 00 = image data 01 = overclock 10 = no data (will NOT be transferred to DHU) 11 = unused 0 = Frame transfer in progress Page 22 of 34 Revision C 1 = Frame transfer not in progress 5.2.2 Sequence Memory The sequence memory consists of programs that control CCD clocks. Each sequence is 33 bits wide, and formatted as follows: Bit Field 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 37-14011 Name CCD_SU_Clock1 CCD_SU_Clock2 CCD_SU_Clock3 CCD4_IA_Clock1 CCD4_IA_Clock2 CCD4_IA_Clock3 CCD3_IA_Clock1 CCD3_IA_Clock2 CCD3_IA_Clock3 CCD2_IA_Clock1 CCD2_IA_Clock2 CCD2_IA_Clock3 CCD1_IA_Clock1 CCD1_IA_Clock2 CCD1_IA_Clock3 CCD4_FS_Clock1 CCD4_FS_Clock2 CCD4_FS_Clock3 CCD3_FS_Clock1 CCD3_FS_Clock2 CCD3_FS_Clock3 CCD2_FS_Clock1 CCD2_FS_Clock2 CCD2_FS_Clock3 CCD1_FS_Clock1 CCD1_FS_Clock2 CCD1_FS_Clock3 CCD_S_Clock1 CCD_S_Clock2 CCD_S_Clock3 CCD_RG CCD_ID Int Hold Clamp CNV Description Serial upper register clock 1 Serial upper register clock 2 Serial upper register clock 3 Imaging Array Clock 1 CCD4 Imaging Array Clock 2 CCD4 Imaging Array Clock 3 CCD4 Imaging Array Clock 1 CCD3 Imaging Array Clock 2 CCD3 Imaging Array Clock 3 CCD3 Imaging Array Clock 1 CCD2 Imaging Array Clock 2 CCD2 Imaging Array Clock 3 CCD2 Imaging Array Clock 1 CCD1 Imaging Array Clock 2 CCD1 Imaging Array Clock 3 CCD1 Frame Store Clock 1 CCD4 Frame Store Clock 2 CCD4 Frame Store Clock 3 CCD4 Frame Store Clock 1 CCD3 Frame Store Clock 2 CCD3 Frame Store Clock 3 CCD3 Frame Store Clock 1 CCD2 Frame Store Clock 2 CCD2 Frame Store Clock 3 CCD2 Frame Store Clock 1 CCD1 Frame Store Clock 2 CCD1 Frame Store Clock 3 CCD1 Serial register clock 1 Serial register clock 2 Serial register clock 3 Reset Gate Injection Diode ADC Int ADC De-Int ADC Clamp ADC Conversion Page 23 of 34 Revision C 5.2.3 Housekeeping Memory The housekeeping memory consists of select values to choose a specific housekeeping component to sample. Each value is 7 bits wide, and formatted as follows: Bit Field 6:3 2:0 Description Selects which housekeeping ADC is addressed. 0 = HSK_ADC_0 1 = HSK_ADC_8 2 = HSK_ADC_16 3 = HSK_ADC_24 4 = HSK_ADC_32 5 = HSK_ADC_40 6 = HSK_ADC_48 7 = HSK_ADC_56 8 = HSK_ADC_64 9 = HSK_ADC_72 10= HSK_ADC_80 11 = HSK_ADC_88 12 = HSK_ADC_96 13 = HSK_ADC_104 14 = HSK_ADC_112 15= HSK_ADC_120 Provides select line for housekeeping ADC. Output to HSK_ADC_SEL(2:0). 5.2.4 Voltage Control Memory The voltage control memory consists of values to program FPE clock level voltages via DACs. The values can also be used to reset the DACs. Each value is 16 bits wide, and formatted as shown in the following table. Data is sent MSB first (bit 15 down to bit 0). Details can be found in spec sheet AD5329 (37-99012). Bit Field 15 14:12 11:0 Name Control Address Data The DAC selected is dependent on upper bits of the address. The output signals CLS_DCS_*_pin are toggled as shown in the following table, where * is the DAC Addressed. Address 6:3 0 1 37-14011 DAC Addressed 0 8 Page 24 of 34 Revision C 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 24 32 40 48 56 64 72 80 88 96 Unused Unused Unused 5.2.4.1 Software Programming of Clock Level Voltage Memory The clock level voltage memory must be completely filled before DAC writes will take place. If it is necessary to skip a DAC value, enter x”FFFF” into the data at the corresponding address. If it is necessary to perform a reset, follow instructions in the AD5328 document, and set the 11:0 bits (designated as ‘don’t cares’ in the document) to 0’s. Details of the DAC designations can be found in the TESS Focal Plane Electronics Manual. Example: To program a voltage value of +6.0 (1190) into the Serial High DAC, CCD3: 1. Check Table 7 of the TESS Focal Plane Electronics Manual. The Clock Driver Group is specified as 10CCXXX, where CC is the CCD and XXX is the specific Clock Driver. In this case, CC is “11” and XXX is “010”. 2. In Clock Level Voltage memory address “1011010”, program “0 101 0100 1010 0110”. This represents a control byte of ‘0’, an address of “101”, and data of 1190, converted to binary. 5.2.4.2 Firmware Execution of DAC writes Once all memory locations have been written, a state machine will commence programming the DACs from the first to the last address of the memory. Between each DAC write, a clock cycle of 66.7 ns is inserted. This is to meet the timing requirement of the AD5328 specification. Any data values of x”FFFF” will be skipped. For the value set in the example above, when address “1011010” is reached, the DCS will be set to “1010”, the CS8_11 will be set to “1101”, and the data “0101010010100110” will be sent out, MSB first. 37-14011 Page 25 of 34 Revision C 6 Registers 6.1 Register Writes The registers are 16 bits wide, and can be written via the CMD interface individually or consecutively. If written consecutively, writes to read-only bits will be ignored. 6.2 Register Reads Read/write register values can be dumped either at the end of the frame, or immediately. An immediate dump is for debug purposes only and can’t be used while processing pixels. 6.3 Register Address Map Table 2: Register Address Map Address Name Housekeeping Control 0x00 HSK_TIME_CONV 0x01 HSK_TIME_BTN_SAMPLES 0x02 HSK_TOTAL_SAMPLES 0x03 HSK_SAMPLES_PER_FRAME 0x04 0x05 CHARGE_PUMP_ENA FORCE_STATUS Sequence Control 0x06 PRG_FS_PTR Debug (sent with housekeeping, but not writeable) 0x07 FRAMES_XMT 0x08 TEST_MODE 0x09 HSK_SBIT_ERR_CNT 0x0A SEQ_SBIT_ERR_CNT 0x0B CMD_SBIT_ERR_CNT 6.4 Register Descriptions 6.4.1 PRG_FS_PTR This register contains the address where the command buffer will start when the Frame Transfer Start command is received. Field Name CMD_PTR 37-14011 Field 8:0 Type RW Reset 0 Page 26 of 34 Description Address pointer for the command memory. Revision C 6.4.2 HSK_TIME_CONV The number of 15 MHz clocks to hold the housekeeping ADC conversion signal high. Bit Field CONV Bit# 7:0 Access RW Reset 0 Description Number of 15 MHz clocks to assert conversion. 6.4.3 HSK_TIME_BTN_SAMPLES The number of 15 MHz clocks to wait between samples for the signals to settle. Bit Field SETTLE Bit# 15:0 Access RW Reset 0 Description Number of 15 MHz clocks to wait for next sample. 6.4.4 HSK_TOTAL_SAMPLES This register denotes the number of consecutive housekeeping sample requests in the memory. This allows the user to only fill as many housekeeping samples as required. Requests must be consecutive starting from 0. Bit Field NUM_MEM_ SAMPLES Bit# 8:0 Access RW Reset 0 Description Number of consecutive housekeeping values in the memory. 6.4.5 HSK_SAMPLES_PER_FRAME This register denotes the number of housekeeping samples taken per frame. If this is set to 0, no housekeeping will be transferred, regardless of the state of the DUMP_HSK bit in the Command from the DHU. The maximum allowed is 32. Bit Field PER_FRAME Bit# 5:0 Access RW Reset 0 Description Number of consecutive housekeeping values in the memory. Maximum allowed is 32. 6.4.6 CHARGE_PUMP_ENA Enables clock (oscillator frequency/96) output for the charge pumps that make ±30 V. Bit Field CP_ENA Bit# 0 Access RW Reset 0 Description 1 = Enable Charge Pump 0 = Disable Charge Pump 6.4.7 FORCE_STATUS This is for debug purposes only. In order to test out all status bits, this register can be written to force errors to be transmitted in the status byte (see section Status Byte 1). 37-14011 Page 27 of 34 Revision C Bit Field CFG_CRC_ERR Bit# 7 Access RW Reset 0 CFG_ECC_ERR 6 RW 0 REG_ERR 5 RW 0 HSK_ERR 4 RW 0 PRG_ERR 3 RW 0 SEQ_ERR 2 RW 0 CMD_REJECT 1 RW 0 CMD_INVALID 0 RW 0 Description The configuration memory has reported a CRC mismatch. This means that more than one error has been detected in a frame. This is unfixable, and the configuration must be reloaded. The configuration memory has reported a single or double bit error. This will be automatically cleared if fixed. If unable to fix, CRC_ERR will be asserted. One of the registers has a parity error. The housekeeping memory has an uncorrectable ECC error. The program memory has an uncorrectable ECC error. The sequence memory has an uncorrectable ECC error. An attempt to write/read memory while the FPE is enabled has been made. A command has been detected, but it does not decode to a known operation. 6.4.8 FRAMES_XMT This register reports how many frames have been transmitted since last reset, for debug purposes. Rolls over at max. This is transmitted with the housekeeping packet, but can’t be written. Field Name FRAMES_XMT Field 15:0 Type RO Reset 0 Description Number of frames transmitted since last reset. 6.4.9 TEST_MODE This register allows control over test data sent. Test data replaces incoming CCD data over the sixteen ADC inputs. This is transmitted with the housekeeping packet, but can’t be written. 37-14011 Page 28 of 34 Revision C Bit Field MODE Bit# 1:0 Access RW Reset 0 Description Test modes, described in the DFT section. 00 = Normal operation (data from CCDs, sequencer) 01 = Algorithm 1. 10 = Algorithm 2. 11 = Algorithm 3. 6.4.10 HSK_SBIT_ERR_CNT This is how many single-bit errors the housekeeping memory has detected and corrected since the last reset. This is transmitted with the housekeeping packet, but can’t be written. Bit Field SBIT_ERR Bit# 15:0 Access RW Reset 0 Description Number of single-bit errors corrected. 6.4.11 SEQ_SBIT_ERR_CNT This is how many single-bit errors the sequence memory has detected and corrected since the last reset. This is transmitted with the housekeeping packet, but can’t be written. Bit Field SBIT_ERR Bit# 15:0 Access RW Reset 0 Description Number of single-bit errors corrected. 6.4.12 CMD_SBIT_ERR_CNT This is how many single-bit errors the command memory has detected and corrected since the last reset. This is transmitted with the housekeeping packet, but can’t be written. Bit Field SBIT_ERR Bit# 15:0 7 Resets 7.1 Power Up Access RW Reset 0 Description Number of single-bit errors corrected. After configuration, the Xilinx Global Synchronous Reset is released, and all flip flops (memory and registers) are set to a value determined by the initialization in the configuration file. 37-14011 Page 29 of 34 Revision C 7.2 Reset A software reset is applied as a special operational command from the DHU (see command packet format section). This reset is synchronized via two flops to each of three clock domains: Clk_30, Clk_15, and Clk_15_DL. The Reset sets all state machines to their idle state, resets the SERDES, and sets registers to the Reset value as described in the Register section. This does not reset the memories. 7.3 Frame Start A frame start command resets all state machines to their idle state. This does not reset registers or memories. 8 Clocks Table 3: Clocks Clock Speed 60 MHz 60 MHz 15 MHz 15 MHz 30 MHz 8.1 Name Osc_Clk Clk_60_DL Clk_15_DL Clk_15 Clk_30 Notes Oscillator Clock Fast serial interface Slow serial interface System Clock Sequencer to Program Memory Interface Clock tree The following diagram shows the clock tree for the FPE. Note that the BUFR/BUFIO combination for the SERDES is designed as described in the Xilinx Serial IO documentation. IBUFG : Xilinx Input Buffer BUFMR : Xilinx Multiregion Buffer BUFR : Clock buffer with divide BUFIO: Clock buffer designed for SERDES IO applications 37-14011 Page 30 of 34 Revision C 9 FPGA Configuration The Artix-7 FPGA will be in slave mode with a serial synchronous interface of CCLK (a dedicated pin) and DIN (a multi-use pin) for configuration. The configuration M pins are tied to “111”. When the FPGA is powered up, it must be loaded via the serial synchronous interface. Once this is complete, DIN will be reused for commanding the FPE. A JTAG interface will be provided for lab configuration of the FPGA. Per Xilinx specification, this interface is always available, regardless of M pin settings. 9.1 Typical Configuration Procedure When the Data Handling Unit (DHU) is powered up, the Single Board Computer (SBC) loads the bitfiles into the DHU FPGAs. The FPE FPGAs bitfiles are then loaded via the CMD interface between the DHU and FPE FPGA. Once the FPE FPGA has been loaded with a bitfile, it starts sending sync commands over the DDL interface, thus letting the DHU know it’s operational. 10 Conventions In this design, bit ‘0’ designates the LSB. All transfers will transmit the least significant byte/word/double word first. Data and memories are little endian. 11 Radiation Mitigation Open issues: The radiation environment, while extremely low in the TESS mission, has yet to be fully specified. Mitigation is described below; however, more analysis needs to be done once the environment is determined. Specifically, how often the events are expected to occur might affect science requirements. Upsets can occur in the configuration memory, in the on-chip block RAM, or in the logic itself. 37-14011 Page 31 of 34 Revision C Currently, it is expected that the configuration memory will have upsets at the rate of five per day. On-chip block RAM and logic data upsets are still unknown. 11.1 Configuration Memory The Xilinx FPGAs have built in error detection and correction for SEUs in the configuration memory. Details can be found in Xilinx User Guide ug470_7Series_Config. A FRAME_ECC2 primitive will be instantiated to collect information on the error detection and correction, and status will be sent in Status Byte 1. In the event of an error that cannot be corrected, the error bit will persist, and the configuration must be reloaded, either by a command requesting a configuration scrub, or if that fails, by cycling the power and reconfiguring. This will take approximately 10 seconds, during which no science data will be collected on this particular camera. It will not affect other the other cameras. 11.2 On-chip Block RAM All memories that hold persistent data (sequence, program, and housekeeping) will have ECC. The status of this will be reflected in Status Byte 1. If an uncorrectable error is found, the FPE must be disabled, and the memories must be reloaded. This will take less than a frame. While this occurs, science data will not be collected. 11.3 Design Logic An upset can occur anywhere in the logic, resulting in a flipped register bit, incorrect science data, or an error in the interface to the DHU. 11.3.1 Registers All registers that hold persistent data will have a parity bit that is calculated when the register is written. These bits will be checked on read. Status Byte 1 will reflect an error. Since the error bit will not specify which register, all registers must be rewritten. Since the registers are all housekeeping specific, this will not necessarily stop science data from being collected, though housekeeping data will not be accurate until the registers are reloaded. 11.3.2 Logic Upset Detection While the configuration, registers, and block memory have automatic detection, a logic upset will not be as apparent. The following sections discuss ways to detect a logic upset. 11.3.2.1 Loss of sync/bad downlink control byte The synchronization byte is transmitted whenever there is no data, and the downlink control byte is transmitted per packet. This might occur if an SEU occurs in DDL logic or in the data. The DHU will detect this almost immediately. If it is simply a data bit flip, it will correct itself. Otherwise, the problem will persist. 11.3.2.2 Frame start/Frame end does not occur when expected The DHU keeps track of the PPS signal, which starts a frame on alternate assertions. If the control bytes for the pixel do not send a frame start or end, this might indicate an SEU occurred in the Sequencer logic or in the Command Decode logic (frame start was not decoded properly). The DHU will detect this once per frame. 37-14011 Page 32 of 34 Revision C 11.3.2.3 Commands If an incorrect command is received, a bit will be reflected in the Status Register. This is an indication that something might be wrong with the command interface. If an upset has occurred so that command logic is no longer receiving commands, this will be discovered by the DHU when the next frame is expected, but not transmitted. 11.3.3 Logic Upset Mitigation There are three possible mitigations for a logic upset, if the error does not correct itself (as explained in the previous section). These should be tried in the order given, as they are listed least disruptive to most disruptive. 1. Wait for the next frame. All state machines are automatically reset when a frame start command is received. 2. Issue a software reset to the FPE. This will require reconfiguring the registers. 3. Power cycle. This will require reloading the bitfile and reconfiguring the memories and registers. 12 Design For Test (DFT) 12.1 Debug I/O The following signals will be made available via the Debug bus for observability of functions while lab testing: 1. Frame Start Received (will toggle at each receipt) 2. End of frame (will clear at Frame Start) 3. Command received (will clear at Frame Start) 4. Housekeeping sent (will clear at Frame Start) 5. Clocks on 6. Test Mode 12.2 Image Generation Image data is captured from the ADC inputs into shift registers. Data will be generated via an algorithm according to the TEST_MODE. 13 Current power estimates The current total power is estimated at 174 MW. However, the I/O Nodes activity has yet to be specified, which will increase this by a small amount. The following table shows a breakdown of the power supply. Source Vccint Vccaux Vcco33 Vcco25 37-14011 Voltage (V) 1 1.8 3.3 2.5 Dynamic (mA) 12 1 4 31 Page 33 of 34 Static (mA) 10 13 1 1 Revision C VccADC 14 1.8 0 20 Acronyms/Abbreviations Table 4: Acronyms/Abbrevations ADC CCD CMD CS DFT DDL DDR DHU FFI FPE FPGA FS GPIO IA ID IG JTAG LSB MSB OG RD RG S SBC SCP SEU SUB TBD USD 37-14011 Analog to Digital Converter Charge Coupled Device Command Bus Channel Stop Design for Test Data Downlink Bus Double Data Rate Data Handling Unit Full Frame Image Focal Plane Electronics Field Programmable Gate Array Frame Store General Purpose Input/Output Imaging Array Injection Diode Input Gate Joint Test Action Group (Test Access Port and Boundary Scan) Least Significant Bit Most Significant Bit Output Gate Reset Drain Reset Gate Serial Single Board Computer Scupper Single Event Upset Substrate To Be Determined Upper Serial Drain Page 34 of 34 Revision C