CoreAI Product Summary Synthesis and Simulation Support Intended Use • Analog Interface Control Using a Microprocessor/ Microcontroller and an Actel FusionTM Device • Voltage, Current, and Temperature Monitoring Using a Microprocessor/Microcontroller and an Actel Fusion Device ADC Conversions Controlled by MCU/MPU Writes • AMBA APB Slave Interface (8- or 16-Bit Data Widths Supported) • 14 Maskable Interrupt Sources • Internal Clock Divider for Generating Analog Configuration MUX Clock • Optional Read FIFO Stores up to 256 ADC Conversion Results • Analog Configuration MUX Can Be Configured by SmartGen Fusion (including M7 devices) Evaluation Version – • – • • Simulation: OVI-Compliant Verilog Simulators and Vital-Compliant VHDL Simulators • Comprehensive VHDL and Verilog Testbenches • User Can Easily Modify User Testbench Using Existing Format to Add Custom Tests Compiled RTL Simulation Model Fully Supported in Actel Libero® Integrated Design Environment (IDE) Netlist Version – • Synthesis: Synplicity®, Synopsys® (Design Compiler / FPGA Compiler / FPGA Express), Exemplar General Description ................................................... 1 Functional Block Descriptions ................................... 3 CoreAI Device Requirements ..................................... 3 CoreAI Verification ..................................................... 3 I/O Signal Descriptions ............................................... 4 Parameter/Generic Descriptions ................................ 6 Internal CoreAI Registers ......................................... 10 ACM Interface .......................................................... 18 RTC Operation .......................................................... 21 ADC Operation ......................................................... 22 Interrupt Logic ......................................................... 23 Ordering Information .............................................. 24 Datasheet Categories ............................................... 24 Core Deliverables • • Contents Supported Families • Directly Supported within Actel Libero IDE and CoreConsole Core Verification Key Features • • General Description Structural Verilog and VHDL Netlists (with and without I/O Pads) Compatible with Actel Designer Software Place-and-Route Tool Compiled RTL Simulation Supported in Actel Libero IDE Model CoreAI (Analog Interface) allows for simple control of the analog peripherals within the Fusion family of Actel devices. Control may be implemented with an internal or external microprocessor or microcontroller (such as Core8051 or CoreMP7), or with user-created custom logic within the FPGA fabric. The industry-standard AMBA (Advanced Microcontroller Bus Architecture) APB (Advanced Peripheral Bus) slave interface is used as the primary control mechanism within CoreAI. Fully RTL Version – Verilog and VHDL Core Source Code – Core Synthesis Scripts Testbench (Verilog and VHDL) CoreAI instantiates the AB (Analog Block) macro, as shown in Figure 1 on page 2. The AB macro includes the March 2006 © 2006 Actel Corporation v 2 .0 1 CoreAI ACM (Analog Configuration MUX) interface, Analog Quads, and RTC (Real-Time Counter). The ACM interface, within the AB macro, is used to control configuration of the Analog Quads and RTC in the Fusion device. CoreAI generates the control signals used by the ACM, including its clock signal, which is generated by an internal clock divider. The ACM clock divider is used to ensure that the ACM interface is clocked at a frequency less than or equal to 10 MHz (refer to "ACM Interface" on page 18 for details). For more details on the silicon features of the AB macro, such as the Analog Quads, RTC, or ACM, refer to the Fusion datasheet. Several aspects of CoreAI can be configured using toplevel parameters (Verilog) or generics (VHDL). For a detailed description of the parameters/generics, refer to Table 4 on page 6. The CoreAI block diagram is shown in Figure 1. A typical application using CoreAI is shown in Figure 2. CoreAI APB I/F µProcessor I/F Logic Interrupt ACM I/F Logic ADC I/F Logic Analog Inputs Analog Outputs RTC Inputs AB (Analog Block) Analog Inputs Used as Digital Inputs RTC Outputs Figure 1 • CoreAI Block Diagram Fusion Device CoreMP7 CoreAI CorePWM Figure 2 • CoreAI Typical Application 2 v2.0 Temperature Monitor Bipolar Transistor CoreAI Functional Block Descriptions maskable interrupt. The ACM interface block writes configuration data into the AB macro to control Analog Quad and RTC settings. The ADC interface block sends control data to and receives status information from the ADC. CoreAI, shown in Figure 1 on page 2, consists of the microprocessor interface logic, ACM interface logic, and ADC interface logic blocks. The microprocessor interface logic implements APB slave logic and generates a CoreAI Device Requirements CoreAI has been implemented in the Actel Fusion device family. A summary of the data for CoreAI is listed in Table 1 and Table 2. Table 1 • CoreAI Device Utilization and Performance (minimum configuration) Cells or Tiles Family Fusion Utilization Sequential Combinatorial Total Device Total Performance 45 105 150 AFS090 7% 150 MHz Note: Data in this table were achieved using typical synthesis and layout settings. Top-level parameters/generics that differ from the default values were set as follows: FIXED_VAREFSEL = 1, FIXED_VAREFSEL_VAL = 0, FIXED_MODE = 1, FIXED_MODE_VAL = 0, FIXED_TVC = 1, FIXED_TVC_VAL = 0, FIXED_STC = 1, FIXED_STC_VAL = 0, CFG_ACx = 512, CFG_ATx = 512, DISABLE_TMSTBINT = 1, CFG_GDx = 768, ACTLOW_INTERRUPT = 0, DISABLE_INTERRUPT = 1, APB_16BIT_DATA = 1. Table 2 • CoreAI Device Utilization and Performance (maximum configuration) Family Fusion Cells or Tiles Utilization Performance Sequential Combinatorial Total FIFO Device Total 130 330 460 1 AFS090 20% 133 MHz Note: Data in this table were achieved using typical synthesis and layout settings. Top-level parameters/generics that differ from the default values were set as follows: ACM_CLK_DIV = 4, USE_RTC = 1, USE_RDFIFO = 1, USE_RDFIFO_AEVAL = 16, USE_RDFIFO_AFVAL = 240. CoreAI Verification The comprehensive simulation testbench verifies correct operation of the CoreAI macro. The testbench applies several tests to the CoreAI macro, including the following: • Voltage monitor, current monitor, and temperature monitor tests • RTC tests • Gate-driver control tests Using the supplied testbench as a guide, the user can alter the verification of the core by adding custom tests or removing existing tests. v2.0 3 CoreAI I/O Signal Descriptions The port signals for the CoreAI macro are defined in Table 3 and illustrated in Figure 3. CoreAI has 120 I/O signals. Note that vector notation is used in Figure 3 for the AV, AC, AT, ATRETURN, DDGDON, DAVOUT, DACOUT, DATOUT, AG, and RTCXTLMODE ports; however, these ports are actually split into individual single-bit ports, as described in Table 3. For example, there are two individual output ports, RTCXTLMODE1 and RTCXTLMODE0, rather than one vectored output port RTCXTLMODE[1:0]. PRDATA[7:0] INTERRUPT DAVOUT[9:0] DACOUT[9:0] DATOUT[9:0] AG[9:0] RTCXTLMODE[1:0] RTCXTLSEL RTCMATCH RTCPSMMATCH PCLK PRESETN PADDR[4:0] PSEL PENABLE PWRITE PWDATA[7:0] VAREF GNDREF AV[9:0] AC[9:0] AT[9:0] ATRETURN[4:0] DDGDON[9:0] RTCCLK Figure 3 • CoreAI I/O Signal Diagram Table 3 • CoreAI I/O Signal Descriptions Name Type Description PCLK Input APB System Clock: reference clock for all internal logic PRESETN Input APB active-low asynchronous reset PADDR[4:0] Input APB address bus – This port is used to address internal CoreAI registers. PSEL Input APB Slave Select – This signal selects CoreAI for reads or writes. PENABLE Input APB Strobe – This signal indicates the second cycle of an APB transfer. PWRITE Input APB Write/Read – If high, a write will occur when an APB transfer to CoreAI takes place; if low, a read from CoreAI will take place. PWDATA[15:0] Input APB write data – If the APB_16BIT_DATA parameter/generic is set to 1, all 16 bits are used; if the APB_16BIT_DATA parameter/generic is set to 0, only the lower 8 bits, PWDATA[7:0], are used (in this case, PWDATA[15:8] should be tied to static high or low values). PRDATA[15:0] Output APB read data – If the APB_16BIT_DATA parameter/generic is set to 1, all 16 bits are used; if the APB_16BIT_DATA parameter/generic is set to 0, only the lower 8 bits, PRDATA[7:0], are used (in this case, PRDATA[15:8] can be left unconnected). INTERRUPT Output Microprocessor interrupt output – This interrupt signal is generated from 14 possible interrupt sources, each of which can be masked or enabled via the INTENABLE register. The polarity of this output is controlled via the ACTLOW_INTERRUPT parameter/generic. APB Interface Note: All signals active high (logic 1) unless otherwise noted. 4 v2.0 CoreAI Table 3 • CoreAI I/O Signal Descriptions (Continued) Name Type Description Analog Interface VAREF Input or Output Voltage reference – If using the internal voltage reference, this signal will be an output; if using an external voltage reference, this signal will be an input for this reference (see the FIXED_VAREFSEL and FIXED_VAREFSEL_VAL parameters/generics). GNDREF Input Ground reference – If external voltage reference is used, this signal must be connected to the ground for the reference; otherwise this should be connected to digital ground (logic 0). AV9, AV8, AV7, AV6, AV5, AV4, AV3, AV2, AV1, AV0 Input Analog Voltage Monitor inputs – These signals correspond to the AVx voltage monitor inputs (AV9 through AV0) of the AB macro. Note: Unused AVx inputs need to be disabled with the CFG_AVx parameters/generics and connected to logic 0. AC9, AC8, AC7, AC6, AC5, AC4, AC3, AC2, AC1, AC0 Input Analog Current Monitor inputs – These signals correspond to the ACx current monitor inputs (AC9 through AC0) of the AB macro. Note: Unused ACx inputs need to be disabled with the CFG_ACx parameters/generics and connected to logic 0. AT9, AT8, AT7, AT6, AT5, AT4, AT3, AT2, AT1, AT0 Input Analog Temperature Monitor inputs – These signals correspond to the ATx temperature monitor inputs (AT9 through AT0) of the AB macro. Note: Unused ATx inputs need to be disabled with the CFG_ATx parameters/generics and connected to logic 0. ATRETURN4, ATRETURN3, ATRETURN2, ATRETURN1, ATRETURN0] Input Shared Analog Temperature Monitor Returns – These signals correspond to the shared returns for the temperature monitor inputs (ATRETURN89 through ATRETURN01) of the AB macro. DAVOUT9, DAVOUT8, DAVOUT7, DAVOUT6, DAVOUT5, DAVOUT4, DAVOUT3, DAVOUT2, DAVOUT1, DAVOUT0 Output Digital AV outputs – These signals correspond to the digital AV outputs (DAVOUT9 through DAVOUT0) of the AB macro. If any of the AVx inputs are configured as digital inputs rather than analog inputs, their corresponding buffered digital signals are put out on these ports. DACOUT9, DACOUT8, DACOUT7, DACOUT6, DACOUT5, DACOUT4, DACOUT3, DACOUT2, DACOUT1, DACOUT0 Output Digital AC outputs – These signals correspond to the digital AC outputs (DACOUT9 through DACOUT0) of the AB macro. If any of the ACx inputs are configured as digital inputs rather than analog inputs, their corresponding buffered digital signals are put out on these ports. DATOUT9, DATOUT8, DATOUT7, DATOUT6, DATOUT5, DATOUT4, DATOUT3, DATOUT2, DATOUT1, DATOUT0 Output Digital AT outputs – These signals correspond to the digital AT outputs (DATOUT9 through DATOUT0) of the AB macro. If any of the ATx inputs are configured as digital inputs rather than analog inputs, their corresponding buffered digital signals are put out on these ports. Input Direct Digital Gate Driver enables – These signals can control the corresponding GDONx gate-driver enable inputs (GDON9 through GDON0) of the AB macro if the CFG_GDx parameters/generics are set appropriately (refer to "Parameter/Generic Descriptions" on page 6). Output Analog Gate Driver outputs – These signals correspond to the AGx gate driver outputs (AG9 through AG0) of the AB macro. DDGDON9, DDGDON8, DDGDON7, DDGDON6, DDGDON5, DDGDON4, DDGDON3, DDGDON2, DDGDON1, DDGDON0 AG9, AG8, AG7 AG6, AG5, AG4, AG3, AG2, AG1, AG0 Note: If unused, each of these gate driver outputs can be disabled via the CFG_GDx parameters/generics. Note: All signals active high (logic 1) unless otherwise noted. v2.0 5 CoreAI Table 3 • CoreAI I/O Signal Descriptions (Continued) Name Type Description RTCCLK Input RTC Clock input – If the RTC is used (via the USE_RTC parameter/generic), this input must come from the internal crystal oscillator (XTLOSC) CLKOUT pin; if the RTC is not used, this pin should be tied low. RTCXTLMODE1, RTCXTLMODE0 Output RTC XTLOSC Mode outputs – If the RTC is used (via the USE_RTC parameter/generic), these output ports must be connected to the internal crystal oscillator (XTLOSC) RTCMODE[1:0] pins; if the RTC is not used, these pins should be left unconnected. RTCXTLSEL Output RTC XTLOSC Mode Selection output – If the RTC is used (via the USE_RTC parameter/ generic), this output port must be connected to the internal crystal oscillator (XTLOSC) MODESEL pin; if the RTC is not used, this pin should be left unconnected. RTCMATCH Output RTC Match output – If the RTC is used (via the USE_RTC parameter/generic), this output port indicates that a match event has occurred and can be connected to other FPGA logic; if the RTC is not used, this pin should be left unconnected. RTCPSMMATCH Output RTC Match VRPSM output – If the RTC is used (via the USE_RTC parameter/generic), this output port can be connected to the VRPSM pin of the internal voltage regulator to control regulator power-up; if the RTC is not used, this pin should be left unconnected. Note: All signals active high (logic 1) unless otherwise noted. Parameter/Generic Descriptions CoreAI has parameters (Verilog) and generics (VHDL), described in Table 4, for configuring the RTL code. All parameters and generics are integer types. Table 4 • CoreAI Parameters/Generics Descriptions Name Valid Range Description APB_16BIT_DATA 0 or 1 Set this to 1 if the APB reads and writes are using all 16-bits of the PRDATA[15:0] and PWDATA[15:0] ports, or to 0 if 8-bit APB reads and writes are done on the PRDATA[15:0] and PWDATA[15:0] ports. If 8-bit APB reads and writes are used, only the lower eight bits of each port are used, i.e., PRDATA[7:0] and PWDATA[7:0]; PWDATA[15:8] should be tied statically high or low and PRDATA[15:8] should be left unconnected in this case. Note that for 16-bit reads and writes, the internal address map shown in Table 9 on page 11 will concatenate adjacent bytes since PADDR[0] will be ignored; in this case, each byte that is addressed by PADDR[0] = 0 will correspond to the LSB and each byte that is addressed by PADDR[0] = 1 will correspond to the MSB of each 16-bit word. The default value of 0 uses 8-bit APB reads and writes. ACTLOW_INTERRUPT 0 or 1 Interrupt Active Low: Set this to 1 if the INTERRUPT output polarity is active low, or to 0 if the INTERRUPT output polarity is active high. The default value of 0 is active high. DISABLE_INTERRUPT 0 or 1 Disable Interrupt: Set this to 1 if the INTERRUPT output will not be used, in which case the INTERRUPT output will be fixed at the inactive polarity chosen by ACTLOW_INTERRUPT, i.e., INTERRUPT = ACTLOW_INTERRUPT; set this to 0 if the INTERRUPT output is used. The default value of 0 uses the INTERRUPT output. Note: *Invalid values are 3, 7, 11, and 15 (refer to the Fusion datasheet). 6 v2.0 CoreAI Table 4 • CoreAI Parameters/Generics Descriptions (Continued) Name ACM_CLK_DIV Valid Range Description 1 to 4 Set this to the division value to generate the ACM clock, which has a maximum frequency of 10 MHz. The actual value will be the frequency of PCLK divided by (2ACM_CLK_DIV); valid values are 1–4. The default value of 1 sets the ACM clock at half the PCLK frequency. Note: It is the user’s responsibility to ensure that the ACM clock has a maximum operating frequency of 10 MHz. USE_RTC 0 or 1 Use RTC: Set this to 1 if the RTC is to be used, or to 0 if the RTC is not to be used. The default value of 0 does not use the RTC. USE_RDFIFO 0 or 1 Use Read FIFO: Set this to 1 if using an internal data FIFO for storing up to 256 ADC conversion results for later reading by a microprocessor, or to 0 if not using the FIFO. The default value of 0 does not use a read FIFO. 0 to 255 Read FIFO Almost Empty Value: Set this 8-bit integer to the fixed almost empty value of the read FIFO. This value determines when the almost empty flag output from the read FIFO becomes active; it represents the number of 16-bit ADC conversion result words that are left to be read before the read FIFO will be empty. USE_RDFIFO_AEVAL Note: This is only used if USE_RDFIFO = 1. USE_RDFIFO_AFVAL 0 to 255 Read FIFO Almost Full Value: Set this 8-bit integer to the fixed almost full value of the read FIFO. This value determines when the almost full flag output from the read FIFO becomes active; it represents the number of 16-bit ADC conversion result words that are left to be written before the read FIFO will be full. Note: This is only used if USE_RDFIFO = 1. FIXED_VAREFSEL 0 or 1 Set this to 1 if the VAREFSEL input pin of the AB macro is to be fixed, or to 0 to allow register-controlled VAREFSEL setting (saves some logic tiles for a fixed system). The default value of 0 does not have a fixed VAREFSEL setting. FIXED_VAREFSEL_VAL 0 or 1 Fixed VAREFSEL Value: Set this to a 1-bit constant value (set in higher-level wrapper). Set to 1 to select external VAREF as input, 0 to select internal VAREF as output. Note: This is only used if FIXED_VAREFSEL = 1. FIXED_MODE FIXED_MODE_VAL FIXED_TVC FIXED_TVC_VAL 0 or 1 Set this to 1 if the MODE[3:0] pins of the AB macro are a fixed constant, or to 0 to allow register-controlled MODE[3:0] setting (saves some logic tiles for a fixed system). The default of 0 does not have a fixed MODE[3:0] setting. 0 to 2, 4 to 6, 8 to 10, 12 to 14* Fixed MODE Value: Set this to the integer value of the 4-bit fixed constant connected to the MODE[3:0] input pins of the AB macro (controls ADC resolution, etc.). 0 or 1 Set this to 1 if the TVC[7:0] pins of the AB macro are a fixed constant, or to 0 to allow register-controlled TVC[7:0] setting (saves some logic tiles for a fixed system). The default value of 0 does not have a fixed TVC[7:0] setting. 0 to 255 Fixed TVC Value: Set this to the integer value of the 8-bit fixed constant connected to the TVC[7:0] inputs of the AB macro. Note: This is only used if FIXED_MODE = 1. Note: This is only used if FIXED_TVC = 1. FIXED_STC 0 or 1 Set this to 1 if the STC[7:0] pins of the AB macro are a fixed constant, or to 0 to allow register-controlled STC[7:0] setting (saves some logic tiles for a fixed system). The default value of 0 does not have a fixed STC[7:0] setting. Note: *Invalid values are 3, 7, 11, and 15 (refer to the Fusion datasheet). v2.0 7 CoreAI Table 4 • CoreAI Parameters/Generics Descriptions (Continued) Name FIXED_STC_VAL Valid Range Description 0 to 255 Fixed STC Value: Set this to the integer value of the 8-bit fixed constant connected to the STC[7:0] inputs of the AB macro. Note: This is only used if FIXED_STC = 1. DISABLE_TMSTBINT 0 or 1 Disable Internal Temperature Monitor Strobe: Set this 1-bit integer to disable the internal temperature monitor strobes. If this bit is set to 1, the TMSTBINT input is disabled; if it is set to 0, the TMSTBINT input is register-controlled. The default value of 0 allows the internal temperature monitor strobe to be controlled via register settings. CFG_AV9, CFG_AV8, CFG_AV7, CFG_AV6, CFG_AV5, CFG_AV4, CFG_AV3, CFG_AV2, CFG_AV1, CFG_AV0 0 to 1,023 Configure AVx Inputs: Set each of these 10-bit integers to configure the AV9 through AV0 inputs that are connected to the AB macro. The lower 8 bits of each of these 10-bit integers are reserved for generating firmware settings for the target processor used with CoreAI and are ignored by the CoreAI hardware. The upper 2 bits are used to create the settings for each AVx input, shown in Table 5 on page 9. For example, if CFG_AV5 is set to the binary value 0000000000 (decimal 0), the AV5 input will be used as an analog voltage monitor input. If CFG_AV5 is set to the binary value 0100000000 (decimal 256), the AV5 input will be used as a digital input, and the buffered DAVOUT5 output would be connected to the user’s own logic. If CFG_AV5 is set to the binary value 1100000000 (decimal 768), the AV5 input will be disabled; in this case, the CoreAI AV5 input will not be used and the AV5 input of the AB macro will be hardwired to logic 0 within CoreAI. CFG_AC9, CFG_AC8, CFG_AC7, CFG_AC6, CFG_AC5, CFG_AC4, CFG_AC3, CFG_AC2, CFG_AC1, CFG_AC0 0 to 1,023 Configure ACx Inputs: Set each of these 10-bit integers to configure the AC9 through AC0 inputs that are connected to the AB macro. The lower 8 bits of each of these 10-bit integers are reserved for generating firmware settings for the target processor used with CoreAI and are ignored by the CoreAI hardware. The upper 2 bits are used to create the settings for each ACx input, shown in Table 6 on page 9. For example, if CFG_AC7 is set to the binary value 0000000000 (decimal 0), the AC7 input will be used as an analog current monitor input. If CFG_AC7 is set to the binary value 0100000000 (decimal 256), the AC7 input will be used as a digital input, and the buffered DACOUT7 output would be connected to the user’s own logic. If CFG_AC7 is set to the binary value 1000000000 (decimal 512), the AC7 input will be used as an analog voltage monitor input. If CFG_AC7 is set to the binary value 1100000000 (decimal 768), the AC7 input will be disabled; in this case, the CoreAI AC7 input will not be used and the AC7 input of the AB macro will be hardwired to logic 0 within CoreAI. Note: *Invalid values are 3, 7, 11, and 15 (refer to the Fusion datasheet). 8 v2.0 CoreAI Table 4 • CoreAI Parameters/Generics Descriptions (Continued) Name Valid Range Description CFG_AT9, CFG_AT8, CFG_AT7, CFG_AT6, CFG_AT5, CFG_AT4, CFG_AT3, CFG_AT2, CFG_AT1, CFG_AT0 0 to 1,023 Configure ATx Inputs: Set each of these 10-bit integers to configure the AT9 through AT0 inputs that are connected to the AB macro. The lower 8 bits of each of these 10-bit integers are reserved for generating firmware settings for the target processor used with CoreAI and are ignored by the CoreAI hardware. The upper 2 bits are used to create the settings for each ATx input, shown in Table 7 on page 10. For example, if CFG_AT2 is set to the binary value 0000000000 (decimal 0), the AT2 input will be used as an analog temperature monitor input. If CFG_AT2 is set to the binary value 0100000000 (decimal 256), the AT2 input will be used as a digital input, and the buffered DATOUT2 output would be connected to the user’s own logic. If CFG_AT2 is set to the binary value 1000000000 (decimal 512), the AT2 input will be used as an analog voltage monitor input. If CFG_AT2 is set to the binary value 1100000000 (decimal 768), the AT2 input will be disabled; in this case, the CoreAI AT2 input will not be used and the AT2 input of the AB macro will be hardwired to logic 0 within CoreAI. CFG_GD9, CFG_GD8, CFG_GD7, CFG_GD6, CFG_GD5, CFG_GD4, CFG_GD3, CFG_GD2, CFG_GD1, CFG_GD0 0 to 1,023 Configure Gate Drivers: Set each of these 10-bit integers to configure the GDON9 through GDON0 inputs and the AG9 through AG0 outputs that are connected to the AB macro. The lower 8 bits of each of these 10-bit integers are reserved for generating firmware settings for the target processor used with CoreAI and are ignored by the CoreAI hardware. The upper 2 bits are used to create the settings shown in Table 8 on page 10. For example, if CFG_GD1 is set to the binary value 0000000000 (decimal 0), the AG1 gate-driver output will be controlled by a software-controlled register within CoreAI (ADC Control Register 5). If CFG_GD1 is set to the binary value 0100000000 (decimal 256), the DDGDON1 input (connected to the user’s own logic) will be used to directly control the AG1 gate-driver output. If CFG_GD1 is set to the binary value 1100000000 (decimal 768), the AG1 output will be disabled; in this case, the CoreAI AG1 output will not be used and the GDON1 input of the AB macro will be hardwired to logic 0 within CoreAI. Note: *Invalid values are 3, 7, 11, and 15 (refer to the Fusion datasheet). Table 5 • Settings for AVx Inputs CFG_AVx Bit-Position Values ('X' indicates "don’t care") AVx Input Usage 9 8 7 6 5 4 3 2 1 0 0 0 X X X X X X X X Voltage Monitor (default) 0 1 X X X X X X X X Digital Input 1 0 X X X X X X X X Reserved (unused) 1 1 X X X X X X X X Disabled Table 6 • Settings for ACx Inputs CFG_ACx Bit-Position Values ('X' indicates "don’t care") ACx Input Usage 9 8 7 6 5 4 3 2 1 0 0 0 X X X X X X X X Current Monitor (default) 0 1 X X X X X X X X Digital Input 1 0 X X X X X X X X Voltage Monitor 1 1 X X X X X X X X Disabled v2.0 9 CoreAI Table 7 • Settings for ATx Inputs CFG_ATx Bit-Position Values ('X' indicates "don’t care") ATx Input Usage 9 8 7 6 5 4 3 2 1 0 0 0 X X X X X X X X Temperature Monitor (default) 0 1 X X X X X X X X Digital Input 1 0 X X X X X X X X Voltage Monitor 1 1 X X X X X X X X Disabled Table 8 • Settings for Gate Driver Usage CFG_GDx Bit-Position Values ('X' indicates "don’t care") 8 7 6 5 4 3 2 1 0 0 0 X X X X X X X X Register controlled (default) 1 0 X X X X X X X X Gate Driver (AGx) DDGDONx input 1 0 X X X X X X X X Reserved (unused) 1 1 X X X X X X X X Disabled (GDONx and AGx) Internal CoreAI Registers The internal register address map and reset values of each APB-accessible register for CoreAI are shown in Table 9 on page 11. In the case of 8-bit APB reads and writes (APB_16BIT_DATA = 0), each PADDR[4:0] address is significant and contains the byte listed in the far right column; however, when 16-bit APB reads and writes are used (APB_16BIT_DATA = 1), PADDR[4:1] addresses contain one 16-bit word, where each two adjacent rows in Table 9 on page 11 contain the low-order and highorder bytes, consecutively (PADDR[0] is unused in this case). Table 10 on page 12 through Table 31 on page 17 describe the various APB-accessible registers within CoreAI. Unless otherwise stated, each register can be read from or written to by an internal or external microprocessor/microcontroller. All registers are listed assuming 8-bit APB reads and writes; if 16-bit APB reads and writes are used, add 8 to each item in the "Bits" column for high-order bytes (Table 11 on page 12, Table 15 on page 13, Table 17 on page 13, Table 19 on page 14, Table 21 on page 14, Table 23 on page 14, Table 25 on page 15, Table 29 on page 16, and Table 31 on page 17). 10 Gate Driver Usage 9 v2.0 controlled by When reading from register bits that are write-only or unused (reserved), a logic 0 will be returned. When writing to register bits that are read-only or unused (reserved), no action takes place. The INTERRUPT output is generated as the logical OR of the interrupt enable bits (INTEN[14:0]) ANDed with the interrupt status bits (INT[14:0]), as shown in Figure 4. INTEN[14] INT[14] INTERRUPT INTEN[0] INT[0] Figure 4 • CoreAI Interrupt Logic CoreAI Note that after an APB read of the interrupt status registers has been performed, each INT[14:0] bit will be cleared if its condition is no longer valid. If an APB read of the interrupt status registers has just occurred coincident with a pending interrupt condition, the interrupt condition will have priority in order to prevent a missed interrupt. Table 9 • CoreAI Internal Register Address Map* PADDR[4:0] Type Reset Value Brief Description 0x00 R/W 0x04 ACM Control/Status Register (low-order) 0x01 R/W 0x00 ACM Control/Status Register (high-order) 0x02 R/W 0x00 ACM Address Register 0x03 – 0x00 Reserved 0x04 R/W 0x00 ACM Data Register 0x05 – 0x00 Reserved 0x06 R/W 0x00 ADC Control Register 1 (low-order) 0x07 R/W 0x00 ADC Control Register 1 (high-order) 0x08 R/W 0x00 ADC Control Register 2 (low-order) 0x09 R/W 0x00 ADC Control Register 2 (high-order) 0x0a R/W 0x00 ADC Control Register 3 (low-order) 0x0b R/W 0x00 ADC Control Register 3 (high-order) 0x0c R/W 0x00 ADC Control Register 4 (low-order) 0x0d R/W 0x00 ADC Control Register 4 (high-order) 0x0e R/W 0x00 ADC Control Register 5 (low-order) 0x0f R/W 0x00 ADC Control Register 5 (high-order) 0x10 R 0x00 ADC Status Register (low-order) 0x11 R 0x00 ADC Status Register (high-order) 0x12 R 0x00 Read FIFO Data Output 0x13 – 0x00 Reserved 0x14 R 0x0c Read FIFO Status 0x15 – 0x00 Reserved 0x16 R/W 0x00 Interrupt Enable Register (low-order) 0x17 R/W 0x00 Interrupt Enable Register (high-order) 0x18 R 0x00 Interrupt Status Register (low-order) 0x19 R 0x00 Interrupt Status Register (high-order) Note: *Values shown in hexadecimal format. Type designations: "R" – read-only, "R/W" – read/write, "–" – Not used (to accommodate 16-bit APB access) v2.0 11 CoreAI Table 10 • ACM Control/Status Register (low-order) Bits Name 7:5 Reserved Function Not used 4 ACMWRBUSY ACM Write Cycle Busy (read-only) – If 1, the ACM is busy writing data into the AB block. 3 ACMRDBUSY ACM Read Cycle Busy (read-only) – If 1, the ACM is busy reading data from the AB block. 2 ACMRESETBUSY 1 ACMRDSTART ACM Reset Cycle Busy (read-only) – If 1, the ACM is busy being reset. ACM Read Start (write-only) 1 – The ACM starts a read cycle from the ACM address in the ACMADDR[7:0] bits of the ACM Address/Data register. Note that this write-only bit is active for one ACM clock cycle (self-clearing), and that the resulting busy signal from the ACM read taking place will be reflected in the ACMRDBUSY bit of this register. 0 – Normal (no operation or current ACM operation continues) 0 ACMRESET ACM Reset (write-only) 1 – The ACM is put into a reset condition. Note that this write-only bit is active for only one ACM clock cycle (self-clearing), and that the resulting busy signal from the ACM reset taking place will be reflected in the ACMRESETBUSY bit of this register. 0 – Normal (no operation or current ACM operation continues) Table 11 • ACM Control/Status Register (high-order) Bits Name 7:0 Reserved Function Not used Table 12 • ACM Address Register Bits Name 7:0 ACMADDR[7:0] Function ACM Address These bits are connected to the ACMADDR[7:0] port of the AB macro. (Refer to the Fusion datasheet for further information.) Table 13 • ACM Data Register Bits Name 7:0 ACMDATA[7:0] Function ACM Data If this register is read from, the ACMRDATA[7:0] output port from the AB block is returned. If this register is written to, it will drive the ACMWDATA[7:0] input port of the AB block. 12 v2.0 CoreAI Table 14 • ADC Control Register 1 (low-order) Bits Name 7 Reserved 6 ADCRESET Function Not used ADC Reset (write-only) 1 – The ADC is given an active high pulse (connected to the ADCRESET pin of the AB macro). Note that this write-only bit is active for only one PCLK clock cycle (self-clearing). 0 – Normal (no operation or current conversion continues) 5 PWRDN ADC Power Down 1 – The ADC is powered down. 0 – The ADC is powered up (normal operation). 4 VAREFSEL ADC Voltage Reference Select 1 – Select external voltage reference (3.3 V max.) to be used (input on VAREF and GNDREF ports) 0 – Select internal voltage reference (2.56 V) to be used (output on VAREF port) 3:0 MODE[3:0] ADC Mode Selection The mode selection bits are used to select between 8-, 10-, and 12-bit ADC resolution. (Refer to the Fusion datasheet for further information.) Table 15 • ADC Control Register 1 (high-order) Bits Name 7:0 TVC[7:0] Function ADC Clock Divider (Refer to the Fusion datasheet for further information.) Table 16 • ADC Control Register 2 (low-order) Bits Name 7:0 STC[7:0] Function ADC Sample Time Control (Refer to the Fusion datasheet for further information.) Table 17 • ADC Control Register 2 (high-order) Bits Name 7:6 Reserved 5 ADCSTART Function Not used ADC Start Conversion (write-only) 1 – The ADC starts an analog-to-digital conversion on the selected channel. Note that this writeonly bit is high for only one PCLK clock cycle (self-clearing). 0 – Normal (no operation or current conversion continues) 4:0 CHNUMBER[4:0] ADC Channel Number This 5-bit value selects one of 32 analog channels that are fed to the analog MUX within the AB macro. (Refer to the Fusion datasheet for further information.) Table 18 • ADC Control Register 3 (low-order) Bits Name 7:0 CMSTB[7:0] Function Current Monitor Strobes These bits are connected to the CMSTB[7:0] pins of the AB macro. (Refer to the Fusion datasheet for further information.) v2.0 13 CoreAI Table 19 • ADC Control Register 3 (high-order) Bits Name 7:2 Reserved 1:0 CMSTB[9:8] Function Not used Current Monitor Strobes These bits are connected to the CMSTB9 and CMSTB8 pins of the AB macro. (Refer to the Fusion datasheet for further information.) Table 20 • ADC Control Register 4 (low-order) Bits Name 7:0 TMSTB[7:0] Function Temperature Monitor Strobes These bits are connected to the TMSTB[7:0] pins of the AB macro. (Refer to the Fusion datasheet for further information.) Table 21 • ADC Control Register 4 (high-order) Bits Name Function 7:2 Reserved Not used 2 TMSTBINT Internal Temperature Monitor Strobe This bit is connected to the TMSTBINT pin of the AB macro. (Refer to the Fusion datasheet for further information.) 1:0 TMSTB[9:8] Temperature Monitor Strobes These bits are connected to the TMSTB9 and TMSTB8 pins of the AB macro. (Refer to the Fusion datasheet for further information.) Table 22 • ADC Control Register 5 (low-order) Bits Name 7:0 GDON[7:0] Function Gate Driver Enables These bits are connected to the GDON[7:0] pins of the AB macro. Note that the CFG_GDx parameters/generics settings affect whether or not the GDON[7:0] register bits are used. (Refer to the Fusion datasheet for further information.) Table 23 • ADC Control Register 5 (high-order) Bits Name 7:2 Reserved 1:0 GDON[9:8] Function Not used Gate Driver Enables These bits are connected to the GDON9 and GDON8 pins of the AB macro. Note that the CFG_GDx parameters/generics settings affect whether or not the GDON[9:8] register bits are used. (Refer to the Fusion datasheet for further information.) Table 24 • ADC Status Register (low-order) Bits Name 7:0 RESULT[7:0] Function ADC Result (low-order) These bits come from the RESULT[7:0] bits of the AB macro. (Refer to the Fusion datasheet for further information.) 14 v2.0 CoreAI Table 25 • ADC Status Register (high-order) Bits 7 Name CALIBRATE Function ADC Calibrate 1 – The ADC is busy performing its calibration. 0 – The ADC is calibrated. (Refer to the Fusion datasheet for further information.) 6 SAMPLE ADC Sample 1 – The ADC is sampling the selected analog input. 0 – Normal (no operation or the ADC has finished the sampling phase) (Refer to the Fusion datasheet for further information.) 5 BUSY ADC Busy 1 – The ADC is busy performing an analog-to-digital conversion. 0 – The ADC is not busy. (Refer to the Fusion datasheet for further information.) 4 DATAVALID ADC Data Valid 1 – The ADC contains valid data from an analog-to-digital conversion on the RESULT[11:0] outputs. 0 – Normal (no operation or current conversion continues) (Refer to the Fusion datasheet for further information.) 3:0 RESULT[11:8] ADC Result (high-order) These bits come from the RESULT[11:8] bits of the AB macro. (Refer to the Fusion datasheet for further information.) Table 26 • Read FIFO Data Output Register Bits Name 7:0 DOUT[7:0] Function Read FIFO Data Output If CoreAI is used in 8-bit APB read/write mode, the read FIFO must be read twice to retrieve one ADC sample of result data (two bytes); in this case, the low-order byte would be read first and the high-order byte second. Note also that in 8-bit APB read/write mode, the read FIFO will not become empty until the last high-order byte has been read from the FIFO, i.e., an even number of reads must occur. If CoreAI is used in 16-bit APB read/write mode, the read FIFO will be read as one 16-bit word at once (with only the lower 12 bits being significant, since the ADC result has 12 bits of resolution); in this case, DOUT[15:0] will appear on the PRDATA[15:0] output port, rather than DOUT[7:0] appearing on PRDATA[7:0] as in 8-bit mode. v2.0 15 CoreAI Table 27 • Read FIFO Status Register Bits Name 7:4 Reserved 3 AEMPTY Function Not used Read FIFO Almost Empty 1 – The read FIFO is almost empty (based on the value of the USE_RDFIFO_AEVAL parameter/ generic). 0 – The read FIFO is not almost empty. 2 EMPTY Read FIFO Empty 1 – The read FIFO is empty. 0 – The read FIFO is not empty. 1 AFULL Read FIFO Almost Full 1 – The read FIFO is almost full (based on the value of the USE_RDFIFO_AFVAL parameter/generic). 0 – The read FIFO is not almost full. 0 FULL Read FIFO Full 1 – The read FIFO is full. 0 – The read FIFO is not full. Table 28 • Interrupt Enable Register (low-order) Bits 7 6:0 Name Reserved INTEN[6:0] Function Not used Low-Order Interrupt Enables Each of these bits is ANDed with each of the bits in the INT[6:0] register to contribute to the ORed INTERRUPT output. To mask the contribution of the corresponding bit in the INT[6:0] register, set that bit to 0; to enable the contribution, set that bit to 1. Note that the INTEN[6:0] bits only mask what appears on the INTERRUPT output and that the INT[6:0] register bits will always be active to reflect current interrupt source conditions. Table 29 • Interrupt Enable Register (high-order) Bits Name 7:0 INTEN[14:7] Function High-Order Interrupt Enables Each of these bits is ANDed with each of the bits in the INT[14:7] register to contribute to the ORed INTERRUPT output. To mask the contribution of the corresponding bit in the INT[14:7] register, set that bit to 0; to enable the contribution, set that bit to 1. Note that the INTEN[14:7] bits only mask what appears on the INTERRUPT output and that the INT[14:7] register bits will always be active to reflect current interrupt source conditions. 16 v2.0 CoreAI Table 30 • Interrupt Status Register (low-order) Bits Name Function 7 Reserved Not used 6 INT[6] RTC Match Rising Edge – If 1, the RTCMATCH output has transitioned high, indicating that the RTC has reached the desired count. 5 INT[5] ACM Read Done – If 1, an ACM read cycle has completed and valid data can be read from the ACM DATA register. 4 INT[4] ACM Write Done – If 1, an ACM write cycle has completed and valid data has been written into the AB macro. 3 INT[3] DATAVALID Rising Edge – If 1, the DATAVALID signal from the AB block has transitioned high, indicating that valid converted data from the ADC is available on the RESULT[11:0] output port from the AB block. 2 INT[2] BUSY Rising Edge – If 1, the BUSY signal from the AB block has transitioned high, indicating that the ADC has begun an analog-to-digital conversion and is now busy performing that conversion. 1 INT[1] CALIBRATE Falling Edge – If 1, the CALIBRATE signal from the AB block has transitioned low, indicating that the ADC has finished its calibration procedure. 0 INT[0] CALIBRATE Rising Edge – If 1, the CALIBRATE signal from the AB block has transitioned high, indicating that the ADC has started its calibration procedure. Table 31 • Interrupt Status Register (high-order) Bits Name Function 7 INT[14] Read FIFO Almost Empty Rising Edge – If 1, the Almost Empty flag from the read FIFO has transitioned high, indicating that it is almost empty. 6 INT[13] Read FIFO Almost Empty Falling Edge – If 1, the Almost Empty flag from the read FIFO has transitioned low, indicating that it is no longer almost empty. 5 INT[12] Read FIFO Empty Rising Edge – If 1, the Empty flag from the read FIFO has transitioned high, indicating that it is now empty. 4 INT[11] Read FIFO Empty Falling Edge – If 1, the Empty flag from the read FIFO has transitioned low, indicating that it is no longer empty. 3 INT[10] Read FIFO Almost Full Rising Edge – If 1, the Almost Full flag from the read FIFO has transitioned high, indicating that it is almost full. 2 INT[9] Read FIFO Almost Full Falling Edge – If 1, the Almost Full flag from the read FIFO has transitioned low, indicating that it is no longer almost full. 1 INT[8] Read FIFO Full Rising Edge – If 1, the Full flag from the read FIFO has transitioned high, indicating that it is now full. 0 INT[7] Read FIFO Full Falling Edge – If 1, the Full flag from the read FIFO has transitioned low, indicating that it is no longer full. v2.0 17 CoreAI ACM Interface The internal address map of the ACM is shown in Table 32. The ACM interface is used to configure the analog quads and RTC within the AB macro. Various features of the analog quads need to be set prior to correct operation of the ADC, including the pre-scaler circuits in each of the AV, AC, and AT analog input ports that will be accessed in the user’s design. The SmartGen software, included with Libero IDE, can be used to configure the various pre-scaler settings for each quad, as well as the functions used (voltage monitor, current monitor, temperature monitor, gate-driver output driver strengths, etc.). Consult the Fusion datasheet for details on how each pre-scaler should be set, relative to the design-specific voltage, current, or temperature ranges used. Note that the ACM must operate with a clock frequency that is less than or equal to 10 MHz; to achieve this requirement, the user must set the clock-divider appropriately via the ACM_CLK_DIV parameter/generic. For example, if the system clock frequency (PCLK) is 50 MHz, ACM_CLK_DIV can be set to 3, which would generate an ACM clock frequency of 50/(23) = 6.25 MHz. ACM reads and writes are synchronized to the internally generated ACM clock. Since the ACM clock is operating at a lower frequency than the system clock (PCLK) used by CoreAI, various status and interrupt status registers have been implemented to indicate when ACM read and write accesses are busy or completed (see Table 10 on page 12 and Table 30 on page 17). Table 32 • ACM Address Map (Analog Quads and RTC)* PADDR[4:0] Name Description Associated Peripheral – Reserved Unused 0x01 AQ0 Byte 0 (AV0 control) Analog Quad 0x02 AQ0 Byte 1 (AC0 control) Analog Quad 0x03 AQ0 Byte 2 (AG0 control) Analog Quad 0x04 AQ0 Byte 3 (AT0 control) Analog Quad 0x05 AQ1 Byte 0 (AV1 control) Analog Quad 0x06 AQ1 Byte 1 (AC1 control) Analog Quad 0x07 AQ1 Byte 2 (AG1 control) Analog Quad 0x08 AQ1 Byte 3 (AT1 control) Analog Quad … … Analog Quad 0x25 AQ9 Byte 0 (AV9 control) Analog Quad 0x26 AQ9 Byte 2 (AC9 control) Analog Quad 0x27 AQ9 Byte 2 (AG9 control) Analog Quad 0x28 AQ9 Byte 3 (AT9 control) Analog Quad 0x29 – Reserved Unused 0x30 – Reserved Unused … … … Unused 0x3E – Reserved Unused 0x00 Analog Quad 0 Analog Quad 1 … Analog Quad 9 Note: *Address values are given in hexadecimal format. 18 v2.0 CoreAI Table 32 • ACM Address Map (Analog Quads and RTC)* (Continued) PADDR[4:0] Name Description Associated Peripheral 0x3F – Reserved Unused 0x40 COUNTER0 Counter bits 7:0 RTC 0x41 COUNTER1 Counter bits 15:8 RTC 0x42 COUNTER2 Counter bits 23:16 RTC 0x43 COUNTER3 Counter bits 31:24 RTC 0x44 COUNTER4 Counter bits 39:32 RTC 0x45 – Reserved Unused 0x46 – Reserved Unused 0x47 – Reserved Unused 0x48 MATCHREG0 Match register bits 7:0 RTC 0x49 MATCHREG1 Match register bits 15:8 RTC 0x4A MATCHREG2 Match register bits 23:16 RTC 0x4B MATCHREG3 Match register bits 31:24 RTC 0x4C MATCHREG4 Match register bits 39:32 RTC 0x4D – Reserved Unused 0x4E – Reserved Unused 0x4F – Reserved Unused 0x50 MATCHBITS0 Individual match bits 7:0 RTC 0x51 MATCHBITS1 Individual match bits 15:8 RTC 0x52 MATCHBITS2 Individual match bits 23:16 RTC 0x53 MATCHBITS3 Individual match bits 31:24 RTC 0x54 MATCHBITS4 Individual match bits 39:32 RTC 0x55 – Reserved Unused 0x56 – Reserved Unused 0x57 – Reserved Unused 0x58 CTRL_STAT Control (write) / Status (read) register bits 7:0 RTC 0x59 TEST_REG Test register(s) RTC 0x60 – Reserved Unused 0x61 – Reserved Unused … … … Unused 0xFF – Reserved Unused Real-Time Counter Note: *Address values are given in hexadecimal format. v2.0 19 CoreAI ACM Writes 2. Write the desired ACM address to the ACM Address register. An example of writing data into the ACM is illustrated in Figure 5. The steps for writing information into the AB block via the ACM are as follows: 3. Write the desired ACM data to the ACM Data register. 4. Keep reading the ACM Control/Status register until CoreAI is not busy processing the ACM write. 1. Read the ACM Control/Status register to make sure that CoreAI is not busy processing an ACM read or write. PCLK PADDR[4:0] ACMCtrlStat ACMAddr ACMData ACMCtrlStat PWRITE PSEL PENABLE PWDATA[7:0] ACMADDR[7:0] PRDATA[7:0] ACMDATA[7:0] 00 08 00 Note: 8-bit APB reads and writes are shown. Figure 5 • ACM Write Procedure ACM Reads An example of reading data from the ACM is illustrated in Figure 6. The steps for reading information from the AB block via the ACM are as follows: 1. Read the ACM Control/Status register to make sure that CoreAI is not busy processing an ACM read or write. 2. Write the desired ACM address to the ACM Address register. 3. Write a logic 1 to the ACMRDSTART bit of the ACM Control/Status register. 4. Keep reading the ACM Control/Status register until CoreAI is not busy processing the ACM read. 5. Read the ACM Data register to read the byte of ACM data that is now available from the AB block. PCLK PADDR[4:0] ACMCtrlStat ACMAddr ACMCtrlStat ACMData PWRITE PSEL PENABLE ACMADDR[7:0] PWDATA[7:0] PRDATA[7:0] 02 00 04 Note: 8-bit APB reads and writes are shown. Figure 6 • ACM Read Procedure 20 v2.0 00 ACMDATA[7:0] CoreAI RTC Operation ACM interface address map listed in Table 32 on page 18. Control of the RTC is primarily accomplished via writes to the RTC CTRL_STAT (Control/Status) register at ACM address 0x58 (88), which is listed in Table 33. Status information is primarily obtained by reading the same register. For detailed data on the connection and operation of the 40-bit real-time counter block within the AB macro, refer to the Fusion datasheet. The SmartGen software can be used to configure the RTC. The internal registers of the RTC are accessed via the Table 33 • RTC Control/Status Register Bits Name Function 7 rtc_rst RTC Reset: Writing logic 1 to this bit causes an RTC reset.1 Writing logic 0 to this bit will allow synchronous removal of reset after two ACM_CLK cycles if VCC33UP = 1.2 6 cntr_en Counter Enable: Writing logic 1 to this bit will enable the counter if the RTC is not in reset. After reset is removed and cntr_en = 1, 64 RTCCLK positive edges (one-half of the pre-scaler division factor) will elapse before the counter is incremented.3 A logic 0 in this bit resets the pre-scaler and therefore suspends incrementing the counter, but the counter is not reset. Before writing to the COUNTER registers, the counter must be disabled. 5 vr_en_mat Voltage Regulator Enable on Match: Writing logic 1 to this bit will allow the RTCMATCH output port to transition to logic 1 when a match occurs between the 40-bit counter and the 40-bit match register. Logic 0 forces RTCMATCH to logic 0 to prevent enabling the voltage regulator from the RTC. 4:3 xt_mode[1:0] Crystal Oscillator Mode: These bits control the RTCXTLMODE[1:0] output ports that are connected to the RTCMODE[1:0] input pins of the crystal oscillator pad. For 32 kHz crystal operation, this should be set to "01". 2 rst_cnt_omat Reset Counter on Match: Writing logic 1 to this bit allows the counter to clear itself when a match occurs. In this situation, the 40-bit counter clears on the next rising edge of the pre-scaled clock, approximately 4 ms after the match occurs (the pre-scaled clock toggles at a rate of 256 Hz, given a 32.768 kHz external crystal). Writing logic 0 to this bit allows the counter to increment indefinitely while still allowing match events to occur. 1 rstb_cnt Counter Reset: Writing logic 0 to this bit resets the 40-bit counter value to 0. Writing logic 1 allows the counter to count. 0 xtal_en Crystal Oscillator Enable: This bit controls the RTCXTLSEL output port that is connected to the SELMODE input pin of the crystal oscillator. If a logic 0 is written to this bit, only the FPGA fabric can be used to control the crystal oscillator EN and MODE[1:0] inputs. If a logic 1 is written to this bit, only the RTC can be used to control the RTCXTLSEL and RTCMODE[1:0] inputs of the crystal oscillator. This bit must be set to 1 to allow the RTC counter to function if the 1.5 V supply is off. Notes: 1. Reset of all RTC states (except this Control/Status register) occurs asynchronously if VCC33UP = 0 or CTRL_STAT bit 7 (rtc_rst) is written to 1. 2. Reset is removed synchronously after 2 rising edges of the ACM_CLK, following both VCC33UP = 1 and rtc_rst = 0. 3. Counter will first increment on the 64th rising edge of RTCCLK after all of the following are true: reset is removed, the rstb_cnt bit is set to 1, and the cntr_en bit is set to 1; it will then increment every 128 RTCCLK cycles. v2.0 21 CoreAI ADC Operation (internal or external), mode selection resolution), and clock divider settings. Control of the ADC within the AB macro in CoreAI is accomplished by APB reads and writes. After a power-up reset condition, the ADC will come out of its reset state and commence with its internal calibration sequence. When this calibration sequence has finished, the ADC will be ready to use for conversions. Read the INT[1:0] register bits to obtain status information relevant to the ADC calibration. The user must configure the analog quads appropriately via the ACM interface to match the required design-specific voltage, current, and temperature ranges prior to performing ADC conversions; failure to do so may result in damage to the Fusion device. The SmartGen software can be used to configure the analog quads and RTC. ADC Control A typical analog-to-digital conversion is shown starting in Figure 7 and ending in Figure 8 on page 23. The steps for performing an ADC conversion are as follows: 1. Read the ADC Status register to ensure that the ADC is not busy calibrating or performing a conversion. 2. Write the desired ADC settings to ADC Control register 1, including the voltage reference selection 3. Write the desired ADC settings to ADC Control register 2, including the sample time control and channel number to sample (1 of 32). 4. Set the Start Conversion bit to begin the conversion process. 5. If a current or temperature monitor operation is used on a corresponding AC or AT input pin, a write must be done to set the corresponding current or temperature monitor strobe high in ADC Control register 3 or ADC Control register 4, respectively. Refer to the Fusion datasheet for details on external component connection requirements for current and temperature monitoring. 6. Keep reading the high-order ADC Status register until the ADC is not busy performing a conversion. 7. If a current or temperature monitor operation has completed using a corresponding AC or AT input pin, a write must be done to set the corresponding current or temperature monitor strobe low in ADC Control register 3 or ADC Control register 4, respectively. 8. Read the low-order ADC Status register to obtain the lower 8 bits of the resulting ADC conversion data (the upper 4 bits of conversion data have already been read from the high-order ADC Status register). ADC Conversion Starts PCLK PADDR[4:0] ADCStat(hi) ADCCtrl1(lo) ADCCtrl1(hi) ADCCtrl2(lo) ADCCtrl2(hi) ADCStat(hi) PWRITE PSEL PENABLE 00 PWDATA[7:0] PRDATA[7:0] 01 08 00 22 11 60 Note: 8-bit APB reads and writes are shown. Figure 7 • ADC Start of Conversion v2.0 (ADC CoreAI ADC Conversion Ends PCLK PADDR[4:0] ADCStat(hi) ADCStat(lo) PWRITE PSEL PENABLE PWDATA[7:0] PRDATA[7:0] 20 15 55 Note: 8-bit APB reads and writes are shown. Figure 8 • ADC End of Conversion ADC Result Read FIFO Note that although the ADC conversion results are stored as one 16-bit word, the four upper bits of this 16bit word are reserved for possible future use. Since there is no channel information associated with each ADC conversion word, it is up to the user to maintain temporal coherency between conversions and resulting data. An optional read FIFO, capable of holding up to 256 analog-to-digital conversions, is instantiated in CoreAI when the USE_RDFIFO parameter/generic is set to 1. The controlling element that is connected to CoreAI (internal or external microprocessor or microcontroller, or custom FPGA logic) can read resulting ADC conversions from this FIFO when desired. Resulting ADC conversion data is always written into the FIFO 12 bits at once, regardless of the ADC resolution (8-, 10-, or 12-bit), and is MSBjustified so that the resulting values are always of the same order of magnitude. The steps for reading resulting ADC conversion data from the read FIFO are as follows: Interrupt Logic Although polling operations have been described to control the ACM and ADC, wherein status registers are periodically read (polled), the INTERRUPT output may be connected to a microprocessor or microcontroller to indicate similar events (e.g., ACM reads and writes completing, ADC calibration events, read FIFO events, etc.). In this case, interrupt service routines may be written in software to determine what actions, if any, should be taken for each of the interrupt events. Any or all interrupt events can be disabled by writing logic 0 values to the INTEN[14:0] register bits to mask the effect of each of the interrupt sources; it is the responsibility of the microprocessor/microcontroller software developer to determine what should or should not be masked. 1. Read the Read FIFO Status register to check if there is data in the FIFO (not empty). 2. If the APB_16BIT_DATA parameter/generic is set to 0 (8-bit mode), read the Read FIFO Data Output register twice in a row to retrieve the lower 8 bits then the upper 4 bits of ADC conversion data. If the APB_16BIT_DATA parameter/generic is set to 1 (16-bit mode), read the Read FIFO Data Output register once to retrieve all 12 bits of ADC conversion data. 3. Repeat steps 1 and 2 until the Read FIFO is empty. v2.0 23 CoreAI Ordering Information Order CoreAI through your local Actel sales representative. Use the following naming convention when ordering: CoreAI-XX, where XX is listed in Table 34. Table 34 • Ordering Codes Traditional (FTP) Delivery CoreConsole Delivery EV Evaluation version Evaluations included with CoreConsole SN Single use netlist OC Obfuscated RTL – 1 year license AN Multiple use netlist OM Obfuscated RTL – multiple use license SR Single use RTL RC RTL source – 1 year license AR Multiple use RTL RM RTL source – multiple use license UR Unrestricted technology (on request) UG Upgrade M Maintenance Datasheet Categories In order to provide the latest information to designers, some datasheets are published before data has been fully characterized. Datasheets are designated as "Product Brief," "Advanced," and "Production." The definitions of these categories are as follows: Product Brief The product brief is a summarized version of an advanced or production datasheet containing general product information. This brief summarizes specific device and family information for unreleased products. Advanced This datasheet version contains initial estimated information based on simulation, other products, devices, or speed grades. This information can be used as estimates, but not for production. Unmarked (production) This datasheet version contains information that is considered to be final. 24 v2.0 Actel and the Actel logo are registered trademarks of Actel Corporation. All other trademarks are the property of their owners. www.actel.com Actel Corporation Actel Europe Ltd. Actel Japan www.jp.actel.com Actel Hong Kong www.actel.com.cn 2061 Stierlin Court Mountain View, CA 94043-4655 USA Phone 650.318.4200 Fax 650.318.4600 Dunlop House, Riverside Way Camberley, Surrey GU15 3YL United Kingdom Phone +44 (0) 1276 401 450 Fax +44 (0) 1276 401 490 EXOS Ebisu Bldg. 4F 1-24-14 Ebisu Shibuya-ku Tokyo 150 Japan Phone +81.03.3445.7671 Fax +81.03.3445.7668 Suite 2114, Two Pacific Place 88 Queensway, Admiralty Hong Kong Phone +852 2185 6460 Fax +852 2185 6488 51700066-0/3.06