Школа схемотехнического проектирования устройств обработки сигналов. Занятие 7. Реализация вычислительных устройств на ПЛИС
Занятие 7. Реализация вычислительных устройств на ПЛИС.
В этом занятии мы рассмотрим некоторые примеры реализации цифровых устройств на ПЛИС фирмы Altera с использованием языков описания аппаратуры. Языки описания аппаратуры (Hardware Description Language) являются формальной записью, которая может быть использована на всех этапах разработки цифровых электронных систем. Это возможно вследствие того, что язык легко воспринимается как машиной, так и человеком. Он может использоваться на этапах проектирования, верификации, синтеза и тестирования аппаратуры, так же как и для передачи данных о проекте, модификации и сопровождения.
Все статьи цикла:
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 1. Алгоритмы, элементная база, способы реализации
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 2. Некоторые полезные мелочи, о которых почти никто никогда не пишет, опасаясь прослыть любителем банальных фактов
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 3. Интерфейсы передачи данных и сопряжение устройств
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 4. Уровни, логика и быстродействие
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 5. Стандарты, уровни, сопряжение
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 6. Реализация вычислительных устройств на ПЛИС
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 7. Реализация вычислительных устройств на ПЛИС
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 8. Средства визуальной разработки цифровых автоматов
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 9. Языки описания аппаратуры: синтаксис и особенности применения
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 10. Языки описания аппаратуры: синтаксис и особенности применения
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 11. Языки описания аппаратуры: синтезируемое подмножество VHDL
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 12. Языки описания аппаратуры. Язык описания аппаратуры Verilog HDL
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 13. Языки описания аппаратуры. Язык описания аппаратуры Verilog HDL
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 14. Программируемые аналоговые интегральные схемы
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 15. Практические рекомендации по разработке печатных плат
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 16. Особенности разработки конструкторской документации РЭА в соответствии с ЕСКД
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 17. Цифровые синтезаторы прямого синтеза частот
- Школа схемотехнического проектирования устройств обработки сигналов. Занятие 18
Реализация генератора ПСП на ПЛИС
В качестве простого примера реализации цифрового устройства на ПЛИС рассмотрим пример генератора псевдослучайной последовательности (ПСП). Генератор формирования М-последовательностей был написан в виде параметризованной макрофункции, описывающей устройство, упрощенная структура которого показана на рис. 1. Параметрами макрофункции являются длина характеристического многочлена и число, описывающее начальные состояния триггеров.

Ниже приводится листинг описания этой функции на языке описания аппаратуры AHDL [1].
|
Данная функция имеет следующие входы и выходы:
М — шина (группа выводов) с размером M_WIDTH. На этот вход подаются коэффициенты характеристического многочлена;
CLK — вход тактового сигнала;
GENA — вход разрешения генерации. При GENA= «0» генерация М-последовательности запрещена;
LOAD — вход предустановки. При LOAD= «1» триггеры регистра сдвига устанавливаются в состояние, определяемое параметром M_BEGIN;
OUT — выход М-последовательности.
Для включения данной функции в другие схемы были также созданы включаемый файл, содержащий описание, и графический символ-элемент (см. рис.2).

Файл «
M_GENERATE.INC»:
FUNCTION m_generate (m[(m_width) — (1)..0], clk, gena, load)
WITH (M_WIDTH, M_BEGIN)
RETURNS (out);
Для моделирования работы генератора в графическом редакторе пакета MAX+PLUS II [1, 4] была создана тестовая схема, показанная на рис. 3. Результаты моделирования приведены на рис. 4 (на вход одного генератора подан характеристический многочлен М1 = 11001, на вход другого — М2 = 10010000001).

Реализация цифровых полиноминальных фильтров
Одним из важных классов нелинейных цифровых устройств являются так называемые полиноминальные цифровые фильтры [5, 6]. В последние годы их все чаще применяют в системах обработки изображений.
В общем случае цифровой полиномиальный фильтр размерности r и порядка M, определяется конечным дискретным рядом Вольтерра (функциональным полиномом) вида

