Методы цифровой обработки сигналов все активнее применяют в различных областях электроники, в том числе в космической технике. В соответствии с потребностями разработчиков компания Actel разработала новое семейство ПЛИС RTAX с интегрированными математическими блоками – RTAX-DSP. Эти ПЛИС обладают большим быстродействием в приложениях, связанных с цифровой обработкой сигналов, и при этом устойчивы к воздействию космической радиации.
Семейство RTAX-DSP создано на базе уже хорошо известного разработчикам космической техники семейства RTAX-S и имеет ту же внутреннюю архитектуру. Логическая матрица структурно разделена на несколько частей, которые объединяют в себе блоки суперкластеров, интегрированного ОЗУ, а в ПЛИС RTAX-DSP еще и математические блоки (рис.1). У ПЛИС нового семейства несколько меньше суперкластеров (СК), чем у аналогичных микросхем базового семейства RTAX-S. Это связано с тем, что небольшая их часть используется в качестве блоков ввода-вывода (БВВ) математических блоков, тем самым обеспечивается интерфейс с логической матрицей и ОЗУ.
В блоке все элементы соединяются посредством коротких связей, имеющих минимальные задержки. Это гарантирует высокое быстродействие и высокую эффективность использования ресурсов внутри блока.
Математический блок
Плис семейства RTAX-DSP содержат до 120 конфигурируемых математических блоков. Базовая конфигурация представляет собой умножитель 18×18 с накоплением результата (рис.2).
Блок имеет гибкую конфигурацию. Его можно эффективно использовать для вычисления наиболее широко применяемых математических функций для цифровой обработки сигналов, таких как быстрое преобразование Фурье (БПФ) и фильтр с конечной импульсной характеристикой (КИХ-фильтр). Математические блоки ориентированы также на применение в различных алгоритмах кодирования, сжатия и преобразования данных.
Рассмотрим основные возможные конфигурации блока.
Самая простая конфигурация – это умножение двух знаковых 18-разрядных чисел (рис.3). На выходе блока – 41-битный результат Р[40:0] и признак переполнения OVFL.
Блок может быть сконфигурирован также как два независимых 9-разрядных умножителя (рис.4). Это позволяет повысить быстродействие и увеличить эффективность использования блоков при работе с байтовыми числами, а также оптимизировать реализацию ряда алгоритмов (например, БПФ).
Результат умножения можно суммировать с данными со входа CIN, который подключается к блоку ОЗУ или регистрам, организованным в логической матрице ПЛИС, а также с данными со входа CDIN, который соединяется с выходом CDOUT соседнего математического блока, что обеспечивает возможность наращивания блоков (рис.5). Выбор входа данных производится сигналом CD_SEL. Результат умножения можно также складывать с результатом с выхода сумматора этого же блока, организовав обратную связь, которая управляется сигналом FDBK_SEL (рис.6). Для наращивания разрядности данных, над которыми будет производиться операция умножения, в блоке предусмотрена возможность сдвига разрядов данных, поступающих на сумматор с соседнего математического блока. Функция сдвига выбирается установкой в "1" сигнала SHIFT_SEL. Посредством сигнала SUB можно выбирать функцию сложения или вычитания. В отличие от умножителя, сумматор нельзя разделить на два сумматора меньшей разрядности. Поэтому при выборе конфигурации с двумя 9-разрядными умножителями схема получается асимметричной. Сумматор подключается только к одному умножителю в блоке.
В блоке на входах и выходах можно использовать буферные регистры D (см. рис.2–6), которые являются частью блока. Они применяются для хранения промежуточных результатов при циклических вычислениях, а также для того, чтобы предотвратить изменение данных на входе или выходе до завершения цикла вычислений.
Каскадирование блоков
Блоки можно каскадировать для увеличения разрядности данных. Например, для умножения двух 35-битных данных нужно соединить четыре блока (рис.7). Однако при каскадировании блоков увеличивается время выполнения операции, поскольку на входе последующего блока вычисленные данные с предыдущего блока появляются с задержкой, равной сумме времен выполнения операций сложения/вычитания и сдвига во всех блоках.
В системах, где требуется высокое быстродействие, при обработке больших массивов чисел можно использовать конвейер (рис.8). Идея заключается в следующем. Чтобы выполнить операцию над входными данными в каждом последующем блоке цепочки, нужно, чтобы завершил работу предыдущий блок. В результате в каждый момент времени работает только один блок. Суммарное время выполнения операции над числами складывается из времени ее выполнения в каждом блоке. При использовании же конвейера в первый блок в цепочке данные поступают непосредственно, а во втором блоке они записываются в промежуточный буферный регистр. После завершения вычислений в первом блоке данные с его выхода записываются в выходной регистр и поступают на второй блок, куда также подаются данные из входного буферного регистра. Одновременно с этим следующие данные для вычисления (следующая пара чисел) подаются в первый блок на вход и записываются во входной буферный регистр второго блока. По завершении вычисления во втором блоке в первом уже готов результат вычисления следующих данных. Аналогичным образом устроено конвейерное поступление данных и в следующих блоках. Число промежуточных регистров хранения зависит от номера блока в цепочке каскадирования. Таким образом, одновременно можно обрабатывать сразу несколько пар чисел, выполняя над ними операции в каждом блоке последовательно – по мере готовности данных. В итоге блоки не простаивают, и сокращается суммарное время обработки массивов данных.
Реализация алгоритма БПФ
В качестве примера того, как применяются математические блоки, рассмотрим построение алгоритма быстрого преобразования Фурье с использованием алгоритма временного прореживания Radix-2 "бабочка" (рис.9). Мы не будем описывать сущность данного метода с математическим обоснованием и выводом формул, а перейдем сразу к типовой схеме реализации. Для восьми точек потребуется трехступенчатый алгоритм (см. рис.9). Результатом на выходе Pout блока Radix-2 является сумма данных со входов Pin и Qin, а на выходе Qout – разность данных со входа Pin и произведения данных со входа Qin и параметра вращения W.
Если разрядность входных данных не превышает 18, то для реализации блока Radix-2 потребуется два математических блока (рис.10).
Реализовать быстрое преобразование Фурье можно с помощью циклических вычислений либо с помощью параллельной схемы.
Если необходимо минимизировать ресурсы ПЛИС, то следует выбрать алгоритм последовательного циклического вычисления с сохранением промежуточных данных (рис.11). В этом случае можно использовать всего один блок Radix-2, а исходные данные, конечный результат вычисления и промежуточные данные, а также таблицу параметров вращения сохранить в интегрированном двухпортовом ОЗУ. Для определения результата в представленной схеме потребуется 12 циклов вычислений – в соответствии с общим количеством блоков Radix-2 (см. рис.9).
Однако такая архитектура имеет крайне низкое быстродействие. Для его увеличения необходимо, чтобы вычисления выполнялись параллельно. В качестве разумного компромисса между объемом и быстродействием можно, например, вычислять параллельно значения на каждой ступени алгоритма БПФ (рис.12). Ступени при этом обрабатываются последовательно, а промежуточные значения хранятся в интегрированном ОЗУ. В нашем примере конечный результат будет получен за три такта.
ПЛИС RTAX-DSP предназначены для космической техники, поэтому математические блоки разрабатывались с учетом радиационной стойкости. Все буферные регистры – аппаратно троированные с мажорированием (рис.13). Вычислительная часть математического блока также выполнена троированной. В блоках ОЗУ можно использовать модуль контроля данных, который позволяет определить две и восстановить одну ошибку в ОЗУ. Тем самым обеспечиваются показатели потока отказов не более чем 10–10 на бит в день.
Таким образом, ПЛИС RTAX-DSP сочетают повышенную функциональность, надежность и радиационную стойкость, необходимые в космической технике.
В блоке все элементы соединяются посредством коротких связей, имеющих минимальные задержки. Это гарантирует высокое быстродействие и высокую эффективность использования ресурсов внутри блока.
Математический блок
Плис семейства RTAX-DSP содержат до 120 конфигурируемых математических блоков. Базовая конфигурация представляет собой умножитель 18×18 с накоплением результата (рис.2).
Блок имеет гибкую конфигурацию. Его можно эффективно использовать для вычисления наиболее широко применяемых математических функций для цифровой обработки сигналов, таких как быстрое преобразование Фурье (БПФ) и фильтр с конечной импульсной характеристикой (КИХ-фильтр). Математические блоки ориентированы также на применение в различных алгоритмах кодирования, сжатия и преобразования данных.
Рассмотрим основные возможные конфигурации блока.
Самая простая конфигурация – это умножение двух знаковых 18-разрядных чисел (рис.3). На выходе блока – 41-битный результат Р[40:0] и признак переполнения OVFL.
Блок может быть сконфигурирован также как два независимых 9-разрядных умножителя (рис.4). Это позволяет повысить быстродействие и увеличить эффективность использования блоков при работе с байтовыми числами, а также оптимизировать реализацию ряда алгоритмов (например, БПФ).
Результат умножения можно суммировать с данными со входа CIN, который подключается к блоку ОЗУ или регистрам, организованным в логической матрице ПЛИС, а также с данными со входа CDIN, который соединяется с выходом CDOUT соседнего математического блока, что обеспечивает возможность наращивания блоков (рис.5). Выбор входа данных производится сигналом CD_SEL. Результат умножения можно также складывать с результатом с выхода сумматора этого же блока, организовав обратную связь, которая управляется сигналом FDBK_SEL (рис.6). Для наращивания разрядности данных, над которыми будет производиться операция умножения, в блоке предусмотрена возможность сдвига разрядов данных, поступающих на сумматор с соседнего математического блока. Функция сдвига выбирается установкой в "1" сигнала SHIFT_SEL. Посредством сигнала SUB можно выбирать функцию сложения или вычитания. В отличие от умножителя, сумматор нельзя разделить на два сумматора меньшей разрядности. Поэтому при выборе конфигурации с двумя 9-разрядными умножителями схема получается асимметричной. Сумматор подключается только к одному умножителю в блоке.
В блоке на входах и выходах можно использовать буферные регистры D (см. рис.2–6), которые являются частью блока. Они применяются для хранения промежуточных результатов при циклических вычислениях, а также для того, чтобы предотвратить изменение данных на входе или выходе до завершения цикла вычислений.
Каскадирование блоков
Блоки можно каскадировать для увеличения разрядности данных. Например, для умножения двух 35-битных данных нужно соединить четыре блока (рис.7). Однако при каскадировании блоков увеличивается время выполнения операции, поскольку на входе последующего блока вычисленные данные с предыдущего блока появляются с задержкой, равной сумме времен выполнения операций сложения/вычитания и сдвига во всех блоках.
В системах, где требуется высокое быстродействие, при обработке больших массивов чисел можно использовать конвейер (рис.8). Идея заключается в следующем. Чтобы выполнить операцию над входными данными в каждом последующем блоке цепочки, нужно, чтобы завершил работу предыдущий блок. В результате в каждый момент времени работает только один блок. Суммарное время выполнения операции над числами складывается из времени ее выполнения в каждом блоке. При использовании же конвейера в первый блок в цепочке данные поступают непосредственно, а во втором блоке они записываются в промежуточный буферный регистр. После завершения вычислений в первом блоке данные с его выхода записываются в выходной регистр и поступают на второй блок, куда также подаются данные из входного буферного регистра. Одновременно с этим следующие данные для вычисления (следующая пара чисел) подаются в первый блок на вход и записываются во входной буферный регистр второго блока. По завершении вычисления во втором блоке в первом уже готов результат вычисления следующих данных. Аналогичным образом устроено конвейерное поступление данных и в следующих блоках. Число промежуточных регистров хранения зависит от номера блока в цепочке каскадирования. Таким образом, одновременно можно обрабатывать сразу несколько пар чисел, выполняя над ними операции в каждом блоке последовательно – по мере готовности данных. В итоге блоки не простаивают, и сокращается суммарное время обработки массивов данных.
Реализация алгоритма БПФ
В качестве примера того, как применяются математические блоки, рассмотрим построение алгоритма быстрого преобразования Фурье с использованием алгоритма временного прореживания Radix-2 "бабочка" (рис.9). Мы не будем описывать сущность данного метода с математическим обоснованием и выводом формул, а перейдем сразу к типовой схеме реализации. Для восьми точек потребуется трехступенчатый алгоритм (см. рис.9). Результатом на выходе Pout блока Radix-2 является сумма данных со входов Pin и Qin, а на выходе Qout – разность данных со входа Pin и произведения данных со входа Qin и параметра вращения W.
Если разрядность входных данных не превышает 18, то для реализации блока Radix-2 потребуется два математических блока (рис.10).
Реализовать быстрое преобразование Фурье можно с помощью циклических вычислений либо с помощью параллельной схемы.
Если необходимо минимизировать ресурсы ПЛИС, то следует выбрать алгоритм последовательного циклического вычисления с сохранением промежуточных данных (рис.11). В этом случае можно использовать всего один блок Radix-2, а исходные данные, конечный результат вычисления и промежуточные данные, а также таблицу параметров вращения сохранить в интегрированном двухпортовом ОЗУ. Для определения результата в представленной схеме потребуется 12 циклов вычислений – в соответствии с общим количеством блоков Radix-2 (см. рис.9).
Однако такая архитектура имеет крайне низкое быстродействие. Для его увеличения необходимо, чтобы вычисления выполнялись параллельно. В качестве разумного компромисса между объемом и быстродействием можно, например, вычислять параллельно значения на каждой ступени алгоритма БПФ (рис.12). Ступени при этом обрабатываются последовательно, а промежуточные значения хранятся в интегрированном ОЗУ. В нашем примере конечный результат будет получен за три такта.
ПЛИС RTAX-DSP предназначены для космической техники, поэтому математические блоки разрабатывались с учетом радиационной стойкости. Все буферные регистры – аппаратно троированные с мажорированием (рис.13). Вычислительная часть математического блока также выполнена троированной. В блоках ОЗУ можно использовать модуль контроля данных, который позволяет определить две и восстановить одну ошибку в ОЗУ. Тем самым обеспечиваются показатели потока отказов не более чем 10–10 на бит в день.
Таким образом, ПЛИС RTAX-DSP сочетают повышенную функциональность, надежность и радиационную стойкость, необходимые в космической технике.
Отзывы читателей