Answers Database
PROMS: About PROM/EEPROM file formats -- Intel MCS, Motorola EXOR, Tektronix HEX
Record #476
Problem Title:
PROMS: About PROM/EEPROM file formats -- Intel MCS, Motorola EXOR,
Tektronix HEX
Problem Description:
Keywords: prom eeprom format mcs exor tekhex
Urgency: standard
General Description:
Xilinx supports 3 PROM file formats for programming
parallel proms and Xilinx devices--
Intel MCS, Motorola EXORmacs, and Tektronix HEX
Solution 1:
PROM File Formats
-----------------
INTEL MCS-86 HEXADECIMAL OBJECT
File Format Code 88
The Intel 16-bit 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 four record types are:
00 = data record
01 = end record(signals end of file)
02 = extended address record(provides the offset to
determine the absolute destination address)
03 = start record(ignored during input and not sent
during output by Data I/O translator firmware)
Input data record(type 00)
----------------------------------------------------------
\ : | BC | AAAA | 00 | HHHHHHHH..HH | CC \
---------------------------------------------------------
start byte hex record HH = checksum
char count address type 1 data byte (2 chars)
(2 chars) (4 chars) (2 chars) (up to 32 chars)
End of File record(type 01)
----------------------------------------
\ : | 00 | 0000 | 01 | FF \
----------------------------------------
start BC address record checksum
char = 00 = 0000 type = FF
Extended address record(type 02)
-----------------------------------------------------
\ : | 02 | 0000 | 02 | HHHH | CC \
-----------------------------------------------------
start BC address record 2 bytes checksum
char = 02 = 0000 type (offset) (2 chars)
(4 chars)
Start Address record(type 03) 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 bytecount,
address, and any data bytes) in hexadecimal notation.
The extended 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.
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.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MOTOROLA EXORmacs
File Format Code 87
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.
Data record (if address field has 4 chars)
-------------------------------------------------
\ S1 | BC | AAAA | HHHHHHHH..HH | CC \
---------------------------------------------------------
start byte hex HH = checksum
char count address 1 data byte (2 chars)
(2 chars) (4 chars) (up to 32 chars)
Data record (if address field has 6 chars)
---------------------------------------------------
\ S2 | BC | AAAAAA | HHHHHHHH..HH | CC \
----------------------------------------------------
start byte hex HH = checksum
char count address 1 data byte (2 chars)
(2 chars) (6 chars) (up to 32 chars)
End-of-file record
------------------------------------- *NOTE: Start chars
\ S* | 03 | 0000 | CC \ must be S9 if previous
-------------------------------------- record began with S1.
start byte hex checksum May be S9 or S8 if
char count address (2 chars) previous record began
(always 03) (always 0000) with S2.
Byte Count is the number of data bytes in the record plus 3(if
four hex char address) or plus 4(if 6 hex char address) for
checksum and address.
Checksum is one's complement of binary summation of preceding bytes
in the record (including byte count, address, and data bytes) in
hexadecimal notation.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TEKTRONIX HEXADECIMAL
File Format Code 86
The Tektronix Hexadecimal format for a data file consists of a
9-character prefix (start char, address, bytecount, and checksum
of the prefix) followed by data bytes and ended by a 2-char
checksum of the data characters. The end-of-file record consists
only of control characters used to signal the end of transmission
and a byte count and sum-check for verification.
Data record
----------------------------------------------------------
\ / | AAAA | BC | CC | HHHHHHHH..HH | CC \
-----------------------------------------------------------
start hex byte prefix HH = data
char address count checksum 1 data byte checksum
(4 chars) (2 chars) (2 chars) (up to 32 chars) (2 chars)
End-Of-File record
----------------------------------
\ / | AAAA | 00 | CC \
-----------------------------------
start transfer byte checksum
char address count (2 chars)
(4 chars) = 00
The prefix checksum is the eight-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 eight-bit sum, modulo 256, of the four-bit
hexadecimal values of the digits that make up the data bytes.
*************************************************************************
Tektronix maximum address: 65536 (x10000)
Motorola EXORmacs maximum address: 16777216 (x1000000)
Intel MCS-86 Hexadecimal maximum address: 1048576 (x100000)
Solution 2:
End of Record #476
For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals! |