Декодируйте код LDPC с помощью многоуровневого распространения убеждений с помощью min-sum или нормализованного алгоритма min-sum приближения
Беспроводной HDL Toolbox/Обнаружение и коррекция ошибок
Блок NR LPDC Decoder реализует декодер с низкой плотностью проверки четности (LDPC) с аппаратными сигналами управления. Блок принимает проколотые значения логарифмического отношения логарифмической правдоподобности (LLR), поток управляющих сигналов, базовое число графика и размеры подъёма. Блок выводит декодированные биты, поток управляющих сигналов, размеры подъема и сигнал, который указывает, когда блок готов принять новые входы.
Этот блок предоставляет возможность реализации многоуровневого распространения убеждений с помощью нормализованного алгоритма min-sum приближения или алгоритма min-sum приближения. Эта реализация совпадает с реализацией функции nrLDPCDecode
(5G Toolbox). Можно использовать этот блок для кодирования канала нисходящих и восходящих общих каналов и пейджингового канала 5G соответствии со стандартом TS 38.212 [1] нового радио (NR).
Блок NR LDPC Decoder поддерживает скалярные и 64-элементные векторы-столбцы входов. Блок поддерживает функцию раннего завершения, чтобы помочь улучшить эффективность декодирования и более высокие скорости сходимости при условиях высокого отношения шума сигнала (ОСШ). Блок позволяет декодировать многочисленные скорости кода, чтобы помочь достичь высокой эффективности с высокой степенью гибкости скорости кода. Блок обеспечивает архитектуру, подходящую для генерации HDL-кода и аппаратного развертывания. Для получения дополнительной информации см. «Алгоритмы».
data
- Входные значения LLRВход коэффициента логарифмической правдоподобности (LLR) значений, заданный как скаляр или вектор-столбец размера 64.
Тип данных этого входа должен быть подписанным типом данных с фиксированной точкой с размером слова от 4 до 16 бит. Для получения дополнительной информации о том, как задать векторные входные данные, смотрите Указание векторного входа.
Типы данных: int8
| int16
| fixed point
ctrl
- Сигналы управления, сопровождающие поток выборокsamplecontrol
автобусСигналы управления, сопровождающие поток дискретизации, заданные как samplecontrol
bus. Шина включает в себя start
, end
, и valid
управляющие сигналы, которые указывают контуры системы координат и валидность выборок.
start
- Указывает начало входного кадра
end
- Указывает конец входного кадра
valid
- Указывает, что данные входного data порта действительны
Для получения дополнительной информации см. Выборку шины управления.
Типы данных: bus
bgn
- Базовый номер графикаБазовое число графика, заданное как скаляр. Когда это значение 0
блок применяется bgn 1. Когда это значение 1
блок применяется bgn 2. Для получения дополнительной информации о bgn 1 и bgn 2 см. раздел 5.3.2 TS 38.212 [1].
Типы данных: Boolean
liftingSize
- Вход подъемаВход подъема, заданный как скаляр.
Для недопустимого значения liftingSize блок отбрасывает текущую систему координат и ожидает новой системы координат. Для получения дополнительной информации о поддерживаемых значениях размеров подъема см. раздел 5.3.2 TS 38.212 [1].
Типы данных: uint16
iter
- Количество итерацийКоличество итераций, заданное в виде целого числа в области значений от 1 до 63.
Если вы задаете iter как значение, больше 63, блок автоматически устанавливает значение iter равным 8
и выполняет операцию декодирования.
Чтобы включить этот порт, установите параметр Decoding termination criteria равным Max
и параметр Source for number of iterations для Input port
.
Типы данных: uint8
numRows
- Количество строкКоличество строк в виде скаляра.
Когда вы устанавливаете bgn значение 0
блок поддерживает количество строк в области значений от 4 до 46. Когда вы устанавливаете bgn значение 1
блок поддерживает количество строк в области значений от 4 до 42.
Чтобы включить этот порт, выберите параметр Enable multiple code rates.
Типы данных: fixdt(0,6,0)
data
- Декодированные выходные биты данныхДекодированные выходы биты данных, возвращенные в виде скаляра или вектора-столбца размера 64.
Блок выводит биты данных в таком же формате, как вход значения LLR. Извлеките эти выходные биты данных в аналогичном формате для дальнейшей обработки.
Типы данных: Boolean
ctrl
- Сигналы управления, сопровождающие поток выборокsamplecontrol
автобусУправляющие сигналы, сопровождающие поток дискретизации, возвращаются как samplecontrol
bus. Шина включает в себя start
, end
, и valid
управляющие сигналы, которые указывают контуры системы координат и валидность выборок.
start
- Указывает начало выходной системы координат
end
- Указывает конец выходной системы координат
valid
- Указывает, что данные выходного data порта действительны
Для получения дополнительной информации см. Выборку шины управления.
Типы данных: bus
liftingSize
- Выход подъемаВыходной размер подъема, возвращенный как скаляр.
Типы данных: uint16
nextFrame
- Готов к новым входамБлок устанавливает этот сигнал на 1
когда блок готов принять начало следующей системы координат. Если блок получает сигнал входа start, пока nextFrame 0
блок отбрасывает систему координат в прогресс и начинает обработку новых данных.
Для получения дополнительной информации смотрите Использование выходного сигнала nextFrame.
Типы данных: Boolean
actIter
- Фактическое количество итерацийФактическое количество итераций, которое принимает блок, чтобы декодировать выход, возвращенный как скаляр.
Чтобы включить этот порт, установите параметр Decoding termination criteria равным Early
.
Типы данных: uint8
parityCheck
- Индикатор состояния проверки четностиИндикатор состояния проверки четности, возвращенный как логический скаляр. Порт указывает состояние проверки четности после операции декодирования.
0
- Указывает, что проверка четности не выполнена
1
- Указывает, что проверка четности прошла
Чтобы включить этот порт, выберите параметр Enable parity check output port.
Типы данных: Boolean
Algorithm
- Тип алгоритмаMin-sum
(по умолчанию) | Normalized min-sum
Выберите тип алгоритма. Для получения дополнительной информации смотрите Алгоритм (5G Toolbox).
Scaling factor
- Масштабный коэффициент0.75
(по умолчанию) | значения в области значений от 0,5 до 1, с шагом 0,0625Задайте масштабный коэффициент.
Чтобы включить этот параметр, установите параметр Algorithm равным Normalized min-sum
.
Decoding termination criteria
- Критерии расторженияMax
(по умолчанию) | Early
Выберите критерий завершения декодирования.
Max
- Завершает декодирование, когда блок достигает количества итераций, заданного в маске блока или через iter входной порт
Early
- Завершает декодирование, когда все проверки четности выполняются или когда блок достигает максимального количества итераций, обеспеченных в маске блока
Source for number of iterations
- Выбор источника для количества итерацийProperty
(по умолчанию) | Input port
Выберите источник для определения количества итераций.
Количество итераций можно задать при помощи входа порта или параметра.
Выберите Property
для включения параметра Number of iterations.
Выберите Input port
чтобы включить порт iter.
Чтобы включить этот параметр, установите параметр Decoding termination criteria равным Max
.
Number of iterations
- Количество итераций8
(по умолчанию) | целое число в области значений от 1 до 63Задайте количество итераций.
Чтобы включить этот параметр, установите параметр Source for number of iterations равным Property
.
Maximum number of iterations
- Максимальное количество итераций8
(по умолчанию) | целое число в области значений от 1 до 63Задайте максимальное количество итераций.
Чтобы включить этот параметр, установите параметр Decoding termination criteria равным Early
.
Enable multiple code rates
- Множественные скорости кодаoff
(по умолчанию) | on
Выберите этот параметр, чтобы включить входной порт numRows для поддержки нескольких скоростей кода. Для получения дополнительной информации о множественных скоростях кода см. Раздел «Скорости нескольких кодов».
Enable parity check output port
- Состояние проверки четностиoff
(по умолчанию) | on
Выберите этот параметр, чтобы разрешить parityCheck выхода порту просматривать состояние проверки четности.
Векторы входные данные для блока должны быть заданы как вектор-столбец размера 64. Вы должны предоставить входы в виде целого числа ceil
(liftingSize/64) тактовые импульсы.
Общее количество тактовых импульсов, которые блок требует для приема системы координат значений LLR для декодирования, равно n x ceil
(liftingSize/64), где n - количество столбцов в матрице проверки четности. n зависит от базового числа графика, заданного bgn входным портом. Когда значение порта bgn 0
блок устанавливает n равным 66. Когда значение порта bgn 1
блок устанавливает n равным 50.
В этих разделах показано, как блок принимает входные значения LLR на основе значений liftingSize и bgn портов.
Для liftingSize входного значения 2
и bgn входное значение 0
блок может принимать 132 LLR. В этом случае блок принимает первые два входных бита LLR в каждом такте и игнорирует оставшиеся 62 элемента в этом такте. Общее количество тактовых импульсов, требуемых блоком для приема системы координат значений LLR, составляет 66.
Элементы Ln представляют биты LLR, а элементы X представляют проигнорированные значения.
Входные значения LLR | Количество тактовых синхроимпульсов | |||||
---|---|---|---|---|---|---|
1 тактовый цикл | 2 тактовых сигнала | 3 такта | 4 тактовых сигнала | ... | 66 тактовых синхроимпульсов | |
data[0] | L0 | L2 | L4 | L6 | ... | L130 |
data[1] | L1 | L3 | L5 | L7 | ... | L131 |
... | X | X | X | X | X | X |
data[63] | X | X | X | X | X | X |
Для liftingSize входного значения 104
и bgn входное значение 0
блок может принимать 6864 LLR. В этом случае блок принимает 104 значения LLR в двух тактах: 64 LLR в первом такте и 40 LLR во втором такте. Блок игнорирует оставшиеся 24 элемента во втором такте. Общее количество тактовых импульсов, требуемых блоком для приема входных значений LLR, составляет 132.
Элементы Ln представляют биты LLR, а элементы X представляют проигнорированные значения.
Входные значения LLR | Количество тактовых синхроимпульсов | |||||||
---|---|---|---|---|---|---|---|---|
1 тактовый цикл | 2 тактовых сигнала | 3 такта | 4 тактовых сигнала | ... | ... | 131 тактовый синхроимпульс | 132 тактовых синхроимпульса | |
data[0] | L0 | L64 | L104 | L168 | ... | ... | L6760 | L6824 |
data[1] | L1 | L65 | L105 | L169 | ... | ... | L6761 | L6825 |
... | ... | ... | ... | ... | ... | ... | ||
... | ... | L103 | ... | L207 | ... | ... | ... | L6863 |
... | ... | X | ... | X | ... | ... | ... | X |
data[63] | L63 | X | L167 | X | ... | ... | L6823 | X |
Коды NR LDPC могут поддерживать гибкие скорости кода на основе расширения матрицы проверки четности (PCM) для достижения высокой пропускной способности и достижения низких требований к задержкам. Блок поддерживает несколько скоростей кода, варьируя количество строк матрицы проверки четности.
Для кодов LDPC базовая матрица проверки четности (H b) является произведением количества строк (m b) и количества столбцов (n b) матрицы. Выход (K) блока вычисляется как k b x Z, где Z является коэффициентом расширения или размером подъема, который может находиться в области значений от 2 до 384, и kb равно 22
для bgn значения 0
и 10
для bgn значения 1
как определено в стандарте [1].
Вход (N) вычисляется как, n b x Z, где n b равно m b + k b.
Этот рисунок показывает матрицу проверки четности, отмеченную заданным количеством строк и столбцов, которую можно использовать, чтобы вычислить скорости кода блока. R скорости кода вычисляется как, k b/( k b - 2 + m b) для заданного значения bgn . На этом рисунке значения n b1, n b2 и n b3 указывают количество столбцов для заданного значения bgn а значения m b1, m b2 и m b3 указывают количество строк для заданного значения bgn.
Этот рисунок показывает архитектуре блок-схему блока NR LDPC Decoder. Блок Controller управляет слоем и количеством итераций процесса декодирования. Блок RAM переменного узла хранит сообщения узла переменной (VN), и блок RAM узла проверки сохраняет сообщения узла проверки (CN). Блок Functional Unit вычисляет сообщения переменного узла (VN) и сообщения контрольного узла (CN) на основе многоуровневого распространения убеждений и либо нормализованного алгоритма минимального приближения, либо алгоритма минимального приближения. Блок Статус проверки завершения/четности вычисляет проверки четности и обеспечивает статус проверки четности после каждой итерации. Для получения дополнительной информации о алгоритмах декодирования смотрите Алгоритм (5G Toolbox).
Реализация блока соответствует эффективности функции nrLDPCDecode
(5G Toolbox).
Этот график показывает эффективность блока для 4-битного входа LLR, когда вы устанавливаете параметр Algorithm равным Min-sum
.
Этот график показывает эффективность блока для 4-битного входа LLR, когда вы устанавливаете параметр Algorithm равным Normalized min-sum
.
Этот график показывает среднее количество проделанных итераций для декодирования данных на EbNo для 4-битного входа LLR, когда вы устанавливаете параметр Algorithm равным Min-sum
и параметр Decoding termination criteria для Early
.
Задержка блока изменяется на основе значений bgn, liftingSize и numRows входных портов и количества итераций. Поскольку задержка изменяется, используйте выходной порт nextFrame сигнала управления, чтобы определить, когда блок готов к новому входному кадру.
Задержка блока равна r x (t
+ (m x 8) x ceil
(liftingSize/64) + t + m x (7 - ceil
(liftingSize/64))) + (n x liftingSize) + 18. В этом вычислении r количество итераций, n количество столбцов в матрице проверки четности, t в два раза больше общего количества элементов, отличных от -1 в матрице проверки четности, m количество строк в матрице проверки четности и d задержки конвейера. Когда вы выбираете параметр Enable multiple code rates, d равно 26. В противном случае d равно 18.
Этот рисунок показывает пример выхода блока NR LDPC Decoder с задержкой. В этом случае значения bgn и liftingSize входных портов устанавливаются равными 0
и 128
, соответственно, и параметру Number of iterations задано значение 8
. Задержка блока составляет 31 362 такта.
Для векторных входов задержка блока равна r x (t
+ (m x 9)) + n x (ceil
(liftingSize/64)) + d. В этом вычислении r количество итераций, n количество столбцов в матрице проверки четности, t в два раза больше общего количества элементов, отличных от -1 в матрице проверки четности, m количество строк в матрице проверки четности и d задержки конвейера. Когда вы выбираете параметр Enable multiple code rates, d равно 26. В противном случае d равно 18.
Этот рисунок показывает пример выхода блока NR LDPC Decoder с задержкой. В этом случае значения bgn и liftingSize входных портов устанавливаются равными 0
и 384
, соответственно, и параметру Number of iterations задано значение 8
. Задержка блока составляет 8 782 тактовых импульса.
Этот рисунок показывает пример выхода блока NR LDPC Decoder с задержкой. В этом случае значения bgn, liftingSize и numRows входных портов устанавливаются равными 0
, 384
, и 4
, соответственно, и параметру Number of iterations задано значение 8
. Задержка блока составляет 1674 такта.
Пропускная способность блока вычисляется как (cwLen/ latency) x f max. В этом расчете:
cwLen - длина кодового слова, которая равна k b x Z, где k b 22
для значения bgn 0
и 10
для значения bgn 1
.
latency - задержка блока для заданного строения
fmax - максимальная рабочая частота
Для получения дополнительной информации о вычислении задержки см. Раздел «Задержка». Дополнительные сведения о максимальной рабочей частоте см. в разделе Эффективности.
Этот график показывает пропускную способность в зависимости от количества строк, заданных на входе блока, когда вы устанавливаете параметр Algorithm равным Min-sum
, параметр Number of iterations для 8
и bgn входного порта для 0
.
Эффективность синтезированного HDL-кода варьируется с вашей целью и опциями синтеза. Это также варьируется в зависимости от типа алгоритма и размера слова входных значений LLR.
Эта таблица показывает результаты синтеза ресурсов и данных о эффективности блока, когда вы устанавливаете параметр Algorithm равным Min-sum
, установите параметр Number of iterations равным 8
, и задайте входные значения LLR типа данных fixdt(1,4,0)
. Сгенерированный HDL нацелен на Xilinx® Zynq®Ultrascale+™ плату оценки RFSoC.
Входные данные | Срез LUTs | Регистры срезов | Блокируйте ОЗУ | Максимальная частота в МГц |
---|---|---|---|---|
Скаляр | 45461 | 58331 | 192.5 | 291 |
Вектор | 67410 | 75217 | 128.5 | 291.5 |
В этой таблице показаны результаты синтеза данных о ресурсах и эффективности блока для входных параметров вектора, когда вы устанавливаете параметр Algorithm равным Min-sum
, установите параметр Decoding termination criteria равным Max
, установите параметр Number of iterations равным 8
, выберите параметр Enable multiple code rates и задайте входные значения LLR типа данных fixdt(1,4,0)
. Сгенерированный HDL предназначен для платы оценки Xilinx ZynqUltrascale + RFSoC.
Срез LUTs | Регистры срезов | Блокируйте ОЗУ | Максимальная частота в МГц |
---|---|---|---|
72527 | 76002 | 128.5 | 264.2 |
[1] 3GPP TS 38.212. "NR; Мультиплексирование и канальное кодирование ". 3-ья Генерация проект Партнерства; Группа технических спецификаций Радиосеть доступ.
[2] Gallager, R. «Коды проверки четности с низкой плотностью». Транзакции IEEE по теории информации 8, № 1 (январь 1962): 21-28. www.doi.org/10.1109/TIT.1962.1057683.
Этот блок поддерживает генерацию кода C/C + + для Simulink® режимы Accelerator и Rapid Accelerator и для генерации компонентов DPI.
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Этот блок имеет одну архитектуру HDL по умолчанию.
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
Вы не можете сгенерировать HDL для этого блока внутри Resettable Synchronous Subsystem (HDL Coder).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.