Научная статья на тему 'Квантовый процессор оптимального покрытия'

Квантовый процессор оптимального покрытия Текст научной статьи по специальности «Компьютерные и информационные науки»

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Хаханова Ирина Витальевна

Предлагаются кубитные (квантовые) структуры данных и вычислительных процессов для существенного повышения быстродействия при решении задач дискретной оптимизации. Описываются аппаратно-ориентированные модели параллельного (за один цикл) вычисления булеана (множества всех подмножеств) на универсуме из n примитивов для решения задач покрытия, минимизации булевых функций, сжатия данных, синтеза и анализа цифровых систем за счет реализации процессорной структуры в форме диаграммы Хассе.

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Хаханова Ирина Витальевна

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

Quanrum processor for optimal coverage

Qubit (quantum) structures of data and computational processes to considerably improve performance when solving discrete optimization problems are proposed. The hardware-oriented models for parallel (one cycle) calculating the power set (the set of all subsets) on the universe of n primitives are described. They are focused to solve coverage problems, minimization of Boolean functions, data compression, analysis and synthesis of digital systems through implementing the processor structure in the form of the Hasse diagram.

Текст научной работы на тему «Квантовый процессор оптимального покрытия»

УДК 519.713:681.326 И. В. ХАХАНОВА

КВАНТОВЫЙ ПРОЦЕССОР ОПТИМАЛЬНОГО ПОКРЫТИЯ

Предлагаются кубитные (квантовые) структуры данных и вычислительных процессов для существенного повышения быстродействия при решении задач дискретной оптимизации. Описываются аппаратно-ориентированные модели параллельного (за один цикл) вычисления булеана (множества всех подмножеств) на универсуме из n примитивов для решения задач покрытия, минимизации булевых функций, сжатия данных, синтеза и анализа цифровых систем за счет реализации процессорной структуры в форме диаграммы Хассе.

1. Введение

Цель создания кубит-процесора - существенное уменьшение времени при решении задач оптимизации путем параллельного вычисления векторных логических операций [1-3] над множеством всех подмножеств от примитивных компонентов за счет увеличения памяти для хранения промежуточных данных.

Задачи: 1) Определение структур данных для взятия булеана при решении задачи

покрытия столбцов матрицы M = |Mij|,i = 1,m; j = 1,n единичными значениями строк. В частности, при m = n = 8 необходимо выполнить параллельно-логическую операцию над 256 вариантами всех возможных сочетаний векторов (строк матрицы), составляющих булеан. 2) Система команд процессора должна включать следующие операции (and, or, xor) над векторами (словами) размерности m. 3) Разработка архитектуры кубит-процессора для параллельного вычисления 2n -1 вариантов сочетаний, направленных на оптимальное решение NP-полной задачи покрытия. 4) Реализация прототипа кубит-процессора на базе программируемой логики PLD и верификация (валидация) аппаратного решения [2-13] на примерах минимизации булевых функций. 5) Приведение других практических задач дискретной оптимизации к форме задачи покрытия для последующего решения на кубит-процессоре.

В качестве примера предлагается решить задачу поиска оптимального единичного покрытия всех столбцов минимальным числом строк матрицы М, представленной ниже:

M 1 2 3 4 5 6 7 8

a 1 . . ..1..

b . . 1 ...1.

c 1.. .1.1.

d . 1 . 1... 1

e . 1 . .1...

f 1.1 ..11.

g . 1 . 1... 1

h .. 1 .1...

Для этого необходимо сделать перебор всех 255 сочетаний: из восьми по одной строке, по двум, трем, четырем, пяти, шести, семи и восьми. Минимальное количество примитивов (строк), формирующее покрытие, есть оптимальное решение. Таких решений может быть несколько. Диаграмма Хассе есть компромиссное предложение относительно времени и памяти, или такая стратегия решения задачи покрытия, когда ранее полученный результат впоследствии используется для создания более сложной суперпозиции. Поэтому для каждой таблицы покрытия, содержащей п примитивов (строк), необходимо генерировать собственную мультипроцессорную структуру в форме диаграммы Хассе, которая далее должна быть использована для почти параллельного решения КР-полной задачи. Например, для четырех строк таблицы покрытия диаграмма Хассе - структура мультипроцессора -будет иметь вид, представленный на рис. 1.

Оптимальные решения задачи покрытия для матрицы М, которая генерирует 255 вариантов возможных сочетаний, представлены строками в форме ДНФ: С = fgh V efg V с^ .

