Features • SPARC V8 High Performance Low-power 32-bit Architecture – 8 Register Windows • Advanced Architecture: • • • • • • • • • • • • – On-chip Amba Bus – 5 Stage Pipeline – 32 KB 4-way associative Instruction Cache – 16 KB 2-way associative Data Cache On-chip Peripherals: – Memory Interface PROM Controller SRAM Controller SDRAM Controller – Timers Two 24-bit Timers Watchdog Timer – Two 8-bit UARTs – Interrupt Controller with 4 External Programmable Inputs – 32 Parallel I/O Interface – 33MHz PCI Interface Compliant with 2.2 PCI Specification Integrated 32/64-bit IEEE 754 Floating-point Unit Fault Tolerance by Design – Full Triple Modular Redundancy (TMR) – EDAC Protection – Parity Protection Debug and Test Facilities – Debug Support Unit (DSU) for Trace and Debug – IEEE 1149.1 JTAG Interface – Four Hardware Watchpoints 8, 16 and 32-bit boot-PROM (Flash) Interface Possibilities with EDAC Operating range – Voltages 3.3V ± 0.30V for I/O 1.8V ± 0.15V for Core – Temperature -55°C to 125°C Clock: 0 MHz up to 100 MHz Power consumption: 1 W at 100 MHz Performance: – 86 MIPS (Dhrystone 2.1) – 23 MFLOPS (Whetstone) Radiation Performance – Total dose radiation capability (parametric & functional): 60 krad (Si) – SEU error rate better than 1 E-5 error/device/day – No Single Event Latchup below a LET threshold of 70 MeV.cm2/mg MCGA-349 (9g) and MQFP-256 packages Development Kit Including – AT697 Evaluation Board – AT697E Sample Rad-Hard 32 bit SPARC V8 Processor AT697E Rev. 4226H–AERO–08/11 AT697E Description The AT697E is a highly integrated, high-performance 32-bit RISC embedded processor based on the SPARC V8 architecture. The implementation is based on the European Space Agency (ESA) LEON2 fault tolerant model. By executing powerful instructions in a single clock cycle, the AT697E achieves throughputs approaching 1MIPS per MHz, allowing the system designer to optimize power consumption versus processing speed. The AT697E is designed to be used as a building block in computers for on-board embedded real-time applications. It brings up-to-date functionality and performance for space application. The AT697E only requires memory and application specific peripherals to be added to form a complete on-board computer. The AT697E contains an Integer Unit (IU), a Floating Point Unit (FPU), separate instruction and data caches, a hardware multiplier and divider, an interrupt controller, two 24bit timers and a watchdog, two UARTs, a general-purpose I/O interfaces, a PCI Interface and a flexible memory controller. The design is highly testable with support from an embedded Debug Support Unit (DSU) with trace buffers and a JTAG interface for boundary scan. An idle mode holds the processor pipeline and allows Timer/Counter, Serial ports and Interrupt system to continue functioning. The processor is manufactured using the Atmel 0.18 μm CMOS process. It has been especially designed for space by implementing on-chip concurrent transient and permanent error detection and correction. The AT697E is the first version of the AT697 processor line. There is a second version of the AT697 processor named AT697F which has improved radiation capabilities 2 4226H–AERO–08/11 (tested up to 300Krad) and corrects almost all the bugs described in the AT697E errata sheet. The AT697F is pinout compatible with the AT697E. Figure 1. AT697 Block Diagram AT697 Integer Unit (SPARC V8) I -Cache D-Cache Memory Controller FPU BRDY* READ WRITE* A[27:0] D[31:0] ... Flash SRAM TDI TDO ... JTAG RxD TxD ... DSU RESET* Reset AHB AMBA Controller AMBA bridge PCI/AMBA bridge CLK BYPASS ... Clock Generator PCI APB Interrupt Controller interrupt config PIO RS232 WDOG* Pin Description SDRAM Watchdog Timers RxD TxD IOs A signal name ending with a ‘*’ (e.g OE*) designates an active-low signal. A bit field in a register are represented in a "dot" notation: MCFG2.ramwws is read as the ramwws field in register MCFG2. System Interface RESET* - Processor reset (input) When asserted, this asynchronous active low input immediately halts and resets the processor and all on-chip peripherals. The processor restarts execution after the 5th rising edge of the clock after RESET* was de-asserted. ERROR* - Processor error (open-drain output with pull-up) This active low output is asserted when the processor is halted in error mode. WDOG* - Watchdog timeout (open-drain output with pull-up) 3 AT697E 4226H–AERO–08/11 AT697E This active low output is asserted when the watchdog timer has expired and remains asserted until the watchdog timer is reloaded with a non-null value. BEXC* - Bus exception (input) This active low input is sampled simultaneously with the data during an access to the external memory. If asserted, a memory error is generated. Clock Interface CLK - Reference clock (input) This input provides a reference to generate the internal clock used by the processor and the internal peripherals. BYPASS - PLL bypass (input with pull-down) This active high input is used to bypass the internal PLL. When asserted, the processor is directly clocked from the external reference clock. When de-asserted, the processor receives its clock from the internal PLL. Caution: This signal shall be kept static and free from glitches while the processor is operating, as it is not sampled internally. Changing the signal shall only be performed while the processor is under reset otherwise the processor's behavior is not predictable. LOCK - PLL lock (output) When asserted, this active high output indicates the PLL is locked at a frequency corresponding to four times the frequency of the external reference clock. Caution: this signal is de-asserted as soon as the PLL unlocks. LFT - PLL passive low-pass filter (analog) This analog pin connects the PLL passive low-pass filter. SKEW[1:0] - Clock tree skew (input with pull-down) These input signals are used to programme the skew on the internal triplicated clock trees. Caution: These signals shall be kept static and free from glitches while the processor is operating, as they are not sampled internally. Changing these signals shall only be performed while the processor is under reset otherwise the processor's behavior is not predictable. Memory Interface A[27:0] - Address bus (output) The lower 28 bits of the 32 bit address bus carry instruction or data addresses during a fetch or a load/store operation to the external memory. The address of the last external memory access remains on the address bus whenever the current access can be made out of the internal cache. D[31:0] - Data bus (bi-directional) The 32-bit bi-directional data bus serves as the interface between the processor and the external memory. The data bus is only driven by the processor during the execution of integer & floating-point store instructions and the store cycle of atomic-load-store instructions. It is kept in high impedance otherwise. However: • only D[31:24] are used during an access to an 8-bit area • only D[31:16] are used during an access to a 16-bit area • D[15:0] are used as part of the general-purpose I/O interface whenever all the memory areas (ROM, SRAM & I/O) are 8-bit or 16-bit wide and the SDRAM interface is not enabled CB[7:0] - Check bits (bi-directional) 4 4226H–AERO–08/11 These signals carry the EDAC checkbits(1) during a write access to the external memory and are kept in high impedance otherwise. This applies whatever the EDAC activation or not. Note: 1. While only 7 bits are useful for EDAC protection, CB[7] is implemented to enable programming of FLASH memories and takes the value of MCFG3.tcb[7]. OE* - Output enable (output) This active low output is asserted during a read access to the external memory. It can be used as an output enable signal when accessing PROM & I/O devices. READ - Read enable (output) This active high output is asserted during a read access to the external memory. It can be used as a read enable signal when accessing PROM & I/O devices. WRITE* - Write enable (output) This active low output is asserted during a write-access to the external memory. It can be used as a write enable signal when accessing PROM & I/O devices. RWE*[3:0] - PROM & SRAM byte write-enable (output) These active low outputs provide individual write strobes for each byte-lane on the data bus: RWE*[0] controls D[31:24], RWE*[1] controls D[23:16], RWE*[2] controls D[15:8] and RWE*[3] controls D[7:0], and they are set according to the transaction width (word/half-word/byte) and the bus width set for the respective area. BRDY* - Bus ready (input) When driven low, this input indicates to the processor that the current memory access can be terminated on the next rising clock edge. When driven high, this input indicates to the processor that it must wait and not end the current access. PROM ROMS*[1:0] - PROM chip-select (output) These active low outputs provide the chip-select signals for decoding the PROM area. ROMS*[0] is asserted when the lower half of the PROM area is accessed (0x00000000 - 0x0FFFFFFF), while ROMS*[1] is asserted when the upper half is accessed (0x10000000 - 0x1FFFFFFF). SRAM RAMS*[4:0] - SRAM chip-select (output) These active low outputs provide the chip-select signals for decoding five SRAM banks. RAMOE*[4:0] - SRAM output enable (output) These active low signals provide an output enable signal for each SRAM bank. I/O IOS* - I/O select (output) This active low output provides the chip-select signal for decoding the memory mapped I/O area. SDRAM SDCLK - SDRAM clock (output) This signal provides a reference clock for SDRAM memories. It is a copy of the processor internal clock. SDCS*[1:0] - SDRAM chip select (output) 5 AT697E 4226H–AERO–08/11 AT697E These active low outputs provide the chip select signals for decoding two SDRAM banks. SDRAS*- SDRAM row address strobe (output) This active low output provides the RAS signal (Row Access Strobe) for SDRAM devices. SDCAS* - SDRAM column address strobe (output) This active low output provides the CAS signal (Column Access Strobe) for SDRAM devices. SDWE* - SDRAM write strobe (output) This active low output provides the write strobe for SDRAM devices. SDDQM[3:0] - SDRAM data mask (output) These active high outputs provide the DQM strobe (Data Mask) for SDRAM devices. General-Purpose Interface PIO[15:0] - Parallel I/O port (bi-directional) These bi-directional signals can be used as general-purpose inputs or outputs to control external devices. Some of these signals have an alternate function and also serve as inputs or outputs for internal peripherals. PCI interface System PCI_CLK - PCI clock (input) This signal provides timing for all transactions on the PCI bus. All other PCI signals, except PCI_RST*, are sampled on the rising edge of PCI_CLK and all other timing parameters are defined with respect to this edge. PCI_RST* - PCI Reset (input) This active low input is used to bring PCI-specific registers, sequencers and signals to a consistent state. When asserted, it immediately halts and resets the PCI interface. The PCI interface resumes execution after the 5 th rising edge of the PCI clock after PCI_RST* was de-asserted. SYSEN* - System Enable (input) This active low input is used to configure the PCI interface as the Host-Bridge for the PCI bus (also called the System-Controller in a CompactPCI-compliant environment). If de-asserted, the PCI interface is configured as a satellite on the PCI bus. Caution: This signal shall be kept static and free from glitches while the processor is operating, as it is not sampled internally. Changing the signal shall only be performed while the processor is under reset otherwise the processor's behavior is not predictable. Address & Data A/D[31:0] - PCI Address Data (bi-directional) Address and Data are multiplexed on the same PCI pins. During the address phase, A/D[31:0] contain a physical address (32 bits). For I/O, this is a byte address; for configuration and memory, it is a 32-bit address. During data phases, A/D[7:0] contain the least significant byte and A/D[31:24] contain the most significant byte. C/BE*[3:0] - PCI Bus Command and Byte Enables (bi-directional) 6 4226H–AERO–08/11 During the address phase of a transaction, C/BE*[3:0] define the bus command. During the data phase, C/BE*[3:0] are used as Byte Enables. The Byte Enables are valid for the entire data phase. PAR - Parity (bi-directional) This signal is even parity across A/D[31:0] and C/BE*[3:0] (the number of "1"s on A/D[31:0], C/BE*[3:0] and PAR equals an even number). The master drives PAR for address and write data phases; the PCI target drives PAR for read data phases. Interface Control FRAME* - Cycle Frame (bi-directional) This signal is driven by the current master to indicate the beginning and duration of an access. FRAME* is asserted to indicate a bus transaction is beginning. While FRAME* is asserted, data transfers continue. When FRAME* is deasserted, the transaction is in the final data phase or has completed. IRDY* - Initiator Ready (bi-directional) This signal indicates the initiating agent’s ability to complete the current data phase of the transaction. IRDY* is used in conjunction with TRDY*. During a write, IRDY* indicates that valid data is present on A/D[31:0]. During a read, it indicates the master is prepared to accept data. TRDY* - Target Ready (bi-directional) This signal indicates the target agent’s (selected device’s) ability to complete the current data phase of the transaction. TRDY* is used in conjunction with IRDY*. During a read, TRDY* indicates that valid data is present on A/D[31:0]. During a write, it indicates the target is prepared to accept data. STOP* - Stop (bi-directional) This signal indicates the current target is requesting the master to stop the current transaction. PCI_LOCK* - Lock (bi-directional) This signal indicates an atomic operation to a bridge that may require multiple transactions to complete. IDSEL - Initialization Device Select (input) Initialization Device Select is used as a chip select during configuration read and write transactions. DEVSEL* - Device Select (bi-directional) When actively driven, indicates the driven device has decoded its address as the target of the current access. As an input, DEVSEL* indicates whether any device on the bus has been selected. Arbitration REQ* - PCI bus request (output) This signal indicates to the arbiter that this agent desires use of the bus. This is a pointto-point signal. Every master has its own REQ* which is tri-stated while PCI reset is asserted. GNT* - PCI Bus Grant (input) This signal indicates to the agent that access to the bus has been granted. This is a point-to-point signal. Every master has its own GNT* which is ignored while PCI reset is asserted. 7 AT697E 4226H–AERO–08/11 AT697E Error Reporting PERR* - Parity Error (bi-directional) This signal is only for the reporting of data parity errors during all PCI transactions except a Special Cycle. The PERR* pin is sustained tri-state and must be driven active by the agent receiving data two clocks following the data when a data parity error is detected. The minimum duration of PERR* is one clock for each data phase that a data parity error is detected. SERR* - System Error (open-drain bi-directional) This signal is for reporting address parity errors, data parity errors on the special cycle command, or any other system error where the result will be catastrophic. SERR* is pure open drain and is actively driven for a single PCI clock by the agent reporting the error. PCI Arbiter AREQ*[3:0] - PCI bus request (input) When asserted, these active low inputs indicate that a PCI agent is requesting the bus. AGNT*[3:0] - PCI bus grant (PCI-compliant output) When asserted, these active low outputs indicate that a PCI agent is granted the PCI bus. DSU Interface DSUEN - DSU enable (input) When asserted, this synchronous active high input enables the DSU unit. If de-asserted, the DSU trace buffer will continue to operate but the processor will not enter debug mode. Caution: This signal is meant for debug purpose and shall be driven low in the final application. DSURX - DSU receiver (input) This input provides the serial data stream to the DSU communication link receiver. Caution: This signal is meant for debug purpose and shall be driven low in the final application. DSUTX - DSU transmitter (output) This output provides the serial data stream from the DSU communication link transmitter. DSUACT - DSU active (output) This active high output is asserted when the processor is in debug mode and controlled by the DSU. DSUBRE - DSU break enable (input) A low-to-high transition on this synchronous input signals a break condition and is used to set the processor into debug mode (see "Debug Support Unit" later in this document for specific use). Caution: This signal is meant for debug purpose and shall be driven low in the final application. JTAG Interface TRST* - Test Reset (input with pull-up) This asynchronous active low input resets the TAP when asserted. Caution: This signal is meant for board testing purpose and shall be driven low in the final application. TCK - Test Clock (input with pull-down) This input is used to clock state information and test data into and out of the device during operation of the TAP. 8 4226H–AERO–08/11 TMS - Test Mode select (input with pull-up) This synchronous input is used to control the state of the TAP controller in the device. TDI - Test data input (input with pull-up) This input is used to serially shift test data and test instructions into the device during TAP operation. TDO - Test data output (output) This input is used to serially shift test data and test instructions out of the device during TAP operation. Power Supply VCC33 - I/O power (supply) Power supply for the I/O pins. VSS33 - I/O ground (supply) Ground supply for the I/O pins. VDD18 - Core power (supply) Power supply for the processor core. VSS18 - Core ground (supply) Ground supply for the processor core. VDD_PLL - PLL power (supply) Power supply for the PLL. VSS_PLL - PLL ground (supply) Ground supply for the PLL. 9 AT697E 4226H–AERO–08/11 AT697E Summary Table 1. Signals Properties Signal A[27:0] A/D[31:0] Reset(1) Type(5) output X CMOS bi-directional Z PCI Direction Active AGNT*[3:0] output Low AREQ*[3:0] input Low CMOS BEXC* input Low CMOS BRDY* input Low CMOS BYPASS input High CMOS C/BE*[3:0] bi-directional Low CB[7:0] bi-directional CLK 1 (2) PCI Z PCI Z CMOS input bi-directional Low Z PCI DSUACT output High X / 1 (3) CMOS DSUBRE input Rise CMOS DSUEN input High CMOS DSURX input DSUTX output X / 1 (3) CMOS bi-directional Z CMOS CMOS (3) ERROR* open-drain output Low X/H FRAME* bi-directional Low Z GNT* input Low CMOS IDSEL input High CMOS IOS* output Low 1 CMOS IRDY* bi-directional Low Z PCI CMOS analog LOCK output High X (4) CMOS OE* output Low 1 CMOS PAR bi-directional Z PCI input CMOS PCI_LOCK* bi-directional Low PCI_RST* input Low PERR* bi-directional Low PIO[15:0] bi-directional Z Z PCI Z CMOS CMOS output Low 1 RAMS*[4:0] output Low 1 output High PCI CMOS RAMOE*[4:0] READ Internal pull-up PCI LFT PCI_CLK Internal pull-down CMOS DEVSEL* D[31:0] Comment X/1 CMOS (3) CMOS 10 4226H–AERO–08/11 Signal REQ* RESET* ROMS*[1:0] RWE*[3:0] Direction Active Reset(1) Type(5) output Low Z PCI input Low output Low output Low SDCAS* output Low SDCLK output SDCS*[1:0] output Low SDDQM[3:0] output High CMOS 1 CMOS X/1 (3) CMOS X/1 (3) CMOS CMOS 1 CMOS CMOS (3) CMOS SDRAS* output Low X/1 SDWE* output Low X / 1 (3) CMOS SERR* bi-directional Low Z PCI SKEW[1:0] Comment input CMOS STOP* bi-directional Low SYSEN* input Low TCK input CMOS Internal pull-down TDI input CMOS Internal pull-up TDO output CMOS TMS input CMOS TRDY* bi-directional Low TRST* input Low Z Internal pull-down PCI CMOS Z PCI CMOS Internal pull-up (3) CMOS Internal pull-up CMOS WDOG* open-drain output Low X/H WRITE* output Low X / 1 (3) Notes: Internal pull-up 1. Signals on the PCI interface clocked by the PCI_CLK pin and reset by the PCI_RST* pin. Others signals (internally) clocked by the SDCLK pin and reset by the RESET* pin. Reset values meaning: • X: value is a strong high or low level, but cannot be predicted • 1: value is a strong high level • Z: no level is driven from the device, signal is in high-impedance state • H: value is a resistive high level 2. In PCI Host mode, parking granted to PCI agent 0 (AGNT*[0]) during reset after the first rising edge of the PCI clock if no request is made to the PCI arbiter at that time (AREQ*[3:0] = 1111). 3. First value effective during reset without a running clock while second value effective during reset after the first rising edge of the clock. 4. Value is a strong high or low level, but cannot be predicted during reset without a running clock, then value is a strong low level during reset after the first rising edge of the clock until it becomes a strong high level as soon as the PLL locks (not applicable in PLL bypass mode / BYPASS = 1). 5. See "Electrical Characteristics". Caution: Any unused input pin or bi-directional pin with a tri-stated output driver shall be pulled to a valid high or low level to prevent it from floating as a floating input pin does not have a stable voltage level and is often the cause for additional power-consumption in the input section of the pad because of continuous noise-induced switches. 11 AT697E 4226H–AERO–08/11 AT697E Architecture The AT697E is a general-purpose processor that can perform intensive calculations, access high-speed memories, control peripherals and handle interrupts. It has been designed for radiation-hardened high-reliability applications by including fault-tolerance features. Integer Unit The AT697E integer unit is based on the LEON2-FT architecture, it implements the SPARC integer instruction-set defined in the SPARC Architecture Manual version 8. Figure 2. Integer Unit Architecture call/branch address I-cache data address +1 Add ‘0’ jmpa tbr f_pc Fetch d_inst d_pc Decode imm, tbr, wim, psr e_inst e_pc rs1 operand2 Execute alu/shift mul/div y m_inst m_pc result ex pc 30 jmpl address 32 32 address/dataout datain ytmp D-cache Memory w_inst Write 32 w_pc wres Y 30 tbr, wim, psr rd regfile rs1 rs2 12 4226H–AERO–08/11 To execute instructions at a rate approaching one instruction per clock cycle, the IU employs a five-stage instruction pipeline that permits parallel execution of multiple instructions. • Fetch The instruction is fetched from the instruction cache is enabled and available or the fetch is forwarded to the memory controller. • Decode The instruction is placed in the instruction register and decoded. The operands are read from the register file and/or from immediate data and the next instruction computed CALL/Bicc target address are generated. • Execute Arithmetic, logical and shift operations are performed and the result saved in temporary registers. Memory and JMPL/RETT target address are generated. Pending traps are prioritized and internal traps are taken, if any. • Memory On a memory load instruction, data is read from the data cache if enabled and available or the read is forwarded to the memory controller. On a memory store instruction, store data is always forwarded to the memory controller and any matching data cache entry is invalidated if enabled. • Write The result of any arithmetic, logical, shift or memory/cache read operation is written back to the register file. All five stages operate in parallel, working on up to five different instructions at a time. A basic "single-cycle" instruction enters the pipeline and completes in five cycles. By the time it reaches the write stage, four more instructions have entered and are moving through the pipeline behind it. So, after the first five cycles, a single-cycle instruction exits the pipeline and a single-cycle instruction enters the pipeline on every cycle. Of course, a "single-cycle" instruction actually takes five cycles to complete, but they are called single cycle because with this type of instruction the processor can complete one instruction per cycle after the initial five-cycle delay. 13 AT697E 4226H–AERO–08/11 AT697E Table 2. Cycles per instruction (assuming cache hit and no load interlock) Instruction Jump and Link (JMPL) 2 Load Double-Word (LDD) 2 Store Single-Word (ST) 2 Store Double-Word (STD) 3 Integer Multiply (SMUL/UMUL/SMULcc/UMULcc) 5 Integer Divide (SDIV/UDIV/SDIVcc/UDIVcc) 35 Taken Trap (Ticc) 4 Atomic Load/Store (LDSTUB) 3 All other IU instructions 1 Single-Precision Multiply (FMULS) 16(1) Double-Precision Multiply (FMULD) 21(1) Single-Precision Divide (FDIVS) 20(1) Double-Precision Divide (FDIVD) 36(1) Single-Precision Square-Root (FSQRTS) 37(1) Double-Precision Square-Root (FSQRTD) 65(1) Single-Precision Absolute Value (FABS) 2(1) Single-Precision Move (FMOVS) 2(1) Single-Precision Negate (FNEGS) 2(1) Convert Single to Double-Precision (FSTOD) 2(1) All other arithmetic FPU instructions 7(1) Note: Program Counters Cycles 1. This value is to be considered "typical". As the execution of FPU operations is operand-dependent, the true execution time can be lower or higher than mentioned. The Program Counter (PC) contains the address of the instruction currently being executed by the Integer Unit, and the next Program Counter (nPC) holds the address (PC + 4) of the next instruction to be executed (assuming there is no control transfer and a trap does not occur). The nPC is necessary to implement delayed control transfers, wherein the instruction that immediately follows a control transfer may be executed before control is transferred to the target address. Having both the PC and nPC available to the trap handler allows a trap handler to choose between retrying the instruction causing the trap (after the trap condition has been eliminated) or resuming program execution after the trap causing instruction. Windowed Register File The AT697E contains a 136×32 register file divided into 8 overlapping windows, each window providing a working registers set at a time. Working registers are used for normal operations and are called r registers. The 136 registers are 32-bits wide and are divided into a set of 8 global registers and a set of 128 window registers grouped into 8 sets of 24 r registers called windows. At any given time, a program can access 32 active r registers (r0 to r31): 8 (common) global 14 4226H–AERO–08/11 registers (r0 to r7) and 24 window registers (r8 to r31) that are divided by software convention into 8 ins, 8 locals and 8 outs: • The first 8 globals (r0 to r7) are also called g registers (g0 to g7), they usually hold common data to all functions (as a special case, r0/g0 always returns the value 0 when read and discards the value written to it) • The next 8 ins (r8 to r15) are also called i registers (i0 to i7), they usually are the input parameters of a function • The next 8 locals (r16 to r23) are also called l registers (l0 to l7), they usually are scratch registers that can be used for anything within a function • The last 8 outs (r24 to r31) are also called o registers (o0 to o7), they usually are the return parameters of a function The register file can be viewed as a circular stack, with the highest window joined to the lowest. Note that each window shares its ins and outs with adjacent windows: outs from a previous window are the ins of the current window and the outs of the current window are the ins of the next window. Figure 3. Circular Stack of Overlapping Windows W7 w7 ins w1 outs Restore W1 w1 locals w0 w0 outs locals w0 ins w7 locals w7 outs w6 ins W0 W6 w6 locals w6 outs w5 ins globals w2 w5 w1 outs locals ins W2 w2 W4 w4 locals ins w5 w4 w2 outs locals ins w4 outs w3 outs w3 w3 ins locals Save cwp W5 W3 The register file implementation is based on two dual-port RAMs. The first dual-port RAM provides the first operand of a SPARC instruction while the second dual-port RAM provides the second operand unless an immediate value is needed. When applicable, the result of the instruction is written back into the register file, so the two dual-port RAMs always have equal contents. When one function calls another, the calling function can choose to execute a SAVE instruction. This instruction decrements an internal counter, the current window pointer (CWP), shifting the register window downward. The caller’s out registers then become the calling function’s in registers and the calling function gets a new set of local and out registers for its own use. Only the pointer changes because the registers and return address do not need to be stored on a stack. The RESTORE/RETT instructions acts in the opposite way The Window Invalid Mask register (WIM) is controlled by supervisor software and is used by the hardware to determine whether a window overflow or underflow trap is to be generated by a SAVE, RESTORE or RETT instruction. 15 AT697E 4226H–AERO–08/11 AT697E When a SAVE, RESTORE or RETT instruction is executed, the current value of the CWP is compared against the WIM register. If the SAVE, RESTORE, or RETT instruction would cause the CWP to point to an “invalid” register set, a window_overflow or window_underflow trap is caused. Arithmetic & Logic Unit The high-performance ALU operates in direct connection with all the 32 working registers. Within a single clock cycle, a 32-bit arithmetic operation between two working registers or between a working register and an immediate value is executed. State Register The Processor State Register (PSR) contains fields that report the status of the processor operations or control processor operations. Instructions that modify its fields include SAVE, RESTORE, Ticc, RETT and any instruction that modifies the condition code fields (icc). Any hardware or software action that generates a trap will also modify some of its fields. A global interrupt management is provided: traps and interrupts (asynchronous traps) can be enabled/disabled and interrupts level response can be fine tuned. Instruction Set AT697E SPARC instructions fall into six functional categories: load/store, arithmetic/logical/ shift, control transfer, read/write control register, floating-point and miscellaneous. Please refer to the SPARC V8 Architecture Manual for further details. Multiply instructions The AT697E fully supports the SPARC V8 multiply instructions (UMUL, SMUL, UMULcc and SMULcc). The multiply instructions perform a 32×32-bit integer multiply producing a 64-bit result. SMUL and SMULcc perform signed multiply while UMUL and UMULcc performs unsigned multiply. UMULcc and SMULcc also set the condition codes to reflect the result. The Y register holds the most-significant half of the 64-bit result. Divide Instructions The AT697E fully supports the SPARC V8 divide instructions (UDIV, SDIV, UDIVcc and SDIVcc). The divide instructions perform a 64×32 bit divide and produce a 32-bit result. SDIV and SDIVcc perform signed multiply while UDIV and UDIVcc performs unsigned divide. UDIVcc and SDIVcc also set the condition codes to reflect the result. Rounding and overflow detection is performed as defined in the SPARC V8 standard. The Y register holds the most-significant half of the 64-bit divided value. Floating-Point Unit The AT697E floating-point unit is based on the MEIKO core and implements the SPARC floating-point instruction-set defined in the SPARC Architecture Manual version 8. The FPU interface is integrated into the IU pipeline and does not implement a floatingpoint queue(1), so the IU is stopped during the execution of floating-point instructions. Note: 1. This means the qne bit in the FSR register is always zero and any attempts to execute the STDFQ instruction will generate an FPU_exception trap (0x08). The AT697E contains a 32×32 register file for floating-point operations, refered to as f registers (f0 to f31). These registers are 32-bits wide and can be concatenated to support 64-bits double-words (extended precision instructions and format are not supported). The whole 32 registers set is available at all time for any floating-point operation. Integer and single-precision data require a single 32-bit f register. Double-precision data require 64-bit of storage and occupy an even-odd pair of adjacent registers. Memory Mapping The 32-bit addressable memory space is divided into 6 areas, each area being allocated to a specific device type and externally or internally decoded accordingly: 16 4226H–AERO–08/11 Table 3. Memory Mapping Address Range Area Device Select Signals 0x00000000 - 0x1FFFFFFF PROM(1)(2) 2 0x20000000 - 0x3FFFFFFF 0x40000000 - 0x7FFFFFFF Triple Modular Redundancy (2) RAM 0x80000000 - 0x8FFFFFFF REGISTER(1) 0x90000000 - 0x9FFFFFFF DSU(1) 0xA0000000 - 0xFFFFFFFF PCI(1) Notes: Fault Tolerance I/O (1) 1 5 (SRAM) + 2 (SDRAM) n/a (internal) see PCI/cPCI specification 1. Area is equally accessible in User & Supervisor mode on read & write access 2. Write protection may apply if enabled on the area The processor has been especially designed for radiation-hardened applications. To prevent erroneous operations from single event transient (SET) and single event upset (SEU) errors, the AT697E processor implements a set of protection features including: • Full triple modular redundancy (TMR) architecture • Programmable skews on the clock trees • EDAC protection on IU and FPU register files • EDAC protection on external memory interface • Parity protection on instruction and data caches To protect against SEU errors (Single Event Upset), each on-chip register is implemented using triple modular redundancy (TMR). This means that any SEU register error is automatically removed within one clock cycle while the output of the register maintains the correct (glitch-free) value. Moreover, an independent clock tree is used for each of the three registers making up one TMR module. This feature protects against SET errors (Single Event Transient) in the clock tree, to the expense of increased routing. The CPU clock and the PCI clock are built as three-clock trees. The same triplication is applied to the CPU reset and to the PCI reset as well. Figure 4. TMR Register with Separate Clock-Tree Clock-Tree Skew 17 Optionally, a skew can be applied between each of the three branches of the clock trees in order to provide additional SET protection. AT697E 4226H–AERO–08/11 AT697E Register File SEU Protection To prevent erroneous operations from SEU errors in the IU and FPU register file, each register is protected using a 7-bit EDAC checksum. Checking of the EDAC bits is done every time a fetched register value is used in an instruction. If a correctable error is detected, the erroneous data is corrected before being used. At the same time, the corrected register value is also written back to the register file. A correction operation incurs a delay 4 clock cycles, but has no other software visible impact. If an uncorrectable error is detected, a register_hardware_error trap (0x20) is generated. Cache Parity The cache parity mechanism is transparent to the user, but in case of a cache parity error, a cache miss is generated and an access to external memory is perfomed to reload the cache entry, implying some delay. 18 4226H–AERO–08/11 Operating Modes Reset Mode The processor asynchronously enters reset mode as soon as the RESET* signal is asserted. It synchronously exits reset mode on the 5th rising edge of the SDCLK signal after the RESET* signal has been deasserted. While in reset mode, the IU, the FPU and all the peripherals are halted. The processor disables traps (PSR.et = 0), sets the supervisor mode (PSR.s = 1) and sets the program counter to location zero (PC = 0 & nPC = 4). Other IU, FPU and peripheral registers are initialized as well (see "Register Description"). On exit from reset mode, the processor enters execute mode. Execute Mode In execute mode, the processor fetches instructions and executes them in the IU (Integer Unit) or the FPU (Floating-Point Unit). Please refer to "The SPARC Architecture Manual - Version 8" for further information. Error Mode The processor enters error mode when a synchronous trap must occur while traps are disabled (PSR.et = 0). This essentially means that a trap which cannot be ignored occured while another trap is being serviced. In order for that synchronous trap to be serviced, the processor goes through the normal operation of a trap, including setting the trap-type bits (TBR.tt) to identify the trap type. It then enters error mode, halts and asserts the ERROR* signal. The only way to leave error mode is to assert the RESET* signal, which forces the processor into reset mode. All information placed in the IU, FPU and all peripherals registers from the last execute mode (the trap operation) remains unchanged unless stated otherwise (see "Register Description"). The code executed upon exit from reset mode can examine the trap type of the synchronous trap and the IU, FPU and all peripherals registers and deal with the information they contain accordingly. Idle Mode While in execute mode, the processor may enter idle mode in software. Entry into idle mode is initiated by writing any value to the idle register (IDLE) and made effective on the next load instruction(caution). While in idle mode, the IU stops fetching instructions and is kept into a minimal activity. All other peripherals operate as nominal. Caution: In order to avoid any unwanted side-effect (idle entry not on the foreseen load instruction), the load instruction shall immediately follow the write operation to the idle register, Idle mode is terminated as soon as an unmasked interrupt is pending (ITP.ipend) with an interrupt number of 15 or greater than the current processor interrupt level (PSR.pil). Then the processor directly goes through the normal operation of servicing the interrupt. Debug Mode Caution: This section is for information purpose only. As its name clearly states, the Debug Support Unit (DSU) is exclusively meant for debugging purpose. None of the DSU features shall ever be used in the final application where the DSU shall be turned into an inactive state (DSUEN, DSUBRE and DSURX tied to a permanent low level). As a special case when the DSU is enabled (DSUEN signal asserted), debug mode is entered when specific conditions are met (see "Debug Support Unit" and "Register Description" chapters later in this document). 19 AT697E 4226H–AERO–08/11 AT697E In debug mode, the processor pipeline is held and the processor is controlled by the DSU so all processor registers, caches memories and even external peripherals can be accessed. 20 4226H–AERO–08/11 Traps and Interrupts Overview The AT697E supports two types of traps: • synchronous traps • asynchronous traps also called interrupts. Synchronous traps are caused by the hardware responding to a particular instruction. They occur during the instruction that caused them. Asynchronous traps occur when an external event interrupts the processor. They are not related to any particular instruction and occur between the execution of instructions. A trap is a vectored transfer of control to the supervisor through a special trap table that contains the first four instructions of each trap handler. The trap base address (TBR) of the table is established by the supervisor and the displacement, within the table, is determined by the trap type. A trap causes the current window pointer to advance to the next register window and the hardware to write the program counters (PC & nPC) into two registers of the new window. Synchronous Traps The AT697E follows the general SPARC trap model. The table below shows the implemented traps and their individual priority. Table 4. Trap Overview Trap 21 Trap Type Priority Description reset n/a(1) 1 Power-on reset write_error 0x2B 2 Write buffer error instruction_access_exception 0x01 3 Error during instruction fetch Edac uncorrectable error during instruction fetch illegal_instruction 0x02 5 UNIMP or other un-implemented instruction privileged_instruction 0x03 4 Execution of privileged instruction in user mode fp_disabled 0x04 cp_disabled 0x24 watchpoint_detected 0x0B window_overflow 0x05 window_underflow 0x06 register_hardware_error 0x20 9 Register file uncorrectable EDAC error mem_address_not_aligned 0x07 10 Memory access to un-aligned address fp_exception 0x08 11 FPU exception data_access_exception 0x09 13 Access error during load or store instruction tag overflow 0x0A 14 Tagged arithmetic overflow FP instruction while FPU disabled 6 Co-processor instruction while coprocessor disabled 7 Instruction or data watchpoint match 8 SAVE into invalid window RESTORE into invalid window AT697E 4226H–AERO–08/11 AT697E Trap Trap Type Priority divide_exception 0x2A 15 Divide by zero trap_instruction 0x80 0xFF 16 Software trap instruction (Ticc) Note: Traps Description Description 1. The reset trap is a special case of the external asynchronous trap type: the trap type field of the trap base register (TBR.tt) is never modified so if the processor goes to error mode, a post-mortem can later be conducted on what caused the error, if any. • reset - A reset trap occurs immediately after the RESET* signal is deasserted. • write_error - An error exception occurred on a data store to memory. • instruction_access_exception - A blocking error exception occurred on an instruction access. • illegal_instruction - An attempt was made to execute an instruction with an unimplemented opcode, or an UNIMP instruction, or an instruction that would result in illegal processor state. • privileged_instruction - An attempt was made to execute a privileged instruction while not in supervisor mode (PSR.s = 0). • fp_disabled - An attempt was made to execute an FPU instruction while the FPU is not enabled. • cp_disabled - An attempt was made to execute a co-processor instruction (there is no co-processor). • watchpoint_detected - An instruction fetch memory address or load/store data memory address matched the contents of an active watchpoint register. • window_overflow - A SAVE instruction attempted to cause the current window pointer (CWP) to point to an invalid window in the window invalid mask register (WIM). • window_underflow - A RESTORE or RETT instruction attempted to cause the current window pointer (CWP) to point to an invalid window in the window invalid mask register (WIM). • register_hardware_error - An error exception occurred on a read only register access. A register file uncorrectable error was detected. • mem_address_not_aligned - A load/store instruction would have generated a memory address that was not properly aligned according to the instruction, or a JMPL or RETT instruction would have generated a non-word-aligned address. • fp_exception - An FPU instruction generated an IEEE-754_exception and its corresponding trap enable mask bit (FSR.tem) was set, or the FPU instruction was unimplemented, or the FPU instruction did not complete, or there was a sequence 22 4226H–AERO–08/11 or hardware error in the FPU. The type of floating-point exception is encoded in the FPU state register (FSR.ftt). • data_access_exception - A blocking error exception occurred on a load/store data access. EDAC uncorrectable error. • tag_overflow - A tagged arithmetic instruction was executed, and either arithmetic overflow occurred or at least one of the tag bits of the operands was non zero. • trap_division_by_zero - An integer divide instruction attempted to divide by zero. • trap_instruction - A software instruction (Ticc) was executed and the trap condition evaluated to true. When multiple synchronous traps occur at the same cycle (i.e hardware errors), the highest priority trap is taken and lower priority traps are ignored. Asynchronous Traps / Interrupts The AT697E handles up to 11 interrupts. The interrupt controller is used to prioritize and propagate interrupts requests from internal peripherals and external devices to the IU. Figure 5. Interrupt Controller Block Diagram Interrupt Sources PIO[15:0] Internal Interrupt (Timer1, Uart1,...) Data Bus I/O Interrupt Reg. IOIT Interrupt Clear Reg. ITC Interrupt Pending Reg. ITP Interrupt Force Reg. ITF mask trap1x generation priority Interrupt Mask & Priority Reg. ITMP Operation Interrupts are controlled in the interrupt mask and priority register (ITMP): • interrupts requests can be masked (ITMP.imask) so they will not trigger an interrupt • interrupt requests can have a low/high priority level (ITMP.ilevel) When an interrupt request is generated, the corresponding bit is set in the interrupt pending register (ITP.ipend[]) only if the interrupt is not masked (ITMP.imask[] = 0). Then all pending interrupts are forwarded to the priority selector. The pending interrupt (ITP.ipend[]) with the highest number on the high priority level (ITMP.ilevel[] = 1) is selected and forwarded to the IU. If no pending interrupt exists with a high priority level, the pending interrupt with the highest number on the low priority level (ITMP.ilevel[] = 0) is selected and forwarded to the IU. Interrupts can also be forced by setting the corresponding bit in the interrupt force register (ITF.iforce[] = 1). Forcing is effective only if the corresponding interrupt is not masked (ITMP.imask[] = 0). A forced interrupt never shows up as pending. 23 AT697E 4226H–AERO–08/11 AT697E Pending interrupts can be cleared by setting the appropriate bit in the interrupt clear register (ITC.iclear[] = 1). When the IU acknowledges an interrupt, the corresponding pending bit is automatically cleared (ITP.ipend[] = 0) unless it was forced in the interrupt force register (ITF.iforce[] = 1). If the interrupt was forced, the IU acknowledgement rather clears the force bit (ITF.iforce[] = 0). Interrupts List The following table presents the interrupts assignment: Table 5. Interrupt Overview Note: I/O Interrupts Interrupt Trap Type Source 15 0x1F reserved 14 0x1E PCI 13 0x1D reserved 12 0x1C reserved 11 0x1B DSU trace buffer 10 0x1A reserved 9 0x19 Timer 2 8 0x18 Timer 1 7 0x17 I/O interrupt 3 6 0x16 I/O interrupt 3 5 0x15 I/O interrupt 1 4 0x14 I/O interrupt 0 3 0x13 UART 1 2 0x12 UART 2 1 0x11 Hardware error(1) 1. Interrupt 1 is triggered each time a new hardware error is reported (FAILAR.hed) so the application ultimately knows about any hardware error that was detected (bus exception, write protection error, EDAC correctable and uncorrectable external memory error, PCI initiator error or PCI target error). As an alternate function of the general purpose interface, the AT697E can handle interrupts from external devices. Up to 4 external interrupts can be programmed at the same time. The external interrupts are assigned to interrupt 4, 5, 6 and 7. I/O interrupts are controlled in the IOIT register. 24 4226H–AERO–08/11 Each I/O interrupt is controlled through 4 parameters (x in [0:3]): • the interrupt can be enabled or disabled (IOIT.enx) • the interrupt source can be chosen among PIO[15:0] and D[15:0](1) (IOIT.iselx) • the interrupt can be level-triggered(2) or edge-triggered(2) (IOIT.lex) • the interrupt polarity can be high/low(2) when level-triggered or rising/falling(2) when edge-triggered (IOIT.plx) Notes: 1. D[15:0] can be used as part of the general-purpose I/O interface only when all the memory areas (ROM, SRAM & I/O) are 8-bit or 16-bit wide and the SDRAM interface is not enabled. 2. Whatever the chosen trigger mode, the I/O inputs are sampled on the rising edge of the system clock. If generated synchronously, the signal driving the I/O interrupt shall meet the required setup and hold constraints (see "Electrical Characteristics"). If generated asynchronously, the signal driving the I/O interrupt shall be maintained for a minimum of 1.5 clock cycles so at least 1 active sample can be made. The following table summarizes the I/O interrupt trigger configurations. Table 6. I/O Interrupt Trigger Configuration 25 IOIT.lex IOIT.plx Trigger 0 0 low level 0 1 high level 1 0 falling edge 1 1 rising edge AT697E 4226H–AERO–08/11 AT697E Cache Memories Overview The AT697E implements a Harvard architecture with separate instruction and data bus, each connected to an independent cache controller. In order to improve the speed performance of the processor, multi-way caches are used to provide a faster access to instructions and data. The PROM and RAM areas, which represent most of the external memory areas, can be cached. Table 7. Caching Capability Operation Address Range Area Cacheability 0x00000000 - 0x1FFFFFFF PROM Cacheable 0x20000000 - 0x3FFFFFFF I/O Non-cacheable 0x40000000 - 0x7FFFFFFF RAM Cacheable 0x80000000 - 0x8FFFFFFF Registers Non-cacheable 0x90000000 - 0x9FFFFFFF DSU Non-cacheable 0xA0000000 - 0xFFFFFFFF PCI Non-cacheable An associative cache is organized in sets, each set being divided into cache lines. Each line has a cache tag associated with it consisting of a tag field and a valid field with one valid bit for each 4-byte cache data sub-block. The cache replacement policy used for both instruction and data caches is based on the LRU algorithm: new entries are allocated in a cache until the cache is full, then least recently used entries are replaced with new entries not already present in the cache. A cache always operates in one of the three modes: disabled, enabled or frozen. Disabled Mode No cache operation is performed and fetch/load requests are passed directly to the memory controller. Enabled Mode On a cache miss to a cacheable location, the fetch/load request is passed to the memory controller and the corresponding tag and data line are updated with the retrieved instruction/data. Otherwise, the instruction/data is directly retrieved from the cache and forwarded to the IU/FPU. Frozen Mode The cache is accessed as if it was enabled, but no new line is allocated on a cache miss. If the freeze-on-interrupt feature is activated, the corresponding cache is automatically frozen when an asynchronous interrupt is taken. This can be beneficial in real-time system to allow a more accurate calculation of worst-case execution time for an interrupt service routine (ISR). Execution of the interrupt handler will not evict any cache line so when control is returned to the interrupted task, the cache state is identical to what it was before the interrupt. If a cache was frozen by an interrupt, it can only be enabled again in software. This is typically done at the end of the interrupt service routine before control is returned to the interrupted task. 26 4226H–AERO–08/11 Parity Protection Cache tag/data error protection is implemented using two parity bits per tag and per 4byte data sub-block. The tag parity is generated from the tag value, the valid bits and the tag address. By including the tag address, it is also possible to detect errors in the cache ram address decoding logic. Similarly, the data subblock parity is derived from the subblock address and the sub-block data. The parity bits are written simultaneously with the associated tag or sub-block and checked on each access. The two parity bits correspond to the parity of odd and even tag/data bits. If a tag parity error is detected during a cache access, a cache miss is generated and the tag/data is automatically updated. All valid bits except the one corresponding to the newly loaded data are cleared. Each tag error is reported in the cache tag error counter, which is incremented until the maximum count is reached. If a data sub-block parity error occurs, a miss is also generated but only the failed subblock is updated with fetched/loaded data. Each error is reported in the cache data error counter, which is incremented until the maximum count is reached. Instruction Cache Overview The AT697E instruction cache is implemented as a 4-way associative cache of 32 KB, organized in 4 sets of 8 KB. Each instruction cache set is divided into cache lines of 32 bytes (8 instructions). Each line has a cache tag associated with it consisting of a tag field and a valid bit field per instruction. Cache Control The instruction cache operation is controlled in the cache control register (CCR): • operating mode is reported and can be changed (CCR.ics) • cache can be frozen on interrupts (CCR.if) • cache flush can be initiated (CCR.fi) • pending cache flush is reported (CCR.ip) • burst fetch is reported and can be activated (CCR.ib) • up to 3 cache tag/data errors are reported in counters (CCR.ite and CCR.ide), which shall be cleared to register new events Operation Instruction Fetch On an instruction cache fetch-miss to a cacheable location, an instruction (4 bytes) is loaded into the cache from external memory. Burst Fetch If instruction burst fetch is enabled in the cache control register (CCR.ib = 1), the cache line is filled from main memory starting at the missed address and until the end of the line. At the same time, the instructions are forwarded to the IU (streaming). If the IU cannot accept the streamed instructions due to internal dependencies or a multi-cycle instruction, the IU is halted until the line fill is completed. If the IU executes a control transfer instruction during the cache line fill (Bicc/CALL/ JMPL/RETT/Ticc), the cache line fill is terminated on the next fetch. If instruction burst fetch is enabled, instruction streaming is enabled even when the cache is disabled. In this case, the fetched instructions are only forwarded to the IU and the cache is not updated. Cache Flush 27 The instruction cache is flushed by executing the FLUSH instruction, or by activating the instruction cache flush in the cache control register (CCR.fi = 1). AT697E 4226H–AERO–08/11 AT697E The flush operation takes one clock cycle per cache line and set. The IU is not halted during the cache flush but the cache behaves as if it was disabled. When the flush operation is completed, the cache resumes the state (disabled, enabled or frozen) indicated in the cache control register (CCR.ics). Error reporting If a memory access error occurs during a line fill with the IU halted, the corresponding valid bit in the cache tag is not set. If the IU later fetches an instruction from the failed address, a cache miss will occur, triggering a new access to the failed address. If the error remains, an instruction_access_error trap (0x01) is generated. Data Cache Overview The AT697Edata cache is implemented as a 2-way associative cache of 16 KB, organized in 2 sets of 8 KB. Each data cache set is divided into cache lines of 16 bytes (4 words). Each line has a cache tag associated with it consisting of a tag field and a valid bit field per word. Cache Control The data cache operation is controlled in the cache control register (CCR): • operating mode is reported and can be changed (CCR.dcs) • cache can be frozen on interrupts (CCR.df) • cache flush can be initiated (CCR.fd) • pending cache flush is reported (CCR.dp) • cache snooping can be activated (CCR.ds) • up to 3 cache tag/data errors are reported in counters (CCR.dte and CCR.dde), which shall be cleared to register new events Operation Data Load On a data cache read-miss to a cacheable location, 1 word of data (4 bytes) is loaded into the cache from external memory. Data Store The write policy for stores is write-through with update on write-hit and no-allocate on write-miss. An internal write buffer of three 32-bit words is used to temporarily hold store data until it is effectively written into the external device. For half-word and byte stores, the stored data is replicated into proper byte alignment for writing to a word-addressed device before being loaded into the write buffer. The write buffer is emptied prior to a load-miss/cache-fill sequence to avoid any stale data from being read into the data cache. Cache Flush The data cache is flushed by executing the FLUSH instruction, or by activating the data cache flush in the cache control register (CCR.fd = 1). The flush operation takes one clock cycle per cache line and set. The IU is not halted during the cache flush but the cache behaves as if it was disabled. When the flush operation is completed, the cache resumes the state (disabled, enabled or frozen) indicated in the cache control register (CCR.dcs). Cache Snooping The data cache can perform snooping on the internal bus. When snooping is enabled (CCR.ds = 1), the data cache controller monitors write accesses performed either by the PCI DMA controller, or by the PCI target controller or by the DSU communication module. When a write access is performed to a cacheable memory location, the corre- 28 4226H–AERO–08/11 sponding cache line is invalidated in the data cache if present. Cache snooping has no overhead and does not affect performance. Error Reporting If a memory access error occurs during a data load, the corresponding valid bit in the cache tag is set and a data_access_error trap (0x09) is generated. Since the processor executes in parallel with the write buffer, a write error may not cause an exception to the store instruction. Depending on memory and cache activity, the external memory write access may not occur until several clock cycles after the store instructions has completed. If a write error occurs, the currently executing instruction will take a write_error trap (0x2B). Caution: The write_error trap handler shall flush the data cache since a write hit would update the cache while the memory would keep the old value due the write error. Diagnostic Cache Access Tags and data in the instruction and data cache can be accessed through ASI address space by executing LDA and STA instructions (only the least-significant nibble of the ASI field -- ASI[3:0] -- is used for mapping to the alternate address space). Address bits making up the cache offset are used to index the tag to be accessed while the least significant bits of the bits making up the address tag are used to index the cache set. The following table summarizes the ASI allocation on the AT697E. Table 8. ASI Usage ASI 0x0, 0x1, 0x2, 0x3 0x4, 0x7 Note: Usage Force cache miss (replace if cacheable) Force cache miss (update on hit) 0x5 Flush instruction cache 0x6 Flush data cache 0x8 User instruction (replace if cacheable) 0x9 Supervisor instruction (replace if cacheable) 0xA User data (replace if cacheable) 0xB Supervisor data (replace if cacheable) 0xC Instruction cache tags 0xD Instruction cache data 0xE Data cache tags 0xF Data cache data Please refer to "The SPARC Architecture Manual Version 8" document for detailed information on ASI usage. The tags can be directly read/written by executing an LDA/STA instruction with ASI=0xC for instruction cache tags and ASI=0xE for data cache tags. The cache line and the cache set are indexed by the address bits making up the cache offset and the least significant bits of the address bits making up the address tag.. Similarly, the data sub-blocks are read/written by executing an LDA/STA instruction with ASI=0xD for instruction cache data and ASI=0xF for data cache data.. Note: 29 Diagnostic cache access is not possible during a cache flush operation and will cause a data_exception trap (0x09) if attempted. AT697E 4226H–AERO–08/11 AT697E Memory Interface Overview The AT697E provides a direct memory interface to PROM, memory mapped I/O, asynchronous static ram (SRAM) and synchronous dynamic ram (SDRAM) devices. Figure 6. Memory Interface Overview(1) ROMS*[1:0] OE* WRITE* CS OE WE IOS* CS OE WE I/O A CS OE WE SRAM A AT697 RAMS*[4:0] RAMOE*[4:0] RWE*[3:0] SDCLK SDCS*[1:0] SDRAS* SDCAS* SDWE* SDDQM[3:0] CLK CSN RAS CAS WE DQM PROM A D D D A[16:15] BA SDRAM A A[14:2] D A[27:0] D[31:0] CB[7:0] Note: 1. WRITE* and RWE*[3:0] present redundant information and they can be used in PROM and SRAM areas. The memory controller decodes a 2 GB address space and performs chip-select decoding for two PROM banks, one I/O bank, five SRAM banks and two SDRAM banks. Table 9. Memory Controller Address Map Address Range Size Area 0x00000000 - 0x1FFFFFFF 512M PROM 0x20000000 - 0x3FFFFFFF 512M I/O 0x40000000 - 0x7FFFFFFF 1G SRAM and/or SDRAM The memory data bus width can be configured for either 8-bit, 16-bit or 32-bit access, independently for PROM, memory-mapped I/O and SRAM. A fixed 32-bit wide data bus is required for SDRAM. EDAC protection is available for PROM, SRAM and SDRAM memories (CB[7:0] are always driven on a write access in 32-bit mode even when EDAC is not activated). To improve the bandwidth of the memory bus, accesses to consecutive addresses can be performed in burst mode. Burst transfers will be generated when the memory controller is accessed using a burst request from the internal bus. These includes instruction cache-line fills, double-word loads and double-word stores. The memory interface is controlled through 3 memory configuration registers: • MCFG1 is dedicated to PROM and I/O configuration • MCFG2 & MCFG3 are dedicated to SRAM and SDRAM configuration 30 4226H–AERO–08/11 PROM Interface Overview The memory controller allows addressing of up to 512 MB of PROM in two banks. PROM me mory access contro l is pe rforme d usin g dedicated chip selects (ROMS*[1:0]) and common output enable (OE*), read (READ) and write (WRITE*) signals. PROM banks map as follows: • ROMS*[0] decodes the 256 MB lower half of the PROM area (0x00000000 0x0FFFFFFF) • ROMS*[1] decodes the 256 MB upper half of the PROM area (0x10000000 0x1FFFFFFF) The PROM interface is controlled in the memory configuration registers (MCFG1 and MCFG3): • data bus width(1) can be 8-bit, 16bit or 32-bit (MCFG1.prwdh) • wait-states(2) can be programmed for read access (MCFG1.prrws) and write access (MCFG1.prwws) • write can be enabled/disabled (MCFG1.prwen) • EDAC protection(3) can be enabled/disabled (MCFG3.pe) • effective bank size(4) is needed (MCFG1.prbsz) when EDAC is activated Notes: Read Access 1. Upon reset, the PROM data bus width is automatically configured from the value read on the PIO[1:0] pins. By driving PIO[1:0] appropriately during reset, it is possible to set the PROM data bus width on boot. 2. Upon reset, the PROM wait-states are set to the maximum value to allow booting on even the slowest memory. 3. Upon reset, the PROM EDAC protection is automatically configured from the value read on the PIO[2] pin. 4. Upon reset, PROM bank size is automatically set to the minimum value to allow booting with EDAC protection on even the smallest memory (the memory controller needs the information to locate the EDAC checkbits). A PROM read access consists in two data cycles. Figure 7. PROM Read Access (no wait-states) read SDCLK A Address ROMS* OE* D CB 31 Data Checkbits AT697E 4226H–AERO–08/11 AT697E Write Access A PROM write access consists in an address lead-in cycle, a data write cycle and an address lead-out cycle. The write operation is strobed by the WRITE* signal. Figure 8. PROM Write Access (no wait-states) lead-in write lead-out SDCLK A Address ROMS* WRITE* D Data CB Wait-States Checkbits For application accessing slow PROM memories, the memory controller allows to insert wait-states during a PROM read access (MCFG1.prrws) and write access (MCFG1.prwws). Up to 30 wait-states can be inserted in steps of 2 (number of waitstates is twice the programmed value). Figure 9. PROM Read Access with 2 Wait-States (MCFG1.prrws=1) read wait-states SDCLK A Address ROMS* OE* D CB Data Ckbits Write Protection PROM write access is disabled after reset and shall be enabled (MCFG1.prwen = 1) before any write access is attempted. Otherwise the write access is cancelled and a write_error trap (0x2B) is taken. Data Bus Width When configured for 32-bit PROM (MCFG1.prwdh = 00), D[31:0] shall be connected to the memory device(s). CB[7:0] shall be connected as well if EDAC protection is activated (MCFG3.pe = 1). To support applications with limited memory and/or limited performance requirements, the PROM area can be configured for 8-bit or 16-bit operations. 32 4226H–AERO–08/11 When configured for 8-bit PROM (MCFG1.prwdh = 00), D[31:24] shall be connected to the memory device(s). Figure 10. 8-bit PROM Interface A ROMS0* OE* WRITE* CS OE WE D A[27:0] A PROM D D[31:24] AT697 A[27:0] D[31:24] Since an IU load operation is always performed on a word basis (32-bit), read access to 8-bit memory is transformed into a burst of 4 read access to retrieve the 4 bytes. If EDAC protection is activated, a 5th byte read access is performed as well to retrieve the checkbits (see "Error Management - EDAC" section later in this chapter). During a store operation, only the necessary bytes are written if EDAC protection is not activated. Caution: When EDAC protection is activated, only a full word write operation shall be performed (5 bytes). When configured for 16-bit PROM (MCFG1.prwdh = 01), D[31:16] shall be connected to the memory device(s) (no EDAC protection is available in this configuration). Similarly, an IU load operation is transformed into a burst of 2 read access to retrieve the 2 half-words. Figure 11. 16-bit PROM interface A ROMS0* OE* WRITE* CS OE WE D A[27:1] PROM A D D[31:16] AT697 A[27:0] D[31:16] Memory-Mapped I/O Overview The memory controller allows addressing a single memory-mapped I/O area. I/O memory access control is performed using a dedicated chip select (IOS*) and common output enable (OE*), read (READ) and write (WRITE*) signals. No EDAC protection is available in this area. IOS* decodes a fixed 512 MB(1) area (0x20000000 - 0x3FFFFFFF). 33 AT697E 4226H–AERO–08/11 AT697E The I/O interface is controlled in the memory configuration registers (MCFG1): • interface can be enabled/disabled (MCFG1.ioen) • data bus width can be 8-bit, 16bit or 32-bit (MCFG1.iowdh)(2) • wait-states can be programmed for read and write access (MCFG1.iows) • read/write access can be BRDY*-controlled (MCFG1.iobrdy) Notes: Interface Enable Read Access 1. The upper 256 MB area (0x30000000 - 0x3FFFFFFF) is a shadow of the lower 256 MB area (0x20000000 - 0x2FFFFFFF) because of the 28 bits address bus limitation. 2. The I/O area shall only be accessed with load/store instructions of a size matching the configured bus width (LDUB/LDSB/STB when in 8-bit mode, LDUH/STH when in 16-bit mode and LD/ST when in 32-bit mode). The I/O interface shall be enabled (MCFG1.ioen) before any read or write access is attempted, otherwise the access is cancelled and: • an instruction_access_exception trap (0x01) is generated if an instruction fetch is in progress • a data_access_exception trap (0x09) is generated if a data load is in progress • a write_error trap (0x2B) is generated if a data store is in progress An I/O read access consists in a address lead-in cycle (the IOSEL* signal is delayed by one clock cycle to provide a stable address for sampling) and two data cycles. Figure 12. I/O Read Access (no wait-states) lead-in read SDCLK A Address IOS* OE* D Write Access Data An I/O write access consists in an address lead-in cycle, a data write cycle and an address lead-out cycle. The write operation is strobed by the WRITE* signal. Figure 13. I/O Write Access (no wait-states) lead-in write lead-out SDCLK A Address IOS* WRITE* D Data 34 4226H–AERO–08/11 Wait-States For application accessing slow I/O devices, the memory controller allows to insert waitstates during an I/O read /write access (MCFG1.iows). Up to 15 wait-states can be inserted. An I/O read/write access can further be stretched when even more delay is needed (see "BRDY*-Controlled Access" later in this chapter"). Data Bus Width When configured for 32-bit I/O (MCFG1.iowdh = 00), D[31:0] shall be connected to the I/O device(s). Only 32-bit load/store instructions (LD, ST) shall be used then. When configured for 8-bit I/O (MCFG1.iowdh = 00), D[31:24] shall be connected to the I/O device(s). Only 8-bit load/store instructions (LDUB, LDSB, STB) shall be used then. Figure 14. 8-bit I/O interface A IOS* OE* WRITE* CS OE WE D A[27:0] IO A D D[31:24] AT697 A[27:0] D[31:24] . When configured for 16-bit I/O (MCFG1.iowdh = 01), D[31:16] shall be connected to the IO device(s). Only 16-bit load/store instructions (LDUH, LDSH, STH) shall be used then. Figure 15. 16-bit I/O Interface A IOS* OE* WRITE* CS OE WE D A[27:0] IO A D D[31:16] AT697 A[27:0] D[31:16] RAM Interface The memory controller allows to control up to 1 GB of RAM. The global RAM area supports two RAM types: asynchronous static RAM (SRAM) and synchronous dynamic RAM (SDRAM). SRAM Interface Overview The memory controller allows addressing of up to 768 MB of SRAM in 5 banks. SRAM memory access control is performed using dedicated chip selects (RAMS*[4:0]), output enables (RAMOE*[3:0]) and byte-write enables (RAMWE*[3:0]) signals. SRAM banks map as follows: 35 • RAMS*[0], RAMS*[1], RAMS*[2] and RAMS*[3] decode contiguous banks with a common programmable size (8 KB to 256 MB) at the lower half of the RAM area (from 0x40000000 onwards) • RAMS*[4] decodes a fixed 256 MB at the upper half of the RAM area (0x60000000 - 0x6FFFFFFF) unless the SDRAM interface is enabled AT697E 4226H–AERO–08/11 AT697E The SRAM interface is controlled in the memory configuration registers (MCFG2 and MCFG3): • interface can be enabled/disabled (MCFG2.si) • data bus width can be 8-bit, 16bit or 32-bit (MCFG2.ramwdh) • bank size can be set from 8 KB to 256 MB (MCFG2.rambs) • wait-states can be programmed for read access (MCFG2.ramrws) and write access (MCFG2.ramwws) • read-modify-write can be activated for sub-word write operations (MCFG2.ramrmw) • EDAC protection(1) can be enabled/disabled (MCFG3.re) • read/write access can be BRDY*-controlled (MCFG2.rambrdy) Note: 1. EDAC protection activation common to SRAM and SDRAM interfaces. Figure 16. SRAM Bank Organization SRAM bank size 256MB 128MB 64MB Start Address Memory assignement Memory assignement Memory assignement Unused Unused Unused RAMS*[4](1)(2) RAMS*[4](2) RAMS*[4](2) 0x7C000000 0x78000000 0x74000000 0x70000000 0x6C000000 0x68000000 0x64000000 0x60000000 0x5C000000 RAMS*[3] 0x58000000 Unused RAMS*[1] 0x54000000 RAMS*[2] 0x50000000 0x4C000000 RAMS*[3] RAMS*[1] 0x48000000 RAMS*[2] RAMS*[0] 0x44000000 RAMS*[1] RAMS*[0] 0x40000000 Notes: RAMS*[0] 1. When SRAM bank size is set to 256 MB, bank 2 and bank 3 overlap with bank 4. Because priority is given to bank 4, bank 2 and bank 3 control signals are never asserted. 2. When SDRAM is enabled, priority is given to the SDRAM over the SRAM. Any memory access above 0x60000000 is assigned to SDRAM and no SRAM control signal is asserted. 36 4226H–AERO–08/11 Read Access An SRAM read access consists in two data cycles. A dedicated output enable signal is provided for each SRAM bank (RAMOE*[]) and is only asserted when that bank is selected. Figure 17. SRAM Read Access (no wait-states) read SDCLK A Address RAMS* RAMOE* D Data CB Write Access Ckbits An SRAM write access consists in an address lead-in cycle, a data write cycle and an address lead-out cycle. Each byte lane has an individual write strobe (RAMWE*[]) to allow efficient byte and half-word writes. Figure 18. SRAM Write Access (no wait-states) lead-in write lead-out SDCLK A Address RAMS* RWE* D CB Data Checkbits Caution: If EDAC protection is activated on the RAM area or a common write strobe is used for the full 16- or 32-bit data, read-modify-write shall be activated (MCFG2.ramrmw) so the EDAC checkbits integrity is preserved on sub-word writes. 37 AT697E 4226H–AERO–08/11 AT697E Wait-States For application accessing slow SRAM memories, the memory controller allows to insert wait-states during an SRAM read access (MCFG2.ramrws) and write access (MCFG2.ramwws). Up to 3 wait-states can be inserted. Figure 19. SRAM Read Access with 1 Wait-State (MCFG2.ramrws = 1) read wait-state SDCLK A Address RAMS* RAMOE* D Data CB Ckbits SRAM read/write access to bank 4 (RAMS*[4]) can further be stretched when even more delay is needed (see "BRDY*-Controlled Access" later in this chapter"). Data Bus Width When configured for 32-bit SRAM (MCFG2.ramwdh = 00), D[31:0] shall be connected to the memory device(s). CB[7:0] shall be connected as well if EDAC protection is activated (MCFG3.pe = 1). To support applications with limited memory and/or limited performance requirements, the SRAM area can be configured for 8-bit or 16-bit operations. When configured for 8-bit SRAM (MCFG2.ramwdh = 00), D[31:24] shall be connected to the memory device(s). Figure 20. 8-bit SRAM Interface A RAMS0* RAMOE0* RWE0* CS OE WE D A[27:0] SRAM A D D[31:24] AT697 A[27:0] D[31:24] On an 8-bit memory, 16-bit or 32-bit load/store instructions are always performed as a sequence of 2 or 4 consecutive memory accesses. If EDAC protection is activated, a 5th byte read access is performed as well to retrieve the checkbits (see "Error Management - EDAC" section later in this chapter). During a store operation, only the necessary bytes are written if EDAC protection is not activated. When EDAC protection is activated, the processor will always perform a full-word read-modify-write transaction on any sub-word store operation. When configured for 16-bit SRAM (MCFG2.ramwdh = 01), D[31:16] shall be connected to the memory device(s) (no EDAC protection is available in this configuration). 38 4226H–AERO–08/11 Full word load/store instructions are transformed into a sequence of 2 consecutive memory accesses. Figure 21. 16-bit SRAM Interface A RAMS0* RAMOE0* RWE0* CS OE WE D A[27:1] SRAM A D D[31:16] AT697 A[27:0] D[31:24] SDRAM Interface The SDRAM controller allows addressing of up to 1 GB of SDRAM in 2 banks. SDRAM memory access control is performed using dedicated chip selects (SDCS*[1:0]), data masks (SDDQM[3:0]), byte-write enables (SDWE*[3:0]) and clock (SDCLK) signals. Overview SDRAM devices shall be 64 Mbit, 256 Mbit or 512 Mbit with 8 to 12 column-address bits, up to 13 row-address bits and exclusively 4 internal data banks. Only 32-bit data bus width is supported. The SDRAMs address bus shall be connected to A[14:2] and the bank address to A[16:15]. Devices with less than 13 address pins should only use the less significant bits of A[14:2]. SDRAM banks map as follows: • SDCS*[0] and SDCS*[1] decode 2 contiguous banks with a common programmable size (4 MB to 512 MB) • SDCS*[1:0] decode the upper half of the RAM area (0x60000000 0x7FFFFFFF) when the SRAM interface is enabled • SDCS*[1:0] decode the lower half of the RAM area (0x40000000 - 0x5FFFFFFF) when the SRAM interface is disabled The SDRAM interface is controlled in the memory configuration registers (MCFG2 and MCFG3): • interface can be enabled/disabled (MCFG2.se) • bank size can be set from 4 MB to 512 MB (MCFG2.sdrbs) • column size can be set from 256 to 4096 (MCFG2.sdrcls) • commands can be sent to the devices (MCFG2.sdrcmd) • timings parameters can be set (MCFG2.sdrcas, MCFG2.trp and MCFG2.trfc) • auto-refresh can be enabled/disabled (MCFG2.sdrref) and programmed (MCFG3.srcrv) • EDAC protection(1)(2) can be enabled/disabled (MCFG3.re) Notes: Initialization 1. EDAC protection activation common to SRAM and SDRAM interfaces. 2. Read-modify-write on sub-word operations simultaneously activated with EDAC. After reset, the SDRAM controller automatically performs an SDRAM initialization sequence. It consists in a PRECHARGE cycle, two AUTO-REFRESH cycles and a LOADMODE-REG cycle on both SDRAM banks simultaneously. The controller programs the SDRAM to use page burst on read and single location access on write. 39 AT697E 4226H–AERO–08/11 AT697E Timing Parameters The SDRAM interface parameters can be programmed so read/write access to SDRAM devices is optimized: Table 10. SDRAM Programmable Timing Parameters Function Parameter Range Unit Control CAS latency, RAS/CAS delay tCAS, tRCD 2-3 clocks MCFG2.sdrcas Precharge to activate tRP 2-3 clocks MCFG2.trp Auto-refresh command period tRFC 3 - 11 clocks MCFG2.trfc 10 - 32768 clocks MCFG3.srcrv Auto-refresh interval Refresh The SDRAM controller embeds a refresh module. When enabled (MCFG2.sdrref = 1), it periodically issues an AUTO-REFRESH command to both SDRAM banks with a programmable period (MCFG3.srcrv). Depending on the SDRAM device used, the refresh period is typically 7.8 μs or 15.6 μs. The refresh period is calculated as Refresh period Commands Reload value + 1 sdclkfreq The SDRAM controller can issue three SDRAM commands (MCFG2.sdrcmd): PRECHARGE, AUTO-REFRESH and LOAD-MODE-REG. The command field is cleared after a command has been executed. If the LOAD-MODE-REG command is issued, the programmed CAS delay is used (MCFG2.sdrcas) while remaining fields are fixed (page read burst, single location write and sequential burst). Caution: A LOAD-MODE-REG command shall be issued whenever the programmed CAS delay is updated. Read Access Write Access Write Protection A read access consists in several phases: • an ACTIVATE command to the desired bank and row • a READ command after the programmed CAS delay • data read(s) (single or burst with no idle cycles if requested on the internal bus) • a PRE-CHARGE command to terminate the access (no bank left open) A write access consists in several phases: • an ACTIVATE command to the desired bank and row • a WRITE command after the programmed CAS delay • data read(s) (single or burst with no idle cycles if requested on the internal bus) • a PRE-CHARGE command to terminate the access (no bank left open) Write protection is provided to protect the RAM area against accidental over-writing. It is implemented as two write protection units capable of each controlling write access inside/outside of a binary aligned memory segment in the range of 32 KB - 1 GB. 40 4226H–AERO–08/11 Each unit n is configured by a write protection register (WPRn): • the unit can be enabled/disabled (WPRn.en) • a TAG specifies the 15 most significant bits of the segment address (WPRn.tag) • a MASK specifies which bits within the TAG are relevant (WPRn.mask) • protection can be performed outside/inside the segment (WPRn.bp) Figure 22. Write Protection Overview Operation RAM RAM trap TAG/MASK TAG/MASK Write Allowed Segment Write Protected Block Write trap trap Segment mode (bp = 0) Block mode (bp = 1) The protection is based on a segmentation of the RAM address space to define a segment in the range of 32 KB up to 1 GB: Table 11. Write Address Segmentation bit num field 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 01 Most significant write address bits 9 8 7 6 5 4 3 2 1 32 KB minimum area The most significant bits of the write address are XORed with the TAG, and the result is then ANDed with the MASK. If the final result is zero, the write address is in the defined segment, otherwise the write address is in the block (outside of this segment). If the write protection unit is enabled and a block or segment protection error is detected, the write access is cancelled and a write_error trap (0x2B) is generated. BRDY*-Controlled Access 41 15 15 logic 15 Write Protection Reg. WRPn Trap 0x2B BP MASK TAG 15 Data Bus Address Bus Figure 23. Segment/Block Protection Unit EN The BRDY* signal can be used to further stretch a read or write access and is enabled separately for the SRAM area decoded by RAMS*[4] (MCFG2.rambrdy) and the I/O area (MCFG1.iobrdy). This feature is not available for the PROM area. AT697E 4226H–AERO–08/11 0 AT697E An access is always performed with at least the pre-programmed number of wait-states specified in the appropriate memory configuration register (MCFG1 & MCFG2), but is further stretched until BRDY* is asserted. The access is terminated on the rising edge of the clock that immediately follows the detection of the asserted BRDY*. Figure 24. BRDY*-Controlled IO Read Access lead-in read n ws brdy data SDCLK A Address Address Address IOS* OE* BRDY* D Data CB Chkbits Figure 25. BRDY*-Controlled SRAM4 Read Access read n ws brdy data SDCLK A Address Address Address RAMS*[4] RAMOE*[4] BRDY* D CB Bus Exception Data Chkbits A PROM, SRAM or I/O read/write access error can be signalled to the processor by asserting the BEXC* signal which is sampled together with the read/written data, if enabled in the memory controller (MCFG1.bexc = 1): • an instruction_access_exception trap (0x01) is generated if an instruction fetch is in progress • a data_access_exception trap (0x09) is generated if a data load is in progress • a write_error trap (0x2B) is generated if a data store is in progress EDAC Management Overview The AT697E implements on-chip error detection and correction (EDAC). It can correct any single-bit error and detect double-bit errors in a 32-bit word. 42 4226H–AERO–08/11 EDAC Capability Mapping EDAC is available on PROM, SRAM and SDRAM memory areas. Table 12. External Memory EDAC Capability Address Range 0x00000000 - 0x1FFFFFFF 0x20000000 - 0x3FFFFFFF 0x40000000 - 0x7FFFFFFF Area PROM I/O SRAM SDRAM PROM Protection 8 bits yes 16 bits no 32 bits yes All no 8 bits yes 16 bits no 32 bits yes 32 bits yes When EDAC is activated on the PROM area(1) (MCFG3.pe = 1), error detection and correction is performed on every instruction fetch and data load in that area. Note: RAM Protection EDAC Protected 1. Upon reset, EDAC on the PROM area is automatically configured from the value read on the PIO[2] pin. By driving PIO[2] high during reset, it is possible to enable EDAC on PROM on boot. When EDAC is activated on the RAM area(1)(2) (MCFG3.re = 1), error detection and correction is performed on every instruction fetch and data load in that area. Notes: 1. When EDAC is enabled on the RAM area, read-modify-write on the SRAM (MCFG2.ramrmw) shall be enabled as well so the integrity of the EDAC checkbits is preserved on sub-word writes. 2. Activating EDAC on the RAM area automatically enables read-modify-write on subword writes to the SDRAM. Caution: The RAM area shall always be initialized with 32-bit word writes prior to EDAC activation so further sub-word writes (performed as 32-bit read-modify-write atomic operations) always successfully pass the initial read & check step (see "Read Access"). Operation When enabled, the EDAC operates on every access to the external memory. Hamming Code For each word, a 7-bit checksum is generated according to the following equations: CB0 = D0 ^ D4 ^ D6 ^ D7 ^ D8 ^ D9 ^ D11 ^ D14 ^ D17 ^ D18 ^ D19 ^ D21 ^ D26 ^ D28 ^ D29 ^ D31 CB1 = D0 ^ D1 ^ D2 ^ D4 ^ D6 ^ D8 ^ D10 ^ D12 ^ D16 ^ D17 ^ D18 ^ D20 ^ D22 ^ D24 ^ D26 ^ D28 CB2 = D0 ^ D3 ^ D4 ^ D7 ^ D9 ^ D10 ^ D13 ^ D15 ^ D16 ^ D19 ^ D20 ^ D23 ^ D25 ^ D26 ^ D29 ^ D31 CB3 = D0 ^ D1 ^ D5 ^ D6 ^ D7 ^ D11 ^ D12 ^ D13 ^ D16 ^ D17 ^ D21 ^ D22 ^ D23 ^ D27 ^ D28 ^ D29 CB4 = D2 ^ D3 ^ D4 ^ D5 ^ D6 ^ D7 ^ D14 ^ D15 ^ D18 ^ D19 ^ D20 ^ D21 ^ D22 ^ D23 ^ D30 ^ D31 CB5 = D8 ^ D9 ^ D10 ^ D11 ^ D12 ^ D13 ^ D14 ^ D15 ^ D24 ^ D25 ^ D26 ^ D27 ^ D28 ^ D29 ^ D30 ^ D31 CB6 = D0 ^ D1 ^ D2 ^ D3 ^ D4 ^ D5 ^ D6 ^ D7 ^ D24 ^ D25 ^ D26 ^ D27 ^ D28 ^ D29 ^ D30 ^ D31 Write Access When the processor performs a write access to an EDAC protected memory, it also outputs the 7-bit EDAC checkbits on the CB[6:0] pins (CB[7] always driven low unless EDAC testing is enabled). Read Access When the processor performs a read access to an EDAC protected memory, the checkbits read together with the data are compared against checkbits generated by the EDAC from the same read data. Any discrepancy yields an error and a syndrome is computed 43 AT697E 4226H–AERO–08/11 AT697E to further qualify the error as correctable (single-bit error) or uncorrectable (double-bit error). Correctable Error A single-bit error qualifies as a correctable error. The correction is performed on-the-fly inside the processor during the current access and no timing penalty is incurred. The correctable error event is reported in the fail address register (FAILAR) and in the fail status register (FAILSR). If unmasked, interrupt 1 (trap 0x11) is generated. Caution: The single-bit error remains in memory until a software-initiated rewrite is performed at the faulty memory location. Uncorrectable Error A double-bit error qualifies as an uncorrectable error: • an instruction_access_exception trap (0x01) is generated if an instruction fetch is in progress • a data_access_exception trap (0x09) is generated if a data load is in progress Figure 26. EDAC overview Memory Configuration Reg. MCFG3 CB[7:0] Address Bus trap 0x01 EDAC trap 0x09 Data Bus Fail Address Reg. FAILAR Fail Status Reg. FAILSR EDAC on 8-bit Memories EDAC protection on 8-bit memories can be performed as well. CB[7:0] is not used and the EDAC checkbits are stored in the upper part of the 8-bit memory bank where the protected data reside. When EDAC is enabled: • an instruction fetch or a data load is performed as a burst of 4 read access to retrieve the 4 bytes and a 5th read access to retrieve the checkbits • any word and sub-word store can be performed in RAM • only byte store shall be performed in PROM The protected memory bank is partitioned as follows: • lower 75% of the memory bank available as program or data memory • upper 25% of the memory bank allocated to the EDAC checkbits (topmost 6.25% unusable) Accessing the EDAC checkbits is performed as follows: • start address at 75% of the PROM bank size (MCFG1.prbsz) or of the SRAM bank size (MCFG2.rambs) addrcheckbits = addrbank-start + 75% banksize + ((addrdata - addrbank-start) / 4) • checkbits bytes allocated upwards 44 4226H–AERO–08/11 EDAC Testing Operation of the EDAC can be bypassed for testing purpose and is controlled in a memory configuration register (MCFG3). Figure 27. EDAC testing overview Data Bus WB Memory Configuration Reg. MCFG3 TCB 8 8 CB[7:0] EDAC TCB 8 RB Write Test When EDAC write bypass is enabled (MCFG3.wb = 1), the test checkbits (MCFG3.tcb) replace the EDAC generated checkbits during a data store. Read Test When EDAC read diagnostic is enabled (MCFG3.rb = 1), the test checkbits (MCFG3.tcb) are updated(1) with the read checkbits during a data load or an instruction fetch. Note: 45 1. The EDAC test routine shall be executed entirely from the instruction cache (when activated) or from an area without EDAC activated and different from the one being accessed. Otherwise the checkbits read during instruction fetch will overwrite those from the area to be tested. AT697E 4226H–AERO–08/11 AT697E Timer Unit The timer unit implements two 24-bit timers, one 24-bit watchdog and one 10-bit shared prescaler. Prescaler The prescaler is an internal device shared by the two timers and the watchdog. Figure 28. Prescaler Block Diagram Reload Reg. SCAR count tick Data Bus Control Logic clock load Counter Reg. SCAC =0x3FF The prescaler operation is controlled by two registers (SCAC and SCAR): • the prescaler is always enabled • the counter (SCAC.cnt) is clocked by the system clock and decremented on each clock cycle • the counter is reloaded from the prescaler reload register (SCAR.rl) after it underflows and a tick pulse is generated for the two timers and the watchdog • after reset, the prescaler counter & reload registers are initialized to the minimum division rate The effective division rate is therefore equal to the prescaler reload register value + 1. Caution: The two timers and the watchdog share the same decrementer, so the minimum possible prescaler division rate is 4 to allow processing of the two timers and the watchdog. Timer 1 & Timer 2 Timer1 and Timer2 are two general purpose 24-bit timers. They share the same decrementer with the watchdog. Figure 29. Timer 1/2 Block Diagram Control Reg. TIMCTRn Reload Reg. TIMRn Data Bus Control Logic timer interrupts (irq 8 & 9) count tick load Counter Reg. TIMCn enable/disable =0xFFFFFF 46 4226H–AERO–08/11 Each timer n operation is controlled by a dedicated set of timer control registers (TIMCTRn, TIMRn and TIMCn): • a timer can be enabled/disabled (TIMCTRn.en) • the counter (TIMCn.cnt) is decremented each time the prescaler generates a tick pulse • the counter can be manually loaded (TIMCTRn.ld) from the reload register (TIMCTRn.rv) • the counter can be configured to stop or to automatically reload (TIMRn.rl) after it underflows Each time a timer underflows, a timer-dedicated interrupt is generated (ITP.ipend[]) if unmasked in the interrupt mask and priority register (ITMP.mask[]). Watchdog The watchdog is a specific 24-bit timer (decrementer shared with Timer1 and Timer2). Data Bus Figure 30. Watchdog Block Diagram WDOG Watchdog Reg. WDG Control Logic count tick =0x00000000 The watchdog is accessible through a single watchdog register (WDG): • the watchdog is always enabled • the counter (WDG.cnt) is decremented each time the prescaler generates a tick pulse unless it has reached zero • the WDOG* signal is asserted when the counter expires at zero (no other internal event generated) • the counter never underflows and shall be refreshed by directly reloading a value into the counter • after reset, the watchdog counter is initialized to the maximum possible value(1) Note: 1. Considering the prescaler is initialized to the minimum value after a reset (a division rate of 4), the watchdog will expire after (224 - 1)×4 cycles, unless later programmed otherwise. The watchdog can be used to generate a system reset on expiration by directly connecting the WDOG* open-drain output pin to the RESET* pin. 47 AT697E 4226H–AERO–08/11 AT697E UART Interface The Universal Asynchronous Receiver and Transmitter (UART) is a highly flexible serial communication module. The AT697E implements two uarts: UART1 and UART2. UARTs on the processor are defined as alternate functions of the general purpose interface (GPI). Overview Each UART n operates independently and is fully controlled by a set of 4 registers: • a control register (UACn) • a status register (UASn) • a scaler register (UASCAn) • a data register (UADn) Figure 31. UART Block Diagram Uart Scaler Reg. UASCAn Uart Status Reg. UASn Uart Control Reg. UACn scaler RTS control logic Data Bus tick filter CTS Receiver Shift Register Transmitter Shift Register Receiver Holding Register Transmitter Holding Register TX Uart Data Reg. UADn Data Frame A data frame consists in a start bit, 8 data bits, an optional parity bit and a stop bit. Figure 32. Data Frames Data frame, no parity: Start D0 D1 D2 D3 D4 D5 D6 D7 Stop Data frame with parity: Start D0 D1 D2 D3 D4 D5 D6 D7 Parity Stop Parity in a data frame is controlled as follows: • the parity can be enabled or disabled (UACn.pe) • when enabled (UACn.pe = 1), the parity can be even or odd (UACn.ps) When even (UACn.ps = 1), the parity bit is generated such as the number of 1s in the data and the parity is even. When odd (UACn.ps = 0), the parity bit is generated such as the number of 1s is odd. Baud-Rate The internal baud-rate generator requires a clock source to operate, which can either be internal or external (UACn.ec). 48 4226H–AERO–08/11 Internal Clock When configured for internal clock (UACn.ec = 0), the UART baud-rate comes from a programmable 12-bits scaler controlled by a configuration register (UASCAn): • the scaler is enabled only when the UART transmitter (UACn.te = 0) and/or the UART receiver (UACn.re = 0) are enabled • when enabled (UACn.te = 1 and/or UACn.re = 1), the scaler counter is clocked by the system clock and decremented on each clock cycle • the scaler counter is reloaded from the scaler reload register (UASCAn.rv) after it underflows and a UART tick is generated for the transmitter and the receiver (tick frequency is 8 times the desired baud-rate) The following equations shall be used to calculate the scaler value or the baudrate value based on the clock frequency: scalerrv = baudrate = sdclkfreq baudrate × 8 1 sdclkfreq ( 8 × scalerrv + 1) variable description: External Clock • sdclkfreq: internal clock frequency • baudrate: targeted/resulting baud rate • scalerrv: resulting/targeted scaler reload value When configured for an external clock (UACn.ec = 1), the UART scaler is bypassed and PIO[3] directly provides the UART tick to the transmitter and the receiver (tick frequency is 8 times the desired baud-rate). The external clock frequency shall be 8 times the desired baud-rate. Caution: When configured for an external clock source, the clock high and low time on PIO[3] shall each be longer than the period of the internal system clock (so proper sampling is achieved). Double Buffering Each UART performs double-buffering (a holding register and a shift register) on the transmitter and the receiver to optimize the data transfer in both directions (no transmitter stopped waiting for reload, no data loss on receiver overrun). Hardware Flow-Control Each UART n can perform hardware flow-control to further optimize and secure data transfer in both directions: Noise Filtering 49 • hardware flow-control can be enabled or disabled (UACn.fl) • when enabled (UACn.fl = 1) together with the transmitter (UACn.te = 1), no new data transmit is initiated until the clear-to-send input pin (CTSn) is asserted (data transmission is not interrupted is deasserted in the middle of the transmission) • when enabled (UACn.fl = 1) together with the receiver (UACn.re = 1), the request-to-send output pin (RTSn) is asserted as long as new data can be received The serial input is shifted through an 8-bit filter which changes output only when all bits in the filter have the same value, effectively forming a low-pass filter with a cut-off frequency of 1/8 system clock. AT697E 4226H–AERO–08/11 AT697E Operation Transmitter Operation UART n transmitter is first configured as follows: • the transmitter shall be enabled (UACn.te = 1) • the transmitter serial-output pin (TXn) shall be enabled on the general-purpose interface by configuring the appropriate pin to output mode (PIO[15] for UART1 and PIO[11] for UART2) • if flow-control is enabled (UACn.fl = 1), the transmitter clear-to-send pin (CTSn) shall be enabled on the general-purpose interface by configuring the appropriate pin to input mode (PIO[12] for UART1 and PIO[8] for UART2) When ready to transmit, data written to the transmitter holding register (UADn.rtd) is transferred into the transmitter shift register and converted to a serial data frame on the transmitter serial output pin (TXn). Following the transmission of the stop bit, the transmitter serial data output remains high and the transmitter shift register empty flag is asserted (UASn.ts = 1) if no new data is available in the transmitter holding register. Transmission resumes and the transmitter shift register empty flag is deasserted (UASn.ts = 0) when new data is loaded in the transmitter holding register (UADn.rtd). Receiver Operation UART n receiver is first configured as follows: • the receiver shall be enabled (UACn.re = 1) • the receiver serial-input pin (RXn) shall be enabled on the general-purpose interface by configuring the appropriate pin (PIO[14] for UART1 and PIO[10] for UART2) to input mode • if flow-control is enabled (UACn.fl = 1), the receiver request-to-send pin (RTSn) shall be enabled on the general-purpose interface by configuring the appropriate pin (PIO[13] for UART1 and PIO[9] for UART2) to output mode The receiver constantly looks for the high to low transition of a start bit on the receiver serial data input pin (RXn). If a transition is detected, the state of the serial input is sampled a half-bit later for confirmation and a valid start bit is assumed if the serial input is still low, otherwise the search for a valid start bit continues. Then the receiver continues to sample the serial input at one bit time intervals (at the theoretical centre of the bit) until the proper number of data bits and optionally the parity bit have been assembled and one stop bit has been detected. The data is transferred to the receiver holding register and the data ready flag is asserted (UASn.dr = 1) by the end of the reception if no error was detected. Otherwise, no data ready flag is asserted and the error is reported in the appropriate flag: • a parity error (UASn.pe = 1) occurs when parity is enabled (UACn.pe = 1) and the received parity does not match the selected parity configuration (UACn.ps) • a framing error (UASn.fe = 1) occurs when the received stop bit is a 0 rather than a 1 • a break received (UASn.br = 1) occurs when the received data and the stop bit are all 0s • an overrun error (UASn.ov = 1) occurs when the holding register already contains an un-read data Caution: The errors bits are never cleared by the receiver and shall be cleared in software so new errors can later be detected. 50 4226H–AERO–08/11 Reading the UART data register (UADn.rtd) empties the receiver holding register and deasserts the data ready flag (UASn.dr = 0). Interrupt Generation Each UART n can be configured to generate an interrupt each time a byte has been received and/or is about to be sent: • transmitter interrupt can be enabled/disabled (UACn.ti) • receiver interrupt can be enabled/disabled (UACn.ri) When enabled (UACn.ti = 1), the transmitter issues an interrupt when the transmitter holding register is emptied (transfer into the transmitter shift register for sending). When enabled (UACn.ri = 1), the receiver issues an interrupt after serial data has been received (data made ready into the receiver holding register or errors reported). Note: Loop-Back Mode The interrupt is made effective (ITP.ipend[3] for UART1 and ITP.ipend[2] for UART2) only if unmasked in the interrupt mask and priority register (ITP.imask[3] for UART1 and ITP.imask[2] for UART2). Each UART n can be configured in loop-back mode (UACn.lb) for testing purpose. When enabled(1) (UACn.lb = 1), the transmitter serial-output(2) is internally connected to the receiver serial-input(3) and the receiver request-to send output(4) is internally connected to the transmitter clear-to-send input(5). Notes: 51 1. In loop-back mode, the corresponding general-purpose I/O pins need not be configured since all the connections are directly performed internally. 2. If the transmitter is enabled and the corresponding general purpose I/O pin (TXn) is configured as an output, a constant 1 is output instead of the programmed I/O data. 3. No parity error or framing error or break received can be generated since the transmitter and the receiver both share the same parity and baud-rate configuration. 4. If flow-control is enabled and the corresponding general purpose I/O pin (RTSn) is configured as an output, a constant 1 is output instead of the programmed I/O data. 5. No overrun error can be generated if flow-control is enabled. AT697E 4226H–AERO–08/11 AT697E General Purpose Interface The general purpose interface (GPI) consists in a partially bit-wise programmable 32-bit I/O port with alternate facilities. GPI as a 32-bit I/O Port The port is split in two parts - the lower 16-bits are accessible via the PIO[15:0] pins while the upper 16-bits are accessible via D[15:0] and can only be used when all the external memory areas (ROM, SRAM and I/O) are in 8-bit or 16-bit mode (see “8-bit and 16-bit PROM and SRAM Access”). If the SDRAM controller is enabled, the upper 16-bits cannot be used . Lower 16-bits Operation The lower 16 bits of the I/O port can be individually programmed as output or input, they are accessible through PIO[15:0]. Each pin n in PIO[15:0] is controlled by two registers (IODIR and IODAT): • the pin can be configured as an input or an output (IODIR.piodir[n]) • when configured as an input (IODIR.piodir[n] = 0), the bit value in the data register (IODAT.piodat[n]) continuously reflects the pin value • when configured as an output (IODIR.piodir[n] = 1), the bit value in the data register (IODAT.piodat[n]) is continuously output on the pin Data Bus Figure 33. I/O Port Block Diagram - PIO[15:0] IO Direction Reg. IODIR[x] D Q D Q PIO[x IO Data Reg. IODAT[x] Q D clock Upper 16-bits Operation The upper 16 bits of the I/O port can only be configured as outputs or inputs on a byte basis. D[15:8] is referenced as the medium byte while D[7:0] is referenced as the lower byte. 52 4226H–AERO–08/11 Each byte in D[15:0] is controlled by 2 registers (IODIR and IODAT): • the whole byte can be configured as an input or an output (IODIR.meddir and IODIR.lowdir) • when configured as an input (IODIR.meddir = 0 and/or IODIR.lowdir = 0), the byte value in the data register (IODAT.meddat and IODAT.lowdat) continuously reflects the corresponding pins byte value • when configured as an output (IODIR.meddir = 1 and/or IODIR.lowdir = 1), the byte value in the data register (IODAT.meddat and IODAT.lowdat) is continuously output on the corresponding byte pins Data Bus Figure 34. I/O Port Block Diagram - D[15:0] IO Direction Reg. MEDDIR/LOWDIR D Q D Q D[x] IO Data Reg. MEDDAT[x]/LOWDAT[x] Q D clock GPI Alternate Functions Most GPI pins have alternate functions in addition to being general I/O. Facilities like serial communication link, interrupt input and configuration are made available through these functions. The following table summarizes the assignement of the alternate functions. Table 13. GPI alternate functions Notes: 53 GPI port pin Alternate function PIO[15] TXD1 - UART1 transmitter data(1)(3) PIO[14] RXD1 - UART1 receiver data(2)(4) PIO[13] RTS1 - UART1 request-to-send(1)(4)(5) PIO[12] CTS1 - UART1 clear-to-send(2)(3)(5) PIO[11] TXD2 - UART2 transmitter data(1)(3) PIO[10] RXD2 - UART2 receiver data(2)(4) PIO[9] RTS2 - UART2 request-to-send(1)(4)(5) PIO[8] CTS2 - UART2 clear-to-send(2)(3)(5) PIO[3] EXTCLK - Use as alternative UART clock(2) PIO[2] PROM EDAC enable - Enable EDAC protection on boot(6) PIO[1:0] PROM width - Defines PROM data bus width on boot(6) 1. The corresponding GPI port pin shall be configured in output mode so the UART output signal is effective on that pin. 2. The corresponding GPI port pin shall be configured in input mode so the UART input signal is effective on that pin. 3. The corresponding UART transmitter shall be enabled 4. The corresponding UART receiver shall be enabled 5. Flow-control shall be enabled on the corresponding UART 6. Pin is sampled during reset and can be used as a general purpose I/O pin after reset AT697E 4226H–AERO–08/11 AT697E In addition to these alternate functions, each GPI interface pin can be configured as an interrupt input to catch interrupts from external devices. Up to four interrupts can be configured on the GPI interface by programming the I/O interrupt register (IOIT). For a detailed description about the external interrupts configuration, please refer to the “Traps and Interrupts” section. 54 4226H–AERO–08/11 PCI Arbiter The embedded PCI arbiter enables the arbitration of up to 4 PCI agents (numbered from 0 to 3). A round-robin algorithm is implemented as arbitration policy. Since the PCI interface arbitration logic is not connected internally to the PCI arbiter, the REQ*/GNT* signals shall be connected externally to one of the AREQ*[]/AGNT*[] pairs of the arbiter so the PCI interface is arbitered amongst the other agents on the bus. The PCI interface can also be operated with an external PCI arbiter, thus not using the internal arbiter (the AREQ*[3:0] input signals shall then be tied to a high level). Operation An agent on the PCI bus requests the bus by driving low one of the AREQ*[] signal. When the arbiter determines the bus can be granted to an agent, it drives low the corresponding AGNT*[] signal. The agent is only granted the PCI bus for one transaction. An agent willing further access to the bus shall continue to assert its AREQ*[] line and wait to be granted the bus again. Policy The arbitration policy is based on a round-robin algorithm with two nested priority loops. A high priority loop is defined as level 0, a low priority loop is defined as level 1. Agents 0,1 and 2 can be individually configured to operate either on level 0 or on level 1 in the PCI Arbiter register (PCIA), whereas agent 3 operates on the fixed level 1 (low priority). The arbitration is performed by checking the AREQ*[3:0] signals one after the other. In the first place, only agents with level 0 (high priority) are considered. If an agent asserts its AREQ*[] signal and the bus is not already granted, the corresponding AGNT*[] signal is driven low to grant the agent the bus. After a complete round-turn in level 0, a complete turn is done in level 1. The following figure illustrates the operation of the arbiter: Operation Figure 35. Arbiter Operation level 0 Agent 0 Agent 1 level 1 time Agent 0 Agent 1 Agent 2 Agent 0 Agent 1 Agent 3 Agent 2 With : agents 0 and 1 at level 0 agents 2 and 3 at level 1 Considering only agents submitting a request at the same time, the odds for being granted the bus can be summarized as follows: 55 • All agents in the same level have equal probability of grant • All agents in level 1 have the same cumulated probability of grant as a single agent in level 0 AT697E 4226H–AERO–08/11 AT697E Re-arbitration Re-arbitration occurs as soon as a transfer is finished and a new request is made (the PCI arbiter has internal knowledge of the FRAME* signal) or when no agent is requesting the bus anymore (leading to bus parking). Caution: No re-arbitration occurs during a transfer. Long bursts of one agent, even if assigned a low priority, can therefore significantly deteriorate the bandwidth available for other agents, especially the ones assigned a high priority. In time critical systems, splitting long bursts into smaller chunks shall be considered as a way to favor re-arbitration more often. Bus Parking As long as no bus request is active, the bus always remains granted (parked) to the last owner until another agent requests the bus. After reset, the bus is automatically granted (parked) to agent 0. 56 4226H–AERO–08/11 PCI Interface Overview The PCI interface implementation is compliant with the PCI specification revision 2.2. It is a high performance 32-bit bus interface with multiplexed address and data lines. It is intended for use as an interconnect mechanism between processor/memory systems and peripheral controller components. The PCI interface has initiator (master) and target capability, and data transfer can be in transmit (from AT697 to PCI bus) or in receive (from PCI to AT697) direction. The PCI bus can be operated at a frequency up to 33 MHz independently of the processor clock. The PCI clock domain and the processor clock domain are fully decoupled, allowing the processor clock to be faster, equal or slower than the PCI clock. Data transfer is through 4 synchronizing data FIFOs of 8 words each: • MXMT: master/initiator-transmit-FIFO (from AT697 to PCI bus, for store instructions) • MRCV: master-receive-FIFO (from PCI bus to AT697, for load instructions) • TXMT: target-transmit-FIFO (from AT697 memory to PCI bus, PCI-read) • TRCV: target-receive-FIFO (from PCI bus to AT697 memory, PCI-write) Depending on the configuration mode, the lower part of the PCI configuration registers can be accessed either locally in the register address space (address 0x80000100 to 0x80000144) or by another PCI device via the PCI bus with PCI configuration cycles and the IDSEL signal (the AT697 can never access its own configuration registers via the PCI bus). The upper part of the PCI configuration registers (0x80000148 to 0x80000178) and the PCI arbiter register PCIA (0x80000280) can only be accessed locally through the register address space. The configuration mode is selected by a hardware bootstrap on the SYSEN* pin. The following two modes are available: • Host-Bridge (SYSEN* = 0) In host-bridge mode, the PCI registers at address 0x80000100 to 0x80000144 are only accessible locally by the AT697 processor, but not through the PCI bus. The host-bridge is sometimes also called System Controller, it controls other satellite devices through PCI configuration commands. • Satellite (SYSEN* = 1) In satellite mode, the lower part of the AT697 PCI registers can be written and read by another PCI device (the host-bridge) using PCI configuration cycles, whereas the local registers addresses 0x80000100 to 0x80000144 are read-only. Some other features are supported by this interface like PCI Initiator (Master) 57 • Target lock • Target zero-latency fast back-to-back transfers • Zero wait-state burst mode transfers • Memory read line/multiple • Memory write and invalidate • Delayed read • Flexible error reporting by polling PCI initiator transactions are issued by the processor either as memory-mapped load/store instructions or as DMA-assisted data transfers between the PCI bus and the local memory. AT697E 4226H–AERO–08/11 AT697E Load/store instructions to a memory address in the PCI area (0xA0000000 0xFFFFFFFF) are automatically translated by the interface into the appropriate PCI transaction. Any PCI address outside of this range can only be accessed via a DMAassisted data transfer. The PCI initiator (memory-mapped or DMA-assisted) is enabled by setting bits PCISC.com2 and PCIIC.mod. Memory-Mapped Access Instructions of different width (byte, half-word, word or double-word) can be performed for each address of the PCI address range. The three least-significant bits of the address (A/D[2:0]) are used to determine which PCI byte-enable signals (C/BE*[3:0]) should be active during the transaction. According to the SPARC architecture, big-endian mapping is implemented where the most significant byte standing at the lower address (0x..00) and the least significant byte standing to the upper address (0x..03). Writing a byte to a PCI word-aligned address (A/D[1:0] = 00) results in the byteenable pattern (C/BE*[3:0] = 0111) indicating the most significant byte lane (A/D[31:24]) of the PCI data bus is selected. For all sub-word load instructions using a PCI memory command, the byte enables are all-0s, assuming reading more bytes than necessary has no side effects on a prefetchable target. Non-prefetchable targets where exact read byte-enables are required should be accessed with PCI I/O commands. Byte, half-word and word size load/store instructions are translated into a single word PCI transaction with the appropriate byte-enable pattern, while a double-word load/store instruction can either be translated into 2 single-word PCI transactions or a 2-word burst PCI transaction. The following table presents the mapping between instructions and PCI byte enables generated for memory write and I/O read/write commands: Table 14. Byte-Enable(1) vs Instruction Bit Width 8 Instruction Ai[2:0]=000 LDSB, LDUB, STB LDSH, LDUH, STH 32 64 LD, ST LDD, STD (4) 0000(2) 0111 0011 0000 Ai[1:0]=01(4) 1011 n/a(3) n/a(3) n/a(3) Ai[1:0]=10(4) 1101 1100 n/a(3) n/a(3) Ai[1:0]=11(4) 1110 n/a(3) n/a(3) n/a(3) Ai[2:0]=100(4) Notes: Command Type 16 n/a(3) 1. PCI byte-enables signals are active low (C/BE*[3:0]) 2. Operation can either be performed as 2 separate transactions or as a single data burst transaction 3. Improperly aligned access is cancelled and causes a mem_address_not_aligned trap (0x07) 4. Ai is the source/destination memory address referenced by the load/store instruction The PCI command type to be used for memory-mapped transactions is set in PCIIC.cmd to one of IO-read/write, memory-read/write (default after reset), configuration-read/write(caution) or memory-read-line/write-invalidate. 58 4226H–AERO–08/11 Memory commands are issued on the PCI bus with the 2 least significant bits of the address cleared (A/D[1:0] = 00) to indicate the linear incrementing mode is being used. Configuration(caution) and I/O commands are issued on the PCI bus with the address unchanged. Caution: Configuration transactions shall only be generated in host-bridge mode (SYSEN* pin tied to a low level). Operation To engage memory-mapped transactions on the PCI interface: 1. Enable PCI initiator mode (PCISC.com2 = 1) and memory-mapped transactions (PCIIC.mod = 1). 2. Clear the PCI interrupt pending register (PCIITP = 0xF0). 3. In interrupt-assisted operation, enable any of the 4 possible PCI interrupt sources: SERR* asserted (PCIITE.serr = 1), initiator parity error (PCIITE.iper = 1), initiator fatal error (PCIITE.ife = 1) and/or initiator internal error (PCIITE.iier = 1). Interrupts shall be enabled as well in the processor (PSR.et = 1 and PSR.pil < 14) and the interrupt controller (ITMP.imask[14] = 1). The interrupt service routine (ISR) shall check the PCI interface status: SERR* asserted (PCIITP.serr = 1), initiator parity error (PCIITP.iper = 1), initiator fatal error (PCIITP.ife = 1) or initiator internal error (PCIITP.iier = 1) and clear each bit in software by rewriting a 1 as appropriate so further events can be detected. 4. Select the appropriate PCI command type (PCIIC.cmd). 5. Execute a load/store instruction on a local memory address mapped in the PCI address range (0xA0000000 to 0xFFFFFFFF). 6. If not using interrupts, check the PCI interface status: SERR* asserted (PCIITP.serr = 1), initiator parity error (PCIITP.iper = 1), initiator fatal error (PCIITP.ife = 1) and/or initiator internal error (PCIITP.iier = 1) then clear each bit as appropriate (in software by rewriting a 1) so further events can be detected. 7. Repeat steps 5 to 6 as many times as needed. 8. Repeat steps 4 to 7 as many times as needed with a new PCI command type. Limitations Direct Memory Access The following PCI features are not supported: • PCI interrupt acknowledge, special cycles and memory read-multiple • 64-bit addressing and Dual Address Cycles (DAC) • Cacheline wrap mode with memory commands • PCI power management. • Master fast back-to-back transactions A DMA controller is available to perform data transfers between the local memory and a remote target on the PCI bus. The processor needs only initiate the transfer by programming the DMA controller. Once programmed, the DMA controller is fully autonomous and performs data transfers in the background while the processor is running. Interrupts are provided for synchronization. The DMA controller only performs word transfers with all 4 PCI byte-lanes enabled (C/BE*[3:0] = 0000). 59 AT697E 4226H–AERO–08/11 AT697E Operation To engage DMA-assisted transactions on the PCI interface: 1. Enable PCI initiator mode (PCISC.com2 = 1) and DMA-assisted transactions (PCIIC.mod = 1). 2. Clear the PCI interrupt pending register (PCIITP = 0xF0). 3. In interrupt-assisted operation, enable any of the 5 possible PCI interrupts sources: DMA transfer finished (PCIITE.dmaf = 1), SERR* asserted (PCIITE.serr = 1), initiator parity error (PCIITE.iper = 1), initiator fatal error (PCIITE.ife = 1) and/or initiator internal error (PCIITE.iier = 1). Interrupts shall be enabled as well in the processor (PSR.et = 1 and PSR.pil < 14) and the interrupt controller (ITMP.imask[14] = 1). The interrupt service routine (ISR) shall check the PCI interface status: DMA transfer finished (PCIITP.dmaf = 1), SERR* asserted (PCIITP.serr = 1), initiator parity error (PCIITP.iper = 1), initiator fatal error (PCIITP.ife = 1) and/or initiator internal error (PCIITP.iier = 1) then clear each bit as appropriate (in software by rewriting a 1) so further events can be detected. 4. Define the start address in the PCI address space (PCISA). 5. Define in a single write operation the PCI command and the number of words to be transferred (PCIDMA.cmd and PCIDMA.wcnt, 1 to 255 words). At this point for PCI read-based transactions, the PCI interface starts pre-fetching data from the PCI remote target. 6. Define the start address in local memory (PCIDMAA). At this point, data transfer starts in local memory. 7. Wait (interrupt or poll) for the transfer to finish (PCIITP.dmaf = 1). 8. If not using interrupts, check the PCI interface status: SERR* asserted (PCIITP.serr = 1), initiator parity error (PCIITP.iper = 1), initiator fatal error (PCIITP.ife = 1) and/or initiator internal error (PCIITP.iier = 1) then clear each bit as appropriate (in software by rewriting a 1) so further events can be detected. 9. Repeat steps 4 to 8 as many times as needed. Limitations The following limitations shall be considered when using the DMA controller: • Memory-mapped access and DMA are mutually exclusive: any load/store instruction to the PCI area in local memory (0xA0000000 - 0xFFFFFFFF) during a DMA transfer will stall the processor until the DMA transfer is completed. Moreover, a PCI memory-mapped access (like in an interrupt service routine) which occurs during the initiate procedure of the DMA transfer (between steps 3 to 5) will cause a deadlock requiring a reset of the processor. The application shall ensure the atomicity of steps 4 to 6. • A wrong DMA initialization sequence may cause the DMA state machine to lock and report an error (PCIITP.iier = 1). The PCI interface shall then be reset (PCIIC = 0xFFFFFFFF). • A DMA transfer cannot cross a 256 words aligned segment boundary in local memory. If the combination of the start address (PCISA) and the number of words to be transferred (PCIDMA.wcnt) is to cross that boundary, the DMA controller will terminate the transfer by the end of the segment (PCIITP.dmaf = 1), flush the FIFOs and report an error (PCIITP.iier = 1). • A DMA transfer cannot operate within the PCI memory-mapped address range in local memory. If the local address of a DMA transfer lies in the PCI memory-mapped address range (0xA0000000 - 0xFFFFFFFF), the DMA controller will cancel the transfer and report an error (PCIITP.iier = 1). 60 4226H–AERO–08/11 Configuration Access to a PCI target configuration address space requires the target device to be selected at its IDSEL pin. In many systems, the IDSEL pins of the satellite devices are directly connected to one of the A/D[31:11] signals. Memory-Mapped Because of the local memory address range limitation (0xA0000000 to 0xFFFFFFFF), the remote target IDSEL signal shall only be connected to lines from A/D[29:11]. This allows up to 19 PCI targets to be configured: the target connected to A/D[29] is selected with address 0xE0000xxx, A/D[28] with address 0xD0000xxx, A/D[27] with address 0xC8000xxx, A/D[26] with address 0xC4000xxx and so on. DMA-Assisted Any target connected to A/D[31:11] can be configured with the DMA controller. PCI Target PCI target transactions originate from remote PCI initiators (masters) to the PCI interface. The processor needs only configure the interface by programming the target controller. Once programmed, the target controller is fully autonomous and performs data transfers in the background while the processor is running. Interrupts are provided for synchronization. Interface Setup The target interface is programmed as follows(1): • Enable/Disable(1) parity error checks on the PCI interface (PCISC.com6). • Enable/Disable(1)(2) remote access to target Memory Space (PCISC.com1). If enabled, set(1) the base address to each 16 MB target memory area in the PCI address space (MBAR1.badr & MBAR2.badr) and in local memory (PCITPA.tpa1 & PCITPA.tpa2). • Enable/Disable(1)(2) remote access to target I/O Space (PCISC.com0). If enabled, set(1) the base address to the 1024 bytes target I/O area in the PCI address space (IOBAR3.badr). Base address in local memory is not programmable (PCITPA.tpa3) and is mapped to the AT697 configuration registers (0x80000000 - 0x80000400). • Enable/Disable the storage in local memory of remote data received with PCI parity error (PCITSC.rfpe). If disabled, data received with a parity error will be discarded. Notes: 1. The PCI configuration registers with writable bits (PCISC, PCIBHLC, MBAR1, MBAR2, IOBAR3, PCILI, PCIRT & PCICW) can only be programmed by the processor when in Host-Bridge mode (SYSEN* = 0), while they can only be programmed by the remote host-bridge when in Satellite mode (SYSEN* = 1). The other PCI target registers (PCITSC & PCITPA) are always and only accessible by the processor. 2. At least one of target Memory Space (PCISC.com1) and target I/O Space (PCISC.com0) shall be enabled for target operation Caution: If the PCI target is to share any data with the processor while the data cache is active (CCR.dcs = 01 or 11), care shall be taken to first enable the data cache snooper (CCR.ds = 1) or flush the data cache (CCR.fd = 1) when appropriate. If the PCI target is to provide any instruction to the processor to execute while the instruction cache is active (CCR.ics = 01 or 11), care shall be taken to flush the instruction cache (CCR.fi = 1) when appropriate. Limitations The following limitations shall be considered when using the PCI target: • 61 The PCI target cannot operate within the PCI memory-mapped address range in local memory. If the programmed target local address (PCITPA) lies in the PCI AT697E 4226H–AERO–08/11 AT697E memory-mapped address range (0xA0000000 - 0xFFFFFFFF), the target controller will cancel the transfer and report an error (PCIITP.tier = 1). • Target read transactions assume the target space to be prefetchable (reading from an address does not alter the data) and target Memory Read and I/O Read commands are generally prefetched. The target controller prefetches up to 8 words into the transmit FIFO once the target read address is available. After the last required data word is transferred to the PCI interface, the FIFO is automatically flushed to discard any unused prefetched data. This behavior shall be considered if a non-prefetchable device (like a UART) is to be read through the PCI target interface. • Delayed-Read PCI Error Reporting The interface supports the following PCI write byte-enable patterns (C/BE*[3:0]): single-byte (0111, 1011, 1101 & 1110), half-word (0011 & 1100), word (0000) and ignore-data (1111, frequently used as a dummy write cycle). A data received with any other byte-enable pattern is discarded and an error is reported (PCIITP.tber = 1). As specified in the PCI standard, delayed-read functionality is implemented as follows: • When a read request was retried (because data from local memory is not available yet), the interface remains locked for any other target read (targeting different addresses). The initiator of the original read is expected to later repeat the request to the same address. • A delayed-read can however be interrupted by one or more PCI write accesses. The PCI standard requires each write command to be processed first so to prevent a system lock-up. • Meanwhile, the interface prefetches read-data from local memory into the targettransmit FIFO (TXMT). When the read request is repeated (after the interfering write, if any), the requested data is available in the FIFO and the delayed-transfer completes normally. Parity check, parity error signal (PERR*) and system error signal (SERR*) are implemented as foreseen by the PCI standard. They can be controlled in the combined PCI Command & Status register (PCISC). In addition, PCI initiator and PCI target error conditions and status information are always reported(1) in PCIITP (PCI Interrupt Pending). If also enabled in PCIITE (PCI Interrupt Enable), each error condition or status information set by the PCI core in PCIITP will trigger the PCI interrupt (ITP.ipend[14] = 1) if enabled in the interrupt controller (ITMP.imask[14] = 1). Interrupts shall then be enabled as well in the processor (PSR.et = 1 and PSR.pil < 14) so the event can be handled. For testing purpose, the error condition and status information can also be forced in PCIITP by setting the corresponding bit in PCIITF (PCI Interrupt Force). Note: 1. These bits are never cleared in hardware and shall be cleared in software (by rewriting a 1) so new events can later be registered. Status information of the various data FIFOs and state machines is available in PCIIS (PCI Initiator Status) and PCITSC (PCI Target Status). It is recommended to check these registers for idle state when configuring the PCI interface and before performing any transaction. Non-nominal values may indicate a previous transaction was not properly completed and spurious data possibly remains in the FIFOs. In such a case, the PCI initiator interface shall be reset (PCIIC = 0xFFFFFFFF) and/or the PCI target interface 62 4226H–AERO–08/11 shall be reset (PCITSC.cs = 0xF), its FIFOs flushed (PCITSC.xfe = 1 and/or PCITSC.rfe = 1) and the transaction aborted (PCITSC.xff = 1). PCI Data Rate During PCI initiator and target transfers, the interface tries PCI burst transactions whenever possible to approach the theoretical PCI data rate (~1 Gbit/s at 33 MHz). However, the exact scheduling of PCI transactions depends on so many factors (clock ratio between PCI and processor, PCI bus traffic, PCI arbitration, processor internal bus activity, wait-states on external memory & I/O peripherals...) there is no guarantee for a sustained burst. The effective data rate may even be far below the theoretical performance in some specific situations. For a reasonable performance: Disabling the PCI 63 • the processor clock frequency should be at least 3 times the PCI clock frequency • processor accesses to slow devices (IO or memory with high wait-states) should be minimized In applications where the PCI function is not used, the PCI_CLK and the PCI_RST* pin shall be tied to a low level. As a consequence, all bidirectional PCI pins including the bus request pin REQ* are tri-stated so they shall be driven to a valid high/low level with a pull-up/down to prevent them from floating. When the PCI arbiter is not used, the AREQ*[3:0] input signals shall be tied to a high level. AT697E 4226H–AERO–08/11 AT697E Debug Support Unit Caution: This chapter is for information purpose only. As its name clearly states, the Debug Support Unit is exclusively meant for debugging purpose. None of the DSU features shall ever be used in the final application where the DSU shall be turned into an inactive state (DSUEN, DSURX and DSUBRE tied to a permanent low level). Overview The AT697E includes a hardware debug support unit to aid in software debugging in the final application. The support is provided through two modules: a debug support unit (DSU) and a debug communication link (DCL). The DSU can put the processor in debug mode, allowing read/write access to all processor registers and cache memories. The DSU also contains a trace buffer which stores executed instructions or data transfers on the internal bus. The debug communications link implements a simple read/write protocol and uses standard asynchronous UART communications. Figure 36. Debug Support Unit and Communication Link AT697 processor Trace Buffer DSUEN DSUBRE DSUACT Debug I/F AT697 SPARC V8 Integer unit Debug Support Unit I-Cache D-Cache AHB interface AMBA AHB DSUTX DSURX Debug Comm. Link It is possible to debug the processor through any master on the internal bus. The PCI interface is build in as a master on the internal bus. All debug features are available from any PCI master. Debug Support Unit The debug support unit is used to control the trace buffer and the processor debug mode. The DSU master occupies a 2 MB address space on the internal bus. Through this address space, any other masters like PCI can access the processor registers and the contents of the trace buffer. The DSU control registers can be accessed at any time, while the processor registers and caches can only be accessed when the processor has entered debug mode. The trace buffer can be accessed only when tracing is disabled or completed. In debug mode, the processor pipeline is held and the processor is controlled by the DSU. Debug mode can only be entered when the debug support unit is enabled through an external pin (DSUEN). Driving the DSUEN pin high enables the debug support unit. Enter- 64 4226H–AERO–08/11 ing debug mode occurs on the following events (provided the appropriate setup was performed, see notes): • executing a breakpoint instruction (ta 1)(1) • integer unit hardware breakpoint/watchpoint hit (trap 0x0B)(2) • rising edge of the external break signal (DSUBRE) (2) • setting the break-now bit (DSUC.bn = 1)(2) • a trap that would cause the processor to enter error mode(3) • occurrence of any, or a selection of traps as defined in the DSU control register(4) • after a single-step operation(5) • DSU breakpoint hit(6) • instead of entering Error Mode(7) Notes: 1. 2. 3. 4. 5. 6. 7. Only after the break-on-S/W-breakpoint was set (DSUC.bs = 1) Only after the break-on-IU-watchpoint was set (DSUC.bw = 1) Only after the break-on-error-traps was set (DSUC.bz = 1) Only after the break-on-trap was set (DSUC.bx = 1) Only after the single-step was set (DSUC.ss = 1) Only after the break-on-DSU-breakpoint was set (DSUC.bd = 1) Only after the break-on-error was set (DSUC.be = 1) When debug mode is entered, the following actions are taken: • PC and nPC are saved in temporary registers (accessible by the debug unit) • an output signal (DSUACT) is asserted to indicate the debug state • the timer unit is (optionally) stopped to freeze the AT697E timers and watchdog The instruction that caused the processor to enter debug mode is not executed, and the processor state is kept unmodified. Execution is resumed by clearing the break-now bit (DSUC.bn = 0) or by de-asserting DSUEN. The timer unit will be re-enabled and execution will continue from the saved PC and nPC. Debug mode can also be entered after the processor has entered error mode, for instance when an application has terminated and halted the processor. The error mode can be cleared and the processor restarted at any address. DSU Breakpoint The DSU contains two breakpoint registers for matching either internal bus addresses or executed processor instructions. A breakpoint hit is typically used to freeze the trace buffer, but can also put the processor in debug mode. Freeze operation can be delayed by programming the trace buffer delay counter (DSUC.dcnt) to a non-zero value. In this case, the trace buffer delay counter value (DSUC.dcnt) is decremented for each additional trace until it reaches zero, after which the trace buffer is frozen. If the break on trace freeze bit is set (DSUC.bt = 1), the DSU forces the processor into debug mode when the trace buffer is frozen. Note: Due to pipeline delays, up to 4 additional instruction can be executed before the processor is placed in debug mode. A mask register is associated with each breakpoint, allowing breaking on a block of addresses. Only address bits with the corresponding mask bit set to ‘1’ are compared during breakpoint detection. Time Tag 65 The DSU implements a time tag counter. The time tag counter is incremented each clock as long as the processor is running. The counter is stopped when the processor enters debug mode, and restarted when execution is resumed. AT697E 4226H–AERO–08/11 AT697E The time tag counter is stored in the trace as an execution time reference. Trace Buffer The trace buffer consists in a circular buffer that stores the executed instructions and/or the internal bus data transfers. The size of the trace buffer is 512 lines of 16 bytes. The trace buffer operation is controlled through the DSU control register (DSUC) and the trace buffer control register (TBCTL). When the processor enters debug mode, tracing is suspended. The trace buffer can contain the executed instructions, the transfers on the internal bus or both (mixed-mode). The trace buffer control register (TBCTL) contains an instruction trace index counter (TBCTL.icnt) and an internal bus trace index counter (TBCTL.bcnt) that store the address of the trace buffer location that will be written on next trace. Since the buffer is circular, they actually point to the oldest entry in the buffer. The index counters are automatically incremented after each stored trace entry. The trace buffer operation is controlled as follows: Instruction trace • Tracing can be globally enabled/disabled (DSUC.te) • Instruction tracing can be enabled/disabled (TBCTL.ti) • Internal bus tracing can be enabled/disabled (TBCTL.ta) When instruction tracing is enabled (TBCTL.ti = 1), one instruction is stored per line in the trace buffer with the exception of multi-cycle instructions. Multi-cycle instructions can be entered two or three times in the trace buffer: • For store instructions, bits [95:64] correspond to the store address on the first entry and to the stored data on the second entry (and third in case of STD). Bit 126 is set logical one on the second and third entry to indicate this. • A double load (LDD) is entered twice in the trace buffer, with bits [95:64] containing the loaded data. • Multiply and divide instructions are entered twice, but only the last entry contains the result. Bit 126 is set for the second entry. • For FPU operation producing a double-precision result, the first entry contains the most-significant 32 bits of the results in bits [63:32] while the second entry contains the least-significant 32 bits in bits [63:32]. Table 15. Instruction Trace Buffer Line Allocation Bits Name Definition 127 Instruction breakpoint hit Set to ‘1’ if a DSU instruction breakpoint hit occurred. 126 Multi-cycle instruction Set to ‘1’ on the second and third instance of a multicycle instruction (LDD, ST or FPop) 125:96 Time tag counter The value of the DSU time tag counter 95:64 Load/Store parameters Instruction result, store address or store data 63:34 Program counter Program counter (2 lsb bits removed since they are always zero) 33 Instruction trap Set to ‘1’ if traced instruction trapped 32 Processor error mode Set to ‘1’ if the traced instruction caused processor error mode Opcode Instruction opcode 31:0 Note: When a trace is frozen, a watchpoint_detected trap (0x0B) is generated. 66 4226H–AERO–08/11 Bus Trace When internal bus tracing is enabled (TBCTL.ta = 1), one internal bus operation is stored per line in the trace buffer. Table 16. Internal Bus Trace Buffer Line Allocation Bits Name Definition 127 AHB breakpoint hit Set to ‘1’ if a DSU AHB breakpoint hit occurred. 126 - Unused 125:96 DSU counter The value of the DSU counter 95:92 IRL Processor interrupt request input 91:88 PIL Processor interrupt level (PSR.pil) 87:80 Trap type Processor trap type (PSR.tt) 79 Hwrite AHB HWRITE 78:77 Htrans AHB HTRANS 76:74 Hsize AHB HSIZE 73:71 Hburst AHB HBURST 70:67 Hmaster AHB HMASTER Hmastlock AHB HMASTLOCK 65:64 Hresp AHB HRESP 63:32 Load/Store data AHB HRDATA or HWDATA 31:0 Load/Store address AHB HADDR 66 Mixed Trace In mixed mode, the buffer is divided in two halves, with instructions stored in the lower half and bus transfers in the upper half. The most-significant bit of the internal bus trace index counter is then automatically kept high, while the most-significant bit of the instruction trace index counter is kept low. DSU Memory Map Table 17. DSU Map Address Register 0x90000000 DSU control register 0x90000004 Trace buffer control register 0x90000008 Time tag counter 0x90000010 AHB break address 1 0x90000014 AHB mask 1 0x90000018 AHB break address 2 0x9000001C AHB mask 2 0x90010000 - 0x9001FFFC Trace buffer 0x9001...0 Trace bits 127 - 96 0x9001...4 Trace bits 95 - 64 0x9001...8 Trace bits 63 - 32 0x9001...C Trace bits 31 - 0 67 AT697E 4226H–AERO–08/11 AT697E Address Register 0x90020000 - 0x9003FFFC IU/FPU register file 0x90080000 - 0x900FFFFC IU special purpose registers 0x90080000 Y register 0x90080004 PSR register 0x90080008 WIM register 0x9008000C TBR register 0x90080010 PC register 0x90080014 nPC register 0x90080018 FSR register 0x9008001C DSU trap register 0x90080040 ASR16 0x90080060 - 0x9008007C ASR24 - ASR31 0x90100000 - 0x9013FFFC Instruction cache tags 0x90140000 - 0x9017FFFC Instruction cache data 0x90180000 - 0x901BFFFC Data cache tags 0x901C0000 - 0x901FFFFC Data cache data The IU/FPU registers address depends on the number of register windows implemented. The registers are accessed at the following addresses (WINDOWS = total number of implemented SPARC register windows = 8, 0 ≤ window < WINDOWS): • %on: 0x90020000 + (((window × 64) + 32 + 4×n) mod (WINDOWS × 64)) • %ln: 0x90020000 + (((window × 64) + 64 + 4×n) mod (WINDOWS × 64)) • %in: 0x90020000 + (((window × 64) + 96 + 4×n) mod (WINDOWS × 64)) • %gn: 0x90020000 + (WINDOWS × 64) + 128 + 4×n • %fn: 0x90020000 + (WINDOWS × 64) + 4×n Debug Operations Instruction Breakpoints To insert instruction breakpoints, the breakpoint instruction (ta 1) should be used. This will leave the four IU hardware breakpoints free to be used as data watchpoints. Since cache snooping is only perfomed on the data cache, the instruction cache must be flushed after the insertion or removal of breakpoints. To minimize the influence on execution, it is enough to clear the corresponding instruction cache tag (which is accessible through the DSU). The DSU hardware breakpoints should only be used to freeze the trace buffer, and not for software debugging since there is a 4-cycle delay from the breakpoint hit before the processor enters the debug mode. Single Stepping When single-stepping is enabled (TBCTL.ss = 1), clearing the break-now bit (TBCTL.bn = 0) resumes processor execution for one instruction and then automatically re-enters debug mode. DSU Trap The DSU trap register (DTR) consists in a read-only register that indicates which SPARC trap type caused the processor to enter debug mode. 68 4226H–AERO–08/11 When debug mode is forced by asserting the break-now bit (TBCTL.bn = 1), a watchpoint_detected trap (0x0B) is generated. DSU Communication Link DSU communication link consists of a UART connected to the internal bus as a master. Figure 37. DSU Communication Link Block Diagram Baud-rate generator DSURX Serial port Controller 8*bitclk AMBA APB Receiver shift register Transmitter shift register AHB master interface AHB data/response DSUTX AMBA AHB A simple communication protocol is supported to transmit access parameters and data. A link command consist of a control byte, followed by a 32-bit address, followed by optional write data. If the DSU link response is enabled (DSUC.lr = 1), a response byte is sent after each read/write access. If disabled, a write access does not return any response, while a read access only returns the read data. Data Frame A DSU data frame consists in a start bit, 8 data bits and a stop bit.. Figure 38. DSU UART Data Frame Start D0 Commands D1 D2 D3 D4 D5 D6 D7 Stop Through the communication link, a read or write transfer can be generated to any address on the internal bus. A response byte is can optionally be sent when the processor goes from execution mode to debug mode. Block transfers can be performed be setting the length field to n-1, where n denotes the number of transferred words. For write accesses, the control byte and address is sent once, followed by the number of data words to be written. The address is automatically incremented after each data word. For read accesses, the control byte and address is sent once and the corresponding number of data words is returned. Figure 39. DSU Commands DSU Write Command Send Receive 11 Length -1 Resp. byte Addr[31:24] Addr[23:16] Addr[15:8] Addr[7:0] Data[31:24] Data[23:16] Data[15:8] Data[7:0] (optional) Response byte encoding DSU Read command Send Receive 69 10 Length -1 Addr[31:24] Addr[23:16] Addr[15:8] Addr[7:0] Data[31:24] Data[23:16] Data[15:8] Data[7:0] Resp. byte bit 7:3 = 000000 bit 2 = DMODE bit 1:0 = HRESP (optional) AT697E 4226H–AERO–08/11 AT697E Clock Generation The UART contains an 16-bit down-counting scaler to generate the desired baud-rate. The scaler counter is clocked by the system clock and generates a UART tick each time it underflows. The counter is reloaded with the value of the UART scaler reload register (DSUUR.rv) after each underflow. The resulting UART tick frequency is 8 times the desired baud-rate. If not programmed in software, the baud-rate is automatically discovered. This is done by searching for the shortest period between two falling edges of the received data (corresponding to two bit periods). When three identical two-bit periods has been found, the corresponding scaler reload value is latched into the reload register (DSUUR.rv), the baud-rate locked bit is set (DSUUC.bl = 1) and the UART is enabled (DSUUC.uen = 1). If the baud-rate locked bit is cleared in software (DSUUC.bl = 0), the baud-rate discovery process is restarted. The baud-rate discovery is also restarted when a break is detected on the serial line by the receiver, allowing to change the baud-rate from the external transmitter. For proper baud-rate detection, a break followed by the value 0x55 should be transmitted to the receiver. The best scaler value for manually programming the baudrate can be calculated as follows: scalerrv = baudrate = Booting from DSU sdclkfreq baudrate × 8 1 sdclkfreq 8 × ( scalerrv + 1) By asserting DSUEN and DSUBRE at reset time, the processor will directly enter debug mode without executing any instructions. The system can then be initialized from the communication link, and applications can be downloaded and debugged. Additionally, external (flash) PROMs for standalone booting can be re-programmed. 70 4226H–AERO–08/11 JTAG Interface Overview The AT697 implements a standard interface compliant with the IEEE 1149.1 JTAG specification. This interface can be used for PCB testing using the JTAG boundary-scan capability. The JTAG interface is accessed through five dedicated pins. In JTAG terminology, these pins constitute the Test Access Port (TAP). The following table summarizes the TAP pins and there function at JTAG level. Table 18. TAP Pins Pin Name Type Description TCK Test Clock Input Used to clock serial data boundary into scan latches and control sequence of the test state machine. TCK can be asynchronous with CLK TMS Test Mode select Input Primary control signal for the state machine. Synchronous with TCK. A sequence of values on TMS adjusts the current state of the TAP. TDI Test Data Input Input Serial input data to the boundary scan latches. Synchronous with TCK TDO Test Data Output Output TRST* Test Reset Input Serial output data from the boundary scan latches. Synchronous with TCK Resets the test state machine. can be asynchronous with TCK For more details, please refer to the ‘IEEE Standard Test Access Port and Boundary Scan’ specification. Any AT697E based system will contain several JTAG compatible chips. These are connected using the minimum (single TMS signal) configuration. This configuration contains three broadcast signals (TMS, TCK, and TRST*,) which are fed from the JTAG master to all JTAG slaves in parallel, and a serial path formed by a daisy-chain connection of the serial test data pins (TDI and TDO) of all slaves. The TAP supports a BYPASS instruction which places a minimum shift path (1 bit) between the chip’s TDI and TDO pins. This allows efficient access to any single chip in the daisy-chain without board-level multiplexing. Figure 40. JTAG Serial connection using 1 TMS Signal Part 1 TDI Part 3 Part 2 Part n TDI TDO TDI TDO TDI TDO TDI TDO TMS TCK TRST TMS TCK TRST TMS TCK TRST TMS TCK TRST TDO TMS TCK TRST 71 AT697E 4226H–AERO–08/11 AT697E TAP Architecture The TAP implemented in the AT697E consists in a TAP interface, a TAP controller and a number of shift registers including an instruction register (IR) and some other registers. Figure 41. AT697 TAP Architecture Boundary Scan Register TDO TDI Device ID Register Bypass Register TAP 0 1 Mux ∇ D Q EN Test Data Registers Clock DR Shift DR Update DR .... Reset TMS TCK TRST TAP Controller Instruction Decode Clock IR Shift IR Update IR ......... Instruction Register .... Select TCK Ena TDO .... Design-Specific Data TAP Controller The TAP controller is a synchronous finite state machine (FSM) which controls the sequence of operations of the JTAG test circuitry, in response to changes at the JTAG bus. (Specifically, in response to changes at the TMS input with respect to the TCK input.) The TAP controller FSM implements the state (16 states) diagram as detailed in the following diagram. The IR is a 3-bit register which allows a test instruction to be shifted into the AT697E. The instruction selects the test to be performed and the test data register to be accessed. Although any number of loops may be supported by the TAP, the finite 72 4226H–AERO–08/11 state machine in the TAP controller only distinguishes between the IR and a DR. The specific DR can be decoded from the instruction in the IR. Figure 42. TAP - State Machine 1 Test Logic Reset 0 0 Run Test/Idle 1 Select DR Scan 1 1 Select IR Scan 0 1 0 1 Capture DR[1] Capture IR 0 Shift DR Transitions between states are controlled by TMS input value. 0 0 1 Exit_1 DR 1 1 0 0 Exit_2 DR 1 0 Exit_2 IR 1 1 Update DR[1] 1 0 Pause IR 1 0 1 Exit_1 IR 0 Pause DR 0 Shift IR Update IR 0 1 0 Due to the scan cell layout, "Capture DR" and "Update DR" are states without associated action during the scanning of internal chains. TAP Instructions The following instruction are supported by the TAP. Table 19. TAP instruction set 73 Binary Value Instruction Name Data Register Scan Chain Accessed 000 EXTEST Boundary scan register Boundary scan chain 001 SAMPLE/PRELOAD Boundary scan register Boundary scan chain AT697E 4226H–AERO–08/11 AT697E Binary Value Instruction Name Data Register Scan Chain Accessed 010 BYPASS Bypass register Bypass scan chain 111 IDCODE Device id register ID register scan chain This instruction is binary coded "010" BYPASS It is used to speed up shifting at board level through components that are not to be activated. This instruction is binary coded "000" EXTEST It is used to test connections between components at board level. Components output pins are controlled by boundary scan register during Capture DR on the rising edge of TCK. This instruction is binary coded "001" SAMPLE/PRELOAD It is used to get a snapshot of the normal operation by sampling I/O states during Capture DR on the rising edge of TCK. It allows also to preload a value on the output latches during Update DR on falling edge of TCK. It do not modify system behaviour. This instruction is binary coded "111" IDCODE Value of the IDCODE is loaded during Capture DR. TAP Data Registers Bypass Register Bypass register containing a single shift register stage is connected between TDI and TDO. Figure 43. Bypass Register Cell from TDI & Shift DR D to TDO Clock DR Device ID register Device ID register is a read only 32-bit register. It is connected between TDI and TDO. Figure 44. Device ID Register 31 28 27 12 11 1 0 Vers. Part ID Manufacturer’s ID Const. 0001 1011 . 0110 . 0100 . 0101 000 . 0101 . 1000 1 ID. register value: 0x 1b64 50b1 Field Definitions: [31:28]: Vers - Version number - 0x1 [27:12]: Part ID - Represent part number as assigned by Vendor- 0x b645 [11:01]: Manufacturer’s ID - Represent manufacturer’s ID as per JEDEC - 0x 058 [0]: Const - Constant tied to logic ’1’. 74 4226H–AERO–08/11 ID. register value: 0x 1b64 50b1 Field Definitions: Boundary Scan Register • [31:28]: Vers - Version number - 0x1 • [27:12]: Part ID - Represent part number as assigned by Vendor- 0x b645 • [11:01]: Manufacturer’s ID - Represent manufacturer’s ID as per JEDEC - 0x 058 • [0]: Const - Constant tied to logic ’1’. A single scan chain consisting of all of the boundary scan cells (input, output and in/out cells). The purpose of the boundary scan is the support of scan-based board testing. The Boundary Scan register is connected between TDI and TDO. Note: 75 To use the boundary scan feature, the PLL shall be bypassed (BYPASS signal asserted). AT697E 4226H–AERO–08/11 AT697E Clock System Overview The AT697E operates two clocks domains: the CPU clock and the PCI clock. The following figure presents the clock system of the processor and its distribution. Figure 45. Clock Distribution SDCLK Timers Memory Controller GPI PCI Core IU/FPU CPU clock Interrupt Controller PCI clock Uarts BYPASS Uart Control Reg. UACn PLL LFT LOCK Alternate UART clock Note: CLK The PLL is powered-down when the BYPASS signal is asserted. PCI Clock The PCI clock is dedicated to the PCI Interface. It is used in particular by the PCI wrapper that shares its activity between the two clock domains. External Clock The PCI interface and its associated wrapper can only be driven from an external clock. The PCI clock shall be connected to the PCI_CLK pin of the PCI interface. This input shall be driven at a frequency in the range of 0 up to 33 MHz. CPU Clock The CPU clock is routed to the parts of the system concerned with operation of the SPARC core. Examples of such modules are the CPU core itself, the register files... The CPU clock is also used by the majority of the I/O modules like Timers, Memory controller, Interrupt Controller, with the exception of the PCI Interface. The CPU clock is driven either directly by an external oscillator or by the internal PLL. External Clock To drive the device directly from an external clock source, the CLK input shall be driven by an external clock generator while the BYPASS pin is driven high. In that way, the CPU clock is the direct representation of the clock applied to CLK. When the external CPU clock source is selected, the clock input can be driven at a frequency in the range of 0 MHz up to 100 MHz. 76 4226H–AERO–08/11 PLL The CPU clock can be issued from the internal PLL. Overview The PLL contains a phase/frequency detector, charge pump, voltage control oscillator, lock detector and divider. Figure 46. PLL Block Diagram LFT BYPASS en en up CLK Phase/Frequency Detector lft CLKPLL div dn ck ckr_int div_int up Charge Pump dn VCO ck en div Lock detector ck Divider by 4 LOCK The PLL implemented is configured in hardware to provide an internal clock frequency of four times the frequency of the input clock. PLL control The PLL control is performed in hardware through dedicated pins. The following table presents the assignement and functions of the PLL control pins. Table 20. PLL Ports Description Pin name LFT External passive loop filter connection point LOCK The PLL is locked and delivers the expected internal clock CLK External clock input BYPASS 77 Function Bypass the internal PLL and directly drive the internal clock from CLK AT697E 4226H–AERO–08/11 AT697E PLL filter To ensure the functionality of the PLL, an external low-pass filter shall be connected to the filter pin of the PLL (LFT). Figure 47. Low-Pass Filter Connection LFT R1 C2 C1 The optimal value for this filter are the following: Operation • R1 = 100 ohms +/- 10% • C1 = 100nF +/- 10% • C2 = 10nF +/- 10% To drive the device from the internal PLL, the CLK input shall be driven by an external clock generator while the BYPASS pin is driven low. That way, the CPU clock frequency is four times the frequency of the clock applied to CLK. When the PLL is enabled, the CLK clock input shall be driven at a frequency in the range of 20 MHz up to 25 MHz. Fault-Tolerance & Clock To protect against SEU errors (Single Event Upset), each on-chip register is implemented using triple modular redundancy (TMR). Moreover, an independent clock tree is used for each of the three registers making up one TMR module. This feature protects against SET errors (Single Event Transient) in the clock tree, to the expense of increased routing. The CPU clock and the PCI clock are built as three-clock trees. To prevent erroneous operations from single event upset (SEU) errors and single event upset (SEU), the AT697E is based on full triple modular redundancy (TMR) architecture. Figure 48. TMR structure Such architecture is based on a fully triplicated clock distribution (CLK1, CLK2 and CLK3). In that way, each one of the PCI clock and the cpu clock are build as three-clock trees. 78 4226H–AERO–08/11 Skew To prevent the processor from corruption by SET errors (Single Event Transient), skew can be programmed on the clock trees. The two dedicated pins SKEW[1:0] are used to control the skew on the clock trees. Here is a short description of the skew implementation: Figure 49. CPU clock tree overview SKEW[1:0] BYPASS CLK PLL cpu clock 00 01 CLK1 tree 10 SKEW[1:0] 00 D2 = D1 D1 01 D2 10 CLK2 tree SKEW[1:0] 00 D4 = D3 = 2 * D1 D3 01 D4 10 CLK3 tree Three configuration are available: • natural skew (SKEW[1:0] = 00), this is the standard clock-tree as routed internally • medium skew (SKEW[1:0] = 01), the 3 clock-trees are shifted away in time one from each other • maximum skew (SKEW[1:0] = 10), the 3 clock-trees are further shifted away in time Table 21. SKEW Assignements SKEW[1:0] 79 Comments CLK1 -> CLK2 CLK1 -> CLK3 00 natural natural natural skew 01 D1 D3 medium skew 10 D1 + D2 D3 + D4 maximum skew 11 Note: DELAY reserved (shall not be used) Medium skew and maximum skew configurations improve SET protection but lead to reduced operating performance: maximum clock frequency is reduced and timings are slower than when configured for natural skew (see "Electrical Characteristics"). AT697E 4226H–AERO–08/11 AT697E Packages MCGA-349 Mechanical Outlines Note: Pin Mapping Table 22. AT697E MCGA-349 Pinout (1/3) A B 1 2 The columns (SCI) are being soldered to the main body (LGA) using an eutectic made of Sn63Pb37. VSS18 C D E F G VDD18 VSS18 PIO[6] PIO[1] RAMS*[1] VDD18 PIO[0] N.C. PIO[4] RAMS*[2] 80 4226H–AERO–08/11 A B C D E F G 3 VDD18 VDD18 VSS18 VCC33 PIO[2] N.C. RAMOE*[3] 4 VSS18 VDD18 PIO[9] N.C. PIO[5] PIO[3] RAMS*[4] 5 N.C. N.C. PIO[11] N.C. N.C. VSS33 RAMOE*[1] 6 PIO[13] PIO[10] VCC33 reserved CB[0] N.C. VSS33 7 CB[1] VSS33 N.C. PIO[15] VSS33 PIO[12] PIO[7] 8 CB[6] CB[4] D[2] VCC33 CB[7] CB[2] PIO[8] 9 D[3] N.C. D[1] VSS33 D[6] VCC33 CB[3] 10 D[8] D[5] VCC33 VSS33 reserved D[10] D[4] 11 D[12] VSS33 VCC33 D[13] D[7] D[15] N.C. 12 D[17] D[18] D[11] VSS33 D[14] D[16] D[19] 13 D[21] D[23] VCC33 VCC33 VSS33 VSS33 A[1] 14 D[25] N.C. D[22] D[27] N.C. VSS33 A[3] 15 D[30] N.C. D[26] D[29] N.C. N.C. A[12] 16 VSS18 VSS18 D[28] VCC33 N.C. N.C. A[6] 17 VDD18 VDD18 VSS18 D[31] N.C. A[7] VSS33 VSS18 VDD18 VCC33 A[0] A[4] A[8] VDD18 VSS18 A[2] VSS33 A[9] 18 19 Table 23. AT697E MCGA-349 Pinout (2/3) 81 H j k l m n p 1 RAMOE*[0] VSS33 READ DSUACT BEXC* VCC33 SDWE* 2 RAMOE*[2] ROMS*[1] TCK DSURX SDCLK VSS33 PCI_CLK 3 VCC33 ROMS*[0] TDI DSUTX DSUBRE SDDQM[1] VSS33 4 RAMOE*[4] RWE*[0] TDO DSUEN SDDQM[2] N.C. SDCS*[0] 5 RWE*[1] WRITE* VSS33 TMS N.C. SDDQM[3] SDCAS* 6 RWE*[3] RWE*[2] IOS* VSS33 VSS33 GNT* A/D[24] 7 RAMS*[0] N.C. TRST* SDDQM[0] VSS33 VCC33 A/D[30] 8 RAMS*[3] VCC33 OE* BRDY* VCC33 A/D[21] A/D[18] 9 CB[5] PIO[14] VSS33 SDRAS* A/D[22] A/D[16] A/D[17] 10 D[9] D[0] N.C. A/D[14] VSS33 PERR* IRDY* 11 D[20] A[5] A[16] N.C. A/D[12] A/D[9] A/D[15] 12 D[24] A[14] A[26] VDD_PLL AGNT*[3] A/D[1] A/D[8] 13 N.C. VCC33 A[21] N.C. N.C. VSS33 A/D[5] 14 A[10] VCC33 A[27] LOCK SKEW[1] A/D[0] AGNT*[1] 15 N.C. VSS33 VCC33 A[24] reserved BYPASS CLK 16 A[11] VSS33 A[23] RESET* LFT AREQ*[2] VSS33 17 A[19] A[17] VSS33 VCC33 WDOG* N.C. VSS33 AT697E 4226H–AERO–08/11 AT697E H j k l m n p 18 A[13] A[18] A[22] VSS33 VSS_PLL AREQ*[3] N.C. 19 A[15] A[20] A[25] ERROR* SKEW[0] VCC33 AREQ*[1] v w Table 24. AT697E MCGA-349 Pinout (3/3) r t u 1 REQ* VSS18 VDD18 2 N.C. SDCS*[1] VDD18 VSS18 3 PCI_RST* A/D[31] VSS18 VDD18 VDD18 4 N.C. A/D[29] VCC33 VSS18 VSS18 5 N.C. N.C. A/D[26] N.C. A/D[28] 6 N.C. A/D[27] IDSEL VSS33 A/D[25] 7 SYSEN* VSS33 VCC33 C/BE*[3] A/D[23] 8 VSS33 VSS33 FRAME* A/D[20] A/D[19] 9 TRDY* VCC33 N.C. C/BE*[2] VSS33 10 PCI_LOCK* DEVSEL* STOP* VCC33 VCC33 11 VSS33 VCC33 VSS33 C/BE*[1] SERR* 12 N.C. A/D[11] PAR VSS33 A/D[13] 13 VCC33 A/D[7] A/D[10] VSS33 VSS33 14 VCC33 VSS33 C/BE*[0] A/D[4] A/D[6] 15 N.C. A/D[2] VCC33 N.C. A/D[3] 16 N.C. VCC33 N.C. VDD18 VSS18 17 VCC33 AGNT*[0] VSS18 VDD18 VDD18 18 N.C. AGNT*[2] VDD18 VSS18 19 AREQ*[0] VSS18 VDD18 Notes: 1. reserved pins shall not be driven to any voltage 2. N.C. refers to unconnected pins 82 4226H–AERO–08/11 MQFP-256 Mechanical Outlines Pin Mapping Table 25. AT697E MQFP-256 Pinout pin number pin name pin number pin name pin number pin name pin number pin name 1 VCC33 65 PIO[5] 129 D[30] 193 A/D[0] 2 REQ* 66 PIO[6] 130 VCC33 194 VCC33 3 GNT* 67 VCC33 131 D[31] 195 A/D[1] 4 PCI_CLK 68 PIO[7] 132 N.C. 196 A/D[2] 5 PCI_RST* 69 PIO[8] 133 A[0] 197 A/D[3] 6 SDCS*[0] 70 PIO[9] 134 A[1] 198 A/D[4] 83 AT697E 4226H–AERO–08/11 AT697E pin number pin name pin number pin name pin number pin name pin number pin name 7 VSS 71 VSS 135 VSS 199 VSS 8 VDD18 72 VDD18 136 VDD18 200 VDD18 9 SDCS*[1] 73 PIO[10] 137 A[2] 201 VCC33 10 SDWE* 74 PIO[11] 138 A[3] 202 A/D[5] 11 SDRAS* 75 reserved 139 A[4] 203 A/D[6] 12 VSS 76 PIO[12] 140 VCC33 204 A/D[7] 13 VSS 77 PIO[13] 141 A[5] 205 C/BE*[0] 14 SDCAS* 78 PIO[14] 142 A[6] 206 VSS 15 VCC33 79 PIO[15] 143 A[7] 207 VCC33 16 SDDQM[0] 80 VCC33 144 A[8] 208 A/D[8] 17 SDDQM[1] 81 CB[0] 145 A[9] 209 A/D[9] 18 SDDQM[2] 82 CB[1] 146 A[10] 210 A/D[10] 19 SDDQM[3] 83 CB[2] 147 VCC33 211 A/D[11] 20 SDCLK 84 CB[3] 148 A[11] 212 VCC33 21 BRDY* 85 VCC33 149 A[12] 213 A/D[12] 22 BEXC* 86 CB[4] 150 A[13] 214 A/D[13] 23 VSS 87 CB[5] 151 A[14] 215 A/D[14] 24 VSS 88 CB[6] 152 A[15] 216 A/D[15] 25 DSUEN 89 CB[7] 153 A[16] 217 VCC33 26 DSUTX 90 D[0] 154 VCC33 218 C/BE*[1] 27 DSURX 91 VCC33 155 A[17] 219 PAR 28 DSUBRE 92 D[1] 156 A[18] 220 SERR* 29 DSUACT 93 D[2] 157 A[19] 221 PERR* 30 TRST* 94 D[3] 158 A[20] 222 VCC33 31 TCK 95 D[4] 159 A[21] 223 PCI_LOCK* 32 TMS 96 D[5] 160 A[22] 224 STOP* 33 VSS 97 D[6] 161 VSS 225 DEVSEL* 34 TDI 98 reserved 162 VCC33 226 TRDY* 35 TDO 99 VCC33 163 A[23] 227 VCC33 36 WRITE* 100 D[7] 164 A[24] 228 IRDY* 37 READ 101 D[8] 165 A[25] 229 FRAME* 38 OE* 102 D[9] 166 A[26] 230 VSS 39 IOS* 103 D[10] 167 A[27] 231 C/BE*[2] 40 VCC33 104 D[11] 168 WDOG* 232 A/D[16] 41 ROMS*[0] 105 D[12] 169 ERROR* 233 VCC33 42 ROMS*[1] 106 VCC33 170 VCC33 234 A/D[17] 43 RWE*[0] 107 D[13] 171 RESET* 235 A/D[18] 84 4226H–AERO–08/11 pin number pin name pin number pin name pin number pin name pin number pin name 44 RWE*[1] 108 D[14] 172 reserved 236 A/D[19] 45 RWE*[2] 109 D[15] 173 LOCK 237 SYSEN* 46 RWE*[3] 110 D[16] 174 SKEW[1] 238 A/D[20] 47 RAMOE*[0] 111 D[17] 175 SKEW[0] 239 VCC33 48 RAMOE*[1] 112 VSS 176 BYPASS 240 A/D[21] 49 RAMOE*[2] 113 D[18] 177 VSS_PLL 241 A/D[22] 50 RAMOE*[3] 114 VCC33 178 LFT 242 A/D[23] 51 RAMOE*[4] 115 D[19] 179 VDD_PLL 243 IDSEL 52 RAMS*[0] 116 D[20] 180 CLK 244 C/BE*[3] 53 VCC33 117 D[21] 181 VCC33 245 VCC33 54 RAMS*[1] 118 D[22] 182 AREQ*[3] 246 A/D[24] 55 RAMS*[2] 119 D[23] 183 AGNT*[3] 247 A/D[25] 56 RAMS*[3] 120 D[24] 184 AREQ*[2] 248 A/D[26] 57 VSS 121 VSS 185 VSS 249 VSS 58 VDD18 122 VDD18 186 VDD18 250 VDD18 59 RAMS*[4] 123 VCC33 187 AGNT*[2] 251 A/D[27] 60 PIO[0] 124 D[25] 188 AREQ*[1] 252 VCC33 61 PIO[1] 125 D[26] 189 VCC33 253 A/D[28] 62 PIO[2] 126 D[27] 190 AGNT*[1] 254 A/D[29] 63 PIO[3] 127 D[28] 191 AREQ*[0] 255 A/D[30] 64 PIO[4] 128 D[29] 192 AGNT*[0] 256 A/D[31] Notes: 85 1. reserved pins shall not be driven to any voltage 2. N.C. refers to unconnected pins 3. VSS is a common ground pin to VSS33 and VSS18 AT697E 4226H–AERO–08/11 AT697E Register Description Table 26. Register Legend Address = 0x01010101 Bit Number 31 30 29 28 27 26 25 24 23 ... field name access type default value after reset ... ... ... 9 8 7 6 5 4 3 2 1 0 field reserved r = read-only w = write-only r/w = read & write x = undefined or non affected by reset p = depends on the value of one or more external pins 0 Notes: 100 1 bit – All registers are equally accessible in user and supervisor mode. – Reserved fields usually are read-only (unless specified otherwise) and writing them usually has no side effects (unless specified otherwise) but should better be done with their default value for compatibility with possible use of the field in future revisions of the product. – Writing to read-only fields or registers has no effect. 86 4226H–AERO–08/11 Integer Unit Registers Table 27. Processor State Register - PSR 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 impl ver r r 0000 0000 n z v c r/w x x x x reserved ec ef pil r r/w r/w r/w 0000 00 x x xxxx 8 7 6 5 s ps et 4 r/w 1 x 0 3 2 1 0 cwp r r/w 00 xxx Bit Number Mnemonic 31..28 impl Implementation Implementation or class of implementations of the architecture. 27..24 ver Version Identify one or more particular implementations or is a readable and writable state field whose properties are implementation-dependent. 23 n Negative Indicates whether the 32-bit 2’s complement ALU result was negative for the last instruction that modified the icc field (1 = negative, 0 = not negative). 22 z Zero Indicates whether the 32-bit ALU result was zero for the last instruction that modified the icc field (1 = zero, 0 = nonzero). v Overflow Indicates whether the ALU result was within the range of (was representable in) 32bit 2’s complement notation for the last instruction that modified the icc field (1 = overflow, 0 = no overflow) c Carry Indicates whether a 2’s complement carry out (or borrow) occurred for the last instruction that modified the icc field. Carry is set on addition if there is a carry out of bit 31. Carry is set on subtraction if there is borrow into bit 31 (1 = carry/borrow, 0 = no carry/borrow). 13 ec Enable Coprocessor Determines whether the implementation-dependent coprocessor is enabled (1 = enabled, 0 = disabled). If disabled, a coprocessor instruction will trap. Although this bit is marked as read/write, this implementation has no coprocessor and will always behave as the coprocessor is permanently disabled. 12 ef Enable Floating-Point Determines whether the FPU is enabled (1 = enabled, 0 = disabled). If disabled, a floating-point instruction will trap. 11..8 pil Processor Interrupt Level Identify the interrupt level above which the processor will accept an interrupt. 7 s Supervisor Determines whether the processor is in supervisor or user mode (1 = supervisor mode, 0 = user mode). 6 ps Previous Supervisor Contains the value of the s bit at the time of the most recent trap. 21 20 87 icc 9 Description AT697E 4226H–AERO–08/11 AT697E Bit Number Mnemonic 5 Description Enable Traps Determines whether traps are enabled (1 = traps enabled, 0 = traps disabled). A trap automatically resets it to 0. When 0, an interrupt request is ignored and an exception trap causes the IU to halt execution and enter error-mode. et 4..0 Current Window Pointer A counter that identifies the current window into the r registers. The hardware decrements cwp on traps & SAVE instructions and increments it on RESTORE & RETT instructions (modulo 8). cwp Notes: – This TMR-protected register can be safely read after power-up without prior initialization. However, bits unaffected by the reset operation will have an undetermined value. – This register is read and written using the priviledged RDPSR and WRPSR instructions. Table 28. Window Invalid Mask Register - WIM 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 0 0 0 0 0 Bit Number 0<n<7 0 0 0 0 0 0 8 7 6 5 4 3 2 1 0 reserved w7 w6 w5 w4 w3 w2 w1 w0 r r/w 0 Mnemonic 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x x Description Window n Invalid Mask Determines whether a window overflow or underflow trap is to be generated on an invalid-marked window by a SAVE, RESTORE, or RETT instruction (1 = invalid, 0 = valid). wn Notes: 9 – This TMR-protected register can be safely read after power-up without prior initialization. However, bits unaffected by the reset operation will have an undetermined value. – This register is read and written using the priviledged RDWIM and WRWIM instructions. 88 4226H–AERO–08/11 Table 29. Multiply/Divide Register - Y 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 y r/w xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 31..0 Description Y Register Contains the most significant word of the double-precision product of an integer multiplication, as a result of either an integer multiply instruction (SMUL, SMULcc, UMUL, UMULcc), or of a routine that uses the integer multiply step instruction (MULScc). Also holds the most significant word of the double-precision dividend for an integer divide instruction (SDIV, SDIVcc, UDIV, UDIVcc). y Notes: – This TMR-protected register can be safely read after power-up without prior initialization. However, bits unaffected by the reset operation will have an undertermined value. – This register is read and written using the non-priviledged RDY and WRY instructions. Table 30. Trap Base Register - TBR 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 tba tt reserved r/w r r xxxx xxxx xxxx xxxx xxxx xxxx xxxx 0000 Bit Number Mnemonic 31..12 tba 11..4 tt Notes: 0 Description Trap Base Address The most-significant 20 bits of the trap table address. Trap Type Written by the hardware when a trap occurs (except for an external reset request), and retains its value until the next trap. It provides an offset into the trap table. – This TMR-protected register can be safely read after power-up without prior initialization. However, bits unaffected by the reset operation will have an undetermined value. – This register is read and written using the priviledged RDTBR and WRTBR instructions. Table 31. Program Counter - PC 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 pc 0x00000000 89 AT697E 4226H–AERO–08/11 AT697E Bit Number 31..0 Mnemonic Description Program Counter Contains the address of the instruction currently being executed by the IU. When a trap occurs, it is saved into a local register (l1). When returning from the trap, the local register is copied back. pc Table 32. Next Program Counters - nPC 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 npc 0x00000004 Bit Number 31..0 Mnemonic Description Next Program Counter Holds the address of the next instruction to be executed by the IU (assuming a trap does not occur). When a trap occurs, it is saved into a local register (l2). When returning from the trap, the local register is copied back. npc Table 33. Watch Point Address Registers - ASR24, ASR26, ASR28 and ASR30 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 Bit Number Mnemonic 31..2 waddr 0 if 1 0 waddr reserved Address = %asr24, %asr26, %asr28, %asr30 if r/w r r/w xxxx xxxx xxxx xxxx xxxx xxxx xxxx xx 0 0 Notes: 9 8 7 6 5 4 3 2 Description Watchpoint Address Defines the address range to be watched. Hit on Instruction Fetch If set, enables hit generation on instruction fetch. – These TMR-protected registers can be safely read after power-up without prior initialization. However, bits unaffected by the reset operation will have an undetermined value. – These non-priviledged registers are read and written using the RDASR and WRASR instructions. 90 4226H–AERO–08/11 Table 34. Watch Point Mask Registers - ASR25, ASR27, ASR29 and ASR31 Address = %asr25, %asr27, %asr29, %asr31 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 91 0 wmask dl ds r/w r/w r/w xxxx xxxx xxxx xxxx xxxx xxxx xxxx xx Bit Number Mnemonic 31..2 wmask 1 dl Hit on Data Load If set, enables hit generation on data load. 0 ds Hit on Data Store If set, enables hit generation on data store. Notes: 1 0 0 Description Watchpoint Address Mask Defines which bits are to be compared to the matching watchpoint address (0 = comparison disabled, 1 = comparison enabled). – These TMR-protected registers can be safely read after power-up without prior initialization. However, bits unaffected by the reset operation will have an undetermined value. – These non-priviledged registers are read and written using the RDASR and WRASR instructions. AT697E 4226H–AERO–08/11 AT697E Table 35. Register File Protection Control Register - ASR16 Address = %asr16 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 di reserved cnt tcb te r r/w r/w r/w r/w xxxx xxxx xxxx xxxx xxxx xxx x xxxx xx 0 0 Bit Number Mnemonic 11..9 cnt Error Counter. Incremented each time a register correction is performed (but saturates at 111). 8..2 tcb Test Checkbits If the test mode is enabled, the destination register checksum is XORed with this field before being written to the register file. 1 te Test Enable If set, errors can be inserted in the register file to test the EDAC protection function. 0 di Disable Checking If set, disables the register-file checking function. Notes: Description – This TMR-protected register can be safely read after power-up without prior initialization. However, bits unaffected by the reset operation will have an undetermined value. – This non-priviledged register is read and written using the RDASR and WRASR instructions. Table 36. Working Registers - rn (0 < n < 31) 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 rn (caution) r/w xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Caution: These EDAC-protected registers will come uninitialized after power-up so each register in each window shall be first initialized before it can be safely read. Reading an uninitialized register may trigger a single-bit or a double-bit error in an undeterministic manner. 92 4226H–AERO–08/11 Table 37. Window Registers Type in local out global 93 Name Definition Window Absolute i7 r31 return address i6 r30 frame pointer i5 r29 incoming parameter register 5 i4 r28 incoming parameter register 4 i3 r27 incoming parameter register 3 i2 r26 incoming parameter register 2 i1 r25 incoming parameter register 1 i0 r24 incoming parameter register 0 l7 r23 local register 7 l6 r22 local register 6 l5 r21 local register 5 l4 r20 local register 4 l3 r19 local register 3 l2 r18 nPC (for RETT) l1 r17 PC (for RETT) l0 r16 local register 0 o7 r15 temp o6 r14 stack pointer o5 r13 outgoing parameter register 5 o4 r12 outgoing parameter register 4 o3 r10 outgoing parameter register 3 o2 r11 outgoing parameter register 2 o1 r9 outgoing parameter register 1 o0 r8 outgoing parameter register 0 g7 r7 global register 7 g6 r6 global register 6 g5 r5 global register 5 g4 r4 global register 4 g3 r3 global register 3 g2 r2 global register 2 g1 r1 global register 1 g0 r0 global register 0 - always 0x00000000 AT697E 4226H–AERO–08/11 AT697E Floating-Point Unit Registers x x x Bit Number Mnemonic 31..30 rd 6 5 4 3 r 00 000 xxx 00 xx ofc r nvc r nxa r r/w x x x 1 0 x x cexc dza r 2 ufc 7 ufa fcc ofa 0 x 8 nxc x ftt nva r r/w 9 aexc ver reserved ns reserved nxm 00 dzm xx ufm r ofm r/w tem nvm rd reserved 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 dzc Table 38. FPU Status Register - FSR r/w x x x x x Description Rounding Direction Selects the rounding direction for floating-point results according to ANSI/IEEE Standard 754-1985 (00 = to nearest, 01 = to zero, 10 = to +∞, 11 = to -∞). Trap Enable Mask Enable bits for each of the five floating-point exceptions that can be indicated in the current_exception field (cexc). If a floating-point operate instruction generates one or more exceptions and the corresponding mask bit is 1, an fp_exception trap is caused. A value of 0 prevents that exception type from generating a trap. 27..23 tem 22 ns Non Standard Floating-Point Not implemented, always reads as 0. 19..17 ver FPU Version Number 16..14 ftt Floating-Point Trap Type After a floating-point exception occurs, this field encodes the type of floating-point exception until an STFSR or another FPop is executed. 11..10 fcc Floating-Point Condition Codes Updated by the floating-point compare instructions (FCMP and FCMPE). The floatingpoint conditional branch instruction (FBfcc) bases its control transfer on this field. aexc Accrued Floating-Point Exceptions Accumulate IEEE-754 floating-point exceptions while fp_exception traps are disabled using the tem field. After an FPop completes, the tem and cexc fields are logically ANDed together. If the result is nonzero, an fp_exception trap is generated; otherwise, the new cexc field is ORed into this field. Thus, while traps are masked, exceptions are accumulated in this field. cexc Current Floating-Point Exceptions Indicate that one or more IEEE-754 floating-point exceptions were generated by the most recently executed FPop instruction. The absence of an exception causes the corresponding bit to be cleared. 9..5 4..0 Notes: – This TMR-protected register can be safely read after power-up without prior initialization. However, bits unaffected by the reset operation will have an undetermined value. – This register is read and written using the non-priviledged LDFSR and STFSR instructions. 94 4226H–AERO–08/11 Floating-Point Trap Types - ftt Table 39. Trap Type Definition ftt Name Description 0 none No trap. 1 IEEE_754_exception 2 reserved reserved 3 reserved reserved An IEEE_754_exception floating-point trap type indicates that a floating-point exception occurred that conforms to the ANSI/IEEE Standard 754-1985. The exception type is encoded in the cexc field. A sequence_error indicates one of three abnormal error conditions in the FPU, all caused by erroneous supervisor software: 4 • An attempt was made to execute a floating-point instruction when the FPU was not able to accept one. This type of sequence_error arises from a logic error in supervisor software that has caused a previous floating-point trap to be incompletely serviced (for example, the floating-point queue was not emptied after a previous floating-point exception). • An attempt was made to execute a STDFQ instruction when the floating-point deferred-trap queue (FQ) was empty, that is, when FSR.qne = 0. (Note that generation of sequence_error is recommended, but not required in this case) sequence_error 5 reserved reserved 6 reserved reserved 7 reserved reserved Floating-Point Condition Code - fcc Table 40. fcc Field Definition fcc Description 0 frs1 = frs2 1 frs1 < frs2 2 frs1 > frs2 3 frs1 ? frs2 Indicates an unordered relation, which is true if either frs1 or frs2 is a signaling NaN or quiet NaN Note: Floating-Point Exception Fields - aexc / cexc frs1 and frs2 correspond to the single, double, or quad values in the f registers specified by an instruction’s rs1 and rs2 fields. Note that fcc is unchanged if FCMP or FCMPE generate an IEEE_754_exception trap. The accrued and current exception fields and the trap enable mask assume the following definitions of the floating-point exception conditions. Table 41. Exception Fields Aexc Mnemonic Cexc Mnemonic nva 95 nvc Name Description Invalid An operand is improper for the operation to be performed (1 = invalid operand, 0 = valid operand(s)). Examples: 0 ÷ 0, ∞ - ∞ are invalid. AT697E 4226H–AERO–08/11 AT697E Aexc Mnemonic Cexc Mnemonic ofa ofc Name Description Overflow The rounded result would be larger in magnitude than the largest normalized number in the specified format (1 = overflow, 0 = no overflow). The rounded result is inexact and would be smaller in magnitude than the smallest normalized number in the indicated format (1 = underflow, 0 = no underflow). Underflow is never indicated when the correct unrounded result is zero. if ufm = 0: The ufc and ufa bits will be set if the correct unrounded result of an operation is less in magnitude than the smallest normalized number and the correctly-rounded result is inexact. These bits will be set if the correct unrounded result is less than the smallest normalized number, but the correct rounded result is the smallest normalized number. nxc and nxa are always set as well. if ufm = 1: An IEEE_754_exception trap will occur if the correct unrounded result of an operation would be smaller than the smallest normalized number. A trap will occur if the correct unrounded result would be smaller than the smallest normalized number, but the correct rounded result would be the smallest normalized number. ufa ufc Underflow dza dzc Div_by_zero nxa nxc Inexact X÷0, where X is subnormal or normalized. Note that 0 ÷ 0 does not set the dzc bit. 1 = division-by-zero, 0 = no division-by-zero. The rounded result of an operation differs from the infinitely precise correct result. 1 = inexact result, 0 = exact result. Table 42. Floating-point Registers - fn (0 < n < 31) 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 fn (caution) r/w xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Caution: These EDAC-protected registers come uninitialized after power-up so each register shall be first initialized before it can be safely read. Reading an uninitialized register may trigger a single-bit or a double-bit error in an undeterministic manner. 96 4226H–AERO–08/11 Memory Interface Registers Table 43. Memory Configuration Register 1 - MCFG1 Address = 0x80000000 reserved prwdh prwws prrws 1 prwen 2 reserved 3 prbsz 4 r/w r/w r r/w r/w r r/w r r/w r r/w r/w r/w 0 xxxx 0 0 0000 00 0 0 pp 1111 1111 0 0 0 Bit Number Mnemonic 28..27 iowdh I/O bus width Defines the bus width of the I/O area (00 = 8, 01 = 16, 10 = 32). 26 iobrdy IO area bus ready enable If set, an IO access will be extended until BRDY* is asserted 25 bexc Bus error enable for RAM, PROM and IO access If set, the assertion of the BEXC* will generate an error response on the internal bus and causes a trap (0x01, 0x09, 0x2B) depending on the access type. 23..20 iows I/O waitstates Defines the number of waitstates during I/O accesses (0000 = 0, 0001 = 1, 0010 = 2,..., 1111 = 15). ioen I/O area enable 0 = read and write access to I/O area is disabled 1 = read and write access to I/O area is enabled. 17:14 prbsz PROM bank size Used in 8 bit PROM mode to locate the start address of the EDAC area containing the EDAC checkbits.(note) Defines the size of PROM bank (0000 = 8 KB, 0001 = 16 KB... 1111 = 256 MB). During reset, the PROM bank size is set to the minimum to allow booting. 11 prwen PROM write enable If set, enables write cycles to the PROM area. prwdh PROM width Defines the bus width of the PROM area (00 = 8,01 = 16,1X = 32). During reset, the PROM width is set with the value read on PIO[1:0]. prwws PROM write waitstates Defines the number of waitstates during PROM write cycles (0000 = 0, 0001 = 2,... 1111 = 30). During reset, the PROM write waitstates is set to the maximum to allow booting. prrws PROM read waitstates Defines the number of waitstates during PROM read cycles (0000 = 0, 0001 = 2,... 1111 = 30). During reset, the PROM read waitstates is set to the maximum to allow booting. 19 9..8 7..4 3..0 97 5 reserved xx 6 ioen 000 7 iows iobrdy r/w 8 reserved iowdh r 9 bexc reserved 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 Description AT697E 4226H–AERO–08/11 AT697E Note: In 8-bit PROM mode, the last 25% of each PROM bank are used to store the EDAC checksums when EDAC is enabled and cannot be used to store instructions or data. Table 44. Memory Configuration Register 2 - MCFG2 111 1 000 10 00 0000 0 1 r/w r/w r/w r xxxx 0 0 0 Bit Number Mnemonic 31 sdrref 30 trp SDRAM tRP timing tRP is equal to 2 or 3 system clocks (0 or 1). 29..27 trfc SDRAM tRFC timing tRFC is equal to 3 + field-value system clocks. 26 25..23 22..21 3 2 1 0 ramrws r 4 ramwws r/w 5 ramwdh r/w 6 ramrmw sdrcmd r/w 7 reserved sdrcls r/w 8 rambs sdrbs r/w 9 si sdrcas r/w r/w se trfc reserved sdrref trp 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 rambrdy Address = 0x80000004 r/w r/w r/w r/w r/w xx xx xx x x Description SDRAM refresh If set, the SDRAM refresh is enabled. sdrcas SDRAM CAS delay Selects 2 or 3 cycle CAS delay (0 or 1). When changed, a LOAD-COMMANDREGISTER command must be issued at the same time. Also sets RAS/CAS delay (tRCD). sdrbs SDRAM banks size Defines the banks size for SDRAM chip selects: 000 = 4 MB, 001 = 8 MB, 010 = 16 MB .... 111 = 512 MB. sdrcls SDRAM column size 00 = 256, 01 = 512, 10 = 1024, 11 = 4096 when sdrbs = 111, 2048 otherwise SDRAM command Writing a non-zero value generates an SDRAM command: 01 = PRECHARGE, 10 = AUTO-REFRESH, 11 = LOAD-COMMAND-REGISTER. The field is reset after command has been executed. 20..19 sdrcmd 14 se SDRAM enable If set, the SDRAM controller is enabled. 13 si SRAM disable If set together with se (SDRAM enable), the static ram access is disabled. 98 4226H–AERO–08/11 Bit Number Mnemonic Description 12..9 rambs 7 rambrdy SRAM area bus ready enable If set to 1, a RAM access to RAM bank 4 (RAMS*[4]) is extended until BRDY* is asserted. 6 ramrmw Read-modify-write on the SRAM Enables read-modify-write cycles on sub-word writes to 16- and 32-bit areas with common write strobe and/or EDAC protection. 5..4 ramwdh SRAM bus width Defines the bus with of the SRAM area (00 = 8,01 = 16,1X = 32). 3..2 ramwws SRAM write waitstates Defines the number of waitstates during SRAM write cycles (00 = 0, 01 = 1, 10 = 2, 11 = 3). 1..0 ramrws SRAM read waitstates Defines the number of waitstates during SRAM read cycles (00 = 0, 01 = 1, 10 = 2, 11 = 3). SRAM bank size Defines the size of each ram bank (0000 = 8 KB, 0001 = 16 KB... 1111 = 256 MB). Table 45. Memory Configuration Register 3 - MCFG3 Address = 0x80000008 rfc r 11 99 9 8 7 6 5 4 3 reserved 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 me srcrv wb rb re pe tcb r r r/w r/w r/w r/w r/w r/w 00 1 xxx xxxx xxxx xxxx 0 0 x p 2 1 0 xxxx xxxx Bit Number Mnemonic Description 31:30 rfc Register file check bits Indicates how many checkbits are used for the register file (11 = 7 bits) 27 me Memory EDAC Indicates if a memory EDAC is present 26..12 srcrv 11 wb EDAC diagnostic write bypass When set, replace the EDAC checkbits with tcb on a store operation. 10 rb EDAC diagnostic read When set, update tcb with the EDAC checkbits on instruction fetch or data load operation. SDRAM refresh counter reload value The period between each AUTO-REFRESH command is calculated as follows: tREFRESH = ((reload value) + 1) ÷ SDCLKfrequency. AT697E 4226H–AERO–08/11 AT697E Bit Number Mnemonic Description RAM EDAC enable When set, enables EDAC protection on the RAM area: 9 • SRAM read-modify-write on sub-word operation shall be enabled as well (MCFG2.ramrmw = 1)in order to maintain EDAC protection integrity • SDRAM read-modify-write on sub-word operations is simultaneously activated with EDAC on RAM re Memory shall be initialized before EDAC activation. 8 7..0 pe PROM EDAC enable When set, enables EDAC protection on the PROM area. During reset, this bit is initialized with the value of PIO[2]. tcb Test checkbits This field replaces the normal checkbits during store operations when wb is set. It is also loaded with the memory checkbits during instruction fetch and data load operations when rb is set. Table 46. Write Protection Register 1 - WPR1 Address = 0x8000001C 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 en bp tag mask r/w r/w r/w r/w xx xxxx xxxx xxxx x xxx xxxx xxxx xxxx 0 x 4 3 Bit Number Mnemonic 31 en Enable. If set, write protection is enabled. 30 bp Block Protect If set, block protect mode is selected rather than segment allow mode. 29..15 tag Address Tag The tag is XORed with the same bits in the write address. 14..0 mask 2 1 0 2 1 0 Description Address Mask The mask is applied on the result of the tag/address XOR operation. Table 47. Write Protection Register 2 - WPR2 Address = 0x80000020 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 en bp tag mask r/w r/w r/w r/w xx xxxx xxxx xxxx x xxx xxxx xxxx xxxx 0 x 4 3 100 4226H–AERO–08/11 Bit Number Mnemonic Description 31 en Enable. If set, write protection is enabled. 30 bp Block Protect If set, block protect mode is selected rather than segment allow mode. 29..15 tag Address Tag The tag is XORed with the same bits in the write address. 14..0 mask Address Mask The mask is applied on the result of the tag/address XOR operation. System Registers Table 48. Product Configuration Register - PCR Address = 0x80000024 2 1 0 wtpnb nwin memstat 3 wdog 4 mulinst 5 divinst 6 imac 7 sdrctrl 8 dsu 9 mmu 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 fpu r r r r r r r r r r r r r r r r r 0 1 1 100 0 00111 011 11 011 10 1 1 1 1 01 01 01 icsz ilsz dcsz dlsz pci wprt 0x7077BBD5 101 Bit Number Mnemonic Description 31 mmu 30 dsu Debug Support Unit 1 = present 29 sdrctrl SDRAM Controller 1 = present 28..26 wtpnt IU Watchpoints 100 = 4 watchpoints 25 imac UMAC/SMAC instructions 0 = not implemented 24..20 nwin IU Register File Windows 00111 = 8 windows 19..17 icsz Instruction Cache Set Size (2icsz KB) 011 = 8 KB (× 4 ways = 32 KB total) 16..15 ilsz Instruction Cache Line Size (2ilsz instructions) 11 = 8 instructions 14..12 dcsz Memory Management Unit 0 = not present Data Cache Set Size (2dcsz KB) 011 = 8 KB (× 2 ways = 16 KB total) AT697E 4226H–AERO–08/11 AT697E Bit Number Mnemonic Description 11..10 dlsz 9 divinst UDIV/SDIV instructions 1 = implemented 8 mulinst UMUL/SMUL instructions 1 = implemented 7 wdog 6 memstat 5..4 fpu FPU Type 01 = MEIKO 3..2 pci PCI Core Type 01 = InSilicon 1..0 wprt Data Cache Line Size (2dlsz words) 10 = 4 words Watchdog 1 = implemented Memory Status and Address Failing Register 1 = implemented Write Protection 01 = implemented Table 49. Fail Address Register - FAILAR Address = 0x8000000C 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 hea (1) r /w(2) xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 31:0 hea Notes: Description Hardware Error Address Identifies the address of the failed access. 1. Read value is only valid when a hardware error was detected (FAILSR.hed = 1) and is not relevant otherwise (unpredictable value). 2. Written value is always discarded when no hardware error is detected (FAILSR.hed = 0). 102 4226H–AERO–08/11 Table 50. Fail Status Register - FAILSR Address = 0x80000010 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 6 x 0 5 4 3 hem 2 1 0 hes r(3)/w(4) 2) 0000 0000 0000 0000 0000 00 x xxxx xxx Description eed EDAC-correctable Error Detected Set when an EDAC-correctable memory error is detected(1) (register-file EDAC errors are handled separately). This bit is never cleared in hardware and shall be cleared in software so a new error can be registered(2). This bit shall also be cleared before the EDAC is activated. 8 hed Hardware Error Detected Set when a hardware error is detected (bus exception, write protection error, EDAC correctable and uncorrectable external memory error, PCI initiator error or PCI target error). This bit is never cleared in hardware and shall be cleared in software so a new hardware error can be registered and the hardware error-related fields updated(2). 7 het Hardware Error Type(3) Identifies the type of the failed access (0 = write, 1 = read). hem Hardware Error Module(3) Identifies the module impacted by the failed access (0000 = IU/FPU, 0001 = PCI Initiator, 0010 = PCI Target, 0011 = DSU Communication Module). hes Hardware Error Size(3) Identifies the size of the failed access (000 = byte, 001 = half-word, 010 = word, 011 = double-word). 9 6...3 2..0 Notes: 103 7 r(1) r/w /w( (2) r Mnemonic 8 ee he het d d reserved Bit Number 9 1. Bit might be updated even when a hardware error was already detected (FAILSR.hed = 1). 2. These bits shall be cleared as soon as possible after the error was detected so no subsequent hardware error is missed after the initial detection. Moreover, the register read-and-clear operation shall be best performed by mean of a SWAP instruction so to minimize even further the time from read to clear. 3. Read value is only valid when a hardware error was detected (FAILSR.hed = 1) and is not relevant otherwise (unpredictable value). 4. Written value is always discarded while no hardware error is detected (FAILSR.hed = 0). AT697E 4226H–AERO–08/11 AT697E Caches Register Table 51. Cache Control Register - CCR Address = 0x80000014 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 if drepl irepl isets dsets ds fd fi cpc cptb ib ip dp ite ide dte dde df r r r r r/w w w r r/w r/w r r r/w r/w r/w r/w r/w r/w 11 11 11 01 0 10 xx 0 0 0 xx xx xx xx 0 0 Bit Number Mnemonic 31..30 drepl Data cache replacement policy 11 = Least Recently Used (LRU) 29..28 irepl Instruction cache replacement policy 11 = Least Recently Used (LRU) 27..26 isets Instruction cache associativity Number of ways in the instruction cache. 11 = 4 way associative 25..24 dsets Data cache associativity Number of ways in the data cache. 01 = 2 way associative 23 ds Data cache snoop enable If set, will enable data cache snooping. 22 fd Flush data cache If set, will flush the data cache. Always reads as zero. 21 fi Flush Instruction cache If set, will flush the instruction cache. Always reads as zero. x 3 x 2 1 0 dcs ics r/w r/w 00 00 Description 20..19 cpc Cache parity bits Indicates how many parity bits are used to protect the caches. 10 = 2 parity bits 18..17 cptb Cache parity test bits These bits are XOR’ed to the data and tag parity bits during diagnostic writes. 16 ib Instruction burst fetch This bit enables burst fill during instruction fetch. 15 ip Instruction cache flush pending This bit is set while an instruction cache flush operation is in progress. 14 dp Data cache flush pending This bit is set while a data cache flush operation is in progress. 13..12 ite Instruction cache tag error counter This field is incremented(1) every time an instruction cache tag parity error is detected. 104 4226H–AERO–08/11 Bit Number Mnemonic 11.10 ide Instruction cache data error counter This field is incremented(1) each time an instruction cache data sub-block parity error is detected. 9..8 dte Data cache tag error counter This field is incremented(1) every time a data cache tag parity error is detected. 7..6 dde Data cache data error counter This field is incremented(1) each time an instruction cache data sub-block parity error is detected 5 df Data Cache Freeze on Interrupt If set, the data cache will automatically be frozen when an asynchronous interrupt is taken. 4 if Instruction Cache Freeze on Interrupt If set, the instruction cache will automatically be frozen when an asynchronous interrupt is taken. 3..2 1..0 Description dcs Data Cache State X0 = disabled 01 = frozen 11 = enabled ics Instruction Cache State X0 = disabled 01 = frozen 11 = enabled. Note: 1. The counter saturates at 11 (3 events) and shall be cleared in software so new events can later be registered. Idle Register Table 52. Idle Register - IDLE Address = 0x80000018 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 idle w n/a Bit Number 31..0 105 Mnemonic idle Description A write to this register followed by a load access will cause the system to enter idle mode. This a write-only register (written value is not relevant), the value returned by a read is not relevant. AT697E 4226H–AERO–08/11 AT697E Timer Registers Table 53. Timer 1 Counter Register - TIMC1 Address = 0x80000040 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 reserved cnt r r/w 0000 0000 xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 23..0 cnt 7 6 5 4 3 2 1 0 Description Timer 1 counter value A read access gives the current decounting value of the timer. Table 54. Timer 1 Reload Register - TIMR1 Address = 0x80000044 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 reserved rv r r/w 0000 0000 xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 23..0 rv 7 6 5 4 3 2 1 0 6 5 4 3 2 1 0 ld rl en Description Timer 1 reload value A write access programs the reload value of TIMC1. Table 55. Timer 1 Control Register - TIMCTR1 Address = 0x80000048 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 reserved r 0000 0000 0000 0000 0000 0000 0000 0 r/w 0 Bit Number Mnemonic 2 ld Load counter If set, the timer counter register is loaded with the reload value. Always reads as 0. 1 rl Reload counter If set, the counter is automatically reloaded with the reload value after each underflow. If cleared, the timer is single-shot. 0 en Enable counter Enables the timer when set. x 0 Description 106 4226H–AERO–08/11 Table 56. Watchdog Register - WDG Address = 0x8000004C 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 reserved cnt r r/w 0000 0000 1111 1111 1111 1111 1111 1111 Bit Number 23..0 Mnemonic cnt 7 6 5 4 3 2 1 0 Description Watchdog counter value. A write access programs the new value of the watchdog counter. A read access gives the current decounting value of the watchdog counter. Table 57. Timer 2 Counter Register - TIMC2 Address = 0x80000050 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 reserved cnt r r/w 0000 0000 xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 23..0 cnt 7 6 5 4 3 2 1 0 Description Timer 2 counter value A read access gives the current decounting value of the timer. Table 58. Timer 2 Reload Register - TIMR2 Address = 0x80000054 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 reserved rv r r/w 0000 0000 xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 23..0 rv 7 6 5 4 3 2 1 0 6 5 4 3 2 1 0 ld rl en Description Timer 2 reload value A write access programs the reload value of TIMC2. Table 59. Timer 2 Control Register - TIMCTR2 Address = 0x80000058 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 reserved r 107 9 8 7 r/w AT697E 4226H–AERO–08/11 AT697E 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 0000 0000 0000 0000 0000 0000 0000 0 2 1 0 0 x 0 2 1 0 2 1 0 Bit Number Mnemonic Description 2 ld Load counter If set, the timer counter register is loaded with the reload value. Always reads as 0. 1 rl Reload counter If set, the counter is automatically reloaded with the reload value after each underflow. If cleared, the timer is single-shot. 0 en Enable counter Enables the timer when set. Table 60. Prescaler Counter Register - SCAC Address = 0x80000060 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 reserved cnt r r/w 0000 0000 0000 0000 00 00 0000 0000 Bit Number Mnemonic 9..0 cnt Description Prescaler counter value A read access gives the current decounting value of the prescaler. Table 61. Prescaler Reload Register - SCAR Address = 0x80000064 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 Bit Number 9..0 9 8 7 6 5 4 3 reserved rv r r/w 0000 0000 0000 0000 00 00 0000 0000(1) Mnemonic rv Note: Description Prescaler reload value A write access programs the reload value of the prescaler. A read access gives the reload value of the prescaler. The effective division rate is (rv + 1).(1) 1. As a special case, reload values 0 & 1 yield a division rate of 4, reload value 2 yields a division-rate of 6 108 4226H–AERO–08/11 UART Registers Table 62. UART 1 Data Register - UAD1 Address = 0x80000070 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 Bit Number 9 8 7 6 5 4 3 2 1 0 3 2 1 0 reserved fe pe ov br th ts dr r r/w reserved rtd r r/w 0000 0000 0000 0000 0000 0000 xxxx xxxx Mnemonic Description Received/Transmit Data on the UART 7..0 rtd • A read access provides the last received 8-bit data • A write access initiates the transmission of the 8-bit data Table 63. UART 1 Status Register - UAS1 Address = 0x80000074 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 0000 0000 0000 0000 0000 0000 0 6 0 5 0 4 0 Bit Number Mnemonic 6 fe Framing error(1) Indicates that a framing error was detected. 5 pe Parity error(1) Indicates that a parity error was detected. 4 ov Overrun(1) Indicates that one or more character have been lost due to overrun. 3 br Break received(1) Indicates that a BREAK has been received. 2 th Transmitter hold register empty Indicates that the transmitter hold register is empty. 1 ts Transmitter shift register empty Indicates that the transmitter shift register is empty. 0 dr Data ready Indicates that new data is available in the receiver holding register. Note: 109 7 r 0 1 1 0 Description 1. Once set, these error bits are never cleared by the processor: it is the responsibility of the application to clear them in software so further errors can be detected. AT697E 4226H–AERO–08/11 AT697E Table 64. UART 1 Control Register - UAC1 Address = 0x80000078 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 reserved 8 7 6 5 4 3 2 1 0 ec lb fl pe ps ti ri te re x x 0 0 3 2 1 0 r r/w 0000 0000 0000 0000 0000 0000 0 x 0 x x Bit Number Mnemonic Description 8 ec External Clock If set, the UART will be directly clocked from PIO[3] (no scaler). 7 lb Loop back If set, RX will be internally connected to TX (with no external activity). 6 fl Flow control If set, enables hardware flow-control using CTS and/or RTS. 5 pe Parity enable If set, enables parity generation and checking. 4 ps Parity select 0 = even parity 1 = odd parity 3 ti Transmitter interrupt enable If set, enables generation of transmitter interrupt. 2 ri Receiver interrupt enable If set, enables generation of receiver interrupt. 1 te Transmitter enable If set, enables the UART transmitter. 0 re Receiver enable If set, enables the UART receiver. Table 65. UART 1 Scaler Register - UASCA1 Address = 0x8000007C 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 reserved rv r r/w 0000 0000 0000 0000 0000 xxxx xxxx xxxx Bit Number Mnemonic 7..0 rv Description UART scaler reload value 110 4226H–AERO–08/11 Table 66. UART 2 Data Register - UAD2 Address = 0x80000080 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 Bit Number 9 8 7 6 5 4 3 2 1 0 3 2 1 0 reserved fe pe ov br th ts dr r r/w reserved rtd r r/w 0000 0000 0000 0000 0000 0000 xxxx xxxx Mnemonic Description Received or Transmitted Data on the UART 7..0 rtd • A read access provides the last received 8-bit data • A write access initiates transmission of the 8-bit data Table 67. UART 2 Status Register - UAS2 Address = 0x80000084 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 0000 0000 0000 0000 0000 0000 0 6 0 5 0 4 0 Bit Number Mnemonic 6 fe Framing error(1) Indicates that a framing error was detected. 5 pe Parity error(1) indicates that a parity error was detected. 4 ov Overrun(1) Indicates that one or more character have been lost due to overrun. 3 br Break received(1) Indicates that a BREAK has been received. 2 th Transmitter hold register empty Indicates that the transmitter hold register is empty. 1 ts Transmitter shift register empty Indicates that the transmitter shift register is empty. 0 dr Data ready Indicates that new data is available in the receiver holding register. Note: 111 7 r 0 1 1 0 Description 1. Once set, these error bits are never cleared by the processor: it is the responsibility of the application to clear them in software so further errors can be detected. AT697E 4226H–AERO–08/11 AT697E Table 68. UART 2 Control Register - UAC2 Address = 0x80000088 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 reserved 8 7 6 5 4 3 2 1 0 ec lb fl pe ps ti ri te re x x 0 0 3 2 1 0 r r/w 0000 0000 0000 0000 0000 0000 0 x 0 x x Bit Number Mnemonic Description 8 ec External Clock If set, the UART will be directly clocked from PIO[3] (no scaler). 7 lb Loop back If set, RX will be internally connected to TX (with no external activity). 6 fl Flow control If set, enables hardware flow-control using CTS and/or RTS. 5 pe Parity enable If set, enables parity generation and checking. 4 ps Parity select Selects parity polarity 0 = even parity 1 = odd parity 3 ti Transmitter interrupt enable If set, enables generation of transmitter interrupt. 2 ri Receiver interrupt enable If set, enables generation of receiver interrupt. 1 te Transmitter enable If set, enables the UART transmitter. 0 re Receiver enable If set, enables the UART receiver. Table 69. UART 2 Scaler Register - UASCA2 Address = 0x8000008C 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 reserved rv r r/w 0000 0000 0000 0000 0000 xxxx xxxx xxxx Bit Number Mnemonic 7..0 rv Description UART scaler reload value 112 4226H–AERO–08/11 Interrupt Registers Table 70. Interrupt Mask and Priority Register - ITMP 6 5 4 3 2 1 0 UART1 UART2 AMBA reserved 7 I/O3 Timer1 Timer2 reserved DSU reserved reserved PCI reserved reserved AMBA UART2 UART1 I/O0 I/O1 imask I/O2 I/O3 Timer1 Timer2 reserved DSU reserved reserved PCI reserved ilevel 8 I/O0 9 I/O1 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 I/O2 Address = 0x80000090 r/w r r/w r xxxx xxxx xxxx xxx 0 0000 0000 0000 000 0 Bit Number Mnemonic 31..16 ilevel 15..0 imask Description Interrupt Level 0 = low priority interrupt 1 = high priority interrupt High-priority interrupts are always serviced before low-priority interrupts. Interrupt Mask Indicates whether an interrupt is masked or enabled 0 = interrupt masked 1 = interrupt enabled Table 71. Interrupt Pending Register - ITP 6 5 4 3 2 1 0 UART2 AMBA reserved 7 UART1 8 I/O0 9 I/O1 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 I/O2 Address = 0x80000094 (1) r 15..0 Mnemonic ipend Notes: 113 I/O3 r/w 0000 0000 0000 0000 Bit Number Timer1 Timer2 reserved DSU reserved reserved reserved PCI reserved ipend x x x x x x x x r x x x x x x x 0 Description Interrupt Pending Indicates whether an interrupt is pending(1). 1 = interrupt pending(2) 0 = interrupt not pending 1. When the IU acknowledges the interrupt, the corresponding pending bit is automatically cleared unless it was forced (see ITF). 2. Forced interrupts never show up as pending. AT697E 4226H–AERO–08/11 AT697E Table 72. Interrupt Force Register - ITF 6 5 4 3 2 1 0 UART2 AMBA reserved 7 UART1 8 I/O0 9 I/O1 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 I/O2 Address = 0x80000098 r Mnemonic 15..0 I/O3 r/w 0000 0000 0000 0000 Bit Number Timer1 Timer2 reserved DSU reserved reserved reserved PCI reserved iforce(1) iforce Notes: x x x x x x x x r x x x x x x x 0 Description Interrupt Force Indicates whether an interrupt is being forced.(1) 1 = interrupt forced(2) 0 = interrupt not forced 1. When the IU acknowledges the interrupt, only the corresponding force bit is automatically cleared if it was forced. 2. Forcing is effective only if the corresponding interrupt is unmasked. Table 73. Interrupt Clear Register - ITC 6 5 4 3 2 1 0 UART2 AMBA reserved 7 UART1 8 I/O0 9 I/O1 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 I/O2 Address = 0x8000009C r I/O3 Timer1 Timer2 reserved DSU reserved reserved reserved PCI reserved iclear w xxxx xxxx xxxx xxxx Bit Number Mnemonic 15..0 iclear x x x x x x x x r x x x x x x x x Description Interrupt Clear If written with a 1, clears the corresponding bit(s) in the interrupt pending register. The value returned by a read is not relevant, this is a write-only register. 114 4226H–AERO–08/11 General Purpose Interface Registers Table 74. I/O Port Data Register - IODAT Address = 0x800000A0 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 meddat lowdat piodat r/w r/w r/w xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 31..24 meddat(1) 23..16 lowdat 15..0 4 3 2 1 0 Description D[15:8] bus value (1) D[7:8] bus value piodat Note: 5 PIO[15:0] port value 1. These bits are only accessible as I/O ports when all areas (ROM, RAM and I/O) of the memory bus are in 8-bit or 16-bit mode (see “8-bit and 16-bit PROM and SRAM access”) and the SDRAM controller is not enabled. Table 75. I/O Port Direction Register - IODIR Address = 0x800000A4 reserved r r/w r/w 0000 0000 0000 00 Bit Number lowdir meddir 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 0 Mnemonic 0 9 8 7 6 5 4 3 2 1 0 piodir[15:0] r/w 0000 0000 0000 0000 Description D[15:8] port direction (see note). 17 meddir (1) • 1 = output • 0 = input D[7..0] port direction (see note) 16 lowdir (1) • 1 = output • 0 = input PIO[15:0] port direction 15..0 piodir Note: 115 • 1 = output • 0 = input 1. These bits are only accessible as I/O ports when all areas (ROM, RAM and I/O) of the memory bus are in 8-bit or 16-bit mode (see “8-bit and 16-bit PROM and SRAM access”) and the SDRAM controller is not enabled. AT697E 4226H–AERO–08/11 AT697E Table 76. I/O Port Interrupt Register - IOIT Address = 0x800000A8 r/w r/w r/w 0 x x r/w x xxxx r/w r/w r/w 0 x x r/w x xxxx r/w r/w r/w 0 x x r/w x xxxx 7 6 5 4 pl0 8 le0 isel1 9 en0 pl1 le1 isel2 en1 pl2 le2 en2 isel3 pl3 le3 en3 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 r/w r/w r/w 0 x x 3 2 1 0 isel0 r/w x xxxx Bit Number Mnemonic Description 31 en3 Enable. If set, the corresponding interrupt will be enabled, otherwise it will be masked. 30 le3 Level/edge triggered. If set, the interrupt will be edge-triggered, otherwise level sensitive. 29 pl3 Polarity If set, the corresponding interrupt will be active high (or edge-triggered on positive edge). Otherwise, it will be active low (or edge-triggered on negative edge). 28..24 isel3 I/O port select. The value of this field defines which I/O port (0 - 31) should generate parallel I/O port interrupt 3. 23 en2 Enable. If set, the corresponding interrupt will be enabled, otherwise it will be masked. 22 le2 Level/edge triggered. If set, the interrupt will be edge-triggered, otherwise level sensitive. 21 pl2 Polarity If set, the corresponding interrupt will be active high (or edge-triggered on positive edge). Otherwise, it will be active low (or edge-triggered on negative edge). 20..16 isel2 I/O port select. The value of this field defines which I/O port (0 - 31) should generate parallel I/O port interrupt 2. 15 en1 Enable. If set, the corresponding interrupt will be enabled, otherwise it will be masked. 14 le1 Level/edge triggered. If set, the interrupt will be edge-triggered, otherwise level sensitive. 13 pl1 Polarity If set, the corresponding interrupt will be active high (or edge-triggered on positive edge). Otherwise, it will be active low (or edge-triggered on negative edge). 12..8 isel1 I/O port select. The value of this field defines which I/O port (0 - 31) should generate parallel I/O port interrupt 1. 7 en0 Enable. If set, the corresponding interrupt will be enabled, otherwise it will be masked. 6 le0 Level/edge triggered. If set, the interrupt will be edge-triggered, otherwise level sensitive. 116 4226H–AERO–08/11 Bit Number Mnemonic 5 pl0 4..0 isel0 PCI Registers Description Polarity If set, the corresponding interrupt will be active high (or edge-triggered on positive edge). Otherwise, it will be active low (or edge-triggered on negative edge). I/O port select. The value of this field defines which I/O port (0 - 31) should generate parallel I/O port interrupt 0. Caution: The PCI registers are located between 0x80000100 and 0x800002FC. Within this range, any address not shown in the following list shall neither be written nor read. Table 77. PCI Device Identification Register 1 - PCIID1 Address = 0x80000100 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 117 9 8 7 device id vendor id r r 0x1202 0x1438 6 Bit Number Mnemonic 31..16 device id This field identifies the particular device. 15..0 vendor id This field identifies the manufacturer of the device (ATMEL). 5 4 3 2 1 0 Description AT697E 4226H–AERO–08/11 AT697E Table 78. PCI Status & Command Register - PCISC 0 0 0 0 0 01 Bit Number 1 0 0 0 0 0000 0000 0 Mnemonic 1 0 com0 0 2 com1 r 3 com2 r 4 com3 r 5 com4 r 6 com5 r 7 com6 r 8 com7 r r/w 9 com8 (1) stat8 com10 r reserved (1) stat3 (1) stat4 (1) stat5 (1) stat6 (1) stat7 r/w r/w r/w r/w r/w stat10_9 stat11 stat12 stat13 stat14 stat15 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 com9 Address = 0x80000104 r/w r/w (1) (1) r 0 0 0 r/w (1) r 0 0 stat15 stat14 PCI Interface System Error Status 1 = PCI interface asserted SERR* 0 = PCI interface does not assert SERR* This bit shall be cleared by writing a 1 (0 has no effect). stat13 Initiator Interface Termination Status 1 = initiator transaction terminated with Master Abort 0 = initiator transaction successfully terminated (if any) This bit shall be cleared by writing a 1 (0 has no effect). stat12 Remote Target Termination Status 1 = initiator transaction terminated with Target Abort 0 = initiator transaction successfully terminated (if any) This bit shall be cleared by writing a 1 (0 has no effect). 27 stat11 Target Interface Termination Status 1 = remote initiator transaction terminated with Target Abort 0 = remote initiator transaction successfully terminated (if any) This bit shall be cleared by writing a 1 (0 has no effect). 26..25 stat10_9 30 29 28 (1) r 0 0 r/w r/w r/w (1) (1) (1) 0 0 0 Description PCI Bus Parity Error Status 1 = PERR* asserted (set even if parity checking is disabled) 0 = PERR* not asserted This bit shall be cleared by writing a 1 (0 has no effect). 31 r/w Target Interface Selection Timing 01 = DEVSEL* is asserted with medium timing 24 stat8 Initiator Interface Parity Error Status 1 = initiator interface asserted PERR* on a read transaction or observed PERR* on a write transaction and Parity Error Response is enabled (bit 6) 0 = initiator interface has not asserted nor observed PERR* on a transaction (if any), or Parity Error Response is disabled (bit 6) This bit shall be cleared by writing a 1 (0 has no effect). 23 stat7 Target Interface Fast Back-to-Back Capability 1 = the target is capable of accepting fast back-to-back transactions when the transactions are not to the same agent 22 stat6 User definable features (reserved) 21 stat5 66 MHz Capability 0 = not capable 118 4226H–AERO–08/11 Bit Number Mnemonic 20 stat4 Power Management Capability 0 = no New Capabilities linked list is available at offset 34h, value at that location is not relevant 19 stat3 PCI Interrupt Status (reserved, no PCI interrupts) 10 com10 Interrupt Command (reserved, no PCI interrupts) com9 Initiator Interface Fast Back-to-Back Control(2) 1 = initiator is allowed to generate fast back-to-back transactions to different targets 0 = initiator shall only generate fast back-to-back transactions to the same target 8 com8 System Error Pin Control 1 = assert SERR* 0 = do no assert SERR* Address parity errors are reported only if this bit and bit 6 are 1. 7 com7 Address/Data Stepping Control (reserved, not applicable) 6 com6 Parity Error Response Control 1 = take the normal action when a parity error is detected 0 = set the PCI Bus Parity Error Status bit (bit 31) when an error is detected but do not assert PERR* and continue normal operation 5 com5 VGA Palette Snooping (reserved, not applicable) 4 com4 Memory Write-and-Invalidate Control 1 = initiator may generate the Memory Write and Invalidate command 0 = use the Memory Write command instead 3 com3 Special Cycles Control (reserved, not applicable) 2 com2 PCI Initiator Control 1 = PCI initiator enabled 0 = PCI initiator disabled(3) com1 Target Memory Command Response Control 1 = target interface is allowed to respond to Memory Space accesses 0 = target interface does not respond to Memory Space accesses com0 Target I/O Command Response Control 1 = target interface is allowed to respond to I/O Space accesses 0 = target interface does not respond to I/O Space accesses 9 1 0 Notes: Description 1. Irrelevant bit when read or written by the processor in PCI Satellite mode (SYSEN* = 1), remote Host-Bridge sees and controls its own view used by the PCI interface through PCI configuration transactions. 2. Whatever the value of this bit, the PCI interface does not allow to generate fast backto-back transactions. 3. Caution: a memory-mapped PCI transaction shall not be initiated while the PCI initiator is disabled or the processor will stall. Table 79. PCI Device Identification 2 - PCIID2 Address = 0x80000108 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 class code 119 9 8 7 6 5 4 3 2 1 0 revision id AT697E 4226H–AERO–08/11 AT697E 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 Bit Number 9 8 7 6 5 4 3 r r 0x00000B 0x01 2 1 0 Mnemonic Description 31..8 class code The Class Code register is read-only and is used to identify the generic function of the device and, in some cases, a specific register-level programming interface. The register is broken into three byte-size fields. The upper byte (at offset 0Bh) is a base class code which broadly classifies the type of function the device performs. The middle byte (at offset 0Ah) is a sub-class code which identifies more specifically the function of the device. The lower byte (at offset 09h) identifies a specific registerlevel programming interface (if any) so that device independent software can interact with the device. 7..0 revision id This register specifies a device specific revision identifier. The value is chosen by the vendor. Zero is an acceptable value. This field should be viewed as a vendor defined extension to the Device ID. Table 80. PCI Bist & Header Type & Latency & Cacheline Size Register - PCIBHLC Address = 0x8000010C 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 bist header type r 0000 0000 0000 0000 8 7 6 latency timer (1) r 9 r/w 0000 00 5 4 3 2 1 0 cacheline size r r/w(1) 00 0000 0000 Bit Number Mnemonic 31..24 bist 23..16 header type Header Type A value of 0 indicates this is a single-function interface which implements type 00h Configuration Space Header. 15..8 latency timer Latency Timer Specifies the value of the latency timer for this bus master (in units of PCI bus clocks). 7..0 cacheline size Note: Description Built-In Self Test (BIST) A value of 0 indicates there is no support for this feature. Cacheline Size Specifies the system cacheline size (in units of 32-bit words). Used by master devices to determine whether to use Read, Read Line or Read Multiple commands for accessing memory. Used by slave devices that want to allow memory bursting using cacheline wrap addressing mode to know when a burst sequence wraps to the beginning of the cacheline. 1. Irrelevant bit when read or written by the processor in PCI Satellite mode (SYSEN* = 1), remote Host-Bridge sees and controls its own view used by the PCI interface through PCI configuration transactions. 120 4226H–AERO–08/11 Table 81. Memory Base Address Register 1 - MBAR1 Address = 0x80000110 6 5 4 3 2 1 0 r/w(1) r r r r 0000 0000 0000 0000 0000 0000 0000 1 00 0 badr Bit Number Mnemonic 31..4 badr Base Address (least-significant null nibble omitted) Pointer to a 16 MB address space. 3 pref Prefetchable 1 = there are no side effects on reads: the device returns all bytes on reads regardless of the byte enables. 2..1 type Type 00 = the base register is 32 bits wide and mapping can be done anywhere in the 32bit Memory Space. 0 msi Memory Space Indicator 0 = the base address maps into Memory Space. Note: 121 7 msi 8 type 9 pref 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 Description 1. Irrelevant bit when read or written by the processor in PCI Satellite mode (SYSEN* = 1), remote Host-Bridge sees and controls its own view used by the PCI interface through PCI configuration transactions. AT697E 4226H–AERO–08/11 AT697E Table 82. Memory Base Address Register 2 - MBAR2 Address = 0x80000114 7 6 5 4 3 2 1 0 msi 8 type 9 pref 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 r/w(1) r r r r 0000 0000 0000 0000 0000 0000 0000 1 00 0 badr Bit Number Mnemonic 31..4 badr Base Address (least-significant null nibble omitted) Pointer to a 16 MB address space. 3 pref Prefetchable 1 = there are no side effects on reads: the device returns all bytes on reads regardless of the byte enables. 2..1 type Type 00 = the base register is 32 bits wide and mapping can be done anywhere in the 32bit Memory Space. 0 msi Memory Space Indicator 0 = the base address maps into Memory Space. Note: Description 1. Irrelevant bit when read or written by the processor in PCI Satellite mode (SYSEN* = 1), remote Host-Bridge sees and controls its own view used by the PCI interface through PCI configuration transactions. Table 83. IO Base Address Register 3 - IOBAR3 Address = 0x80000118 8 7 6 5 4 3 2 1 0 iosi 9 reserved 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 r/w(1) r r r 0000 0000 0000 0000 0000 00 0000 0000 0 1 badr Bit Number Mnemonic 31..2 badr Base Address (2 least-significant null bits omitted) Pointer to a 1 KB address space. 0 iosi I/O Space Indicator 1 = the base address maps into I/O Space. Note: Description 1. Irrelevant bit when read or written by the processor in PCI Satellite mode (SYSEN* = 1), remote Host-Bridge sees and controls its own view used by the PCI interface through PCI configuration transactions. 122 4226H–AERO–08/11 Table 84. Subsystem Identification Register - PCISID Address = 0x8000012C 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 sid svi r r 0x0001 0x1438 Bit Number Mnemonic 31..16 sid Subsystem ID 15..0 svi Subsystem Vendor ID 6 5 4 3 2 1 0 6 5 4 3 2 1 0 Description Table 85. PCI Latency Interrupt Register - PCILI Address = 0x8000013C 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 8 7 max_lat min_gnt int_pin int_line r r r r/w(1) 0000 0000 0000 0000 0000 0000 0000 0000 Bit Number Mnemonic Description max_lat Maximum Latency Specifies how often the processor needs to gain access to the PCI bus. (in units of 0.25 microseconds assuming a 33 MHz clock). A value of 0 indicates there are no major requirements for this setting. 23..16 min_gnt Minimum Grant Specifies how long a burst period is needed (in units of 0.25 μs assuming a 33 MHz clock). A value of 0 indicates there are no major requirements for this setting. 15..8 int_pin Interrupt Pin Indicates which interrupt pin the processor uses. Value not relevant (PCI interrupts are not implemented). int_line Interrupt Line Specifies which input of the system interrupt controller the interrupt pin is connected to. Value not relevant (PCI interrupts are not implemented). 31..24 7..0 Note: 123 9 1. Irrelevant bit when read or written by the processor in PCI Satellite mode (SYSEN* = 1), remote Host-Bridge sees and controls its own view used by the PCI interface through PCI configuration transactions. AT697E 4226H–AERO–08/11 AT697E Table 86. PCI Initiator Retry & TRDY - PCIIRT Address = 0x80000140 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 reserved retry trdy r r/w(1) r/w(1) 0 0x80 0x80 Bit Number Mnemonic 15..8 retry Maximum number of retries the PCI initiator attempts. 7..0 trdy Maximum number of PCI clock cycles the PCI initiator waits for TRDY*. Note: 2 1 0 Description 1. Irrelevant bit when read or written by the processor in PCI Satellite mode (SYSEN* = 1), remote Host-Bridge sees and controls its own view used by the PCI interface through PCI configuration transactions. Table 87. PCI Configuration Byte-Enable - PCICBE Address = 0x80000144 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 Bit Number 3..0 9 8 7 6 5 4 3 2 1 reserved ben r r/w 0000 0000 0000 0000 0000 0000 0000 0000 Mnemonic 0 Description Byte write enables to the PCI configuration registers (0x80000100 to 0x80000140): 0 = enabled 1 = disabled A byte enable pattern, once programmed, applies to all subsequent writes until it is changed. ben Each of the 4 bits is assigned to one 8-bit lane: • bit ben[3] is applied to Byte 3, the most-significant byte (MSB) • bit ben[2] is applied to Byte 2 • bit ben[1] is applied to Byte 1 • bit ben[0] is applied to Byte 0, the least-significant byte (LSB) Table 88. PCI Initiator Start Address - PCISA Address = 0x80000148 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 stad r/w xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 124 4226H–AERO–08/11 Bit Number Mnemonic 31..0 stad Description PCI start address for PCI initiator transactions in DMA mode. Table 89. PCI DMA Configuration Register - PCIDMA Address = 0x80000150 reserved r 0000 0000 0000 0000 000 Bit Number Mnemonic 9 8 7 6 5 4 3 reserved 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 cmd wcnt r/w r/w r/w 0 xxxx xxxx xxxx 2 1 0 Description 11..8 cmd Command PCI command to use in transaction. Please refer to section 3.1.1 "Command Definition" of the PCI 2.2 specification for command details. 7..0 wcnt Word Count Number of words to transfer during the DMA burst (1 to 255). Note: Writing to this register effectively initiates the PCI transfer when the PCI core is configured for DMA mode. Table 90. PCI Initiator Status Register - PCIIS Address = 0x80000154 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 8 7 6 4 act xff xfe rfe 3 2 1 dmas r r r r r r r 0000 0000 0000 0000 0000 0000 0 0 1 1 0000 Mnemonic 11..8 dmas 7 act PCI Initiator Active 1 = a PCI data transfer is on-going or has been requested 0 = no PCI data transfer on-going or requested xff MXMT Transmit FIFO Full 1 = transmit FIFO full 0 = transmit FIFO not full xfe MXMT Transmit FIFO Empty 1 = transmit FIFO empty 0 = transmit FIFO not empty 5 5 reserved Bit Number 6 125 9 0 cs Description DMA State (0000 = idle) AT697E 4226H–AERO–08/11 AT697E Bit Number Mnemonic Description 4 rfe MRCV Receive FIFO Full 1 = receive FIFO empty 0 = receive FIFO not empty 3..0 cs Controller State (0000 = idle) Table 91. PCI Initiator Configuration - PCIIC 8 7 6 5 4 3 2 1 0 mod 9 dwr 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 dww Address = 0x80000158 (1) Bit Number reserved cmd reserved w r r/w r 0000 0000 0000 0000 0000 0000 01 000 Mnemonic r/w r/w r/w 0 cmd 2 dww Double-Word Write (STD) Control in Memory-Mapped Transactions 1 = execute STD instruction as a 2 words burst write transaction (or a burst of undefined length as long as the addresses are sequential) 0 = executes STD instruction as 2 single word write transactions 1 dwr Double-Word Read (LDD) Control in Memory-Mapped Transactions 1 = execute LDD instruction as a 2 words burst read transaction 0 = executes LDD instruction as 2 single word read transactions 0 mod PCI Interface Mode 1 = Memory-Mapped / DMA(3) 0 = PCI initiator disabled Notes: 0 Description Most-significant bits of the PCI command used in memory-mapped PCI transactions(2): 00 = I/O read or I/O write 01 = Memory Read or Memory Write 10 = Configuration Read or Configuration Write 11 = Memory Read Line or Memory Write and Invalidate 7..6 0 1. Writing the whole register with all-1s (0xFFFFFFFF) resets the interface: flush FIFOs, reset byte-enables, reset command to Memory Read/Write and terminate any memory-mapped transaction; any active DMA burst is terminated with an initiator internal error (PCIITP.iier = 1). 2. The least-significant bits depend on the instruction type that initiated the memorymapped PCI transaction (load = 10, store = 11). 3. Caution: a memory-mapped PCI transaction shall not be initiated while the PCI initiator is disabled (PCISC.com2 = 0) or the processor will stall. 126 4226H–AERO–08/11 Table 92. PCI Target Page Address Register - PCITPA Address = 0x8000015C 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 8 7 6 5 4 3 tpa1 reserved tpa2 reserved r/w r r/w r 0x40 0x00 0x90 0x00 2 1 Bit Number Mnemonic 31..24 tpa1 Target Page Address for MBAR1 Specifies the most significant byte of the local memory address(1) where the PCI target Memory Base Address Register 1 is mapped (defaults to the RAM area). 15..8 tpa2 Target Page Address for MBAR2 Specifies the most significant byte of the local memory address(2) where the PCI target Memory Base Address Register 2 is mapped (defaults to the DSU area). n/a tpa3(3) Notes: 127 9 0 Description Target Page Address for IOBAR3 The most significant 22 bits of the local memory address(3) where the PCI target IO Base Address Register 3 is mapped in local memory (defaults to the REGISTER area). This value is not exposed and is not programmable (built-in, 1000000000000000000000). 1. Assuming TPA1 is the full 32-bit address: TPA1 = tpa1 * 224. TPA1 is a pointer to a 16 Mbytes area. 2. Assuming TPA2 is the full 32-bit address: TPA2 = tpa2 * 224. TPA2 is a pointer to a 16 Mbytes area. 3. Assuming TPA3 is the full 32-bit address: TPA3 = tpa3 * 210 = 0x80000000. TPA3 is a pointer to a 1024 bytes / 256 words area. AT697E 4226H–AERO–08/11 AT697E Table 93. PCI Target Status and Control Register - PCITSC 0000 0000 0000 0000 0000 0000 Mnemonic 6 5 4 rfe (1) r/w 0 0 r/w r/w 3 2 1 0 cs 7 r/w r Bit Number 8 xfe reserved 9 xff 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 rfpe Address = 0x80000160 (1) (1) r/w(1) 1 1 0000 Description rfpe TRCV Receive FIFO parity error 0 = Do not save data with parity error 1 = Ignore any parity error and save data anyway (generation of the perr status bit and assertion of a parity error interrupt is not affected) xff TXMT Transmit FIFO Full 1 = transmit FIFO full 0 = transmit FIFO not full Writing this bit with a 1 ends the transaction with a target abort (a 0 has no effect). xfe TXMT Transmit FIFO Empty 1 = transmit FIFO empty 0 = transmit FIFO not empty Writing this bit with a 1 flushes the transmit FIFO (a 0 has no effect). 4 rfe TRCV Receive FIFO Empty 1 = receive FIFO empty 0 = receive FIFO not empty Writing this bit with a 1 flushes the receive FIFO (a 0 has no effect). 3..0 cs Controller State (0000 = idle) Writing this nibble with all-1s (0xF) resets the state machine (any other value has no effect). 7 6 5 Note: 1. This (group of) bit(s) has a specific action when written with a (group of) 1(s). 128 4226H–AERO–08/11 Table 94. PCI Interrupt Enable Register - PCIITE 7 6 5 4 3 2 1 0 iper tier tber tper serr 8 ifer reserved 9 iier 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 dmaf Address = 0x80000164 0 0 0 r r/w 0000 0000 0000 0000 0000 0000 Bit Number 7 6 5 4 3 2 1 0 Mnemonic dmaf 129 0 0 0 0 Description DMA finished(1) 1 = enable 0 = mask iier Initiator internal error(1) 1 = enable 0 = mask ifer Initiator fatal error(1) 1 = enable 0 = mask iper Initiator parity error(1) 1 = enable 0 = mask tier Target internal error(1) 1 = enable 0 = mask tber Target byte-enable error(1) 1 = enable 0 = mask tper Target parity error(1) 1 = enable 0 = mask serr SERR* signal asserted on the PCI bus(1) 1 = enable 0 = mask Note: 0 1. See the corresponding field in PCIITP for a complete description. AT697E 4226H–AERO–08/11 AT697E Table 95. PCI Interrupt Pending Register - PCIITP 7 6 5 4 3 2 1 0 iper tier tber tper serr reserved 8 ifer 9 iier 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 dmaf Address = 0x80000168 0 0 0 r/w(1) r 0000 0000 0000 0000 0000 0000 Bit Number Mnemonic 7 dmaf 6 5 4 3 2 1 0 0 0 0 0 0 Description DMA finished 1 = pending 0 = not pending iier Initiator internal error(2) 1 = pending 0 = not pending The PCI initiator internally faced a situation that prevented normal completion of the programmed transaction. ifer Initiator fatal error 1 = pending 0 = not pending The PCI initiator reported an address parity error or a transaction abort. iper Initiator parity error 1 = pending 0 = not pending The PCI initiator reported data with parity error on a read or write transaction. tier Target internal error(3) 1 = pending 0 = not pending The PCI target internally faced a situation that prevented normal completion of the programmed transaction. tber Target byte-enable error 1 = pending 0 = not pending The PCI target received data with unsupported byte-enables. tper Target parity error 1 = pending 0 = not pending The PCI target received data with parity error. serr SERR* signal asserted on the PCI bus 1 = pending 0 = not pending Notes: 1. Each bit is cleared when written with a 1 (writing a 0 has no effect). 2. An initiator internal error is reported on the following events: initiator busy or not ready (already active DMA transfer), local memory 1 KB address boundary reached 130 4226H–AERO–08/11 (DMA), attempt to transfer data to/from the PCI mapped-address area (DMA), invalid data read or written (timeout), interface reset during an active DMA transfer... 3. A target internal error is reported on the following events: invalid data read or written (timeout). Table 96. PCI Interrupt Force Register - PCIITF r(1) 0000 0000 0000 0000 0000 0000 Bit Number 7 6 5 4 3 2 1 0 Mnemonic dmaf 131 3 2 1 0 serr r(1) /w r(1)/w(2) 0 0 0 0 0 0 0 0 Description DMA finished(3) 1 = forced 0 = cleared(4) iier Initiator internal error(3) 1 = forced 0 = cleared(4) ifer Initiator fatal error(3) 1 = forced 0 = cleared(4) iper Initiator parity error(3) 1 = forced 0 = cleared(4) tier Target internal error(3) 1 = forced 0 = cleared(4) tber Target byte-enable error(3) 1 = forced 0 = cleared(4) tper Target parity error(3) 1 = forced 0 = cleared(4) serr SERR* asserted on the PCI bus(3) 1 = forced 0 = not forced Notes: 4 tper 5 tber 6 tier 7 iper 8 ifer reserved 9 iier 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 dmaf Address = 0x8000016C 1. This is a write-only register, reading this register always yields the contents of PCIITP. 2. A PCI interrupt is generated on the write operation itself. 3. See the corresponding field in PCIITP for a complete description. 4. Writing a 0 clears the corresponding bit in PCIITP rather than not forcing it. AT697E 4226H–AERO–08/11 AT697E Table 97. PCI DMA Address Register - PCIDMAA Address = 0x80000178 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 addr Bit Number r/w r xxxx xxxx xxxx xxxx xxxx xxxx xxxx xx 00 Mnemonic 31..0 addr Description When written, defines the start address of a DMA burst in local memory and initiates the DMA burst. When read, provides the current or last address of the latest DMA burst. During a DMA burst, this register is automatically incremented (+4) with each word transferred until the programmed burst count or the end of a 1 KB segment is reached, whichever comes first. Table 98. PCI Arbiter Register - PCIA Address = 0x80000280 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 reserved 2 1 0 p3 p2 p1 p0 r r 0000 0000 0000 0000 0000 0000 0000 1 Bit Number Mnemonic 3 p3 Round robin priority level for agent 3 2 p2 Round robin priority level for agent 2 1 p1 Round robin priority level for agent 1 0 p0 Round robin priority level for agent 0 DSU Registers 3 r/w r/w r/w 1 1 1 Description Caution: This section is provided for information purpose only. As its name clearly states, the Debug Support Unit is exclusively meant for debugging purpose. None of the DSU features shall ever be used in the final application where the DSU shall be turned into an inactive state (DSUEN, DSURX and DSUBRE tied to a permanent low level). Table 99. DSU Control Register - DSUC Address = 0x90000000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 3 2 ss pe ee eb dm de bz bx bd bn bs bw be ft bt dm te dcnt re dr r r/w w r/w r/w r/w r/w r r r 000 x xxxx xxxx 0 p p 0 0 lr 4 reserved 0 0 0 9 8 7 6 5 1 0 r/w r/w r/w r/w r/w r/w r/w r/w r/w r/w r/w r/w 0 p p 0 p 0 p p 0 0 x 0 132 4226H–AERO–08/11 Bit Number Mnemonic 28..20 dcnt Trace buffer delay counter 19 re Reset error mode If set, will clear the error mode in the processor. This is a write-only bit, always reads as a 0. 18 dr Debug mode response If set, the DSU communication link will send a response word when the processor enters debug mode 17 lr Link response If set, the DSU communication link will send a response word after an AHB transfer. 16 ss Single step If set, the processor will execute one instruction and then return to debug mode. 15 pe Processor error mode returns 1 on read when processor is in error mode else return 0. 14 ee Value of the DSUEN signal (read-only) 13 eb Value of the DSUBRE signal (read-only) 12 dm Debug mode If set, indicates the processor has entered debug mode (read-only). de Delay counter enable If set, the trace buffer delay counter will decrement for each stored trace. This bit is set automatically when an DSU breakpoint is hit and the delay counter is not equal to zero. 10 bz Break on error traps If set, will force the processor into debug mode on all but the following traps: priviledged_instruction, fpu_disabled, window_overflow, window_underflow, asynchronous_interrupt, ticc_trap. During reset, this bit is initialized with the value of the DSUBRE signal. 9 bx Break on trap If set, will force the processor into debug mode when any trap occurs. 8 bd Break on DSU breakpoint If set, will force the processor into debug mode when an DSU breakpoint is hit. During reset, this bit is initialized with the value of the DSUBRE signal. 7 bn Break now If set, will force the processor into debug mode provided bit 5 (bw) is also set. If cleared, the processor will resume execution. During reset, this bit is initialized with the value of the DSUBRE signal. 6 bs Break on S/W breakpoint If set, will force the processor into debug mode when a breakpoint instruction (ta 1) is executed. 5 bw Break on IU watchpoint If set, debug mode will be forced on a IU watchpoint (trap 0xb). During reset, this bit is initialized with the value of the DSUBRE signal. 11 133 Description AT697E 4226H–AERO–08/11 AT697E Bit Number Mnemonic Description 4 be Break on error If set, will force the processor into debug mode when the processor would have entered error mode. During reset, this bit is initialized with the value of the DSUBRE signal. 3 ft Freeze timers If set, the scaler in the timer unit will be stopped during debug mode to preserve the time for the software application. 2 bt Break on trace freeze If set, will generate a DSU break condition on trace freeze. 1 dm Delay counter mode In mixed tracing mode, setting this bit will cause the delay counter to decrement on AHB traces. If reset, the delay counter will decrement on instruction traces 0 te Trace enable. If set, the trace buffer is enabled. Table 100. Trace Buffer Control Register - TBCTL Address = 0x90000004 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 reserved r 000000 ta ti x 8 7 6 5 4 3 reserved bcnt reserved icnt r r/w r r/w 000 x xxxx xxxx 000 x xxxx xxxx r/w r/w x 9 Bit Number Mnemonic 25 ta Trace AHB enable 24 ti Trace instruction enable 20..12 bcnt AHB trace index counter 8..0 icnt Instruction trace index counter 2 1 0 2 1 0 Description Table 101. Time Tag Counter - TTC Address = 0x90000008 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 reserv ed cnt r r/w 00 00 0000 0000 0000 0000 0000 0000 0000 Bit Number Mnemonic 29..0 cnt 9 8 7 6 5 4 3 Description Counter value 134 4226H–AERO–08/11 Table 102. Break Address Register 1 - BAD1 Address = 0x90000010 7 6 5 4 3 2 adr r/w xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 31..2 adr Breakpoint address (32-bit aligned address, hence the 2 omitted LSB) 0 ex Enables break on executed instruction This is a write-only bit, always reads as a 0. 1 0 reserved 8 ex r 9 w 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 0 1 0 ld st Description Table 103. Break Mask Register 1 - BMA1 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 msk r/w xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Bit Number Mnemonic 31..2 msk 1 ld Enables break on AHB load 0 st Enables break on AHB write 0 r/w Address = 0x90000014 r/w 1 0 0 Description Breakpoint Address Mask (32-bit aligned address, hence the 2 omitted LSB) Table 104. Break Address Register 2 - BAD2 8 7 6 5 4 3 adr r/w xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 135 Bit Number Mnemonic 31..2 adr Breakpoint address (32-bit aligned address, hence the 2 omitted LSB) 0 ex Enables break on executed instruction This is a write-only bit, always reads as a 0. 2 reserved 9 ex r 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 w 0 Address = 0x90000018 0 Description AT697E 4226H–AERO–08/11 AT697E Table 105. Break Mask Register - BMA2 Address = 0x9000001C 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 msk 31..2 msk 1 ld Enables break on AHB load 0 st Enables break on AHB write st 0 r/w Mnemonic ld r/w 3 2 1 0 th ts dr r/w r/w r r r 0 1 1 0 3 2 1 0 bl ue n xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Bit Number 0 br r/w 1 0 Description Breakpoint Address Mask (32-bit aligned address, hence the 2 omitted LSB) Table 106. DSU UART Status Register - DSUUS 6 5 4 reserved fe reserved Address = 0x800000C4 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 ov r r/w r 0000 0000 0000 0000 0000 0000 0 0 0 0 Bit Number Mnemonic Description 6 fe Framing error Indicates that a framing error was detected. 4 ov Overrun Indicates that one or more character have been lost due to overrun. 2 th Transmitter hold register empty Indicates that the transmitter hold register is empty. 1 ts Transmitter shift register empty Indicates that the transmitter shift register is empty. 0 dr Data ready Indicates that new data is available in the receiver holding register. Table 107. DSU UART Control Register - DSUUC Address = 0x800000C8 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 reserved r 0000 0000 0000 0000 0000 0000 0000 00 9 8 7 6 5 4 r/w r/w 0 0 136 4226H–AERO–08/11 Bit Number Mnemonic 1 bl 0 uen Description Baud-rate locked Automatically set when the baud rate is locked. UART enable If set, enables both the receiver and the transmitter. Table 108. DSU UART Scaler Reload Register - DSUUR Address = 0x800000CC 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 8 7 reserved ab rv r r/w r/w 0000 0000 0000 00 6 5 4 3 2 1 0 11 1111 1111 1111 1111 Bit Number Mnemonic 17..16 ab Scaler reload value 15..0 rv Scaler reload value Notes: Description The following equations shall be used to calculate the scaler value or the baudrate value based on the clock frequency: scalerrv = baudrate = 137 9 sdclkfreq baudrate × 8 1 sdclkfreq 8 × ( scalerrv + 1) AT697E 4226H–AERO–08/11 AT697E Electrical Characteristics Absolute Maximum Ratings Operating Temperature ...................................................................... -55 °C to +125 °C Storage Temperature ......................................................................... -65 °C to +150 °C Maximum junction temperature (TJ) ...................................................................... 175°C Thermal resistance junction to case (Rjc) .............................................................. 3°C/W Voltage on VDD18 with respect to VSS18 .......................................... -0.3 V to + 2.0 V Voltage on VCC33 with respect to VSS33 .......................................... -0.3 V to + 4.0 V DC current VCC33 (VDD18) and VSS33 (VSS18) Pins ................................... 200 mA Input Voltage on I/O pins with respect to Ground ..................................... -0.5 V to +4 V DC current per I/O pins ....................................................................................... 40 mA ESD .................................................................................................................... 250 V Note: Stresses at or above those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. DC Characteristics Table 109. DC characteristics Symbol Parameter Min Typ Max Unit VCC33 I/O Power Supply Voltage 3.0 3.3 3.6 V VDD18 Core Power Supply Voltage 1.65 1.8 1.95 V IIL Low Level Input Leakage Current -1 1 uA Vin = VSS33 IILpu Low Level Input Pull-up Current 100 500 uA Vin = VSS33 IIH High Level Input Leakage Current -1 1 uA Vin = VCC33 (max) IIHpd High Level Input PulldownCurrent 100 500 uA Vin = VCC33 (max) IOZ High Impedance Current 100 500 uA Vin = VSS33 or VCC33 (max) 0.8 V 0.3*VC C33 V VIL CMOS VIL PCI Low Level Input Voltage VIH CMOS VIH PCI VOL High Level Input Voltage Low Level Output Voltage 2 V 0.7*VC C33 V 0.4 V Test Conditions VCC33 = VCC33(min) IOL = 2, 4, 8, 16mA 138 4226H–AERO–08/11 Symbol Parameter Min VOL PCI Low Level Output Voltage for PCI buffers VOH High Level Output Voltage VOH PCI High Level Output Voltage for PCI buffers ICCSb Standby Current Typ Max Unit Test Conditions 0.1*VC C33 V VCC33 = VCC33(min) IOL = 1.5mA VCC33 - 0.4 V VCC33 = VCC33(min) IOH = 2, 4, 8, 16mA 0.9*VC C33 V VCC33 = VCC33(min) IOH = 0.5mA mA VCC33 = VCC33(max) no clock active 5 Power Sequencing The AT697E is based on Atmel 0.18 µm CMOS process. As VDD18 and VCC33 power supplies are electrically isolated, there is no specified sequence in which the power rails may be activated or deactivated. Power Consumption The power dissipation is the sum of three basic contributions: P = PCore + PI/O + PPCI • PCore represents the contribution of the internal activity. • PI/O represents the contribution of the IO pads (except the PCI bus) and associated output load current . • PPCI represents the contribution of the PCI pads and associated output load current. Table 110. Power Dissipation Typical(1) Conditions Power (in W) Notes: Decoupling Capacitance Worst-Case(2) PCore PI/O PPCI PCore PI/O PPCI 0.6 0.2 0.1 0.8 0.3 0.2 1. Typical conditions: 25°C, 1.8V core, 3.3V I/O, 100 MHz, high I/O and core activity. 2. Worst-case conditions: -55°C, 1.95 V core, 3.6V I/O, 100 MHz, high I/O and core activity. Two main frequencies are involved in the AT697E processor: • up to 33 MHz for the PCI interface • up to 100 MHz for the processor clock (when not using the internal PLL) The following hypothesis is taken for the calculation of the decoupling capacitance: • 1.5 nH is issued from the connection of the capacitor to the PCB • 1.5 nH is issued from the capacitor intrinsic inductance Figure 50. Capacitor description 1.5nH 0.75nH capacitor 0.75nH PCB This hypothesis corresponds to a capacitor connected to two micro-vias on a PCB. 139 AT697E 4226H–AERO–08/11 AT697E The filter defined by the inductance and the decoupling capacitor shall be able to filter the characteristic frequencies of the application. Each frequency to filter is defined by: 1 fc = ------------------· 2 π L· C • L: the inductance equivalent to the global inductance on the VSS18/VDD18 and VSS33/VCC33 lines. • C: the decoupling capacitance. For a processor running at 100 MHz with a PCI interface at a characteristic frequency of 33 MHz and considering that power supply pins are grouped by multiple of four, the decoupling capacitance to set are: • 33 nF for 33 MHz decoupling • 3 nF for 100 MHz decoupling Pin Capacitance Parameter AC Characteristics Description MAX CIN Standard Input Capacitance 5 pF CIO Standard Input/Output Capacitance 5 pF CINp PCI Input Capacitance 7 pF CIOp PCI Input/Output Capacitance 7 pF The AT697E implements a single event transient (SET) protection mechanism. The influence of this protection is reflected by the timing figures presented in the following tables. The following tables show the timing figures for the natural and maximum skew conditions. Natural Skew Test Conditions • Natural Skew • Temperature range: -55°C to 125°C • Voltage range: – I/O: 3.3V ± 0.30V – Core: 1.8V ± 0.15V • Output load: 30 pF • Voltage threshold Test condition: Vcc/2 140 4226H–AERO–08/11 Table 111. AC Characteristics - Natural Skew Parameter Min (ns) t1 10 t1_p 40 t2 4.5 CLK low and high pulse width - PLL disabled t2_p 18 CLK low and high pulse width - PLL enabled t3 10 SDCLK period t4 2 t5 141 Max (ns) Reference edge (‘+’ for rising edge) Comment CLK period with PLL disabled 50 CLK period with PLL enabled 7 SDCLK output delay - PLL disabled 1.107 PLL setup time CLK RESET* low pulse width(1) t6 1*t3 t10 1.5 7 A[27:0] output delay SDCLK + t11 2 9 D[31:0] and CB[7:0] output delay SDCLK + t12 4.5 D[31:0] and CB[7:0] setup time SDCLK + t13 0 D[31:0] and CB[7:0] hold time during load/fetch SDCLK + SDCLK + t14 2 9 t15 2 7 OE*, READ and WRITE* output delay SDCLK + t16 2 6.5 ROMS*[1:0] output delay SDCLK + t17 2 9.5 RAMS*[4:0], RAMOE*[4:0] and RWE*[3:0] output delay SDCLK + t18 2 6 IOS* output delay SDCLK + t19 4 BRDY* setup time SDCLK + t20 0 BRDY* hold time SDCLK + t21 3 9 SDCAS* output delay SDCLK + t22 2 8.5 SDCS*[1:0], SDRAS*, SDWE* and SDDQM*[3:0] output delay SDCLK + t23 4 BEXC* setup time SDCLK + t24 0 BEXC* hold time SDCLK + t25 2.5 PIO[15:0] output delay SDCLK + t26 4.5 PIO[15:0] setup time SDCLK + t27 0 PIO[15:0] hold time during load 10 D[31:0] and CB[7:0] hold time during write (2) (2) t28 2.5 PIO[15:0] hold time during write t101 30 PCI_CLK period t102 14.5 PCI_CLK low and high pulse width t110 4 t111 12 SDCLK + SDCLK + A/D[31:0] and C/BE[3:0] output delay PCI_CLK + 6 A/D[31:0] and C/BE[3:0] setup time PCI_CLK + t112 0 A/D[31:0] and C/BE[3:0] hold time PCI_CLK + t113 4 FRAME*, PAR, PERR*, SERR*, STOP* and DEVSEL* output delay PCI_CLK + 11 AT697E 4226H–AERO–08/11 AT697E Parameter Min (ns) Max (ns) Comment Reference edge (‘+’ for rising edge) t114 4 11 IRDY* and TRDY* output delay PCI_CLK + t115 4 12 REQ* output delay PCI_CLK + t116 7 FRAME*, LOCK*, PAR, PERR*, SERR*, IDSEL, STOP* and DEVSEL* setup time PCI_CLK + t117 7 IRDY* and TRDY* setup time PCI_CLK + t118 6 GNT* setup time PCI_CLK + t119 0 FRAME*, LOCK*, PAR, PERR*, SERR*, IDSEL, STOP* and DEVSEL* hold time PCI_CLK + t120 0 IRDY* and TRDY* hold time PCI_CLK + t121 0 GNT* hold time PCI_CLK + Notes: 1. Although the processor is being reset asynchronously, this timing is a minimum requirement to guarantee a proper reset of the processor: a glitch of any shorter duration may lead to an unpredictable behavior. 2. The given timing indicates when the buffer is not driving any level on the bus. This timing is independent of the capacitive load. Maximum Skew Test Conditions • Maximum Skew Programmed • Temperature range: -55°C to 125°C • Voltage range: – I/O: 3.3V ± 0.30V – Core: 1.8V ± 0.15V • Output load: 30pF • Voltage threshold Test condition: Vcc/2 142 4226H–AERO–08/11 Table 112. AC Characteristics - Maximum Skew Parameter Min (ns) t1 12 t1_p 48 t2 5.4 CLK low and high pulse width - PLL disabled t2_p 21 CLK low and high pulse width - PLL enabled t3 12 SDCLK period t4 2 t5 143 Max (ns) Reference edge (‘+’ for rising edge) Comment CLK period with PLL disabled 50 CLK period with PLL enabled 7 SDCLK output delay - PLL disabled 1.107 PLL setup time CLK RESET* low pulse width(1) t6 1*t3 t10 1.5 8 A[27:0] output delay SDCLK + t11 2 11 D[31:0] and CB[7:0] output delay SDCLK + t12 4.5 D[31:0] and CB[7:0] setup time SDCLK + t13 0 D[31:0] and CB[7:0] hold time SDCLK + t14 2 11 t15 2 8.5 OE*, READ and WRITE* output delay SDCLK + t16 2 8 ROMS*[1:0] output delay SDCLK + t17 2 10 RAMS*[4:0], RAMOE*[4:0] and RWE*[3:0] output delay SDCLK + t18 2 8 IOS* output delay SDCLK + t19 3 BRDY* setup time SDCLK + t20 0 BRDY* hold time SDCLK + t21 3 10 SDCAS* output delay SDCLK + t22 2 9.5 SDCS*[1:0], SDRAS*, SDWE* and SDDQM[3:0] output delay SDCLK + t23 4 BEXC* setup time SDCLK + t24 0 BEXC* hold time SDCLK + t25 2.5 PIO[15:0] output delay SDCLK + t26 4.5 PIO[15:0] setup time SDCLK + t27 0 PIO[15:0] hold time SDCLK + t28 2.5 PIO[15:0] hold time during write(2) SDCLK + t101 30 PCI_CLK period t102 14.5 PCI_CLK low and high pulse width t110 4 t111 11 13 D[31:0] and CB[7:0] hold time during write SDCLK + (2) A/D[31:0] and C/BE[3:0] output delay PCI_CLK + 6 A/D[31:0] and C/BE[3:0] setup time PCI_CLK + t112 1 A/D[31:0] and C/BE[3:0] hold time PCI_CLK + t113 4 12 FRAME*, PAR, PERR*, SERR*, STOP* and DEVSEL* output delay PCI_CLK + t114 4 12.5 IRDY* and TRDY* output delay PCI_CLK + AT697E 4226H–AERO–08/11 AT697E Parameter Min (ns) Max (ns) Comment Reference edge (‘+’ for rising edge) t115 4 13 REQ* output delay PCI_CLK + t116 7.5 FRAME*, LOCK*, PAR, PERR*, SERR*, IDSEL, STOP* and DEVSEL* setup time PCI_CLK + t117 7.5 IRDY* and TRDY* setup time PCI_CLK + t118 6 GNT* setup time PCI_CLK + t119 0.5 FRAME*, PCI_LOCK*, PAR, PERR*, SERR*, IDSEL, STOP* and DEVSEL* hold time PCI_CLK + t120 0.5 IRDY* and TRDY* hold time PCI_CLK + t121 0.5 GNT* hold time PCI_CLK + Notes: Timing Derating 1. Although the processor is being reset asynchronously, this timing is a minimum requirement to guarantee a proper reset of the processor: a glitch of any shorter duration may lead to an unpredictable behavior. 2. The given timing applies when the buffer is not driving any level on the bus. This timing is independent of the capacitive load. The timing figures change with the capacitance load on each pin, . The following table summarizes the timing derating versus the capacitance load in the whole process / voltage / temperature range. 144 4226H–AERO–08/11 Table 113. Timing Derating (ns/pF above 30pF) Signal 145 Min. Max. A[27:0] 0.024 0.051 A/D[31:0] 0.017 0.037 AGNT*[3:0] 0.017 0.037 CB[7:0] 0.024 0.053 C/BE*[3:0] 0.017 0.037 D[31:0] 0.024 0.053 DEVSEL* 0.017 0.037 DSUACT 0.095 0.208 DSUTX 0.095 0.208 ERROR* 0.047 0.103 FRAME* 0.017 0.037 IOS* 0.012 0.026 IRDY* 0.017 0.037 LOCK 0.047 0.103 OE* 0.012 0.026 PAR 0.017 0.037 PCI_LOCK* 0.017 0.037 PERR* 0.017 0.037 PIO[15:0] 0.048 0.106 RAMOE*[4:0] 0.047 0.103 RAMS*[4:0] 0.047 0.103 READ 0.012 0.026 REQ* 0.017 0.037 ROMS*[1:0] 0.012 0.026 RWE*[3:0] 0.012 0.026 SDCAS* 0.047 0.103 SDCLK 0.012 0.026 SDCS*[1:0] 0.047 0.103 SDDQM[3:0] 0.047 0.103 SDRAS* 0.047 0.103 SDWE* 0.047 0.103 SERR* 0.017 0.037 STOP* 0.017 0.037 TDO 0.095 0.208 TRDY* 0.017 0.037 AT697E 4226H–AERO–08/11 AT697E Signal Note: Min. Max. WDOG* 0.047 0.103 WRITE* 0.012 0.026 The values provided in this table are not tested, they are for information only. Timing Diagrams Diagram List • Reset Sequence • Clock Input without PLL • Clock Input with PLL • Fetch, Read and Write from/to 32-bit PROM - 0 wait-states • Fetch, Read and Write from/to 32-bit PROM - 2n wait-states • Fetch from 8-bit PROM with EDAC disabled - 2n wait-states • Word Write to 8-bit PROM with EDAC disabled - 2n wait-states • Byte and Half-Word Write to 8-bit PROM with EDAC disabled - 2n wait-states • Fetch from 8-bit PROM with EDAC enabled - 2n wait-states • Fetch from 16-bit PROM - 2n wait-states • Fetch, Read and Write from/to 32-bit SRAM - 0 wait-states • Fetch, Read and Write from/to 32-bit SRAM - n wait-states • Fetch, Read and Write from/to 32-bit SRAM with Instruction Burst - 0 wait-states • Fetch, Read and Write from/to 32-bit SRAM with Instruction Burst - n wait-states • Burst of SRAM Fetches with Instruction Cache and Burst enabled - 0 wait-states • Burst of SRAM Fetches with Instruction Cache and Burst enabled - n wait-states • SDRAM Read (or Fetch) with Precharge - Burst Length = 1; CL = 3 • SDRAM Write with Precharge - Burst Length = 1; CL = 3 • Fetch from ROM, Read and Write from/to 32-bit I/O - 0 wait-states • Fetch from ROM, Read and Write from/to 32-bit I/O - n wait-states • Fetch from ROM, Read and Write from/to 32-bit I/O - n wait-states + BRDY* Caution: The timing diagrams with fetch, read and/or write operations were generated using specific instruction sequences. Considering the complex nature of the interactions within the processor (IU pipeline, memory-controller, instruction cache...), the signals waveforms found in a final application may possibly exhibit slight functional cycle variations over the proposed timing diagrams. Source code for the timing diagrams is available on request. Reset Figure 51. Reset Sequence t6 RESET SDCLK 5th SDCLK rising edge MODE RESET RESET EXECUTE 146 4226H–AERO–08/11 Clock Figure 52. Clock Input without PLL t1 t2 t2 CLK BYPASS t4 t4 t4 t4 t4 t4 t4 SDCLK LOCK RESET Figure 53. Clock Input with PLL t1_p t2_p t2_p CLK BYPASS t3 SDCLK t5 LOCK RESET 147 AT697E 4226H–AERO–08/11 AT697E PROM Figure 54. Fetch, Read and Write from 32-bit PROM - 0 wait-states Fetch Instruction 1 Read Data Fetch Instruction 2 Write Data SDCLK t10 t10 A[27:0] Inst 1 Addr t10 t10 Data R Addr Inst 2 Addr t16 t16 t16 t16 t16 t16 t15 t15 t15 t15 t15 t15 Data W Addr t16 t16 ROMS*[x] OE* t15 t15 WRITE* t15 t15 t15 READ t12 D[31:0] t13 Inst 1 t12 CB[7:0] t12 t12 Data R t13 Inst 1 t13 t12 Inst 2 t13 Data R t13 t12 t14 Data W t13 Inst 2 t11 t11 t14 Data W 148 4226H–AERO–08/11 Figure 55. Fetch, Read and Write from 32-bit PROM - 2n wait-states Fetch Instruction 1 Read Data 2n WS Fetch Instruction 2 2n WS Write Data 2n WS 2n WS SDCLK t10 A[27:0] t10 Inst 1 Addr Inst 1 Addr t10 Rd Addr t10 Rd Addr Inst 2 Addr Inst 2 Addr t16 t16 t16 t16 t16 t16 t15 t15 t15 t15 t15 t15 Wr Addr Wr Addr t16 t16 ROMS*[x] OE* t15 t15 t11 t14 WRITE* t15 t15 READ t12 D[31:0] t13 t12 Inst 1 t12 CB[7:0] t13 t12 Data R t13 t12 Inst 1 t13 Inst 2 t13 t12 Data R Data W t13 Data W t11 Inst 2 t14 Data W Data W Figure 56. Fetch from 8-bit PROM with EDAC disabled - 2n wait-states Inst. Fetch Byte 0 Inst. Fetch Byte 1 Inst. Fetch Byte 2 Inst. Fetch Byte 3 2n WS 2n WS 2n WS 2n WS Inst. Decode/Execute SDCLK t10 A[27:0] Inst. Addr+0 t10 Inst. Addr+0 Inst. Addr+1 t10 Inst. Addr+1 Inst. Addr+2 t10 Inst. Addr+2 Inst. Addr+3 t10 Inst. Addr+3 Inst. Addr+0 t16 t16 t15 t15 ROMS*[x] OE* WRITE* t15 READ t12 D[31:24] t13 Byte 0 t12 t13 Byte 1 t12 t13 Byte 2 t12 t13 Byte 3 D[23:0] CB[7:0] 149 AT697E 4226H–AERO–08/11 AT697E Figure 57. Word Write to 8-bit PROM with EDAC disabled - 2n wait-states Word Store Byte 0 Word Store Byte 1 2n WS Word Store Byte 2 2n WS Word Store Byte 3 2n WS 2n WS SDCLK t10 A[27:0] t10 Word Addr+0 Word Addr+0 t10 Word Addr+1 Word Addr+1 t10 Word Addr+2 Word Addr+2 Word Addr+3 Word Addr+3 t16 t16 ROMS*[x] OE* t15 t15 t15 t15 t15 t15 t15 t15 WRITE* t15 READ t11 D[31:24] t11 Byte 0 Byte 0 t11 Byte 1 Byte 1 t11 Byte 2 Byte 2 t14 Byte 3 Byte 3 D[23:0] CB[7:0] 150 4226H–AERO–08/11 Figure 58. Byte and Half-Word Write to 8-bit PROM with EDAC disabled - 2n wait-states SRAM Fetch (0 ws) PROM Store Byte SRAM Fetch (0 ws) PROM Store Half-Word 2n WS 2n WS 2n WS SDCLK t10 t10 A[27:0] Inst 1 Addr t10 Byte Addr t10 Byte Addr Inst 2 Addr t17 t17 t17 t17 t17 t17 t17 t17 t10 Half Addr+0 Half Addr+0 Half Addr+1 Half Addr+1 RAMS*[x] RAMOE*[x] t17 t17 t17 t17 t17 t17 RWE*[3:0] t16 t16 t16 t16 ROMS*[x] t15 t15 t15 t15 OE* t15 t15 t15 t15 t15 t15 WRITE* t15 t15 t15 t15 READ t12 D[31:24] t13 Inst 1 t12 D[23:0] 151 t11 %r[7:0] t13 Inst 1 t14 t12 %r[7:0] t13 Inst 2 t12 t11 %r[15:8] t11 %r[15:8] t11 %r[7:0] %r[7:0] t13 Inst 2 AT697E 4226H–AERO–08/11 AT697E Figure 59. Fetch from 8-bit PROM with EDAC enabled - 2n wait-states Ins. Fetch Byte 0 Ins. Fetch Byte 1 Ins. Fetch Byte 2 Ins. Fetch Byte 3 Ins. Fetch CB 2n WS 2n WS 2n WS 2n WS 2n WS Decode/Execute SDCLK t10 A[27:0] t10 Ins. Adr+0 Ins. Adr+0 Ins. Adr+1 t10 Ins. Adr+1 t10 Ins. Adr+2 Ins. Adr+2 Ins. Adr+3 t10 Ins. Adr+3 t10 Ins. AdrCB Ins. AdrCB Ins. Adr+0 t16 t16 t15 t15 ROMS*[x] OE* WRITE* t15 READ t12 D[31:24] t13 t12 Byte 0 t13 t12 Byte 1 t13 t12 Byte 2 t13 t12 Byte 3 t13 Ckbits D[23:0] CB[7:0] Figure 60. Fetch from 16-bit PROM - 2n wait-states Inst. Fetch Half-Word 0 Inst. Fetch Half-Word 1 2n WS 2n WS Inst. Decode/Execute SDCLK t10 A[27:0] t10 Inst. Addr+0 Inst. Addr+0 t10 Inst. Addr+2 Inst. Addr+2 Inst. Addr+0 t16 t16 t15 t15 ROMS*[x] OE* WRITE* t15 READ t12 D[31:16] t13 Half-Word 0 t12 t13 Half-Word 1 D[15:0] CB[7:0] 152 4226H–AERO–08/11 SRAM Figure 61. Fetch, Read and Write from/to 32-bit SRAM - 0 wait-states Fetch Instruction 1 Read Data Fetch Instruction 2 Write Data SDCLK t10 t10 A[27:0] Inst 1 Addr t10 t10 Data R Addr Inst 2 Addr t17 t17 t17 t17 t17 t17 t17 t17 t17 t17 t17 t17 Data W Addr t17 t17 RAMS*[x] RAMOE*[x] t17 t17 t11 t14 RWE*[3:0] t12 D[31:0] t13 t12 Inst 1 t12 CB[7:0] t12 Data R t13 t12 Inst 1 t15 t13 Inst 2 t13 t12 Data R t15 t15 t13 Data W t13 t11 Inst 2 t15 t15 t14 Data W t15 OE* t15 t15 WRITE* t15 t15 t15 READ 153 AT697E 4226H–AERO–08/11 AT697E Figure 62. Fetch, Read and Write from/to 32-bit SRAM - n wait-states Fetch Instruction 1 Read Data n WS Fetch Instruction 2 n WS Write Data n WS n WS SDCLK t10 A[27:0] t10 Inst 1 Addr Inst 1 Addr t10 Data R Addr t10 Inst 2 Addr Inst 2 Addr t17 t17 t17 t17 t17 t17 t17 t17 t17 t17 t17 t17 Data W Addr t17 Data W Addr t17 RAMS*[x] RAMOE*[x] t17 t17 t11 t14 RWE*[3:0] t12 D[31:0] t13 t12 Inst 1 t12 CB[7:0] t12 Data R t13 t12 Inst 1 t15 t13 Inst 2 t13 t12 Data R t15 t15 t13 Data W t13 t11 Inst 2 t15 t15 t14 Data W t15 OE* t15 t15 WRITE* t15 t15 t15 READ 154 4226H–AERO–08/11 Figure 63. Fetch, Read and Write from/to 32-bit SRAM with Instruction Burst - 0 wait-states Burst Fetch Instructions Read Data Dummy cycle Write Data SDCLK 0<x t10 A[27:0] t10 Inst Addr+0 t10 Inst Addr+x t10 t10 Data R Addr Data W Addr t16 t17 t17 t17 t15 t17 t17 t17 t17 t17 RAMS*[x] RAMOE*[x] t17 t17 t11 t14 RWE*[3:0] t12 D[31:0] t13 t12 Inst 0 t12 CB[7:0] t15 t12 Inst x t13 Inst 0 t13 t12 t13 Data R t13 t12 Inst x Data W t13 t11 Data R t15 t15 t14 Data W t15 OE* t15 t15 WRITE* t15 t15 t15 READ 155 AT697E 4226H–AERO–08/11 AT697E Figure 64. Fetch, Read and Write from/to 32-bit SRAM with Instruction Burst - n wait-states Burst Fetch Instructions Read Data n WS Dummy cycle Write Data n WS n WS SDCLK 0<x t10 A[27:0] Inst Addr+0 t10 Inst Addr+0 t10 Inst Addr+x t10 Data R Addr t10 Data R Addr Data W Addr t16 t17 t17 t17 t15 t17 t17 t17 Data W Addr t17 t17 RAMS*[x] RAMOE*[x] t17 t17 t11 t14 RWE*[3:0] t12 D[31:0] t13 t12 Inst 0 t12 CB[7:0] t15 t12 Inst x t13 Inst 0 t13 t12 t13 Data R t13 t12 Inst x Data W t13 t11 Data R t15 t15 Data W t14 Data W Data W t15 OE* t15 t15 WRITE* t15 t15 t15 READ 156 4226H–AERO–08/11 Figure 65. Burst of SRAM Fetches with Instruction Cache and Burst enabled - 0 wait-states Line Burst Fetch (8 instructions) Finish Pipeline Decode & Execute 4 cycles min. + add. x/r/w cycles SDCLK 0<x<7 t10 A[27:0] t10 t10 Line Addr+0 Line Addr+x Line Addr+7 t16 t16 t15 t15 Line Addr+7 RAMS*[x] RAMOE*[x] RWE*[3:0] t12 D[31:0] t13 t12 Inst 0 t12 CB[7:0] t13 t12 Inst x t13 t12 Inst 0 t13 Inst 7 t13 t12 Inst x t13 Inst 7 Figure 66. Burst of SRAM Fetches with Instruction Cache and Burst enabled - n wait-states Line Burst Fetch (8 instructions) n WS Finish Pipeline Decode & Execute n WS n WS 4 cycles min. + add. x/r/w cycles SDCLK 0<x<7 t10 A[27:0] Line Addr+0 t10 Line Addr+0 Line Addr+x t10 Line Addr+x Line Addr+7 Line Addr+7 t16 t16 t15 t15 RAMS*[x] RAMOE*[x] RWE*[3:0] t12 D[31:0] t13 Inst 0 t12 CB[7:0] 157 t12 t12 Inst x t13 Inst 0 t13 t12 Inst 7 t13 Inst x t13 t12 t13 Inst 7 AT697E 4226H–AERO–08/11 AT697E SDRAM Figure 67. SDRAM Read (or Fetch) with Precharge - Burst length = 1; CL = 3 COMMAND ACTIVE READ PRECHARGE tRCD tCAS SDCLK t10 t10 A[16:15] BANK t10 t10 A[14:2] t10 ROW COLUMN t22 t22 SDCS*[x] t22 t22 t22 t22 t22 t22 SDRAS* t21 t21 SDCAS* SDWE* t22 t22 SDDQM[3:0] t12 D[31:0] t13 Data R t12 CB[7:0] t13 Data R OE* READ WRITE* 158 4226H–AERO–08/11 Figure 68. SDRAM Write with Precharge - Burst length = 1; CL = 3 COMMAND ACTIVE WRITE PRECHARGE tRCD SDCLK t10 t10 A[16:15] BANK t10 t10 A[14:2] t10 ROW COLUMN t22 t22 SDCS*[x] t22 t22 t22 t22 t22 t22 SDRAS* t21 t21 t22 t22 t22 t22 SDCAS* SDWE* SDDQM[3:0] t11 D[31:0] t14 Data W t11 CB[7:0] t14 Data W OE* t15 t15 READ WRITE* 159 AT697E 4226H–AERO–08/11 AT697E I/O Figure 69. Fetch from ROM, Read and Write from/to 32-bit I/O - 0 wait-states ROM Fetch Instruction 1 IO Read Data ROM Fetch Instruction 2 IO Write Data SDCLK t10 t10 A[27:0] Inst 1 Addr t16 t10 t10 Data R Addr Inst 2 Addr t16 t16 Data W Addr t16 ROMS*[x] t18 t18 t15 t15 t18 t18 t15 t15 IOS* t15 t15 t15 t15 OE* WRITE* t15 t15 t15 READ t12 D[31:0] t13 Inst 1 t12 CB[7:0] t13 t12 Data R t13 Inst 1 t12 t13 Inst 2 t12 t14 Data W t13 Inst 2 t11 t11 t14 Data W 160 4226H–AERO–08/11 Figure 70. Fetch from ROM, Read and Write from/to 32-bit I/O - n wait-states ROM Fetch Instruction 1 IO Read Data ROM Fetch Instruction 2 IO Write Data n WS n WS SDCLK t10 t10 A[27:0] Inst 1 Addr t16 t10 Data R Addr t10 Data R Addr Inst 2 Addr t16 t16 Data W Addr Data W Addr t16 ROMS*[x] t18 t18 t15 t15 t18 t18 t15 t15 IOS* t15 t15 t15 t15 OE* WRITE* t15 t15 t15 READ t12 D[31:0] t13 Inst 1 t12 CB[7:0] 161 t12 t13 t12 Data R t13 Inst 1 t13 Inst 2 t12 t14 Data W t13 Inst 2 t11 t11 t14 Data W AT697E 4226H–AERO–08/11 AT697E Figure 71. Fetch from ROM, Read and Write from/to 32-bit I/O - n wait-states + BRDY* ROM Fetch Instruction 1 IO Read Data n WS ROM Fetch Instruction 2 IO Write Data brdy n WS brdy SDCLK t10 t10 A[27:0] Inst 1 Addr t16 t10 Data R Addr t10 Data R Addr Inst 2 Addr t16 t16 Data W Addr Data W Addr t16 ROMS*[x] t18 t18 t15 t15 t18 t18 t15 t15 IOS* t15 t15 t15 t15 OE* WRITE* t15 t15 t15 READ t19 t20 t19 t20 BRDY* t12 D[31:0] t13 Inst 1 t12 CB[7:0] t13 t12 Data R t13 Inst 1 t12 t13 Inst 2 t12 Data W t13 Inst 2 t11 t14 Data W t11 Data W t14 Data W 162 4226H–AERO–08/11 Ordering Information Table 114. Possible Order Entries 163 Part-Number Supply Voltage (core / IOs) Temperature Range Maximum Speed (MHz) Packaging Quality Flow AT697E-2H-E 1.8V / 3.3V +25°C 100 MCGA349 Engineering Samples 5962-0722401QXB 1.8V / 3.3V -55°C - +125°C 100 MCGA349 QMLQ AT697E-2H-SV 1.8V / 3.3V -55°C - +125°C 100 MCGA349 Space level B AT697E-KG-E 1.8V / 3.3V +25°C 100 MQFP256 Engineering Samples AT697E-KG-MQ 1.8V / 3.3V -55°C - +125°C 100 MQFP256 Military Level B AT697E-KG-SV 1.8V / 3.3V -55°C - +125°C 100 MQFP256 Space level B AT697E 4226H–AERO–08/11 AT697E Datasheet Revision History Changes from Rev. C 1. Update of electrical characteristics and timing diagrams. 08/2005 to Rev. D 02/2006 Rev. D 02/2006 to Rev. E 09/2006 1. Timing chronograms review for I/O space and ROM space. Rev. F 02/2009 1. Add MQFP256 pinout. 2. Update of electrical characteristics and timing diagrams. 2. Part number modification. Rev. G 08/2011 1. Overall rework of the datasheet. 164 4226H–AERO–08/11 Headquarters International Atmel Corporation 2325 Orchard Parkway San Jose, CA 95131 USA Tel: 1(408) 441-0311 Fax: 1(408) 487-2600 Atmel Asia Unit 1-5 & 16, 19/F BEA Tower, Millennium City 5 418 Kwun Tong Road Kwun Tong, Kowloon Hong Kong Tel: (852) 2245-6100 Fax: (852) 2722-1369 Atmel Europe Le Krebs 8, Rue Jean-Pierre Timbaud BP 309 78054 Saint-Quentin-enYvelines Cedex France Tel: (33) 1-30-60-70-00 Fax: (33) 1-30-60-71-11 Atmel Japan 9F, Tonetsu Shinkawa Bldg. 1-24-8 Shinkawa Chuo-ku, Tokyo 104-0033 Japan Tel: (81) 3-3523-3551 Fax: (81) 3-3523-7581 Product Contact Web Site www.atmel.com Technical Support [email protected] Litterature Requests www.atmel.com/litterature Sales Contact www.atmel.com/contacts Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMEL’S TERMS AND CONDITIONS OF SALE LOCATED ON ATMEL’S WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel’s products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life. © 2011 Atmel Corporation. All rights reserved. Atmel ®, logo and combinations thereof, AVR ® and others are registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of others. 4226H–AERO–08/11