где h
m(n
1, …, n
m) — многомерные импульсные характеристики (ядра) фильтра, зависящие от векторных аргументов n
i = [n
i1 … n
ir]. Фильтры данного вида часто называются также фильтрами Вольтерра.

Непосредственная реализация цифровых полиномиальных фильтров связана с вычислением произведения векторов. Вычислительные затраты могут быть сокращены за счет использования свойства симметрии изотропных фильтров.
Таким образом, путем последовательного применения процедуры декомпозиции полиномиальный фильтр произвольного порядка может быть представлен в виде параллельной структуры, состоящей из линейных фильтров. Операция линейной фильтрации связана с вычислением двухмерной свертки и допускает высокоэффективную реализацию в виде структур систолического типа, матричных и волновых процессоров. Процесс двухмерной свертки изображения с маской N х N, в свою очередь, можно свести к вычислению N одномерных сверток, что в конечном итоге позволяет выполнять полиномиальную фильтрацию изображений путем параллельного вычисления обычных одномерных сверток. На рис. 5 представлен один из наиболее простых вариантов реализации двухмерной свертки изображения с маской 3 х 3 в виде систолической структуры, состоящей из 9 идентичных процессорных элементов.

Задача двумерной свертки формулируется следующим образом: даны веса w
i,j для i,j=1,2…,k, так что k х k — размер ядра, и входное изображение x
i,j для i,j=1,2…,n. Требуется вычислить элементы изображения y
i,j для i,j=1,2…,n, определяемые в виде

При k=3 двумерная свертка выполняется в виде трех последовательных одномерных сверток (использующих в качестве весов одну и ту же последовательность (w
11, w
21, …,w
33)):
- Вычисление (y
11,y
12,y
13,y
14,…) при использовании (x
11, x
21,x
31,x
12,x
22,x
32,x
13,x
23,x
33,…) в качестве входной последовательности. - Вычисление (y
21,y
22,y
23,y
24,…) при использовании (x
21,x
31,x
41,x
22,x
32,x
42,x
23,x
33,x
43,…) в качестве входной последовательности. - Вычисление (y
31,y
32,y
33,y
34,…) при использовании (x
31,x
41,x
51,x
32,x
42,x
52,x
33,x
43,x
53,…) в качестве входной последовательности.
Каждую из этих сверток можно выполнить на одномерном систолическом массиве из девяти ячеек. Отметим, что в любом из этих одномерных массивов ячейка занята вычислениями y
ij только 1/3 времени.
Для восстановления ячейка с двумя потоками должна быть 8-разрядной для входных данных и иметь 12 бит для представления весов. Для сетки 32 x 32 пикселей в каждом блоке памяти требуется хранить 1024 различных весовых коэффициента и иметь 10-разрядную адресную шину для указания положения каждой точки. 12-разрядный умножитель и 24-разрядный сумматор для получения промежуточных результатов вполне обеспечивают сохранение требуемой точности в процессе вычислений.
Для выполнения многомерной свертки требуется единственная модификация базовой ячейки с двумя потоками — добавление требуемого числа систолических входных потоков и соответствующее увеличение размера мультиплексора для выбора данных.
При решении задач фильтрации изображения с целью удаления шумов, восстановления изображения или улучшения его качества приходится иметь дело с данными, характеризующимися широким динамическим диапазоном. Поэтому в качестве формата данных необходимо использовать числа с плавающей запятой.
Для реализации систолических структур полиноминальных фильтров наиболее пригодны ПЛИС семейства FLEX10K, содержащие встроенные блоки памяти (EAB — embedded array blocks), предназначенные для эффективной реализации функций памяти и сложных арифметических и логических устройств (умножителей, конечных автоматов, цифровых фильтров и т. д.). Один такой блок имеет емкость 2 килобита и позволяет сформировать память с организацией 2048 x 1, 1024 x 2, 512 x 4 или 256 x 8, работающую с циклом 12–14 нс. Использование ВБП значительно повышает эффективность и быстродействие создания сложных логических устройств, например, умножителей. Так, каждый ВБП может выполнять функции умножителя 4 x 4, 5 x3 или 6 x 2.
На рис. 6 приведена реализация структуры на ПЛИС, а на рис. 7 — результаты моделирования систолической структуры в среде MAX PLUS II.


