Device structure
Overview
A Coolrunner II device is made of:
- the AIM (Advanced Interconnect Matrix), which routes MC outputs and input buffer outputs to FB inputs
- 2-32 FBs (function blocks), each of which has:
- 40 routable inputs from AIM
- 56 PTs (product terms) shared between all MCs, most of them having one special function that can be used
instead of (or in addition to) being included in MC sum terms:
PT4
: also known as CTC (control term clock), routable to all register CLK inputs in this FBPT5
: also known as CTR (control term reset), routable to all register RST inputs in this FBPT6
: also known as CTS (control term set), routable to all register SET inputs in this FBPT7
: also known as CTE (control term enable), routable to all output enables in this FBPT{8+i*3}
: also known asMC[i].PTA
, routable to the given MC's register RST and SET inputsPT{9+i*3}
: also known asMC[i].PTB
, routable to the given MC's IOB output enablePT{10+i*3}
: also known asMC[i].PTC
, routable to the given MC's XOR gate and register CLK and CE inputs
- 16 MCs (macrocells), each of which has:
- a sum term, including an arbitrary subset of this FB's PTs
- a dedicated XOR gate, which can XOR the sum term with
PTC
(or with 0) - optional inverter
- a register, with:
- D input tied to either the XOR gate output, or this MC's input buffer (sidestepping the ZIA)
- configurable mode, one of: DFF, TFF, D latch, DFF with clock enable
- clock (or latch gate), freely invertible and routable from FCLK, PTC, CTC
- async reset, routable from PTA, FSR, CTR, const 0
- async set, routable from PTA, FSR, CTS, const 0
- clock enable, routable from PTC
- configurable dual-edge mode
- configurable initial value
- output to AIM, routed either from the XOR gate (combinatorial) or the register's Q output (registered)
- IOB (input/output buffer) (on larger devices, not all MCs have an IOB), with:
- input buffer (routed to AIM and this MC's register D input), configurable in several modes:
- CMOS Input
- Schmitt trigger input
- differential input (with a per-bank voltage reference)
- used as voltage reference for this bank
- output to AIM, routed either from the input buffer or from the MC's register Q output
- either combinatorial (from XOR gate) or registered (from register's Q) output to the output buffer, selectable independently from AIM output
- output enable, routable from PTB, FOE, CTE, const 0, const 1
- some special modes (replacing normal output enable mechanism):
- programmed ground (always-on const-0 output)
- open drain output
- configurable slew rate (fast or slow)
- termination enable (termination mode is selected globally)
- (on larger devices) individually enabled data gate latch
- input buffer (routed to AIM and this MC's register D input), configurable in several modes:
- (on larger devices) clock divider
- if enabled, drives the FCLK2 global net
- driven by the GCLK2 pad
- can divide by 2, 4, 6, 8, 10, 12, 14, 16
- has a reset driven directly by the CDRST pad
- has optional delay [?]
- global signals
- 3 FCLK signals, hardwired 1-1 to GCLK pins, except for FCLK2 which can optionally go through the clock divider
- 4 FOE signals, routable from:
- the corresponding GOE pad, directly
- the corresponding GOE pad, inverted
- MC output
- 1 FSR signal, freely invertible, driven from GSR pads
- (on larger devices) 1 DGE signal, driven from DGE pad
- per-bank configuration
- input buffer mode (high voltage or low voltage)
- output buffer mode (high voltage or low voltage)
- special global configuration bits
- termination mode
- global VREF enable
- global DGE enable
- 32-bit standard JTAG USERCODE
- read protection enable
- DONE bit
AIM and FB inputs
TODO: write me
Product terms
TODO: write me
Sum term, XOR gate
TODO: write me
Register
TODO: write me
Macrocell and IOB outputs
TODO: write me
Input/output buffer
TODO: write me
Global networks
TODO: write me
Clock divider
TODO: write me
Bank configuration
TODO: write me
Misc configuration
TODO: write me