AR# 476


PROMGen - Description of PROM/EEPROM file formats: MCS, EXO, HEX, and others


The iMPACT software can be used to generate the following PROM file formats:

  • Intel MCS-86 Hexadecimal Object (.mcs)
  • Motorola EXORmacs (.exo)
  • Tektronix HEX (.tek)

Hexadecimal files ("'.hex") containing only data (without addressing) in ASCII format can also be generated using the iMPACT software.

EXO files will not be support past iMPACT 11.4 and PROMGen will need to be used to change these files into MCS files.

For more PROM File Articles and other Configuration Related Articles, see (Xilinx Answer 34104).


PROMGen can be used to change file format from one type to the another in the following manner.

The following changes an ".mcs" file into a hex file:

promgen -p hex -r input.mcs -o output.hex

PROM File Formats


File Format Code 88

The Intel Hexadecimal Object record format has a 9-character (4 field) prefix that defines the start of the record, byte count, load address, and record type, as well as a 2-character checksum suffix.

The 16-bit hexadecimal format allows for a 20-bit segmented address space, and the 32-bit format allows for the 32-bit linear address space.

The six record types are:

00 = Data Record
01 = End of File Record (signals the end of the file)
02 = Extended Segment Address Record (provides the offset to determine the absolute destination address)
03 = Start Segment Address Record (is ignored during input and not sent during output by Data I/O translator firmware)
04 = Extended Linear Address Record (provides the offset to determine the absolute destination address) *
05 = Start Linear Address Record (provides the execution start address) *

*NOTE: The Extended Linear Address Record type and Start Linear Address Record type are supported only in the 32-bit format.

(The Start Segment Address record (Type 03) is not used by Data I/O firmware.)

The checksum is the two's complement of the binary summation of the preceding bytes in the record (including the byte count, address, and any data bytes) in hexadecimal notation.

The extended segment address record (Type 02) defines Bits 4 to 19 of the 20-bit segment base address. This address will be added to subsequent data record addresses to provide the absolute address. (This record can appear randomly in the file, but for this application, it will be the initial record.)

The extended linear address record (Type 04) defines bits 16 to 31 of the 32-bit linear base address. This address will be added to subsequent data record addresses to provide the absolute address.

NOTE: Always specify the address offset when using this format, even when the offset is zero.

The Data I/O firmware will force the record size to 16 (decimal) if the record size is specified greater than 16.


File Format Code 87

A Motorola data file may begin with a sign-on record, but for this application it will be ignored. (Data records have an 8- or 9-character prefix and a two- character checksum suffix.)

The Byte Count is the number of data bytes in the record plus 3 (for a four-hexadecimal character address) or plus 4 (for a six-hexadecimal character address) for the checksum and address.

The checksum is a one's complement of binary summation of preceding bytes in the record (including byte count, address, and data bytes) in hexadecimal notation.


Tektronix maximum address:..................................................65536 (x100000)

Motorola EXORmacs maximum address:..........................16777216 (x100000)

16-bit Intel MCS-86 Hexadecimal maximum address:..........1048576 (x100000)

32-bit Intel MCS-86 Hexadecimal maximum address:....4294967296 (x100000)



File Format Code 86

The Tektronix Hexadecimal format for a data file consists of a 9-character prefix (start character, address, byte count, and checksum of the prefix) followed by data bytes and ended by a 2-character checksum of the data characters. The end-of-file record consists only of control characters used to signal the end of the transmission and a byte count and sum-check for verification.

The prefix checksum is the 8-bit sum of the four-bit hexadecimal value of the six digits that make up the address and byte count. The data checksum is the 8-bit sum, modulo 256, of the 4-bit hexadecimal values of the digits that make up the data bytes.

AR# 476
Date 03/08/2010
Status Active
Type General Article
People Also Viewed