Научная статья на тему 'ПРОЕКТИРОВАНИЕ УМНОЖИТЕЛЯ МЕТОДОМ ПРАВОГО СДВИГА И СЛОЖЕНИЯ С УПРАВЛЯЮЩИМ АВТОМАТОМ В БАЗИСЕ ПЛИС'

ПРОЕКТИРОВАНИЕ УМНОЖИТЕЛЯ МЕТОДОМ ПРАВОГО СДВИГА И СЛОЖЕНИЯ С УПРАВЛЯЮЩИМ АВТОМАТОМ В БАЗИСЕ ПЛИС Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
37
14
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Строгонов Андрей, Быстрицкий Алексей

Для проектирования КИХ-фильтров в базисе процессоров цифровой обработки сигналов (ЦОС-процессор) используется общепринятая методика умножения с накоплением с применением так называемых MAC-блоков из-за отсутствия встроенных комбинационных умножителей [1].

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ПРОЕКТИРОВАНИЕ УМНОЖИТЕЛЯ МЕТОДОМ ПРАВОГО СДВИГА И СЛОЖЕНИЯ С УПРАВЛЯЮЩИМ АВТОМАТОМ В БАЗИСЕ ПЛИС»

Проектирование умножителя методом правого сдвига

и сложения с управляющим автоматом в базисе ПЛИС

Андрей СТРОГОНОВ, д. т. н.

andreistrogonov@mail.ru Алексей БЫСТРИЦКИЙ, к. т. н.

bystritsky@bk.ru

Для проектирования КИХ-фильтров в базисе процессоров цифровой обработки сигналов (ЦОС-процессор) используется общепринятая методика умножения с накоплением с применением так называемых МАС-блоков из-за отсутствия встроенных комбинационных умножителей [1].

Так, для КИХ-фильтра на четыре отвода необходимо четыре МАС-блока. Применение же распределенной арифметики, например, для КИХ-фильтра на четыре отвода в базисе ЦОС-процессоров позволяет использовать лишь составные части МАС-блока: это четыре блока логики генерации частичных произведений, получаемых с помощью булевой операции, логическое И к множимому (многоразрядные константы, являющиеся коэффициентами фильтра) и битовому значению множителя с выходов линии задержки и масштабирующий аккумулятор. При этом дерево многоразрядных сумматоров не сокращается. А для реализации того же фильтра в базисе ПЛИС на последова-

тельной распределенной арифметики не требуется логики генерации частичных произведений и дерево многоразрядных сумматоров, так как эти функции выполняет таблица перекодировки (LUT), содержащая комбинацию сумм коэффициентов являющихся константами всех возможных вариантов, адресуемая всеми битами всех входных переменных. Для суммирования значений с выходов LUT используется лишь одна составная часть MAC-блока — масштабирующий аккумулятор (рис. 1). Вот почему авторы считают целесообразным продолжить рассмотрение механизмов умножения с накоплением.

В работах [2, 3] обсуждалось проектирование MAC-блока на примере умножения

десятичного числа 10 на число 11 (целочисленные беззнаковые числа), а также умножение десятичного числа 10 на 11 на примере мегафункции ALTMEMMULT САПР ПЛИС Quartus II Altera. Мегафункция ALTMEMMULT предназначена для умножения числа на константу, которая хранится в блочной памяти ПЛИС (M512, M4K, M9K и MLAB-блоки), обеспечивая наивысшее быстродействие, лимитируемое латентно-стью в два такта. Процесс умножения с помощью мегафункции ALTMEMMULT составляет 20 синхроимпульсов с момента появления сигнала разрешения загрузки. А для процесса умножения с помощью разработанного MAC-блока необходимо было

ПЛИС, ПАИС I 53

■ ЛГ 5WJ4HII : -жтрлол 1 ¿.Гтптрдо

Н 15 \ 1i 1 Q 1 0 1 Ф t 1

+ ЦЛ ■OSSf t {] 1 р * 0 1£j

f с- 10 19 Ф 1 р 1 1 Й 1 а С C- -3 5 a 1£l В 16 m

г +1W с- 1111 4 1 1 1 I 0 f ua Si?** 15 7 t IM

рЛ а Ъ 1 1 1 QUI 1 1 Й 1 р G H i i a ii * 7 10

ь i 1 о i 4 110 5 i 3 ! i t a IVIEUÜ+H^VJ+D/J 13 i HC

Рис. 2. Принцип умножения методом правого сдвига и сложения. Умножение десятичного числа 10 на десятичное число 11

Рис. 3. Структурная схема умножителя методом правого сдвига и сложения

Рис. 4. Предлагаемая структурная схема умножителя с управляющим автоматом

