aboutsummaryrefslogtreecommitdiffstats
path: root/questions
diff options
context:
space:
mode:
Diffstat (limited to 'questions')
-rw-r--r--questions/1-a.txt19
-rw-r--r--questions/1-b.txt18
-rw-r--r--questions/1-c.txt34
-rw-r--r--questions/1-d.txt25
-rw-r--r--questions/1-e.txt26
-rw-r--r--questions/2-a.txt24
-rw-r--r--questions/2-b.txt33
-rw-r--r--questions/2-c.txt38
-rw-r--r--questions/2-d.txt28
9 files changed, 245 insertions, 0 deletions
diff --git a/questions/1-a.txt b/questions/1-a.txt
new file mode 100644
index 0000000..5bfff0e
--- /dev/null
+++ b/questions/1-a.txt
@@ -0,0 +1,19 @@
+Просто модуль
+
+Требуется при помощи языка Verilog спроектировать модуль, который реализует две
+булевых функции от переменных x1, x2 и x3, заданные своими столбцами значений:
+z1 = (10011101) и z2 = (00010111).
+
+Имя модуля должно быть m_a.
+
+Входы модуля: три провода x1, x2 и x3.
+
+Выходы модуля: два провода z1 и z2.
+
+При проектировании модуля можно использовать только стандартные функциональные
+элементы, такие как not, or и and. Другие конструкции и выражения языка Verilog
+использовать запрещается.
+
+ИЗ ПЕРЕПИСКИ В ТЕЛЕГРАМЕ:
+"Спасибо за информацию. Посмотрел, действительно, есть ошибка. В первой задаче
+z1 = (01101101). Пожалуйста, учитывайте это исправление при решении задачи."
diff --git a/questions/1-b.txt b/questions/1-b.txt
new file mode 100644
index 0000000..c11324d
--- /dev/null
+++ b/questions/1-b.txt
@@ -0,0 +1,18 @@
+Просто мультиплексор
+
+Требуется при помощи языка Verilog спроектировать мультиплексор 4-х 64-битных
+шин проводов.
+
+Имя модуля должно быть mux64_4_2.
+
+Входы модуля: 64-битные шины проводов y0, y1, y2, y3 и 2-х битная шина проводов
+x, которая выбирает одну из шин y по ее номеру.
+
+Выход модуля: 64-битная шина z.
+
+При проектировании модуля можно использовать стандартные функциональные
+элементы, такие как not, or и and, и композицию модулей. Другие конструкции и
+выражения языка Verilog использовать запрещается. Файл с описанием модуля
+должен содержать не более 35 строк.
+
+
diff --git a/questions/1-c.txt b/questions/1-c.txt
new file mode 100644
index 0000000..048ca03
--- /dev/null
+++ b/questions/1-c.txt
@@ -0,0 +1,34 @@
+Арифметическое устройство
+
+Требуется при помощи языка Verilog спроектировать параметрическое
+арифметическое устройство для выполнения операций сложения и умножения чисел с
+фиксированной запятой.
+
+Имя модуля должно быть au.
+
+Параметры модуля:
+
+ * WIDTH_1 - размер целой части числа (по умолчанию, 4 бита).
+ * WIDTH_2 - размер дробной части числа (по умолчанию, 4 бита).
+
+Входы модуля:
+
+ * x_int, y_int - шины проводов размера WIDTH_1, которые задают целые части
+ входных аргументов x и y.
+ * x_frac, y_frac - шины проводов размера WIDTH_2, которые задают дробные
+ части входных аргументов x и y.
+ * operation - провод, задающий тип операции (0 - сложение, 1 - умножение).
+
+Выходы модуля:
+
+ * zero - провод, который сигнализирует о том, что результат является 0.
+ * overflow - провод, который сигнализирует о том, что произошло переполнение.
+ * result_int - шина проводов размера WIDTH_1, которая выдает целую часть
+ результата операции.
+ * result_frac - шина проводов размера WIDTH_2, которая задает дробную часть
+ результата.
+
+Примечание: при выходе результирующего значения за пределы ширины целой части
+происходит переполнение.
+
+
diff --git a/questions/1-d.txt b/questions/1-d.txt
new file mode 100644
index 0000000..8d1c15c
--- /dev/null
+++ b/questions/1-d.txt
@@ -0,0 +1,25 @@
+Память с произвольным доступом
+
+Требуется при помощи языка Verilog спроектировать параметрический модуль памяти
+с произвольным доступом.
+
+Имя модуля должно быть ram.
+
+Параметры модуля:
+
+ * DATA_WIDTH размерность данных, хранимых в памяти (по умолчанию 8 бит).
+ * ADDR_WIDTH размер адреса (по умолчанию, 4 бита).
+
+Входы модуля:
+
+ * data_in шина проводов размера DATA_WIDTH, используемая для подачи входной
+ информации в блок памяти.
+ * address шина размера ADDR_WIDTH, задающий адрес в памяти.
+ * провод clock, провод write_enable, который сигнализирует о том, будет ли
+ проводится запись в память или нет (при значении WRITE_ENABLE==1 в
+ момент прихода положительного фронта синхронизирующего сигнала clock).
+
+Выход модуля: data_out шина проводов размера DATA_WIDTH, которая выдает
+значение элемента памяти по адресу, заданному входом address.
+
+
diff --git a/questions/1-e.txt b/questions/1-e.txt
new file mode 100644
index 0000000..0ec3126
--- /dev/null
+++ b/questions/1-e.txt
@@ -0,0 +1,26 @@
+Сдвиговый регистр
+
+Требуется при помощи языка Verilog спроектировать параметрический сдвиговый
+регистр (https://en.wikipedia.org/wiki/Shift_register).
+
+Имя модуля должно быть shift_register.
+
+Параметры модуля:
+
+ * WIDTH - количество бит, которые хранит регистр (по умолчанию, 8 бит).
+ * LENGTH - количество последовательно соединнех регистров (по умолчанию, 4).
+
+Входы модуля:
+
+ * Шина проводов data_in размера WIDTH, поделюченная к первому регистру.
+ * Провод clock, осуществялющий синхронизацию по своему положительному фронту.
+ * Провод reset, осуществляющий сброс по своему положительному фронту.
+
+Выход модуля: шина проводов data_out размера WIDTH, подключенная к последнему
+регистру.
+
+Рекомендация: при проектировании модуля можно спроектировать вспомогательный
+модуль регистра, который в основном модуле будет многократно инстанцироваться
+при помощи конструкции generate.
+
+
diff --git a/questions/2-a.txt b/questions/2-a.txt
new file mode 100644
index 0000000..e272b43
--- /dev/null
+++ b/questions/2-a.txt
@@ -0,0 +1,24 @@
+Дерево сумматоров
+
+Требуется при помощи языка Verilog спроектировать параметрический блок сложения
+нескольких чисел. Схема сложения выполнена в виде дерева, когда нечетные по
+номеру числа складываются с четными и к результирующим числам применяется такая
+же схема, пока не получиться одно число.
+
+Имя модуля должно быть tree_adder.
+
+Парметры модуля:
+
+ * WIDTH - размер числа (по умолчанию, 8 бит).
+ * SIZE - количество складываемых чисел (по умолчанию, 4). Для простоты
+ реализации, считается, что количество чисел является степенью двойки
+ (другими словами, дерево сложения является полным двоичным деревом).
+
+Вход модуля: data_in - шина проводов размера SIZE * WIDTH, представляющая собой
+последовательную конкатенацию всех входных чисел.
+
+Выход модуля: data_out - шина проводов размера WIDTH, представляющая собой
+результат сложения.
+
+При проектировании модуля игнорируется возможное переполнение. Считается, что
+все промеужеточные числа и финальное число имеет размер WIDTH.
diff --git a/questions/2-b.txt b/questions/2-b.txt
new file mode 100644
index 0000000..837c2c3
--- /dev/null
+++ b/questions/2-b.txt
@@ -0,0 +1,33 @@
+Вычисление максимума
+
+Требуется при помощи языка Verilog спроектировать параметрический блок
+вычисления максимума нескольких чисел и индекса исходного числа, на котором
+достигается максимум. Схема вычисления выполнена в виде дерева, когда
+последовательные пары чисел сравниваются и среди них выбирается максимальный.
+Аналогичная схема применяется к результирующим числам, пока не получиться одно
+число.
+
+Имя модуля должно быть max_argmax.
+
+Парметры модуля:
+
+ * WIDTH - размер числа (по умолчанию, 8 бит).
+ * SIZE - количество уровней в дереве вычислений (по умолчанию, 2). При этом
+ количество чисел, для которых вычисляется максимум, равно 2 в степени
+ SIZE.
+
+Вход модуля: data_in - шина проводов размера (2**SIZE) * WIDTH, представляющая
+собой последовательную конкатенацию всех входных чисел.
+
+Выход модуля:
+
+ * data_max - шина проводов размера WIDTH, представляющая собой результат
+ сложения.
+ * argmax - шина проводов размера SIZE, представляющая собой номер числа, на
+ котором достигается максимум (числа нумерутся слева направо, нумерация
+ начинается с 0).
+
+Если максимальное значение достигается на нескольких числах, то argmax
+возращает индекс последнего числа, на котором достигается максимум.
+
+
diff --git a/questions/2-c.txt b/questions/2-c.txt
new file mode 100644
index 0000000..d93b677
--- /dev/null
+++ b/questions/2-c.txt
@@ -0,0 +1,38 @@
+Требуется при помощи языка Verilog спроектировать параметрический блок
+линейного классификатора. Данный блок получает на вход набор значений признаков
+и их веса. Для каждого класса вычисляется сумма произведений значений признаков
+на веса. Среди полученных значений находится максимум и в качестве результата
+блок выдает индекс класса, на котором был достигнут максимум.
+
+Имя модуля должно быть linear_classifier.
+
+Параметры модуля:
+
+ * WIDTH - размер чисел (по умолчанию, 8 бит).
+ * FEATURES - количество признаков (по умолчанию, 2).
+ * C_WIDTH - количество бит, которые используются для хранения индеска класса
+ (по умолчанию, 1). Считается, что число классов является степенью
+ двойки.
+
+Входы модуля:
+
+ * features - шина проводов размера FEATURES * WIDTH, представляющая собой
+ последовательную конкатенацию значений входных признаков.
+ * weights - шина проводов размера (2**C_SIZE) * FEATURES * WIDTH,
+ представляющая собой последовательную конкатенацию значений весов
+ признаков для всех классов.
+
+Выходы модуля:
+
+ * r_value - шина проводов размера WIDTH, представляющая собой результат
+ вычисления максимума.
+ * r_class - шина проводов размера C_WIDTH, представляющая собой индекс
+ класса, на котором достигается максимум (классы нумерутся слева
+ направо, нумерация начинается с 0).
+
+При проектировании модуля можно использовать модули tree_adder и max_argmax,
+описанные в заданиях A и B, в качестве подмодулей (сами модули проектировать не
+нужно, они будут автоматически использованы при проверке, если были
+использованы).
+
+
diff --git a/questions/2-d.txt b/questions/2-d.txt
new file mode 100644
index 0000000..af53680
--- /dev/null
+++ b/questions/2-d.txt
@@ -0,0 +1,28 @@
+Систолический массив
+
+Требуется спроектировать на языке Verilog двухмерный систолический массив для
+выполнения операции матричного умножения
+https://gyires.inf.unideb.hu/KMITT/a52/ch04.html.
+
+Проектируемый модуль должен называться systolic_array.
+
+Параметры модуля: ROWS - количество рядов в массиве, COLUMNS - количество
+столбцов в массиве, WIDTH - размерность шин аргументов.
+
+Входы модуля: clock - провод синхросигнала, reset - провод сигнала сброса
+(сброс при выставлении значения 0), a - шина проводов ширины ROWS*WIDTH,
+подающая значения вектора a (элементы вектора нумеруются справа налево), b -
+шина проводов ширины COLUMNS*WIDTH, подающая значения вектора b (элементы
+вектора нумеруются справа налево). Каждое значение векторов a и b имеет
+размерность WIDTH.
+
+Выходы модуля: c - шина проводов ширины ROWS*COLUMNS*WIDTH, характеризующих
+текущее состояние вычисляемой матрицы. Элементы матрицы нумеруются справа
+налево и сверху вниз. Например, для матрицы размера 2 на 2 из 4-х битовых
+значений шина с будет разбита следующим образом: 00: c[3 : 0], 01: c[7 : 4],
+10: c[11: 8], 11: c[15:12].
+
+Примечание: схема должна иметь асинхронный сброс, латентность вычислений
+(количество тактов, требуемое для вычисления нового значения) равна 1.
+
+