SGPIO’s basic building block is called a “slice”. There can be up to 16 input/output slices within the module, each having its own timer and buffered shift register. SGPIO stands for Serial GPIO in the sense that there is one 32-bit buffer in each slice that shifts data in or out serially. This 32-bit buffer register is labelled REG, in the figure. Each slice has a position counter that controls the number of bits shifted in or out from the slice, this counter register is labeled POS. A built-in timer controls the rate at which data is clocked in or out, this register is labelled COUNT. Each slice also has a second 32-bit shift register which is the shadow buffer of REG, labelled REG_SS in the figure. The CPU may write to either REG or REG_SS as needed. Each channel’s output control sets the pin high, low, or high impedance. Data is clocked in and out automatically via the timer and position control, through the two 32-bit buffers.