18 синхроимпульсов [3]. Однако недостатком разработанной схемы являлось отсутствие управляющего автомата, и необходимые сигналы управления приходилось формировать вручную непосредственно в векторном редакторе.

Встраивание автомата в схему позволяет получить готовую функцию без использования дополнительных управляющих сигналов для умножения двух четырехразрядных чисел без знака. На входах MAC-блока потребуется всего лишь три сигнала: сигнал асинхронного сброса res, сигнал тактирования clk и сигнал разрешения загрузки числа X (множителя) в сдвиговый регистр load_PSC. Для корректной работы схемы необходимо обнулить все регистры умножителя (активный — высокий уровень сигнала res). Поскольку все регистры, в том числе и регистр для хранения состояний в управляющем автомате, обнуляются единожды и только перед началом работы, то для упрощения процесса разра-

ботки схемы можно воспользоваться асинхронным сбросом.

Идея схемы метода умножения методом правого сдвига с накоплением была заимствована из [4-6]. Такая схема в адаптированном варианте представлена на рис. 2. В [4-5] высказана идея реализации этого метода (рис. 3).

На рис. 4 предложена структурная схема метода умножения на основе управляющего автомата.

Структурная схема умножителя двух 4-разрядных чисел, представленных в двоичном коде (целые, положительные числа), состоит из шинного мультиплексора «2 в 1», сдвигового регистра, цифрового автомата на четыре состояния и масштабирующего аккумулятора (рис. 5). Шинный мультиплексор «2 в 1» и сдвиговый регистр вправо реализуют логику генерации частичных произведений. В основе масштабирующего аккумулятора лежит синхронизируемый сумматор с сигналом разрешения тактирования (рис. 6).

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

LIBRARY ieee;

USE ieee.std_logk_1164.all;

USE ieee.std_logic_unsigned.all;

ENTITY avtomat IS

PORT(

Res,clk : IN STD_LOGIC;

Ena_Add, LoadPSC,ena_shift,Stop : OUT STD_LOGIC;

Qa : OUT STD_LOGIC_VECTOR(4 downto 0));

END avtomat;

ARCHITECTURE a OF avtomat IS

TYPE state_values IS (SA, SB, SC, SD);

signal state,next_state: state_values;

SIGNAL cnt: STD_LOGIC_VECTOR(4 downto 0);

BEGIN

statereg: process(clk,Res)

begin

if (Res = '1') then state<=SA;