Рис. 1. Квантовая структура вычислительных процессов Автомат управления вычислительным процессом для квантовой структуры путем восходящего анализа вершин графа основан на последовательном выполнении следующих шагов:

1. Занесение информации о примитивах в регистры (матрицы) = Р; первого уровня с последующим анализом качества покрытия каждым примитивом в двоичном формате (1 -

есть покрытие, 0 - нет покрытия). Если один из примитивов организует покрытие Л Lij = 1,

j=l

процесс анализа структуры Хассе заканчивается. Иначе - выполнение перехода (г = г + 1)

[0 — n = n +1; [1 — end.

2. Инициирование команды обработки очередного (второго) уровня. Последовательное

1 m 1

на следующий уровень графа: L1 = Pi — л L1 ■ =

i j=l ij

лчт ■=1

and л Lr- = 1) в целях

j=1 ij

m

Lr = Lj1 л Lj1 i П j=1 tj

выполнение векторных (матричных) операций (or Lr = Li

анализа покрывающей способности сочетаний примитивных элементов г-уровня. Здесь t = 1,m, i = 1,m, г = 1,n, n - число ярусов или количество строк в таблице покрытия, m - число столбцов в ней. Если существует сочетание на рассматриваемом уровне, создающее полное покрытие, которое формирует оценку, равную 1, то обработка всех последующих уровней процессора не выполняется. В противном случае выполняется переход для анализа следующего уровня процессорной структуры:

m r [о — г = г +1; - л Lv 1 —> л L-- = i ij ;=1 tj ;=1 ij [1 — end.

Для поиска оптимального покрытия всегда достаточно двух элементов нижнего уровня, что означает - все операционные вершины имеют два регистровых (матричных) входа, что существенно уменьшает стоимость аппаратурных затрат. Количество временных тактов для обработки структуры процессора в худшем случае равно n. Можно создать алгоритм поиска оптимального покрытия путем нисходящего анализа вершин графа. В этом случае при нахождении полного покрытия в одном из ярусов необходим еще один спуск по структуре, чтобы убедиться в отсутствии в нижнем соседнем ярусе полного покрытия. При положительном ответе на данный вопрос полученное решение является оптимальным. Иначе - необходимо выполнять спуск до такого уровня, когда более нижний, соседний ярус не будет содержать полного покрытия. Вершины процессорной структуры могут иметь более одной бинарной (унарной) регистровой логической операции. Тогда необходимо создавать простейший дешифратор команд для активизации, например, операций: and, ог, хог, not. Таким образом, достоинства кубитного Хассе процессора (Quantum Hasse Ргоее88ог - QHP) заключаются в возможности использовать не более, чем двухвхо-довые схемы векторных логических операций (and, ог, хог), а значит, в существенном

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

n

первое качественное покрытие (Q = 2 Qj = n) есть лучшее решение, предполагающее остановку всех последующих вычислений по стратегии диаграммы Хассе. Учитывая последовательно-параллельную стратегию, анализ вершин графа, время (цикл) обработки всех примитивов QH-процессора определяется числом уровней иерархии (количеством битов (примитивов, строк в таблице покрытия) в кубитной переменной), умноженным на время анализа одной вершины: T = log2 2n х t = t х n. При этом длина m строки таблицы покрытия не влияет на оценку быстродействия. Анализ вершины включает две команды: логическую (and, or, xor) и операцию вычисления критерия качества покрытия в форме скаляра путем применения функции and ко всем разрядам вектора-результата:

mir ; = Mj ; v Mr i,(j = 1,n;{i ф r} = 1,m

j = Mj,j vMr,j,(j = 1,n;{i ф r} = 1,m;);

тй- =лт1г,] =л(Ыу VЫг,р.

Аппаратные затраты на реализацию QH-процессора зависят от суммарного числа вершин графа Хассе и от количества битов (разрядов) в строке таблицы покрытия: Н = 2п х к х т, где к - коэффициент аппаратной реализации (сложности) одного разряда бинарной векторной логической операции и последующей команды вычисления критерия качества покрытия. Таким образом, высокое быстродействие решения задачи покрытия достигается существенным повышением аппаратурных затрат (в 2п х к х т/к х тх п = 2п/п раз по сравнению с последовательной обработкой графовых вершин), которое обеспечивает компромиссный вариант между полностью параллельной структурой вычислительных процессов (здесь затраты аппаратуры определяются числом примитивов в каждой вершине Н = к х т х п х 2п, а увеличение аппаратуры составляет 2п раз) и последовательными вычислениями однопроцессорного компьютера (здесь быстродействие обработки графа

Хассе равно Т = 1 х2п , а аппаратные затраты равны Н* = кхтхп). Уменьшение аппаратуры по сравнению с параллельным вариантом обработки графа составляет

QH = к х т х п х 2п/к х т х 2п = п. Как следствие существенной аппаратной избыточности, уменьшение времени анализа вершин графа по сравнению с последовательной обработкой

rJ

структуры имеет следующую оценку: Q =

t х 2n 2n

1 х п п

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

2. Метод Windows-декомпозиции для решения задачи покрытия

Сущность проблемы заключается в большой размерности таблицы покрытия, например 1000х1000, когда практически невозможно за приемлемое время получить оптимальное решение задачи покрытия, имеющей экспоненциальную сложность. Тогда необходимо идти по пути квазиоптимизации, что позволяет существенно уменьшить временной фактор и сделать его приемлемым для практики. Ниже предлагается несколько стратегий для снижения временных затрат при обработке таблиц покрытия большой размерности.

1) Метод декомпозиции таблицы покрытия на сегменты строк:

С = {СьС2,...,Сь...,Сп}^ = (Сц,С;2,...,Су,...,С;т).

Каждый сегмент содержит т строк, при условии, что размерность таблицы равна

= пхтхк, а сегмента - |Су| = тхк . Здесь т - количество строк в сегменте или число

переменных в процессоре Хассе, к - длина строки таблицы покрытия, которая должна обрабатываться параллельно, п - число сегментов. Операция дизъюнкции выполняется над всеми строками в каждом сегменте, по окончании которой размерность таблицы понижается в т раз. Если размерность полученной таблицы сегментов больше чем количество входов Хассе процессора, то к ней опять применяется процедура декомпозиции. Таким образом, исходная таблица покрытия превращается в многоуровневую пирамиду, где верхняя площадка определяется числом строк, не большим, чем количество входов процессора Хассе. Например, если процессор имеет 8 переменных для параллельной обработки восьми строк таблицы покрытия, то предыдущие (нижние) уровни должны увеличиваться в 8 раз:

Ьеуе1 т

1 8

2 64

3 512

4 4096

5 32768

Это означает, что для параллельной обработки таблицы размерностью 32768х32768 необходимо выполнить всего 5 циклов обработки матрицы мультипроцессорной системой Хассе. При этом на каждом уровне выбираются сегменты, которые участвуют в формировании покрытия, задекларированного на более высоком уровне. Следует иметь в виду, что предварительно выполняется сегментирование всего пространства строк таблицы покрытия до тех пор, пока на последнем уровне не останется число сегментов, меньшее или равное восьми, например:

Ьеуе1 т

1 32768

2 4096

3 512

4 64

5 8

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

более высокого уровня на основе применения векторной ог-операции:

к

С = © С У 1)Г'

г=1

Например, для обработки таблицы покрытия, имеющей разме

рность 16 на 16:

М 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

а 1 1......1

Ь 1 . . . 1 ....1.1.

с 1 . 1 . . ..1.....

а 1 . . . 1 ..1.....

е . 1 . . 1 . . . . 1 . .

f £ 1 . 1 . . . 1 1 . . . 1 .....1.1

Ъ . . 1 . 1 . . 1.1.1.1.

{ 1 . 1 . . 1 . 1......1

1 1 1 . . . 1 ... 1 ... .

к

1 . 1 . 1 . . . 1.1.....

т 1 . . .11. . . . . 1 . . .

п 1 . 1

Р ..1.....

q 1.1. 1 1.....1 .

необходимо выполнить ее разбиение на 4 сегмента, где в каждом из них имеется 4 вектора:

м 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

а 1 1 . . . . .. 1

Ь 1 ... 1 .... 1 .1.

с 1 .1.. ..1..

а 1... 1 ..1..

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

е .1.. 1 . . . . 1..

f 1 . 1 ... 1 1.1

£ 1... 1

Ъ . 1 .1.. 1.1.1 .1.

1 .1 ..1. 1 . . . . .. 1

.1 1... 1 . . . 1 .

к

1 1. 1... 1.1..

т .11. .... 1

п .1 . 1 . . .

Р ..1..

q 1.1. 1 1 . . . . .1.

1 .1 11.1 1 1.1.1 . 1 1

1 .1 11.1 1 1.1.1 111

11 ..1. 1 1.11. .. 1

.1 1 1 1 . 1 111.1 .1.

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

2) Метод декомпозиции таблицы покрытия на двумерные сегменты:

м 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

а 1 1......1 .....1..

Ь 1 . . . 1 ....1.1. ....... 1

с 1 . 1 . . ..1..... ....1...

а 1 . . . 1 ..1..... 1...1...

е . 1 . . 1 . . . . 1 . .

f 1 . 1 . . . 1 .....1.1 ...1....

£ 1 . . . 1

Ъ . . 1 . 1 . . 1.1.1.1. ....... 1

1 . . 1 . .......1 .....1..

.1 1 ... 1 ... .

к ..1.....

1 1 ...1....

т . . 1 . . . . . 1 . . . ...1... 1

п .1...1..

Р .1......

q . . 1 . 1 ......1 . ......1.

г 1 . . 1 ..1.1.. 1 ....1...

. 1 1 . . 1 . 1.1.1... ..1.....

1

и 1 ..1.... 1 .1......

V 1

w 1 . 1 . 1 . . 1 . . . 1 1 . . ..1.....

X . 1 .. . . . .

У 1 1 1 . . . 1 . . . ...1....

1 . 1 11.1 1 1.1.1111 1..11111

д2 . 1 . . . 1 . 1 ...11.11 .111.111

^3 1 1 1 .11. 1 1 1 1 . 1 1 . 1 .1111. . .

После оконного разбиения выполняется построение (8+1Д+1)-векторов на основе векторной операции дизъюнкции над всеми 8-векторами каждого 1>окна, а результат заносится в (8+1Д+1)-вектор соответствующего (8+1Д+1)-окна. Все такие векторы далее используются для решения задачи покрытия на более высоком уровне (8+1Д+1)-векторов.

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

Нг =- 2

(2nl + 2n2 +... + 2ni +... + 2nk) + 2

n/u

2n

Hu =-

[(2nl + 2n2 +... + 2ni +... + 2nk) + 2n/u] x -

u

n = 1000;n1 = n2 =... = n =... = n10 = 10; r = 1000;u = 100 ^

-1000 -1000 Hr =-2 2

inn 1000/ 10 x 2100 + 210 10 x 2100 + 2 /100 10 x 2 + 2

21000 21000 21000 Hu =_ 2 22

1000/ 1m 10 1m 10 (10 x 2100 + 2 /100) x 1000 (10 x 2 + 2 ) x 100 1000 x 2100 +100 x 2

( ) 10

Здесь первая оценка - выигрыш во временных затратах решения задачи покрытия при разбиении таблицы на k сегментов, вторая - когда дополнительно и строка, длиной r,

r

разбивается на сегменты, длиной u, где число сегментов равно —. Выигрыш формируется

за счет одновременной обработки сегментов или окон, после чего задача приводится к покрытию таблицы сегментами. Затем формируется точный результат в форме строк сегментов, участвующих в покрытии исходной таблицы. Здесь метод ориентирован на параллельную обработку всех квадрантов (окон) процессорами Хассе, число которых определяется количеством квадрантов. Таким образом, платой за высокое быстродействие параллельной обработки является аппаратная избыточность, зависящая от числа окон на самом низком уровне иерархии таблицы покрытия.

3. Аппаратная реализация QH-процессора

Для генерации кода моделей мультипроцессора Хассе различной конфигурации по числу входов или битов в кубите разработан программный генератор. На основе задания исходных данных: количества входных векторов, их разрядности и современных технологий [418] выполняется генерация Verilog-кода. Программа написана с использованием языка Python 2.7, и содержит 255 строк кода.

Структура классов, разработанная с помощью инструмента ArgoUML, представлена на рис. 2. Она включает основной класс Generator, а также генератор индексов внутренних регистров модели, который выделен в отдельный класс genlndex.

Переменные класса genlndex: levels - количество уровней модели (соответствует числу входов процессора Хассе), level - текущей уровень для генерирования индексов регистров, ind_lisc - список строковых значений индексов. Два метода класса: genLevel() и getIndList() генерируют и возвращают список индексов. Объекты класса genlndex используются в методах создания описания и реализации регистров класса Generator.

Класс Generator содержит поля: numlnputs - число входов модели процессора Хассе, numBits - разрядность входных/выходных векторов, file_name - имя файла модели, inter_output - позволяет при необходимости отключать генерирование выходов признаков для регистров внутренних уровней. Метод инициализации переменных задает их значения по умолчанию.

def_init_(self, numlnputs = 4, numBits = 8, file_name = "model.v",

inter_output = True):

Любой из параметров может быть изменен при создании экземпляра класса Generator, например:

numlnputs = 16 numBits = 8

objl = Generator(numInputs, numBits, "model"+str(numInputs)+".v", False).

Рис. 2. Структура классов программы(А^оЦМЪ) Деление Verilog-модели на составляющие представлено на рис 3. Для реализации каждой части модели создан отдельный метод класса Generator: outTitle(),outInput(), outOutput(), outRegDeclaration(), outRegImplemen(), outAssignImplemen() и outEnd() соответственно. Метод genRegDefinition(name1, name2, vec = True) вызывается из outRegDeclaration(). Метод generate(), используя остальные методы класса, выполняет генерацию целой модели устройства и запись ее в файл.

Кроме того, функции outTitle() и outEnd() открывают и закрывают внешний файл: def outTitle(self):

self.f = open(self.file_name, 'w') self.f.write("module device\n (input clk, rst,\n") def outEnd(self):

self.f.write("\nendmodule") self.f.close()

Заголовок_

Декларация входов_

Декларация выходов_

Декларация регистров Реализация регистров Присвоение значений выходов Завершение

Рис. 3. Организация Verilog-модели Таблица иллюстрирует увеличение числа внешних линий устройства с возрастанием количества входов (numlnputs). При этом очевидно, что разрядность входных сигналов (numBits) несущественно влияет на общее число входов и выходов модели.

Таблица

Зависимость количества внешних линий модели от числа входов (numlnputs) и их разрядности

(numBits)

numlnputs numBits

4 8 12 16 20 24 28 32

4 31 55 79 103 127 151 175 199

6 83 115 147 179 211 243 275 307

8 279 319 359 399 439 479 519 559

10 1 051 1 099 1 147 1 195 1 243 1 291 1 339 1 387

12 4 127 4 183 4 239 4 295 4 351 4 407 4 463 4 519

14 16 419 16 483 16 547 16 611 16 675 16 739 16 803 16 867

16 65 575 65 647 65 719 65 791 65 863 65 935 66 007 66 079

18 262 187 262 267 262 347 262 427 262 507 262 587 262 667 262 747

Модель устройства, с конфигурацией из 16 входов, где разрядность входов равна 8 битам, реализована с использованием микросхемы фирмы Xilinx серии Spartan-3E: xc3s1200e.

При этом полученная схема содержит 3 337 триггеров FF и 3 233 4-входовых таблиц преобразования LUT:

Для 16 входов квантового процессора генератор, созданный с помощью языковых средств Python 2.7, синтезировал 288738 строк (16 килобайт) кода языка Verilog за 65 секунд на двуядерном процессоре Интел с тактовой частотой 2,1 Ггц.

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

Исходя из результатов статического временного анализа (рис. 4), минимальный рабочий период синхросигнала равен 9.2 ns, что соответствует частоте 108 МГц.

Рис. 4. Временные параметры Хассе процессора на 16 бит Интерфейс GUI программы генератора кодов, разработанный для генерирования масштабируемых моделей Хассе мультипроцессора, приведен на рис. 5.

Рис.5. Временные параметры Хассе процессора на 16 бит

Интерфейс позволяет осуществлять автоматическое генерирование кода на языке описания аппаратуры Verilog, задавать и вычислять основные характеристики проекта, связанные с числом входов, длиной или разрядностью регистров, а также переходить к фазе RTL-синтеза проекта и последующей его верификации.

Синтез, мэппинг, трассировка и размещение проекта Хассе процессора выполнен на основе использования открытого программного продукта ISE Xilinx. Результат его работы в течение 5,5 часов на процессоре Интел, тактовая частота 2,1 Ггц, представлен в виде топологии микросхемы xc3s1200e двумя компонентами на рис. 6: а - общий план микросхемы после выполнения процедур Place and Rout; б - увеличенный фрагмент кристалла, а именно - левого нижнего угла.

б

Рис. 6. Размещение устройства в микросхеме хс3Б1200е

4. Заключение

Научная новизна. Предложены кубитные структуры данных и квантовая модель вычислительных процессов на основе использования диаграммы Хассе, что дает возможность существенно (х 10-х 100) повысить быстродействие при решении задач дискретной оптимизации. Предложен квазиоптимальный метод решения задачи покрытия для таблиц большой размерности, который отличается от аналогов фазой предварительного разбиения матрицы на сегменты или окна, что дает возможность существенно уменьшить время

а

поиска покрытия путем применения параллельных регистровых логических операций над строками таблицы. Описаны аппаратно-ориентированные модели параллельного (за один цикл) вычисления булеана (множества всех подмножеств) на универсуме из n примитивов для решения задач покрытия, минимизации булевых функций, сжатия данных, синтеза и анализа цифровых систем за счет реализации процессорной структуры в форме диаграммы Хассе.

Практическая значимость. Аппаратная имплементация Хассе мультипроцессора в аппаратуру кристалла Xilinx серии Spartan-3E: xc3s1200e позволяет существенно уменьшить время при решении задач оптимизации путем параллельного вычисления векторных логических операций за счет увеличения числа процессорных элементов и памяти для хранения промежуточных данных. Создан автоматический генератор кода в среде Python, который дает возможность существенно (х3-х5) уменьшить время проектирования кода на языке Verilog при создании масштабируемых моделей Хассе процессора для их последующей имплементации в FPGA-кристаллы микросхем компании Xilinx.

Список литературы: 1. Хаханов В.И., Хаханова И.В. и др. Verilog&SystemVerilog. Харьков: Новое слово, 2010. 528с. 2. Хаханов В.И., Хаханова И.В. VHDL+Verilog = синтез за минуты. Харьков: Смит, 2006. 264 с. 3. Бондаренко М.Ф., Хаханов В.И., Литвинова Е.И. Структура логического ассоциативного мультипроцессора. Автоматика и телемеханика. 2012. № 10. С. 71-92. 4. Bergeron, Janick. Writing testbenches: functional verification of HDL models. Boston: Kluwer Academic Publishers, 2001. 354 р. 5. Samir Palnitkar. Verilog HDL. A guide tp digital design and synthesis. SunSoft Press. 1996. 396p. 6. Bhasker, J. Verilog HDL Synthesis. Practical Primer. Allentown: Star Galaxy Publishing, 1998. 215 р. 7. Donald E. Thomas. Philip R. Moorby. The Verilog Hardware Description Language. New York, Boston, Dordrecht, London, Moscow: Kluwer Academic Publishers. 2002. 404 p. 8. James M. Lee, VERILOG QUICKSTART. A Practical Guide to Simulation and Synthesis in Verilog. New York, Boston, Dordrecht, London, Moscow: Kluwer Academic Publishers. 2002. 378 p. 9. Janick Bergeron, Eduard Cerny, Alan Hunter, Andrew Nightingale. Verification Methodology Manual for SystemVerilog. New York: Springer. 2005. 338 p. 10. Bhasker J. Verilog HDL, Third Edition. Star Galaxy Publishing. 2005. 568 p. 11. IEEE Std 1364.1-2002. IEEE Standard for Verilog® Register Transfer Level Synthesis. IEEE Computer Society Sponsored by the Design Automation Standards Committee. Published by The Institute of Electrical and Electronics Engineers, Inc. New York. 2002. 109 p. 12. IEEE Std 1364-1995. IEEE Standard Hardware Description Language Based on the Verilog Hardware Description Language- IEEE Standard Verilog Hardware Description Language.- IEEE Computer Society Sponsored by the Design Automation Standards Committee.- Published by The Institute of Electrical and Electronics Engineers, Inc. 345 East 47th Street, New York, NY 10017-2394, USA 1996. 675 p. 13. IEEE Std 1364-2001. (Revision of IEEE Std 1364-1995). IEEE Standard Verilog Hardware Description Language.- IEEE Computer Society Sponsored by the Design Automation Standards Committee.-Published by The Institute of Electrical and Electronics Engineers, Inc. 3 Park Avenue, New York, NY 100165997, USA. 2001. 791p. 14. http://www.xilinx.com. 15. http://www.xilinx.com/products/design-tools/ise-design-suite/.16. http://www.python.org (Python Programming Language - Official Website). 17. Kenneth A. Lambert. Fundamentals of Python: From First Programs Through Data Structures. Boston : Course Technology, 2010. 945p. 18. Лутц М. Программирование на Python, том I, 4-е издание. СПб.: Символ-Плюс, 2011. 992с.

Поступила в редколлегию 19.09.2012 Хаханова Ирина Витальевна, д-р техн. наук, профессор кафедры автоматизации проектирования вычислительной техники ХНУРЭ. Научные интересы: проектирование и тестирование цифровых систем и сетей на кристаллах. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 70-21-326. E-mail: [email protected].

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