Примеры описания цифровых схем на VHDL
Наиболее универсальным и распространенным языком описания аппаратуры является VHDL. На этом языке возможно как поведенческое, так структурное и потоковое описание цифровых схем.
Язык VHDL используется во многих системах для моделирования цифровых схем, проектирования программируемых логических интегральных микросхем, базовых матричных кристаллов, заказных интегральных микросхем.
Рассмотрим некоторые примеры описания цифровых схем на VHDL.
Первый — описание цифрового автомата преобразователя параллельного кода в последовательный. Преобразователь кода представляет собой устройство, на вход которого подается n-битное число в параллельном коде «d», сигнал загрузки «load» и синхроимпульсы «clk». По сигналу загрузки происходит запись входного слова во внутренний регистр и последовательная выдача в течение n тактов этого входного слова в последовательном коде на выходе «о» синхроимпульсами «oclk». После окончания преобразования на выходе «e» появляется высокий уровень сигнала в течение одного такта. Такого рода преобразователи кода часто используются для управления синтезаторами частот 1104ПЛ1 и им подобными.
Описание этого устройства на языке VHDL приведено ниже:
|
По переднему фронту синхроимпульса «clk» при высоком уровне на входе загрузки происходит загрузка трех старших бит входного слова d[3..1] во временный регистр s[2..0]. Младший бит входного слова d[0] подается на выход «o». На выходе «oclk» появляются синхроимпульсы. На сигнале «i» собран внутренний счетчик, выдающий сигнал окончания преобразования «e». При поступлении последующих синхроимпульсов происходит выдача на выход «o» остальных бит входного слова, хранящихся в регистре s[2..0].
Моделирование этого устройства было проведено в системе проектирования OrCAD 9.0.
Для тестирования схемы использовался тест:
|
Результаты моделирования представлены на рис. 8.

В качестве примера описания устройства ЦОС рассмотрим цифровой КИХ-фильтр. Работа цифрового КИХ-фильтра описывается разностным уравнением
n=A
0x
n + A
1x
n-1 + A
2x
n-2 + …,
где y
n — реакция системы в момент времени n,
x
n — входное воздействие
A
i — Весовой коэффициент i-й входной переменной.
На VHDL описание фильтра имеет вид:
|
Входные данные считываются с входа din[7..0] в дополнительном коде по переднему фронту синхросигнала «c»
На сигналах x0 ё x23 построен сдвиговый регистр, обеспечивающий задержку данных на 24 такта. Сигналы с регистров умножаются на весовые коэффициенты h0 ё h23 и суммируются.
Для тестирования схемы использован тест:
|
Тест моделирует подачу на цифровой фильтр аналога d-функции. На выходе фильтра — его импульсная характеристика.Результаты моделирования представлены на рис. 9.

В следующем занятии мы продолжим рассмотрение реализации устройств обработки сигналов на ПЛИС.
Литература
- Стешенко В. ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов. М.: Додека, 2000 .
- Угрюмов Е. П. Цифровая схемотехника. СПб.: БХВ — Санкт-Петербург, 2000.
- Стешенко В. Б.
Школа схемотехнического проектирования устройств обработки сигналов // Компоненты и технологии, № 3–6, 2000 г. - Стешенко В. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС // Chip News, 1999, № 8–10, 2000, № 1, 3–5.
- Щербаков М. А., Стешенко В. Б., Губанов Д.А. Цифровая полиноминальная фильтрация: алгоритмы и реализация на ПЛИС // Инженерная микроэлектроника, № 1(3), март 1999. С.12–17.
- Щербаков М. А., Стешенко В. Б., Губанов Д.А. Цифровая полиноминальная фильтрация в реальном масштабе времени: алгоритмы и пути реализации на ПЛИС // Цифровая обработка сигналов, № 1, 2000. С. 19–26.