The ASTRO-H1 (named Hitomi after launch on February 17, 2016) is the sixth Japanese x-ray astronomy satellite and was developed under international collaboration of Japan, United States, Europe, and Canada. The pulse shape processor2–4 (PSP) is a digital signal-processing electronic for the microcalorimeter instrument, soft x-ray spectrometer5 (SXS) onboard ASTRO-H. The SXS has 36 sensor pixels, which are operated at 50 mK to measure heat input of x-ray photons and realizes energy resolution of full-width at half-maximum (FWHM) in 0.3 to 12.0 keV. Receiving digitized waveform (14 bit, 12.5 kHz sample) from 18 channels apiece, two identical units of PSP-A and -B trigger x-ray events, assign an event grade, and perform optimal filtering to measure energy deposit on the microcalorimeter pixels. This paper describes results of the initial in-orbit performance of the PSP as well as the related technical details.
Overview of the PSP
The PSP is a digital signal processor of the SXS, and it has following functions:
• To process continuously the digitized waveform from the detector system.
• To receive commands from the spacecraft.
• To output the house-keeping (HK) telemetry, the event telemetry, and the diagnostic telemetry to the spacecraft.
• To calculate noise spectra, average pulses, and templates (see Sec. 3.2) of the detector.
It is requested to the PSP to make full use of the detector performance in terms of energy resolution, event triggering and grading, time-assignments, background/crosstalk rejection, counting capability, etc. Particularly for the counting capability, processing more than 150 c/s/array of the incoming x-rays is required to the PSP. The PSP realizes these functions and requirements in combination of its hardware and the onboard software. The basic algorithm of the x-ray pulse processing in the PSP is described in a separate paper.3
The processing algorithm of the PSP follows that of the calorimeter digital processor for the Suzaku XRS.6,7 However, the PSP is implemented on a completely different hardware. In Fig. 1, we show a block diagram of the PSP. The analog signals from the x-ray microcalorimeter detector are amplified and digitized by the analog-to-digital signal processing unit called the x-ray amplifier box (XBOX). The digital data are transferred to the PSP via low voltage differential signal (LVDS) lines with sampling rate of 12.5 kHz. The data contain stream of the 14-bit adc_sample, which is a raw value sampled by the analog-to-digital converter (ADC) in the XBOX. From the stream of the adc_sample, the PSP calculates the 16-bit derivative by applying a boxcar filter, and the derivative is used for the triggering. Both the adc_sample and the derivative are stored in a buffer memory named waveform ring-buffer (WFRB) in the PSP. The size of the WFRB is 1 MB containing samples (20.97152 s in 12.5 kHz) for each pixel.
The PSP has two electrically identical hardware: PSP-A and PSP-B. One PSP processes the continuous data of 18 channel (from the microcalorimeter pixels) and 1 channel (from the anticoincidence sensor) sequence units, triggers discrete pulses and noise records from the data stream. The hardware design of each PSP consists of a field-programmable gate array (FPGA) board, two central processing unit (CPU) boards, and a power supply board. These boards are developed by JAXA and Mitsubishi Heavy Industries, Ltd. The communication between the FPGA board and the CPU board uses the SpaceWire protocol, which is the standard high-speed serial communication in satellites based in part on the IEEE 1355. Table 1 shows hardware specifications of the FPGA board and the CPU board. Telemetry from the PSP is edited into Space Packets, which is the standard protocol for satellites by the Consultative Committee for Space Data Systems, and they are transferred to the satellite management unit (SMU) or the data recorder (DR) via SpaceWire. We assume all the Space Packets shall be downlinked to the ground station (Uchinoura Space Center), although we have to select and prioritize the Space Packets because the capacity of the DR is limited and shared with other mission instruments. See the next paragraph in detail. Commands are transferred from the SMU to the PSP. The PSP also relays commands to the XBOX and telemetry from the XBOX.
Specifications of the FPGA board and the CPU board.
|FPGA board||CPU board|
|SpaceWire||Three ports||Four ports (two in FPGA + two in CPU)|
|Memory||SDRAM (64 MB)||SDRAM (64 MB), SRAM (4 MB), EEPROM (2 MB)|
|Clock||20 MHz||60 MHz|
The list of telemetry packets from the PSP is shown in Table 2. A single Space Packet is identified by a combination of three identifier numbers, namely, application process identifier (APID), lower function object identifier (FOID) (Upper FOID is equivalent of lower 8 bit of APID.), and Attribute ID. is assigned for SMU-A/B, for PSP-A0/A1/B0/B1, and for XBOX-A/B. The maximum size of a Space Packet is 1024 octets for ASTRO-H; however, it is allowed to generate a longer spacecraft monitor and control protocol (SMCP) message up to octets, which is segmented into multiple Space Packets. Lower 32-bits of the time counter of the spacecraft (L32TI) in units of is attached in the secondary header of each Space Packet. The time counter of the spacecraft is 38-bits long. The upper 32-bits of the time counter (U32TI) is in units of 1 s, and its origin (U32TI = 0) is the same as that of the global positioning system (GPS), 1980-01-06 00:00:00 UTC, when the spacecraft time is synchronized with the GPS. There is a 7-bit value ( to ) named “Category” in the secondary header of a Space Packet, which is used as priority in recording the packet to the DR. The value of is the lowest priority, meaning that the packet is only telemetered in real-time downlink and shall not be recorded in the DR. The HK packets of ESHK2 and SYS/USR/XBOX/STATISTIC HK are generated periodically as indicated by the column of “Period.” In order to save the capacity of the DR (1.5 GB), categories of SYS/USR/XBOX HK are dynamically changed in four cycles by the PSP. We also changed the category of PULSEREC to lower priority and changed those of AVGPULSE, NOISESPC1K, TEMPLATE, WFRB DUMP, and NOISESPC8K to higher priority by sending commands to the PSP in orbit. The PSP has many parameters for the pulse-processing, and the list of major parameters is shown in Table 3.
List of telemetry packets from the PSP.
|Name||Sizea (octet)||APID||Lower FOID||Attribute ID||Categoryb||Period||Description|
|ESHK2||16||1 s||Essential HK for SXS with packet size of 904 octets, containing HK data of PSP-A0/A1/B0/B1 (16 octets each), ADRC (400), SCD (88), PCD (86), JTD (68), SXI-CD (38), and FWE (160).c|
|SYS HK||247||4 s||System HK of PSP-A0/A1/B0/B1 for common software.|
|USR HK||206||4 s||User HK of PSP-A0/A1/B0/B1 for user application.|
|XBOX HK||222||4 s||HK made by PSP-A0/A1 for XBOX-A, or PSP-B0/B1 for XBOX-B.|
|XBOX REPLY||40||—||XBOX reply when a commands is sent to XBOX-A/B.|
|PIXEL HK||815||—||Pixel HK which is generated when pixel parameters are changed.|
|STATISTIC HK||514||16 s||Statistics HK including CPU idle time and event rates.|
|PXP EVENT||Variable||—||MicroCalorimeter pixel pulse events containing event records up to 80.|
|ACP EVENT||Variable||—||Antico pulse events containing event records up to 150.|
|PULSEREC||Variable||—||A pulse record of the microcalorimeter pixel with Huffman compression.|
|NOISEREC||Variable||—||A noise record of the microcalorimeter pixel with Huffman compression.|
|AVGPULSE||8235||—||An average pulse (adc_sample and derivative) of a microcalorimeter pixel.|
|NOISESPC1K||8219||—||A noise spectrum with 1024 (1k) samples of a microcalorimeter pixel.|
|TEMPLATE||5179||—||H- and M-resolution templates (1024 and 256 samples) of a microcalorimeter pixel.|
|WFRB DUMP||65,559||—||16,384 samples of adc_sample and derivative of a microcalorimeter pixel.|
|NOISESPC8K||32,795||—||A noise spectrum with 8096 (8k) samples of a microcalorimeter pixel.|
|SYSLOG||Variable||—||A system-log message of PSP-A0/A1/B0/B1 for user application.|
aSize of binary data from each PSP for ESHK2, size of a Space Packet for ≤1024, and size of an SMCP message for >1024 which is segmented into several Space Packets.
bCategory ranges from 0x00 to 0x7F, used as priority in the DR. The value of 0x7F is the lowest, which is only telemetered in real-time downlink and shall not be recorded in the DR.
List of parameter setting of the PSP in orbit. The suffix of P nn ranges from P00 to P17 in decimal, corresponding to IPIX = 0 to 17.
|Version information of FPGA and onboard software|
|SW_VER||COMM||32||Software version of the common software.|
|FORMAT_VER||UAPP||8||4||Version (0 to 255) of the USR HK format.|
|UAPP_VER_YYMMDD/MINOR||UAPP||24/8||Major/minor version () of the PSP user application.|
|FPGA_VER||FPGA||32||Version of the user FPGA logic on the FPGA board.|
|Parameters for pulse-processing of the microcalorimeter pixel.|
|PULSE_THRES_P nn||FPGA||16||Threshold to generate a trigger for the pulse candidate, where derivative ≥ PULSE_THRES.|
|DERIV_HALF_LEN_P nn||FPGA||5||8||Half length of the boxcar filter in calculating derivative (0 to 31).|
|QUICK_DOUBLE_THRES_P nn||FPGA||8||1||Threshold to set QUICK_DOUBLE = 1 in the FALL state of the pixel pulse trigger module.|
|PX_PF_INHIBIT_FLG||FPGA||1||0||Switch to inhibit PEAKFIND state in the pixel pulse trigger module (0:EXIST, 1:INH).|
|PF_STATE_CNT_MAX_P nn||FPGA||8||5||Maximum number of samples that can stay in the PEAKFIND state (5 = 0.4 ms).|
|PF_QUIT_CNT_MAX_P nn||FPGA||8||5||Maximum number of samples after peak that can stay in the PEAKFIND state (5 = 0.4 ms).|
|SECOND_THRES_MIN_P nn||UAPP||16||Minimum secondary threshold, i.e., second_thres=max (DERIV_MAX / SECOND_THRES_FRAC, SECOND_THRES_MIN).|
|SECOND_THRES_FRAC_P nn||UAPP||8||20||Fraction to DERIV_MAX of the primary pulse which is used to determine the secondary threshold.|
|SECOND_THRES_USE_LEN_P nn||UAPP||16||75||Number of ticks after the position of DERIV_MAX to use the secondary threshold ().|
|SECOND_TRIG_GAP_LEN_P nn||UAPP||8||25||Number of tick skipped after the position of DERIV_MAX to start the second trigger ().|
|SLOPE_DETECT_LEN_P nn||UAPP||8||20||Length in tick to judge slow-pulse events. Condition of (ticks from the trigger point to DERIV_MAX < SLOPE_DETECT_LEN) && (ticks from the trigger point to zero-crossing < 2 × SLOPE_DETECT_LEN) must be satisfied for normal events. A primary pulse judged as the slow-pulse is set the most significant bit (MSB) of RISE_TIME to 1 (RISE_TIME > 128). A secondary pulse judged as the slow-pulse shall be discarded, and SLOPE_DIFFER is set to 1 for the primary pulse. SLOPE_DETECT_LEN = 20 corresponds to 1.6 ms.|
|SLOPE_SKIP_LEN_P nn||UAPP||16||0||Length in tick to skip after the slow-pulse event is found.|
|PHA_AVG_PULSE_P nn||UAPP||32||144,000||PHA in the event record is normalized so that the average pulse cross-correlated with H- or M-resolution template becomes equal to PHA_AVG_PULSE. The average pulse is normalized to fit within a signed 16-bit integer ( to 32,767).|
|FORCE_MIDRES_TMPL_P nn||UAPP||1||0||Force to use M-resolution template to Hp (0:DIS, 1:ENA).|
|PRE_TRIG_LEN_H||UAPP||12||140||Length in tick before the trigger point in cross-correlating the H-resolution template (140 = 11.2 ms).|
|PRE_TRIG_LEN_M||UAPP||12||27||Length in tick before the trigger point in cross-correlating the M-resolution template (27 = 2.16 ms).|
|MIN_SHIFT_BACKWARD||UAPP||4||Minimum number ( to 0) to shift backward in cross-correlating the H- or M-resolution template.|
|MAX_SHIFT_FORWARD||UAPP||4||Maximum number (0 to +7) to shift forward in cross-correlating the H- or M-resolution template.|
|PX_OFFSET_AVG_GAP||FPGA||6||5||Length (0 to 31 ticks) between the first sample of a triggered pulse and the last sample of the base-level calculation used for LO_RES_PH.|
|PX_OFFSET_AVG_POW||FPGA||3||4||Length (0 to 5, corresponding to ticks) in averaging the base-level used for LO_RES_PH.|
|Parameters for noise-processing of the microcalorimeter pixel|
|NOISE_THRES_P nn||FPGA||16||Threshold to judge a trigger for NOISEREC, where | derivative| < NOISE_THRES in the interval of NOISE_CLEAN_LEN.|
|NOISE_CLEAN_LEN_P nn||FPGA||16||2048||Length of | derivative| < NOISE_THRES in units of tick to generate a trigger for NOISEREC.|
|NOISE_TAIL_MARGIN||UAPP||8||0||Margin number of samples at the tail of noise triggers, namely, noise records are extracted from (TRIG_LP + NOISE_CLEAN_LEN – 1024 – NOISE_TAIL_MARGIN).|
|Parameters for pulse-processing of antico|
|AC_PULSE_THRES||FPGA||16||25||An antico pulse is triggered by FPGA when (adc_sample – AC_ADC_SAMPLE_PEDESTAL) ≥ AC_PULSE_THRES. The threshold of 25 in ADC unit corresponds .|
|AC_ADC_SAMPLE_PEDESTAL||FPGA||16||Zero level of adc_sample in the antico waveform, which was slightly different between PSP-A and PSP-B.|
|AC_PEAK_FIND_LEN||FPGA||8||50||The maximum length in units of tick for the ACP_PEAKFIND state in FPGA (50 = 4 ms).|
|Parameters for telemetry rate|
|FCOLL_MAX_SIP||COMM||16||Maximum number of Space Packets per second transferred to DR for each PSP-A0/A1/B0/B1.|
|PXP_TLM_ITVL_SEC||UAPP||6||16||Maximum interval of the microcalorimeter pixel event packet in units of second (0 to 63).|
|ACP_TLM_CPS_MAX||UAPP||16||450||Maximum number of antico events per second (0 to 65,535).|
|PULSE_ITVL_TICK||UAPP||16||Two pulse records among pixels must be separated by PULSE_INTVL_TICK (12,500 ticks = 1 s).|
|PULSE_SELF_ITVL_FACTOR||UAPP||6||0||Two pulse records in the same pixel must be separated by this parameter × PULSE_ITVL_TICK.|
|NOISE_ITVL_TICK||UAPP||16||Two noise records among pixels must be separated by NOISE_INTVL_TICK (12,500 ticks = 1 s).|
|NOISE_SELF_ITVL_FACTOR||UAPP||6||8||Two noise records in the same pixel must be separated by this parameter × NOISE_ITVL_TICK.|
|Parameters for the autonomous function (AT) of the SMU|
|JFET_HTR_VIN_THRES||UAPP||4||10||Threshold in units of V (0 to 15) for the JFET heater power, JFET_HTR_VIN.|
|JFET_HTR_VOUT_THRES||UAPP||4||10||Threshold in units of V (0 to 15) for the JFET heater power, JFET_HTR_VOUT.|
The PSP has a function to grade (Fig. 2) pulses into high-resolution primary (Hp), medium-resolution primary (Mp), medium-resolution secondary (Ms), low-resolution primary (Lp), or low-resolution secondary (Ls). The definition of each grade is listed in Table 4, in which only two values of the (time-interval to the previous pulse) and the (time-interval to the next pulse) are used. The meaning of the “primary” and the “secondary” does not relate to a distinct physical process, but they just denote there is a triggered event in a specified time-interval for (secondary) or not (primary). The PSP evaluates the detected pulses using the optimal filtering methods to produce an event record of 96 bits (12 octets). Contents of the event record for each microcalorimeter pixel is shown in Table 5. The template length for the optimal filtering is 1024 samples (81.92 ms) for Hp and 256 samples (20.48 ms) for Mp/Ms. The PSP has a special mode, FORCE_MIDRES_TMPL = enabled (1:ENA) for each pixel, in which the short template is applied to Hp events for the calibration purpose. The Lp/Ls events are only calculated for LO_RES_PH without optimal filtering. Up to 80 event records are merged into a Space Packet, and it is transferred to the DR.
Definition of the event grades. See Fig. 2 for the definition of tp and tn, and they are in units of ms.
Definition of an event record for the microcalorimeter pixels in 96 bits (12 octets).
|ITYPE||3||Event type, 0:Hp, 1:Mp, 2:Ms, 3:Lp, 4:Ls, 5:(BL, 6: EL, 7:reserved.|
|IPIX||5||Pixel ID, 0 to 17, or 31 for undefined. One need to see PSP_ID (0 to 3) in the packet header to know PIXEL = 18 × (PSP_ID/2)+IPIX.|
|TRIG_LP||24||Time informationa of the event.|
|QUICK_DOUBLE||1||The quick-double flag indicating that derivative increased again in the FALL state of the pulse detection in FPGA.|
|SLOPE_DIFFER||1||The slope-differ flag indicating that slope of the derivative is different from the average derivative (a slow-pulse is found in the residual). The slow-pulse found in the slope shall be discarded. SLOPE_DIFFER becomes always 1 for x-rays with its energy larger than .|
|LO_RES_PH||14||The low-resolution pulse height (0 to 16,383), determined by the maximum value of the raw pulse.|
|DERIV_MAX||16||The maximum value of derivative. This is signed value, ranging from to .|
|RISE_TIME||8||Time in units of 1/4 tick () from DERIV_MAX to zero-crossing of derivative, corresponding to the rise-time of the raw pulse. The MSB of RISE_TIME means the slow-pulse flag (RISE_TIME for nominal pulse), and dynamic range of RISE_TIME is 2.56 ms.|
|TICK_SHIFT||4||Number of shift for the template which is needed to get the maximum of the optimal filter. This is signed value, ranging from to .|
|TIME_VERNIER||4||Fine resolution of time (0 to 15) in units of 1/16 tick (). TIME_VERNIER = 0 for Lp/Ls/BL, or when .|
|PHA||16||Pulse height indicator, which is represented by an unsigned value (0 to 65,535) for Hp/Mp/Ms/Lp/Ls, and by a signed value ( to ) for BL.|
|EL_REASON||8||Reasons of the EL phenomenon, 0:EDB overflow with IPIX = 31, 1:first FIFO overflow, 2:pulse data in WFRB is lost.|
|EL_LOST_CNT||16||Number of event candidates which are lost in the EL phenomenon.|
|EL_START_LP||32||Time informationa of the first event in the EL phenomenon.|
|EL_STOP_LP||32||Time informationa of the last event in the EL phenomenon.|
There are two kinds of pseudoevents, baseline (BL) and event-lost (EL). The BL pseudoevent is coupled with the telemetry type of “noise record,” for which the PSP periodically collects a waveform in quiescent time (absolute value of the derivative is less than a parameter, NOISE_THRES, for an interval of NOISE_CLEAN_LEN = 2048 samples, in Table 3) and calculate the zero-level of PHA in a signed integer ( to ). The TRIG_LP, LO_RES_PHA, and DERIV_MAX correspond to the first sample of the noise record, and QUICK_DOUBLE, SLOPE_DIFFER, RISE_TIME, TICK_SHIFT, and TIME_VERNIER become 0. The EL pseudoevent means that the PSP cannot process all of the events due mostly to high incoming rate (), and several event candidates are skipped for a few seconds. In such case (hereafter, the EL phenomenon), the content of the event record following the TRIG_LP shall be replaced by EL_REASON, EL_LOST_CNT, EL_START_LP, and EL_STOP_LP (11 octets). One can construct the good time interval (GTI) for each pixel using the EL pseudoevent. There are three kinds of reasons for the EL phenomenon, specified by EL_REASON. When EL_REASON = 0, corresponding to the event dual buffer (EDB) overflow in the FPGA (125 stages of FIFO read by 8 Hz shared for 9 pixels, corresponding ), one needs to take care that IPIX becomes 31 (undefined), which means that the EL pseudoevent applies to all the 9 pixels handled by one CPU board (PIXEL = 0 to 8 for PSP-A0, 9 to 17 for A1, 18 to 26 for B0, and 27 to 35 for B1). EL_REASON = 1 represents the overflow of the 1first FIFO in CPU (256 stages of FIFO for each pixel). EL_REASON = 2 represents that the pulse data (the 14-bits adc_sample and the 16-bits derivative) in the WFRB are lost.
Contents of the event record for the anticoincidence sensor (antico) are shown in Table 6. There are BL (FLG_BASELINE = 1) and EL (FLG_EVENT_LOST = 1) pseudoevents for the antico events, too. The BL pseudoevent for the antico is generated by random sampling in 1 Hz. The EL pseudoevent for the antico is only sent when the EDB overflows in the FPGA (125 stages of FIFO read by 8 Hz, corresponding ). The structure of the event record for the EL for the antico is the same as the normal antico event (FLG_BASELINE = FLG_EVENT_LOST = FLG_PARITY_ERR = 0). Time information of only the first event is stored for the EL pseudoevent, and one should extract the time information for the last event in the EL with the TRIG_LP of the next event. With regard to the normal antico event and the BL pseudoevent, the value of ADC_SAMPLE_MAX has a DC-offset of the ADC in the XBOX. One has to subtract the value of AC_ADC_SAMPLE_PEDESTAL (Table 3) to get the value of PHA for the antico. The AC_ADC_SAMPLE_PEDESTAL was set to for PSP-A and for PSP-B.
Definition of an event record for the anti-coincidence sensor (antico) in 48 bits (six octets).
|FLG_EVENT_LOST||1||Flag for the EL phenomenon for antico. The reason is EDB overflow only.|
|FLG_BASELINE||1||Flag for the BL event for antico. The BL event for antico is generated by random sampling in 1 Hz.|
|DURATION||6||Duration (0 to 63) in units of tick () exceeding the antico threshold.|
|TRIG_LP||24||Time informationa of the event.|
|FLG_PARITY_ERR||1||Flag to show the parity error is found in the time-interval of duration.|
|TRIG_LAP_LSB||1||The least significant bit (LSB) of the lap of TRIG_LP, namely, this value should be equal to (TRIG_LP ≫ 18)&1.|
|ADC_SAMPLE_MAX||14||Maximum value of the adc_sample (0 to 16,383) in the time-interval of duration.|
In-Orbit Operation of the PSP
Operation in Orbit
In-orbit operation of the SXS is summarized in Ref. 8. The PSP was powered OFF at the launch, and we powered ON both PSP-A/B and XBOX at 2016-02-19 06:14 UTC. The onboard software of the PSP was started, and parameters were set for the nominal observation mode on the same day. We adjusted the rate of NOISEREC from 2 to 1 c/s/CPU at 2016-02-21 08:57 UTC and that of PULSEREC from ALL to 1 c/s/CPU at 2016-02-23 02:10 UTC. The maximum number of Space Packets per second transferred to DR for each PSP-A0/A1/B0/B1 (FCOLL_MAX_SIP in Table 3) was reduced from 65 to 20 at 2016-02-22 06:19 UTC. The categories of telemetry were changed at 2016-02-22 07:59 UTC, as mentioned in the previous section. We lowered the event threshold for the derivative (PULSE_THRES, SECOND_THRES_MIN, NOISE_THRES in Table 3) from 120 to 75, which is equivalent to and , respectively, in energy, at 2016-03-02 04:00 UTC. Figure 3 shows comparison of thresholds determined using the WFRB DUMP telemetry. The only significant change from the ground testing to the values in orbit is PIXEL = 33. It did not ring (The adc_sample oscillates in a certain frequency.) on the ground, whereas it was ringing in orbit, similar to PIXEL = 26 and 27, for which ringing was seen on the ground. We set the antico thresholds at 25 () for both PSP-A and -B from the ground testing and kept them unchanged in orbit. Both PSP-A and -B worked fine in orbit, and there was no memory error nor SpaceWire communication error until the break-up of spacecraft on 2016-03-26 UTC.
Table 3 summarizes the parameter setting of the PSP in orbit. In order to protect the sensor and the adiabatic demagnetization refrigerator (ADR) from He-leak into the vacuum shield of the SXS dewar (DWR), we set parameters of JFET_HTR_VIN_THRES = JFET_HTR_VOUT_THRES = 10 V for the autonomous (AT) function of the SMU. In such case, thermal conduction of the junction field-effect transistor (JFET) through the He gas become larger, and the JFET heater power to keep it at 130 K becomes higher. The PSP monitors the values of the heater powers named JFET_HTR_VIN/VOUT in the XBOX HK. When they become larger than these thresholds, the PSP sets a flag in the ESHK2 telemetry. The SMU monitors this flag in the ESHK2 telemetry and sends the registered AT command, which aborts sequencers of the ADR controller (ADRC) and disables the XBOX amplifiers to prevent the permanent damage to the sensor and the ADR.
Template for Optimal Filter
The average pulses (for both the adc_sample and the derivative with a record-length of 1024 samples) and the H- and M-resolution templates (record-lengths of 1024 and 256 samples, respectively) in orbit are the same as those used in the ground testing. Inside the PSP algorithm, the M-resolution template is a cut-out of the H-resolution template, considering the difference of the record-lengths and the pretrigger lengths (PRE_TRIG_LEN_H = 140, PRE_TRIG_LEN_M = 27 in Table 3). The H-resolution template for each pixel is calculated from the the average pulse and the noise spectrum. The PSP has functions to collect them and to calculate the templates by the onboard software. It is also possible to upload the average pulses and templates calculated by off-line from the ground station to the PSP. It is unlikely to change the x-ray pulse shape; however, the noise environment may change in orbit. On the other hand, the nonlinearity of PHA (Table 5) and the time-assignment of the events (see Sec. 3.3) are affected by the template. We therefore decided to use the same templates, which is calculated in ground, also in orbit, as far as the degradation in orbit is within the energy resolution budget. In the case of ASTRO-H/Hitomi, the energy resolution at 5.9 keV was 4.43 eV (FWHM) at the subsystem test, 4.79 eV at the spacecraft thermal vacuum test, and 4.94 eV in orbit.9 The degradation was within the energy resolution budget so that we used the same templates throughout the operation on-ground to in-orbit.
The flight templates were taken at Tsukuba Space Center in the subsystem test of the SXS on 2015-03-10 13:04 17:10 UTC and were written to the electrically erasable programmable read-only memory (EEPROM) of PSP-A0/A1/B0/B1 on ground. At that time, the major part of the SXS was the flight-model (FM), namely the DWR, electrical harnesses, XBOX, ADRC, power supply unit, shield cooler driver (SCD), precooler driver (PCD), and Joule–Thomson cooler driver (JTD) were FM, and PSP-A/B and SXS SpaceWire Router A (SXS-SWR-A) were the engineering model. The SXS-SWR-B, filter wheel electronics (FWE), and SXS power distributer (SXS-DIST) were absent. We irradiated x-rays (5.9 keV) to all the microcalorimeter pixels. The x-rays were made on the secondary Mn target irradiated by an x-ray generator mounted on the DWR and came into the microcalorimeter pixels (except for the calibration pixel, PIXEL = 12) through the gate-valve of the DWR, which has an entrance window made of of Be. The calibration isotope attached on the detector assembly was used for the calibration pixel. At that time, the event thresholds were set to lower values of 50 than those in-orbit (125 or 75) for most of pixels. The thresholds were 70 for PIXEL = 8, 27, and it was 200 for PIXEL = 26. The difference of the event thresholds among pixels affects the time-assignment, which is described in the next section.
There are several remarks on the time-assignment of the events for both the microcalorimeter pixels and the antico. The time-coincidence among the pixels and the antico is important for rejecting non-x-ray background events, and the requirement on the PSP is that the relative timing accuracy (The “relative timing” means that it just applies to the time-coincidence between the pixels and the antico, and it does not apply to difference from the astronomical absolute time.) . However, there exist systematic shifts in the time-assignment among the event grades (Hp, Mp/Ms, and Lp/Ls) and that between the pixels and the antico. Triggering a pulse candidate is done in the FPGA, and the way of triggering is different between the pixels and the antico. The pixel events are triggered when the calculated derivative using a boxcar filter of DERIV_HALF_LEN_P nn = 8 ticks exceeds the PULSE_THRES_P nn in Table 3. On the other hand, the antico events are triggered when the adc_sample exceeds the (AC_PULSE_THRES + AC_ADC_SAMPLE_PEDESTAL). The time-assignment of the antico is done using the triggered time, which is stored as TRIG_LP in Table 6. The time-assignment of the microcalorimeter pixels depends on the event grades. With regard to Hp, the adc_sample is cross-correlated with the H-resolution template within the range of (= MIN_SHIFT_BACKWARD) < TICK_SHIFT < + 7 (= MAX_SHIFT_FORWARD), and the maximum is searched. When the maximum is found, the CPU conducts the parabolic fit using the three samples around the maximum and calculates TIME_VERNIER in time-resolution of 1/16 . If the maximum is not found (TICK_SHIFT = −8 or +7), TIME_VERNIER is set to 0. The triggered time is shifted by the value of TICK_SHIFT, and it is stored as TRIG_LP in Table 5. With regard to Mp/Ms, the time-assignment is similar to Hp but for using the M-resolution template. With regard to Lp/Ls, time of the derivative maximum (derivative = DERIV_MAX) is assigned for TRIG_LP and TIME_VERNIER = 0.
Therefore, time for Hp/Mp/Ms is assigned so that the obtained pulse record becomes the best match for the template, referring to the time origin of the template. The time origin of the template is the FPGA trigger time in making the average pulse in the template generation. This means that the time-assignment of Hp/Mp/Ms among pixels does not depend on the event threshold in the actual observation, but it slightly depends on that in the template generation. With regard to Lp/Ls, which use the time of DERIV_MAX, it does not depend on the event threshold, and there is a systematic delay compared with Hp/Mp/Ms. The delay was evaluated as 11.625 on ground using the spacecraft thermal-vacuum test on 2015-06-25. Because the event threshold for PIXEL = 26 was four times higher than those for other pixels in the template generation, a delay of 1.625 was seen in Hp/Mp/Ms events for PIXEL = 26. There is a delay in the antico event, too, and it is slightly dependent on the antico event threshold and the energy input to the antico sensor (Si PIN). The delay was evaluated as 0.24 ms on ground, by checking a distribution of = (antico time) − (pixel time) for the cosmic-ray events. Parameters of these corrections for the delays are incorporated into the calibration database (CALDB) file, ah_sxs_coeftime_20140101v001.fits.
In addition to the relative time differences, we observed a time delay of Hp events from the expected irradiation of the modulated x-ray source (MXS), which consists of four x-ray generators for gain calibration attached to the housing of the filter wheel mechanics. The observed delay was , and it is due mainly to specification of latching the spacecraft time in the FWE, namely the time of irradiation start is recorded as ahead. The remaining delay was evaluated as on ground using the spacecraft thermal-vacuum test on 2015-06-25. This delay consists of both systematic shift of time-assignment in the PSP and delay in the digital and analog circuits in the FWE/MXS, although we cannot separate them because there are no ground measurements.
We also found a very small shift of the time-assignment up to depending on the DERIV_MAX or RISE_TIME, although we cannot separate their effect on the time-assignment, because there is a clear correlation between DERIV_MAX and RISE_TIME for normal events. This is due mainly to the slight distortion of the pulse shape (ratio of pulse-height to the input energy becomes lower for x-rays with higher energy) due to the microcalorimeter physics. Parameters for the time correction were evaluated with in-orbit data, especially using the Crab pulsar. The latest CALDB file takes into account the DERIV_MAX dependence and the absolute timing by comparing the SXS observation with the radio-band observation of the Crab pulsar.
Distribution of Events and Screening for X-Rays
Figure 4 shows distributions of events in RISE_TIME, DERIV_MAX, and TICK_SHIFT plotted versus the energy of pulse invariant (EPI) in units of keV. The EPI is the best estimate of the input energy of each x-ray pulse, and its value is calculated from PHA in Table 5 with polynomials, considering pixel-to-pixel difference of nonlinear energy scale and the temporal gain drift.10 Events plotted in this figure are obtained in the observation of G21.5-0.9 (Crab-like supernova remnant) in orbit. Because the gate-valve with an entrance window of Be is closed, almost no x-rays below come into the microcalorimeter pixels through the gate-valve. However, there is an electron-loss continuum (flat tail at low energy side in the line-spread function) due to the escape of electrons with small energy from the HgTe absorber, and those events show similar responses to the low energy x-rays, which are photoelectrically absorbed in the microcalorimeter.
Normal x-ray events distribute in the range of 40 ≲ ≲ 60 (3.2 to 4.8 ms) in the RISE_TIME versus EPI plot. The RISE_TIME becomes slightly smaller when EPI becomes larger; therefore, it is better to screen events with EPI-dependent range for RISE_TIME in order to reduce non-x-ray background events. There is an upper branch in the energy range of 9 to 12 keV, which is a pile-up of x-rays for the calibration pixel. There is a lower branch in 3.5 to 6 keV with Ls events, which is the x-rays on the slope of a previous pulse. There is a cluster of Lp events with RISE_TIME (1.6 ms) below , which is the direct hit of the Si thermistor. Most of them are also flagged as SLOPE_DIFFER. There are many events at low energy below , and most of them are electrical crosstalks from other pixels or the antico. There are several events with longer RISE_TIME with QUICK_DOUBLE = 1 in the wide energy range, which are pile-up events. Events with shorter RISE_TIME with SLOPE_DIFFER = 1 in the wide energy range are probably due to electrical interference with the attitude control system, e.g., magnetic torquer or reaction wheel, and/or the power system of spacecraft, e.g., battery charge control unit, which were seen in the ground testing.
Most of the electrical crosstalk events have small EPI () and short RISE_TIME (); however, they appear to have broad tail in the RISE_TIME distribution, and EPI can have . We can remove the electrical crosstalk events possibly better by setting a condition on the EPI versus DERIV_MAX plane and rejecting TICK_SHIFT = −8 or 7. With regard to the TICK_SHIFT distribution, TICK_SHIFT is almost within for normal x-rays in , although it becomes smaller below . This is because the FPGA trigger point shifts forward at low energy.
We note that a significant fraction of normal x-ray events above is flagged as SLOPE_DIFFER = 1. This is already known on ground in the calibration of the high energy band, and it is because the pulse shape of high energy x-rays is slightly distorted from the average pulse, and the residual in the slope is judged as the slow-pulse. See description of RISE_TIME in Table 5 for definition of the slow-pulse. The dynamic range of the XBOX and the PSP is designed as , and one should not apply screening condition for SLOPE_DIFFER to analyze x-rays above .
CPU Load and Event Rates
Idle time of the CPU at every second, and the FPGA trigger rate at every 16 s for each pixel are contained in the STATISTIC HK (Table 2). Figure 5 shows plots of the CPU load fraction calculated from it, event rates of pixels with PSP-A0 (PIXEL = 0 to 8), and the A-side of the antico rate with PSP-A1, in the observation of the Crab nebula on 2016-03-25 UTC. Gray hatches show eclipses (occultation of boresight with the Earth), and pink hatches show the south Atlantic anomaly (SAA). Since the Crab nebula is moderately bright through the gate-valve, the CPU load fraction becomes almost 100% and the live-time fraction becomes lower for the central pixel (PIXEL = 0) during the on-source observation (nonhatch). The processing rate at 100% CPU load is in sum of PSP-A0/A1/B0/B1, which is compliant with the requirement on the PSP, namely to process events , if we ignore the electrical crosstalk.
The antico rate also increases during on-source, because a small fraction of x-rays above the antico threshold of 10 keV comes into the antico through the gap of the HgTe absorber, and/or the absorber becomes transparent to higher energy x-rays. This fraction of the antico events is negligible above 30 keV; therefore, we recommend using the antico events with to reject cosmic-rays by time-coincidence with the antico events, as well as to judge the condition of the SAA. The antico rate increases dramatically at the SAA, and we set the SAA condition as the antico rate above 30 keV is larger than in a sliding cell of 32-s width.
The event rates of pixels increase at the SAA, too. Figure 6 shows the pixel maps of the FPGA event rate. There is electrical crosstalk from A-side of the antico to PIXEL = 8 and 17 and from B-side of the antico to PIXEL = 26 and 35. Figure 7 shows the branching ratios of the event grades using all pixels, where the FPGA event rate was maximum, when observing the Crab nebula. The ratios match well with the theoretical expectation assuming random trigger. Figure 8 shows the pixel maps of the CPU event rate when observing the Crab nebula. Central pixels of PIXEL = 0, 17, 18, and 35 were affected by limitation of the 100% CPU load (so called the PSP-limit), and the EL pseudoevents were seen in the telemetry. These pixels are also affected by the branching ratio, and the event rate of Hp + Mp is much lower than outer pixels. The live-time fraction for outer pixels was nearly 100%, including the calibration pixel.
We evaluated what fraction of the CPU load is consumed for the event processing. We constructed a simple modelTable 7. The means that the base load is . The estimated CPU load using this model is plotted in Fig. 5 with a red line at the top panel. It almost reproduces the overall shape of the actual CPU load, except for the first part around 12:00 where the event file is lacking, and time around 15:00 where noise measurements were done. The PSP-limit with this model corresponds to , which matches the actual observation.
Fit results of the CPU load fraction.
Until the break-up of the Hitomi satellite, the SXS worked very well, which has enabled revolutionary science. The following is a summary of topics described in this paper.
• Both PSP-A and -B worked fine in orbit, and there was no memory error nor SpaceWire communication error, even with many passages of the SAA. Lists of telemetry packets, pulse-processing parameters in orbit, definition of the event records for the microcalorimeter pixels, and definition of the anticoincidence sensor are shown in Tables 2–6.
• We used the same templates for optimal filter throughout the operation on-ground to in-orbit, because degradation of the energy resolution ( at 5.9 keV in orbit) was within the energy resolution budget.
• There are systematic shifts in the time-assignment among the event grades (Hp, Mp/Ms, and Lp/Ls) and that between the microcalorimeter pixels and the anticoincidence sensor. They are incorporated into the CALDB file.
• Distributions of events in RISE_TIME, DERIV_MAX, and TICK_SHIFT plotted versus EPI (in units of keV) show interesting features such as pile-ups and electrical crosstalks, and they are used to determine the screening criteria for normal x-ray events rejecting the background/crosstalk events.
• The event rates and the pixel maps during observation of the Crab nebula demonstrate the counting capability of the PSP for bright objects, as well as the reconstruction of the GTI using the EL pseudoevent. The performance of PSP is confirmed in orbit, particularly for the event processing rate of .
The authors have no relevant financial interests in the manuscript and no other potential conflicts of interest to disclose.
Yoshitaka Ishisaki is an associate professor at the Department of Physics, Tokyo Metropolitan University. He received his BS, MS, and PhD degrees in physics from the University of Tokyo in 1991, 1993, and 1996, respectively. His current research interests include high-energy astrophysics and its instrumentation.