Шестнадцатеричный файл (формат Intel) (.hex) Определение

Текстовый файл ASCII (с расширением .hex). Вы можете использовать шестнадцатеричный файл (формат Intel) (.hex) в программном обеспечении Quartus ® Prime для хранения начальных значений памяти для блока памяти, такого как RAM или ROM, который реализован. в устройстве FPGA или для создания исполняемых файлов программного проекта.

Вы можете использовать файлы .hex в качестве входных файлов в программе Quartus ® Prime следующими способами:

  • Редактор памяти может создать файл .hex для инициализации памяти в компиляторе и симуляторе. Вы также можете использовать файл инициализации памяти (.mif) для предоставления данных инициализации памяти.
  • Редактор содержимого памяти в системе может использовать и создавать файл .hex для импорта и экспорта данных.
выравнивание текста: слева;
Формат каждой строки в .hex-файле следующий: : AABBBBCCDD "¦DDEE

Код

Определение

AA

количество байтов в поле данных ( DD "¦DD )

BBBB

начальный адрес

CC

тип (00 = данные, 01 = конец файла, 02 = смещение адреса)

DD..DD

поле данных

EE

значение контрольной суммы

Важно: из-за сложности шестнадцатеричного ( Intel-Format) Тип файла, Intel рекомендует использовать Quartus ® Prime Memory Editor для создания файлов .hex.

Вы можете сохранить данные конфигурации для одного или нескольких устройств Intel в выходном файле, который называется шестнадцатеричным (Intel- Формат) Выходной файл (.hexout). Формат файла .hexout представляет собой текстовый файл ASCII с расширением .hexout, чтобы избежать перезаписи исходных файлов содержимого памяти с расширением .hex.

Ширина данных файла .hex всегда кратна 8 битам. Когда вы инициализируете блок памяти, ширина которого не равна ширине файла .hex, программа Quartus ® Prime обертывает или дополняет файл, как описано в таблице ниже:

выравнивание текста: слева;

Ширина данных файла больше ширины памяти

Ширина данных файла меньше ширины памяти

Размер памяти кратен 8:

  • Когда ширина данных файла .hex кратна ширине памяти, программа Quartus ® Prime переносит данные по последующим адресам.
  • Когда ширина данных файла .hex не кратна ширине памяти, программа Quartus ® Prime помещает данные в кратную ширину памяти, просто больше ширины данных файла .hex. Например, при ширине памяти 24 (адрес: 040000002A124FFF72) и ширине данных файла .hex 32 (адрес: 00000001FF) программа Quartus ® Prime заполняет 32-битный файл .hex ширину данных до 48 бит (кратное 24 больше, чем 32), а затем оборачивает 48 бит вокруг ширины памяти 24 бита, в результате получается: Адрес: 00002A Адрес: 124FFF

Размер памяти не кратен 8:

Программное обеспечение Quartus ® Prime упаковывает данные в память, ширина которой равна кратной 8 и чуть больше фактическая ширина памяти, а затем усекает блок памяти до фактического размера ширины памяти, который не кратен 8.

  • RAM/ROM. Программное обеспечение Quartus ® Prime заполняет блок памяти нулями рядом со старшим битом (старший бит).
  • MAX ® II User Flash Memory (UFM) — программное обеспечение Quartus ® Prime заполняет блок памяти блоками рядом с младший значащий бит (младший значащий бит).

Если размер файла .hex не соответствует размеру памяти, которую вы инициализируются, программное обеспечение Quartus ® Prime работает, как описано в таблице ниже:

text-align: left;

Глубина данных файла больше глубины памяти

Глубина данных файла меньше глубины памяти

Игнорирует лишние данные.

  • RAM/ROM. Программа Quartus ® Prime инициализирует адреса без данных до нуля.
  • MAX ® II User Flash Memory (UFM) — Quartus ® Prime Программа инициализирует адреса без данных шестнадцатеричным значением F … F >.
Примечание. Глубина данных файла относится к числу инициализируемых адресов. Программное обеспечение Quartus II заполняет адреса, которые вы не инициализируете нулями или F … F >, в зависимости от того, является ли глубина данных файла UFM или нет.
Примечание:

В программном обеспечении Quartus ® Prime у вас есть возможность чтения или записи файлов .hex в байтовых адресных (шестнадцатеричных Intel формат) или режим с адресацией по словам. Вы можете выбрать один из двух режимов, изменив параметр «Чтение или запись шестнадцатеричных файлов (.hex) с использованием байтовой адресации (формат Intel)» в программном обеспечении Quartus ® Prime. Установка этого параметра на странице «Редактор памяти» в диалоговом окне «Параметры». Включение этой опции для текущего проекта отменяет глобальную настройку.

Программное обеспечение Quartus ® Prime всегда считывает файлы .hex с адресацией по словам в режиме адресации по словам, даже если чтение или запись шестнадцатеричных файлов (.hex) с использованием байтовой адресации (Формат Intel) включена опция.



Справка разработчика

Формат файла Intel HEX

Примечание:
В этом разделе «Формат файла Intel HEX» используется материал из статьи Википедии «Intel HEX» , выпущенной под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported ( просмотреть авторов).

Записи файла SQTP (строки текста) соответствуют формату файла Intel ® HEX . Intel HEX состоит из строк текста ASCII, разделенных символами перевода строки или возврата каретки, либо обоими. Каждая текстовая строка содержит шестнадцатеричные символы, которые кодируют несколько двоичных чисел. Двоичные числа могут представлять данные, адреса памяти или другие значения, в зависимости от их положения в строке, а также от типа и длины строки.

Запись — это строка текста, состоящая из шесть полей. Каждое поле содержит символ и несколько цифр в следующем порядке слева направо:

Поле 1. Начальный код — один символ
Этот символ представляет собой двоеточие ASCII (:).
Поле 2. Количество байтов — две шестнадцатеричные цифры
Эти две цифры указывают количество байтов (пары шестнадцатеричных цифр) в поле данных. Максимальное количество байтов — 255 (0xFF).
Например, обычно используется 16 (0x10) и 32 (0x20) байтов.
Поле 3. Адрес — четыре шестнадцатеричных цифры
Эти четыре цифры представляют 16-битное смещение начального адреса памяти данных.
Физический адрес данных вычисляется путем добавления этого смещения к ранее установленному базовому адресу. Это обеспечивает адресацию памяти, превышающую предел в 64 килобайта для 16-битных адресов. Базовый адрес, который по умолчанию равен нулю, может быть изменен различными типами записей.
Базовые адреса и смещения адресов всегда выражаются в виде значений с прямым порядком байтов.
Поле 4. Тип записи — две шестнадцатеричные цифры, от 00 до 05
Эти две цифры определяют значение данных поле. Для SQTP используются только три типа; 00, 01 и 04 (см. Таблицу в «Пример файла SQTP» ).
Поле 5. Данные — последовательность из n байтов данных
Данные представлены 2n шестнадцатеричными цифрами. В некоторых записях это поле отсутствует (n равно нулю).
Значение и интерпретация байтов данных зависят от приложения.
Поле 6. Контрольная сумма — две шестнадцатеричные цифры
Эти две цифры представляют вычисленное значение, которое используется для проверки того, что запись не содержит ошибок, обеспечивая суммирование сумма каждого байта в строке равна нулю. См. Раздел «Расчет контрольной суммы».

Как указано в таблице форматов выше, последние два символа представляют собой контрольную сумму данных в строке. Поскольку контрольная сумма представляет собой двузначное шестнадцатеричное значение, она может представлять значение от 0 до 255 включительно.

Контрольная сумма вычисляется путем суммирования значений данных в строке, исключая ведущие двоеточие и сам байт контрольной суммы и его дополнение до двух. Например, рассмотрим строку:
: 0300300002337A1E

Разбив эту строку на компоненты:

  • Длина записи: 03 (3 байтов данных)
  • Адрес: 0030 (3 байта будут сохранены в 0030, 0031 и 0032)
  • Тип записи: 00 (обычные данные)
  • Данные: 02, 33, 7A
  • Контрольная сумма: 1E

Взяв все байты данных, указанные выше, мы должны вычислить контрольная сумма основана на следующих шестнадцатеричных значениях:

03 + 00 + 30 + 00 + 02 + 33 + 7A = E2

Два дополнения к E2 — это 1E, как видите, значение контрольной суммы. Дополнение числа до двух — это значение, которое необходимо добавить к числу, чтобы получить значение 256 (десятичное). То есть E2 + 1E = 100.

Вы также можете вычислить дополнение до двух, вычитая значение из 100h. Другими словами, 100h — E2h = 1Eh, что является контрольной суммой.

Если рассматриваемое значение больше FFh, просто возьмите часть, которая меньше 100h.

Например, если вы хотите получить два дополнения к значению 494h, просто отбросьте ведущую «4», в результате чего останется 94h. Двойное дополнение 94h составляет 6Ch.

Вернуться к началу

Оцените статью
clickpad.ru
Добавить комментарий