elsif (clk'event and clk='1') then

state<=next_state;

end if;

end process statereg;

process(state)

begin

case state is

when SA=> next_state<=SB;

when SB=> next_state<=SC;

when SC=> next_state<=SD;

when SD=> next_state<=SA;

end case;

end process;

process (state)

begin

case state is

when SA=>Ena_Add<='0';

LoadPSC<='0' ena_shift<='1';

when SB=>

Ena_Add<='1' LoadPSC<='0';

ena_shift<='0'

when SC=>

Ena_Add<='0'

LoadPSC<='0'

ena_shift<='0'

when SD=>

Ena_Add<='0'

LoadPSC<='1'

ena_shift<='1'

end case;

end process;

process (clk, res)

begin

if (res = '1') then

cnt <=(others= >'0');

elsif (clk'event and clk = '1') then

if cnt = "10001" then Stop <= '1';

else cnt <= cnt+'1';

end if;

end if;

end process;

Qa <= cnt;

END a;

Рис. 5. Схема умножителя в САПР ПЛИС Quatus II

Рис. 6. Схема масштабирующего аккумулятора

Цифровой автомат представляет собой автомат Мура на четыре состояния: SA (1-е состояние), SB (2-е состояние), SC (3-е состояние) и SD (4-е состояние). Он формирует три управляющих сигнала: ena_add_temp, load_ acc и ena_shift_temp по срезу фронта синхроимпульса clk (пример), два из которых (ena_add_temp и load_acc) — неперекрывающиеся (рис. 7). По активному уровню сигнала асинхронного сброса res автомат попадает в первое состояние SA, а по низкому уровню res осуществляется переход по состояниям. На рис. 7 над сигналами ena_shift_temp и load_acc нанесены номера состояний цифрового автомата. Так, сигнал ena_shift_temp активен в первом и четвертом состояниях.

Сигнал ena_add_temp формируется, когда автомат находится во втором состоянии SB. Сигнал load_acc формируется в четвертом состоянии. Таким образом, удается обеспе-

чить конвейерный режим работы масштабирующего аккумулятора, при этом формируемые сигналы ena_add_temp, load_acc и ena_ shift_temp синхронны для всех регистров умножителя. Так, второй передний фронт синхроимпульса оказывается ровно над половиной высокого уровня сигнал ena_add_ temp, что обеспечивает корректную работу синхронного сумматора (рис. 7). Четвертый передний фронт также оказывается ровно над половиной высоких уровней сигналов load_acc и ena_shift_temp, что обеспечивает загрузку числа с промежуточного регистра (аккумулятора) в сдвиговый регистр lpm_ shiftregO. Пятый фронт также оказывается ровно над серединой высокого уровня сигнала ena_shift_temp для выполнения операции деления на 2 (сдвиг вправо).

В управляющий автомат встроен суммирующий счетчик, который подсчитывает

число синхроимпульсов. И при достижении 18-го синхроимпульса (отсчет ведется с нуля) вырабатывается сигнал останова работы умножителя, который сбрасывает все регистры умножителя в ноль, кроме регистра результата (fff8), запись информации в который осуществляется при низком уровне сигнала ena_shift_temp.

На информационные входы мультиплексора подключаются две константы: множимое (число А) и логический ноль, а на адресный вход мультиплексора — младший разряд (множителя) сдвигового регистра (мегафункция LPM_SHIFTREG) с параллельным вводом информации и последовательным выводом. Такой регистр будем называть конвертером (это преобразователь параллельного кода в последовательный) и обозначать как PSC. Регистр настроен на сдвиг вправо и имеет синхронные сигналы загруз-

Рис. 7. Временные диаграммы процесса вычисления удвоенных первого 2P(1) и второго частичных произведений 2P(2)

Рис. 8. Временные диаграммы процесса вычисления удвоенного четвертого частичного произведения 2P(4)

ки load и разрешения тактирования enable, активные при высоком уровне.

При сдвиге вправо в старший разряд заносится логическая 1, а младший разряд теряется. В сдвиговый регистр по высокому уровню сигнала load_PSC записывается число X (множитель). При этом сигнал ena_X на входе enable должен быть высокого уровня, который может быть получен объединением по ИЛИ сигналов load_PSC и ena_PSC_X. Сигнал ena_PSC_X является выходом цифрового автомата и получается в результате применения операции 3 ИЛИ-НЕ над сигналами ena_add_temp, load_acc и ena_shift_temp, то есть он возникает только в том случае, когда сигналы ena_add_temp, load_acc и ena_ shift_temp — низкого уровня.

В первом такте синхроимпульса сигнал ena_PSC_X не активен и не оказывает влияние на формирование сигнала ena_X. Он используется при последующем сдвиге множителя X вправо. Параллельная загрузка числа X происходит по принципу: если активен сигнал загрузки load_PSC, то, значит, должен быть активен и сигнал разрешения тактирования ena_X.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Недостатком такого решения является неразрешенный сдвиг вправо пятиразрядным сдвиговым регистром (lpm_shiftreg0) масштабирующего аккумулятора при первом фронте синхроимпульса, на выходах которого появляется 1 в старшем разряде

при активном сигнале ena_shift_temp, что и показано на рис. 7. Однако это не влияет на работу масштабирующего аккумулятора, так как перед сложением сдвиговый регистр перегружается правильным значением по четвертому фронту синхросигнала при активных сигналах load_acc и ena_shift_temp. Неразрешенный сдвиг будет проявляться и при последующих синхроимпульсах при наличии активного уровня сигнала ena_shift_ temp. Для противодействия этому явлению старший значащий разряд p[4] регистра lpm_ shiftreg0 после сдвига просто игнорируется, а на вход сумматора поступает уменьшенное на два значение частичного произведения p[3..0] c 4-битной точностью представления.

Рассмотрим работу масштабирующего аккумулятора. По первому фронту синхроимпульса clk при активных сигналах load_PSC и ena_X происходит загрузка числа X в сдвиговый регистр. По второму фронту синхроимпульса управляющий автомат вырабатывает синхронный сигнал разрешения тактирования ena_add_temp для сумматора масштабирующего аккумулятора. На выходах сумматора формируется первое удвоенное частичное произведение 2P(1) = P(0)+X(0)*A (шина 2p[3..0]), равное 10, при этом P(0) = 0. Выход переноса Cout и 2P[3..0] объединяются в пятиразрядную шину, значения которой сохраняются в промежуточном параллельном регистре-

аккумуляторе (выход sum_reg_2p[4..0]) по третьему фронту синхроимпульса.

По четвертому фронту синхроимпульса при активных сигналах load_acc и ena_shift_ temp происходит загрузка первого удвоенного частичного произведения, равного 10, в сдвиговый регистр. По пятому фронту при активном сигнале ena_shift_temp происходит сдвиг вправо удвоенного частичного произведения 2P(1). При этом на выходах сдвигового регистра образуется число 5. По шестому фронту синхроимпульса при активном сигнале ena_add_temp произойдет сложение числа A (десятичное число 10) с числом 5, и на выходах сумматора сформируется второе частичное произведение 2P(2) = P(1)+X(1)*A, равное числу 15, что в точности соответствует принципу умножения, продемонстрированному на рис. 2.

На рис. 8 показан момент окончания счета. По 15-му фронту синхроимпульса (отсчет по тексту ведется с первого фронта синхроимпульса) произойдет неразрешенная загрузка четвертого бита в сдвиговый регистр PSC по высокому уровню сигнала ena_PSC_X и сформируется еще одна копия сигнала A, то есть X(4)*A. Однако это тоже не повлияет на результат, так как последующего сложения уже не будет. Потребуется еще два такта синхроимпульса для загрузки удвоенного произведения 2P(4) в аккумулятор и последующий сдвиг вправо для формирования P(4).

* X mi 11 ÎÎ

-Hfei • 990 11îî

а*1' 1 ■ |Н ft 1 1 ii в 111 11tt iflûp 1SP

1 aito let* nil 01 Ci 1»

** 1 1910 1 NÇÇ 1111 Oil a ïia

5Г 1 Mac 09 Î 1 3»

Рис. 9. Принцип умножения методом правого сдвига и сложения. Умножение десятичного числа 15 на десятичное число 15

И по 18му такту импульса результат умножения будет доступен в регистре результата fff8.

Было проведено тестирование разработанной схемы на предмет умножения двух 4-разрядных чисел без знака в диапазоне входных значений от 0 до 15. На рис. 9 показан принцип умножения десятичного числа 15 на 15, а на рис. 10 — временные диаграммы процесса умножения.

Выводы

Разработан МАС-блок для умножения двух 4-разрядных чисел без знака с использованием метода умножения и накопления. Управление блоком осуществляется с помощью цифрового автомата на четыре состояния. Предложенная схема реализации МАС-блока в базисе ПЛИС может быть использована при проектировании КИХ-фильтров. ■

Литература

1. Goslin G. R. A Guide to Using Field Programmable Gate Arrays (FPGAs) for Application-Specific Digital Signal Processing Performance. V. 1.0. 1995 — www.xilinx.com

2. Строгонов А., Быстрицкий А. КИХ-фильтр на распределенной арифметике: проектируем сами // Компоненты и технологии. 2013. № 3.

3. Строгонов А., Быстрицкий А. Проектирование параллельных КИХ-фильтров в базисе ПЛИС // Компоненты и технологии. 2013. № 6.

4. Computer Arithmetic: Algorithms and Hardware Designs. Oxford U. Press, 2nd ed., 2010.

5. Khadivi P. Car_multiply.pdf. Isfahan University of Technology — http://khadivi.iut.ac.ir

6. Koren I. Digital Computer Arithmetic. ECE 666. Part 3. Sequential Algorithms for Multiplication and Division. University of Massachusetts Dept. of Electrical & Computer Engineering — http:// euler.ecs.umass.edu/arith/parts-pdf/Part3-seq.pdf

Рис. 10. Умножение десятичного числа 15 на десятичное число 15. Результат — 225

новости системы навигации

Модуль инерциальной навигации

для «ЭРА-ГЛОНАСС»

Компания «Беспроводка Инжиниринг» представляет микро-БИНС «ЭРА», разработанную специально для проекта «ЭРА-ГЛОНАСС».

Если еще недавно БИНС (бесплатформенные инерциальные навигационные системы) были громоздкими, дорогими и применялись исключительно в интересах спецпотребителей, то с запуском в производство новой микро-БИНС «ЭРА» можно заявить о доступности всех преимуществ БИНС в интересах широкого круга заказчиков для мониторинга наземного транспорта.

Микро-БИНС «ЭРА» размером c половину визитной карточки и ценой >$100 имеет алгоритмы ком-плексирования с оборудованием ГЛОНАСС/GPS,

благодаря чему можно получить журнал контроля движения в процессе возникновения и развития аварийной ситуации (до, во время и после) с привязкой к координатам и угловым величинам и контролировать многочисленные параметры, такие как крен, тангаж, вибрация, опрокидывание, удары, перегрузка, и их превышение. Основной функцией БИНС является навигационная: комплексирование БИНС и ГЛОНАСС/GPS позволяет обеспечить непрерывность и надежность навигационных данных даже при отсутствии сигналов со спутников. Модуль производится в двух вариантах: встраиваемом и корпусированном.

www.ERA.besprovodka.ru

i Надоели баннеры? Вы всегда можете отключить рекламу.