NB2DSK01 Auto-Configuration - Identifying System Hardware

Frozen Content

Before taking a closer look at the auto-configuration procedure itself, it is a good idea to understand the technology by which such automatic configuration of the system is made possible.

The key to being able to configure an FPGA design project automatically, is the ability of Altium Designer to identify the specific hardware you are currently using in your system. Identification is made possible through the use of memory devices, located on:

  • the NB2DSK01 motherboard
  • the daughter board
  • each peripheral board
  • the Desktop Stereo Speaker Assembly NB2DSK-SPK01(though not used for auto-configuration purposes).

The device used on each board – a DS2406 from Maxim – is a 1-Wire compatible device. The NanoTalk Controller interrogates the DS2406 on each board over a single wire, resulting in the presence of six 1-Wire buses used for system identification purposes.

Figure 1 illustrates the 1-Wire board identification system in place for the Desktop NanoBoard NB2DSK01.


Figure 1. 1-Wire board identification system for the NB2DSK01.

Each 1-Wire memory device is pre-programmed with an Altium Board Identifier string. This string is 32 bytes long and can be represented as:

<UniqueID><ClassID><BatchID><VendorID>

The four components of the string are defined in the following sections.

UniqueID

<UniqueID> is an 8 byte code programmed by the manufacturer to guarantee a unique device. The 64 bits of this code are made up of three distinct parts. The first 8 bits provide the 1-Wire family code, the next 48 bits provide the serial number which is unique to each device. The last 8 bits provide a cyclic-redundancy-check of the first 56 bits. The full 64-bit code is stored in, and accessed from, a separate ROM within the device.

ClassID

<ClassID> is a 16 byte (hex-coded ASCII) ident for the board upon which the 1-Wire memory device resides. The string consists of the board code and the board revision, separated by a full stop. Right-padding using space characters (20h) ensures the length is kept to 16 bytes.

These 16 bytes are stored in, and accessed from, Page 0 of the DS2406's data memory (EPROM) in the address range 0000h000Fh.

Table 1 illustrates example coding for the NB2DSK01 motherboard, a daughter board, a peripheral board and the Desktop Stereo Speaker Assembly.

Table 1. Example strings.
Board
Format
Example Information
Resulting 16 Bytes entered into DS2406's EPROM

Motherboard

NB2DSKxx.nn
NB2DSK01.08

4E 42 32 44 53 4B 30 31 2E 30 38 20 20 20 20 20

Daughter Board

DBxx.nn
DB30.06

44 42 33 30 2E 30 36 20 20 20 20 20 20 20 20 20

Peripheral Board

PBxx.nn
PB01.07

50 42 30 31 2E 30 37 20 20 20 20 20 20 20 20 20

Speaker Board

NB2DSK-SPKxx.nn
NB2DSK-SPK01.07

4E 42 32 44 53 4B 2D 53 50 4B 30 31 2E 30 37 20

BatchID

<BatchID> is a 4 byte ident for the production run. These four bytes are stored in, and accessed from, Page 0 of the DS2406's data memory in the address range 0010h0013h.

VendorID

<VendorID> is a 4 byte ident for who made the board. This value is 00000001h for all Altium manufactured boards. These four bytes are stored in, and accessed from, Page 0 of the DS2406's data memory in the address range 0014h0017h.
 

The remaining 8 bytes in Page 0 of the device's data memory (address range 0018h001Fh) are left blank (contain FFh).

 
In terms of auto-configuration, it is the <ClassID> portion of the string that empowers the feature, as it is this string that determines the constraint file required in relation to a board.

See Also

For more information on the DS2406 device, refer to the datasheet (DS2406.pdf) available at www.maxim-ic.com.

For a high-level overview of the 1-Wire bus protocol, refer to the application note (AN3989.pdf), also available at www.maxim-ic.com.

For information on how these IDs are used in populating a configuration with the necessary constraint files, see NB2DSK01 Auto-Configuration - Configuring the Project.

You are reporting an issue with the following selected text and/or image within the active document: