Упражнения

  1. С новыми знаниями в области тестбенчей, напишите тестбенч для модуля merge_parallel.

К заданиям ниже тестбенч в смысле номера 1. не обязателен.

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

  2. Реализуйте модуль работающий как функция pairwise из F#. Входные данные поступают последовательно по каналу ширины 1, выходные данные отправляется параллельно.

  3. В качестве усложнения предыдущей задачи, реализуйте модуль работающий как функция windowed из F#.

  4. Реализуйте одномерную свёртку (про то, что это такое, можно почитать здесь): поток байт на входе, поток байт на выходе. Для предподготовки входного потока используйте модуль windowed из предыдущего задания (он как раз "нарежет" входной сигнал на части нужного размера). Для применения свёртки используйте модуль, реализованный в 4 упражнении ранее. Предусмотрите возможность конфигурировать ядра (размер и веса).