Echelon ISI User Manual

Page 76

Advertising
background image

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:

Advertising