Анализ параметров конфигурации




АННОТАЦИЯ

Данный документ содержит руководство системного программиста по программе
”Транслятор команд конфигурирования блока PU СБИС ЦУПП в ассемблер nm64 ”

 


СОДЕРЖАНИЕ

1. Общие сведения о программе. 4

Структура файлов и каталогов. 4

Внешние зависимости. 5

Сборка проекта для Windows. 5

 


Общие сведения о программе

Транслятор осуществляет преобразование текста на языке ассемблера nm64 со специальными вставками в текст на чистом ассемблере, то есть заменяет специальные вставки соответствующим кодом на ассемблере.

Транслятор выводит входной файл без изменения, за исключением специальных вставок – команд конфигурирования PU, определение и синтаксис которых даны ниже.

Вместо каждой из команд конфигурирования транслятор должен выводить код, правила формирования которого описаны в данном документе ниже.

Предполагается следующий алгоритм работы транслятора:

· вывод строк входного файла, не содержащих команд конфигурирования PU,

· обнаружение в коде входного файла команд конфигурирования PU,

· синтаксический разбор, выделение из команды параметров конфигурации PU,

· анализ значений параметров – выявление ошибочных конфигураций,

· расчёт кодов на основе параметров,

· генерация ассемблерного кода на основе рассчитанных кодов и встроенного шаблона.

Запуск программы

Программа запускается со следующими аргументами:

pu_preproc [-o out_file_name] [in_file_name]

Где:

in_file_name – имя входного файла,

out_file_name – имя выходного файла

Параметры in_file_name и out_file_name необязательные. По умолчанию в качестве входного потока используется stdin, а в качестве выходного stdout.

Принцип работы программы

Программа ищет команды конфигурирования PU, и преобразует команду в ассемблерный код для NM6403\05, который выполняет инициализацию модуля PU в соответствии с заданными параметрами.

Предполагается следующий алгоритм работы транслятора:

· вывод строк входного файла, не содержащих команд конфигурирования PU,

· обнаружение в коде входного файла команд конфигурирования PU,

· синтаксический разбор, выделение из команды параметров конфигурации PU,

· анализ значений параметров – выявление ошибочных конфигураций,

· расчёт кодов на основе параметров,

· генерация ассемблерного кода на основе рассчитанных кодов и встроенного шаблона.

 

Команда конфигурирования PU – это фрагмент кода, который начинается с ключевого слова .pu_config, далее через запятую заданы параметры конфигурации, заканчивается знаком;. Если выражение не соответствует показанному синтаксису, то транслятор выдаёт ошибку и прекращает обработку команды.

 

<pu_configuration>::= .pu_config <parameter_definition> {, <parameter_definition>};

<parameter_definition>::= <static_definition> | <dynamic_definition>

<static_definition>::= <constant_parameter> = <constant_expression>

<dynamic_definition>::= <variable_parameter> = <variable_expression>

<constant_parameter>::=

in_bitwise |

out_bitwise |

sign_extend |

saturate |

reverse |

in_matrix |

out_matrix |

out_main_diag |

out_column |

col_bit_offset |

normalize |

in_align |

step |

in_size |

Out_size

<variable_parameter>::=

source |

destination |

buffer |

Buffer_size

<constant_expression> - число в десятичном формате,

<variable_expression> - строка, не содержащая символов, и; и перехода на новую строку.

Валидные <variable_expression> переносятся без изменений в результирующий ассемблерный файл.

 

В следующей таблице приведены множества возможных значений аргументов команды конфигурирования

Таблица параметров конфигурации PU (.pu_config)

Название Возможные значения (без учёта взаимного влияния параметров) Значение по умолчанию Описание
in_bitwise 1 | 2 | 4 | 8 | 16 | 32 | 64   разрядность входных данных
out_bitwise 1 | 2 | 4 | 8 | 16 | 32 | 64   разрядность выходных данных
Sign_extend 1 | 0   при распаковке расширять знаком или нулём
saturate 1 | 0   при упаковке - насыщать или нет (насыщение всегда знаковое)
reverse 1 | 0   отразить зеркально порядок данных в выходном векторе или нет
in_matrix 1 | 0   входные данные в виде диагональной матрицы
out_matrix 1 | 0   выдать выходные данные в виде матрицы
out_main_diag 1 | 0   главную или побочную диагональ заполнять при выдаче диагональной матрицы
out_column 1 | 0   1 - выдать выходные данные в виде матрицы, в которой заполнен только один столбец, 0 - в виде диагональной матрицы
col_bit_offset 0..63   при выдаче матрицы, в которой заполнен только один столбец, определяет номер младшего разряда данного в выходном слове
normalize 0..63   при упаковке - количество отбрасываемых младших разрядов данного
in_align 0..63   если входные данные не выровнены по 64-разрядной сетке, то данный параметр указывает, на какое количество бит данные не выровнены (при работе блока потеряны будут только in_align бит в первом входном слове после запуска)
Step 1..64 64 / max (in_bitwise, out_bitwise) при распаковке - количество входных элементов данных, которые следует отбрасывать после получения каждого целого 64-разрядного вектора выходных данных
Source любая строка без, и; “” если задан, то указывает на начальный адрес массива входных данных, с которого начинается выборка, также если данный параметр задан, выбирается режим Master-Slave
destination любая строка без, и; “” если задан, то указывает на начальный адрес массива местоназначения выходных данных, по которому начинается запись, также если данный параметр задан, выбирается режим Slave-Master
in_size 1..2147483647 (0x7FFFFFFF) - количество входных данных (в 64-разрядных словах), либо in_size, либо out_size должен быть обязательно задан, если задан out_size, то in_size рассчитывается автоматически (описание ниже) с учётом других настроек
out_size 1..2147483647 (0x7FFFFFFF) - количество выходных данных (в 64-разрядных словах), либо in_size, либо out_size должен быть обязательно задан, если задан in_size, то out_size рассчитывается автоматически (описание ниже) с учётом других настроек
Buffer любая строка без, и; “” если задан, то указывает на буфер (младший адрес), за границы которого PU не может выйти при генерации адресов (при записи или чтении) если не задан, то берётся тот параметр из двух (source|destination), который задан
buffer_size любая строка без, и; “” если задано, то устанавливает размер в 64-разрядных словах буфера, заданного параметром buffer; если не задан, то берётся in_size|out_size в зависимости от того, какой параметр из двух source|destination задан

 

Настройка блока PU физически осуществляется через программно-доступные периферийные регистры процессора NMC.

Неправильное сочетание кодов в конфигурационных регистрах PU может привести к зависанию системы. Функция транслятора – генерировать валидные коды настроек PU на основе заданных пользователем параметров конфигурации.

Поэтому перед началом генерации кода программа выполняет проверки валидности значений параметров по следующему алгоритму:

В первую очередь проверяется, что заданные пользователем значения параметров вообще лежат в допустимых диапазонах (выше в таблице параметров).

На втором этапе проверяется, валидно ли сочетание параметров.

В конце – рассчитывается недостающий параметр in_size или out_size.

 


 

Анализ параметров конфигурации

 

Приведённые ниже условия проверяют валидность сочетания параметров.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-09-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: