Математические блоки в радиационно-стойких ПЛИС Actel

rtax_smМетоды цифровой обработки сигналов все активнее применяют в различных областях электроники, в том числе в космической технике. В соответствии с потребностями разработчиков компания Actel разработала новое семейство ПЛИС RTAX с интегрированными математическими блоками – RTAX-DSP. Эти ПЛИС обладают большим быстродействием в приложениях, связанных с цифровой обработкой сигналов, и при этом устойчивы к воздействию космической радиации.

Семейство RTAX-DSP создано на базе уже хорошо известного разработчикам космической техники семейства RTAX-S и имеет ту же внутреннюю архитектуру. Логическая матрица структурно разделена на несколько частей, которые объединяют в себе блоки суперкластеров, интегрированного ОЗУ, а в ПЛИС RTAX-DSP еще и математические блоки (рис.1). У ПЛИС нового семейства несколько меньше суперкластеров (СК), чем у аналогичных микросхем базового семейства RTAX-S. Это связано с тем, что небольшая их часть используется в качестве блоков ввода-вывода (БВВ) математических блоков, тем самым обеспечивается интерфейс с логической матрицей и ОЗУ.

В блоке все элементы соединяются посредством коротких связей, имеющих минимальные задержки. Это гарантирует высокое быстродействие и высокую эффективность использования ресурсов внутри блока.Внутренняя архитектура ПЛИС RTAX-DSP

Рис.1. Внутренняя архитектура ПЛИС RTAX-DSP

 

Математический блок

Плис семейства RTAX-DSP содержат до 120 конфигурируемых математических блоков. Базовая конфигурация представляет собой умножитель 18×18 с накоплением результата (рис.2).

Структура математического блока

Рис.2. Структура математического блока

 

Блок имеет гибкую конфигурацию. Его можно эффективно использовать для вычисления наиболее широко применяемых математических функций для цифровой обработки сигналов, таких как быстрое преобразование Фурье (БПФ) и фильтр с конечной импульсной характеристикой (КИХ-фильтр). Математические блоки ориентированы также на применение в различных алгоритмах кодирования, сжатия и преобразования данных.

Рассмотрим основные возможные конфигурации блока.

Самая простая конфигурация – это умножение двух знаковых 18-разрядных чисел (рис.3). На выходе блока – 41-битный результат Р[40:0] и признак переполнения OVFL.

Одиночный умножитель двух знаковых чисел

Рис.3. Одиночный умножитель двух знаковых чисел

 

Блок может быть сконфигурирован также как два независимых 9-разрядных умножителя (рис.4). Это позволяет повысить быстродействие и увеличить эффективность использования блоков при работе с байтовыми числами, а также оптимизировать реализацию ряда алгоритмов (например, БПФ).

Два 9-разрядных умножителя

Рис.4. Два 9-разрядных умножителя

 

Результат умножения можно суммировать с данными со входа CIN, который подключается к блоку ОЗУ или регистрам, организованным в логической матрице ПЛИС, а также с данными со входа CDIN, который соединяется с выходом CDOUT соседнего математического блока, что обеспечивает возможность наращивания блоков (рис.5). Выбор входа данных производится сигналом CD_SEL.

Конфигурация с суммированием с внешними данными

Рис.5. Конфигурация с суммированием с внешними данными или результатом из соседнего математического блока:
а) 18-разрядная схема блока, б) 9-разрядная схема блока

 

Результат умножения можно также складывать с результатом с выхода сумматора этого же блока, организовав обратную связь, которая управляется сигналом FDBK_SEL (рис.6). Для наращивания разрядности данных, над которыми будет производиться операция умножения, в блоке предусмотрена возможность сдвига разрядов данных, поступающих на сумматор с соседнего математического блока. Функция сдвига выбирается установкой в "1" сигнала SHIFT_SEL. Посредством сигнала SUB можно выбирать функцию сложения или вычитания. В отличие от умножителя, сумматор нельзя разделить на два сумматора меньшей разрядности. Поэтому при выборе конфигурации с двумя 9-разрядными умножителями схема получается асимметричной. Сумматор подключается только к одному умножителю в блоке.

Конфигурация с суммированием с предыдущим результатом

Рис.6. Конфигурация с суммированием с предыдущим результатом того же блока:
а) 18-разрядная схема блока, б) 9-разрядная схема блока

 

В блоке на входах и выходах можно использовать буферные регистры D (см. рис.2–6), которые являются частью блока. Они применяются для хранения промежуточных результатов при циклических вычислениях, а также для того, чтобы предотвратить изменение данных на входе или выходе до завершения цикла вычислений.

Каскадирование блоков

Блоки можно каскадировать для увеличения разрядности данных. Например, для умножения двух 35-битных данных нужно соединить четыре блока (рис.7). Однако при каскадировании блоков увеличивается время выполнения операции, поскольку на входе последующего блока вычисленные данные с предыдущего блока появляются с задержкой, равной сумме времен выполнения операций сложения/вычитания и сдвига во всех блоках.

Умножитель 35×35

Рис.7. Умножитель 35×35

 

В системах, где требуется высокое быстродействие, при обработке больших массивов чисел можно использовать конвейер (рис.8). Идея заключается в следующем. Чтобы выполнить операцию над входными данными в каждом последующем блоке цепочки, нужно, чтобы завершил работу предыдущий блок. В результате в каждый момент времени работает только один блок. Суммарное время выполнения операции над числами складывается из времени ее выполнения в каждом блоке. При использовании же конвейера в первый блок в цепочке данные поступают непосредственно, а во втором блоке они записываются в промежуточный буферный регистр. После завершения вычислений в первом блоке данные с его выхода записываются в выходной регистр и поступают на второй блок, куда также подаются данные из входного буферного регистра. Одновременно с этим следующие данные для вычисления (следующая пара чисел) подаются в первый блок на вход и записываются во входной буферный регистр второго блока. По завершении вычисления во втором блоке в первом уже готов результат вычисления следующих данных. Аналогичным образом устроено конвейерное поступление данных и в следующих блоках. Число промежуточных регистров хранения зависит от номера блока в цепочке каскадирования. Таким образом, одновременно можно обрабатывать сразу несколько пар чисел, выполняя над ними операции в каждом блоке последовательно – по мере готовности данных. В итоге блоки не простаивают, и сокращается суммарное время обработки массивов данных.

Конвейерное поступление данных

Рис.8. Конвейерное поступление данных

 

Реализация алгоритма БПФ

В качестве примера того, как применяются математические блоки, рассмотрим построение алгоритма быстрого преобразования Фурье с использованием алгоритма временного прореживания Radix-2 "бабочка" (рис.9). Мы не будем описывать сущность данного метода с математическим обоснованием и выводом формул, а перейдем сразу к типовой схе-ме реализации. Для восьми точек потребуется трехступенчатый алгоритм (см. рис.9). Результатом на выходе Pout блока Radix-2 является сумма данных со входов Pin и Qin, а на выходе Qout – разность данных со входа Pin и произведения данных со входа Qin и параметра вращения W.

Алгоритм реализации быстрого преобразования Фурье

Рис.9. Алгоритм реализации быстрого преобразования Фурье

 

Если разрядность входных данных не превышает 18, то для реализации блока Radix-2 потребуется два математических блока (рис.10).

Блок умножения

Рис.10. Блок умножения

 

Реализовать быстрое преобразование Фурье можно с помощью циклических вычислений либо с помощью параллельной схемы.

Если необходимо минимизировать ресурсы ПЛИС, тоследует выбрать алгоритм последовательного циклического вычисления с сохранением промежуточных данных (рис.11). В этом случае можно использовать всего один блок Radix-2, а исходные данные, конечный результат вычисления и промежуточные данные, а также таблицу параметров вращения сохранить в интегрированном двухпортовом ОЗУ.

Схема для реализации БПФ

Рис.11. Схема для реализации БПФ, минимизированная по использованию ресурсов ПЛИС

 

Для определения результата в представленной схеме потребуется 12 циклов вычислений – в соответствии с общим количеством блоков Radix-2 (см. рис.9).

Однако такая архитектура имеет крайне низкое быстродействие. Для его увеличения необходимо, чтобы вычисления выполнялись параллельно. В качестве разумного компромисса между объемом и быстродействием можно, например, вычислять параллельно значения на каждой ступени алгоритма БПФ (рис.12). Ступени при этом обрабатываются последовательно, а промежуточные значения хранятся в интегрированном ОЗУ. В нашем примере конечный результат будет получен за три такта.

Схема для реализации БПФ с параллельным вычислением

Рис.12. Схема для реализации БПФ с параллельным вычислением значений для одной ступени

 

ПЛИС RTAX-DSP предназначены для космической техники, поэтому математические блоки разрабатывались с учетом радиационной стойкости. Все буферные регистры – аппаратно троированные с мажорированием (рис.13). Вычислительная часть математического блока также выполнена троированной. В блоках ОЗУ можно использовать модуль контроля данных, который позволяет определить две и восстановить одну ошибку в ОЗУ. Тем самым, обеспечиваются показатели потока отказов не более чем 10–10 на бит в день.

Внутренняя аппаратная структура троированного арифметического блока

Рис.13. Внутренняя аппаратная структура троированного арифметического блока

 

Таким образом, ПЛИС RTAX-DSP сочетают повышенную функциональность, надежность и радиационную стойкость, необходимые в космической технике.