Echelon ISI User Manual
Page 76

ISI Programmer’s Guide
74
The connection table contains one entry for each simple connection the device has
joined, and for each simple extension to a connection. Connections and
connection extensions from compound assemblies require
N
connection table
entries, with
N
being 1 + (
Width
/ 4).
You can replace the connection table to support more simultaneous connections
or to support more complex connections, requiring a larger connection table. You
can also replace the default connection table to implement one with less than
eight entries to suit resource-limited devices. When you replace the connection
table, you can have 0 – 254 entries in the table. To replace the connection table,
override the IsiGetConnectionTableSize()
,
IsiGetConnection(), and
IsiSetConnection() functions. If any of these functions are overridden, then all
three must be overridden. If some but not all are overridden, the ISI engine will
not function properly.
The connection table requires persistent storage; the content of the connection
table must not change when the device is reset or looses power. The size of the
connection table must be constant between device resets.
E
XAMPLE
1
The following example creates a connection table with 16 entries stored in on-
chip EEPROM:
#define CTABSIZE 16u
static eeprom fastaccess IsiConnection
myConnectionTable[CTABSIZE];
unsigned IsiGetConnectionTableSize(void) {
return CTABSIZE;
}
const IsiConnection* IsiGetConnection(unsigned index) {
return myConnectionTable + index;
}
void IsiSetConnection(IsiConnection* pConnection, unsigned index)
{
myConnectionTable[index] = *pConnection;
}
You can also move the connection table to off-chip storage, including an off-chip
serial EEPROM for low-cost non-volatile memory. The ISI engine accesses one
connection table entry at a time so that you only need to buffer one connection
table entry at a time if you move it out of the Neuron memory space. The ISI
engine makes no assumptions about the pointer that your application returns to
the IsiGetConnection() call, except that it points to a single valid connection table
entry
.
You can therefore buffer a single connection table entry within the
Neuron address space, and always return the same address.
The connection table is accessed frequently, so your IsiGetConnection()
implementation should minimize processing time.
E
XAMPLE
2
The following example creates a connection table with 16 entries stored in
off-chip storage: