Сгенерируйте код ортогонального переменного фактора распространения (OVSF) от набора ортогональных кодов
Распространение кодов
Блок OVSF Code Generator генерирует код OVSF от набора ортогональных кодов. Коды OVSF были сначала введены для систем связи 3G. Коды OVSF, в основном, используются, чтобы сохранить ортогональность между различными каналами в системе связи.
Коды OVSF заданы как строки N на n матрицы, CN, который задан рекурсивно можно следующим образом. Во-первых, задайте C1 = [1]. Затем, примите, что CN задают и позволяют, CN (k) обозначают kth строку CN. Задайте C2N
Обратите внимание на то, что CN только задан для N степень 2. Это следует индукцией, что строки CN являются ортогональными.
Коды OVSF могут также быть заданы рекурсивно древовидной структурой, как показано в следующей фигуре.
Если [C] является разрядностью кода 2r на глубине r в дереве, где корень имеет глубину 0, два ответвления, выводящие C, маркированы последовательностями [C C] и [C-C], которые имеют длину 2r+1. Коды на глубине r в дереве являются строками матричного CN, где N = 2r.
Обратите внимание на то, что два кода OVSF являются ортогональными, если и только если никакой код не находится на пути от другого кода до корня. Поскольку коды, присвоенные различным пользователям в той же ячейке, должны быть ортогональными, это ограничивает количество доступных кодов для данной ячейки. Например, если код C41 в дереве присвоен пользователю, коды C10, C20, C82, C83, и так далее, не могут быть присвоены никакому другому пользователю в той же ячейке.
Вы задаете код блок OVSF Code Generator выходные параметры двумя параметрами в диалоговом окне блока: Spreading factor, который является длиной кода и Code index, который должен быть целым числом в области значений [0, 1..., N - 1], где N является распространяющимся фактором. Если код появляется на глубине r в предыдущем дереве, Spreading factor 2r. Code index задает, как далеко вниз столбец дерева на глубине r код появляется, рассчитывая от 0 до N - 1. Для CN, k в предыдущей схеме, N является Spreading factor, и k является Code index.
Можно восстановить код с Spreading factor и Code index можно следующим образом. Преобразуйте Code index в соответствующее двоичное число, и затем добавьте 0s налево, при необходимости, так, чтобы получившаяся двоичная последовательность x1 x2 ... xr имела длину r, где r является логарифмом основой 2 из Spreading factor. Эта последовательность описывает путь от корня до кода. Путь берет верхнее ответвление из кода на глубине i если кси = 0 и более низкое ответвление если кси = 1.
Чтобы восстановить код, рекурсивно задайте последовательность кодов Ci для можно следующим образом. Позвольте C0 быть корнем [1]. Предположение, что Ci был задан, поскольку i <r, задает Ci+1
Код CN имеет заданный Spreading factor и Code index.
Например, чтобы найти код с Spreading factor
16
и Code index
6
, сделайте следующее:
Преобразуйте 6 в двоичное число 110.
Добавьте один 0 налево, чтобы получить 0110, который имеет длину 4 = log2 16.
Создайте последовательности Ci согласно следующей таблице.
i | \Xi | Ci |
---|---|---|
0 | C0 = [1] | |
1 | 0 | C1 = C0 C0 = [1] [1] |
2 | 1 | C2 = C1-C1 = [1 1] [-1 - 1] |
3 | 1 | C3 = C2-C2 = [1 1 - 1 - 1] [-1 - 1 1 1] |
4 | 0 | C4 = C3 C3 = [1 1 - 1 - 1 - 1 - 1 1 1] [1 1 - 1 - 1 - 1 - 1 1 1] |
Код C4 имеет Spreading factor
16
и Code index
6
.
Положительное целое число, которое является степенью 2, задавая длину кода.
Целое число в области значений [0, 1..., N - 1] определение кода, где N является Spreading factor.
Время между каждой выборкой выходного сигнала. Задайте как неотрицательный действительный скаляр.
Количество выборок на кадр в одном столбце выходного сигнала. Задайте как положительный целочисленный скаляр.
Время между выходными обновлениями равно продукту Samples per frame и Sample time. Например, если Sample time и Samples per frame равняются один, блок выводит выборку каждую секунду. Если Samples per frame увеличен до 10, то вектор 10 на 1 выводится каждые 10 секунд. Это гарантирует, что эквивалентная норма выработки не зависит от параметра Samples per frame.
Выходной тип блока может быть задан как int8
или double
. По умолчанию блок устанавливает это на double
.
Выберите режим симуляции.
Code generation
На первом образцовом выполнении моделируйте и сгенерируйте код. Если структура блока не изменяется, последующие образцовые выполнения не регенерируют код.
Если режимом симуляции является Code generation
, Системные объекты, соответствующие блокам, принимают максимум девяти входных параметров.
Interpreted execution
Моделируйте модель, не генерируя код. Эта опция приводит к, быстрее запускают времена, но может замедлить последующую производительность симуляции.