Перейти к содержанию
    

On 1/10/2023 at 7:49 AM, des00 said:

То о чем так долго мечтали большевики, свершилось (с) И. Тальков 

dshekhalev/FEC: FEC Codec IP core library for a some famous codes (BCH, RS, LDPC, Turbo) (github.com)

Денис, спасибо за титанический труд! 

Стал пробовать запустить LDPC (который WiMax) - и там не хватает части исходников. В частности, ldpc_dec_cnode_pp_engine, ldpc_dec_cnode_ps_engine, ldpc_dec_source_dwc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, ElrondTelvanni said:

Денис, спасибо за титанический труд! 

Стал пробовать запустить LDPC (который WiMax) - и там не хватает части исходников. В частности, ldpc_dec_cnode_pp_engine, ldpc_dec_cnode_ps_engine, ldpc_dec_source_dwc

Спасибо на добром слове.

Перед выкладыванием проверялся синтез в вивадо 2019.2, с настройками соответствующими выложеному тестбенчу. Сам тестбенч проверялся на моделирование в менторовском симуляторе, версии 10.2с, скрипт запуска которого лежит в папке do/do_ldpc.do.

Этих файлов там и нет, это файлы для более производительных версий кодеков, на скорости до 1Гб/с и с произвольной шириной входного интерфейса. В коде это разруливается через generate if. Реализовать их предлагается самостоятельно)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

добавлены полиномы и обертки для DVB-S2/S2X БЧХ кодов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 29.03.2023 в 06:04, des00 сказал:

Спасибо на добром слове.

Перед выкладыванием проверялся синтез в вивадо 2019.2, с настройками соответствующими выложеному тестбенчу. Сам тестбенч проверялся на моделирование в менторовском симуляторе, версии 10.2с, скрипт запуска которого лежит в папке do/do_ldpc.do.

Этих файлов там и нет, это файлы для более производительных версий кодеков, на скорости до 1Гб/с и с произвольной шириной входного интерфейса. В коде это разруливается через generate if. Реализовать их предлагается самостоятельно)

 

Добрый день! Новичок в LDPC кодах и соответствующих декодерах. Взял Ваш проект (ldpc_dvb) для изучения. 

Попробовал запустить симуляцию через QuestaSim 10.4c и получил следующую ошибку:
 

# ** Note: (vsim-3812) Design is being optimized...

# ** Error: ../rtl/ldpc_dvb/enc/ldpc_dvb_enc_ibuffer.sv(212): Module 'codec_buffer_nD_alogic' is not defined.
# ** Error: ../rtl/buffer/codec_abuffer.sv(192): Module 'codec_buffer_nD_alogic' is not defined.
# ** Error: ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_ibuffer.sv(212): Module 'codec_buffer_nD_alogic' is not defined.
# ** Error: ../rtl/buffer/codec_abuffer.sv(192): Module 'codec_buffer_nD_alogic' is not defined.
# Optimization failed
# Error loading design
# Error: Error loading design
#        Pausing macro execution
# MACRO ./do_ldpc_dvb.do PAUSED at line 22

Правильно ли я понимаю, что недостающие файлы также нужны для более производительных версий?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 hours ago, Zalman_ said:

Добрый день! Новичок в LDPC кодах и соответствующих декодерах. Взял Ваш проект (ldpc_dvb) для изучения. 

Попробовал запустить симуляцию через QuestaSim 10.4c и получил следующую ошибку:
 

# ** Note: (vsim-3812) Design is being optimized...

# ** Error: ../rtl/ldpc_dvb/enc/ldpc_dvb_enc_ibuffer.sv(212): Module 'codec_buffer_nD_alogic' is not defined.
# ** Error: ../rtl/buffer/codec_abuffer.sv(192): Module 'codec_buffer_nD_alogic' is not defined.
# ** Error: ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_ibuffer.sv(212): Module 'codec_buffer_nD_alogic' is not defined.
# ** Error: ../rtl/buffer/codec_abuffer.sv(192): Module 'codec_buffer_nD_alogic' is not defined.
# Optimization failed
# Error loading design
# Error: Error loading design
#        Pausing macro execution
# MACRO ./do_ldpc_dvb.do PAUSED at line 22

Правильно ли я понимаю, что недостающие файлы также нужны для более производительных версий?
 

а вы точно забрали весь проект? Потому что эти файлы лежат в папке rtl/buffer, общие для всех кодов, а их комплияция указана в строке 11 этого скрипта

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, des00 сказал:

а вы точно забрали весь проект? Потому что эти файлы лежат в папке rtl/buffer, общие для всех кодов, а их комплияция указана в строке 11 этого скрипта

Да, проект я взял весь (do/include/rtl/testbench). 
Ошибочный файл "codec_buffer_nD_alogic" находится по пути rtl/buffer. 

Заранее скажу, что с QuestaSim я мало работал, поэтому возможно, я делаю что-то не так.
Проект пытаюсь запустить таким образом:
1) File -> Change Directory (выбираю FEC-main/do)
2) В консоли ввожу do do_ldpc_dvb.do
3) Получаю следующий лог.

Лог QuestaSim выглядит так.

Спойлер

do do_ldpc_dvb.do
# ../include
# ../rtl
# ../testbench
# ../work
# QuestaSim-64 vlog 10.4c Compiler 2015.07 Jul 20 2015
# Start time: 08:00:37 on May 10,2023
# vlog -reportprogress 300 -work ../work -incr -sv "+incdir+../include+../rtl" ../rtl/codec_pulse_synchronizer.sv ../rtl/codec_reset_synchronizer.sv 
# -- Compiling module codec_pulse_synchronizer
# -- Compiling module codec_reset_synchronizer

# Top level modules:
#     codec_pulse_synchronizer
#     codec_reset_synchronizer
# End time: 08:00:37 on May 10,2023, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0
# QuestaSim-64 vlog 10.4c Compiler 2015.07 Jul 20 2015
# Start time: 08:00:37 on May 10,2023
# vlog -reportprogress 300 -work ../work -incr -sv "+incdir+../include+../rtl" ../rtl/buffer/codec_abuffer.sv ../rtl/buffer/codec_abuffer_dwc.sv ../rtl/buffer/codec_buffer.sv ../rtl/buffer/codec_buffer_dwc.sv ../rtl/buffer/codec_buffer_nD_alogic.sv ../rtl/buffer/codec_buffer_nD_slogic.sv ../rtl/buffer/codec_map_dec_extr_ram.sv ../rtl/buffer/codec_map_dec_input_ram.sv ../rtl/buffer/codec_map_dec_mm.sv ../rtl/buffer/codec_map_dec_output_ram.sv ../rtl/buffer/codec_mem_ablock.sv ../rtl/buffer/codec_mem_block.sv ../rtl/buffer/codec_mem_dwc_ablock.sv ../rtl/buffer/codec_mem_dwc_block.sv 
# -- Compiling module codec_abuffer
# -- Compiling module codec_abuffer_dwc
# -- Compiling module codec_buffer
# -- Compiling module codec_buffer_dwc
# -- Compiling module codec_buffer_nD_alogic
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(170): Variable 'b_w_is_busy' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(157).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(171): Variable 'b_wused' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(158).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(176): Variable 'b_w_is_busy' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(157).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(179): Variable 'b_w_is_busy' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(157).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(184): Variable 'b_wused' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(158).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(203): Variable 'b_r_is_busy' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(160).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(204): Variable 'b_rused' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(161).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(209): Variable 'b_r_is_busy' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(160).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(212): Variable 'b_r_is_busy' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(160).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_alogic.sv(217): Variable 'b_rused' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_alogic.sv(161).
# -- Compiling module codec_buffer_nD_slogic
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_slogic.sv(135): Variable 'b_is_busy' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_slogic.sv(124).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_slogic.sv(136): Variable 'b_wused' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_slogic.sv(125).
# ** Error (suppressible): (vlog-7061) ../rtl/buffer/codec_buffer_nD_slogic.sv(137): Variable 'b_rused' driven in an always_ff block, may not be driven by any other process. See ../rtl/buffer/codec_buffer_nD_slogic.sv(126).

Дополнительно есть ошибки такого формата

----------------------------------------------------------------------------------------------------------------------------------
# -- Compiling module codec_map_dec_extr_ram
# -- Compiling module codec_map_dec_input_ram
# -- Compiling module codec_map_dec_mm
# -- Compiling module tb_mm
# -- Compiling module codec_map_dec_output_ram
# -- Compiling module codec_mem_ablock
# -- Compiling module codec_mem_block
# ** Error: ** while parsing file included at ../rtl/buffer/codec_mem_dwc_block.sv(75)
# ** at ../include/define.vh(13): 'clogb2' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/buffer/codec_mem_dwc_block.sv(75)
# ** at ../include/define.vh(24): 'clog2' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/buffer/codec_mem_dwc_block.sv(75)
# ** at ../include/define.vh(35): 'max' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/buffer/codec_mem_dwc_block.sv(75)
# ** at ../include/define.vh(40): 'min' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/buffer/codec_mem_dwc_block.sv(75)
# ** at ../include/define.vh(49): 'ceil' already exists; must not be redefined as a function.
----------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------
# -- Compiling module ldpc_dvb_dec_2d_ctrl
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_fix.sv(143)
# ** at ../include/define.vh(13): 'clogb2' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_fix.sv(143)
# ** at ../include/define.vh(24): 'clog2' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_fix.sv(143)
# ** at ../include/define.vh(35): 'max' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_fix.sv(143)
# ** at ../include/define.vh(40): 'min' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_fix.sv(143)
# ** at ../include/define.vh(49): 'ceil' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_sink.sv(110)
# ** at ../include/define.vh(13): 'clogb2' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_sink.sv(110)
# ** at ../include/define.vh(24): 'clog2' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_sink.sv(110)
# ** at ../include/define.vh(35): 'max' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_sink.sv(110)
# ** at ../include/define.vh(40): 'min' already exists; must not be redefined as a function.
# ** Error: ** while parsing file included at ../rtl/ldpc_dvb/dec/ldpc_dvb_dec_sink.sv(110)
# ** at ../include/define.vh(49): 'ceil' already exists; must not be redefined as a function.
----------------------------------------------------------------------------------------------------------------------------------

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Zalman_ said:

Да, проект я взял весь (do/include/rtl/testbench). 
Ошибочный файл "codec_buffer_nD_alogic" находится по пути rtl/buffer. 

Заранее скажу, что с QuestaSim я мало работал, поэтому возможно, я делаю что-то не так.
Проект пытаюсь запустить таким образом:
1) File -> Change Directory (выбираю FEC-main/do)
2) В консоли ввожу do do_ldpc_dvb.do
3) Получаю следующий лог.

Лог QuestaSim выглядит так.

аа, это параноидальность 10.4 квесты, там, спустя кучу лет, накрутили проверок на уникальность доступа в случае always_ff + изменили по умолчанию режим компиляции файлов на mfcu. Поэтому я до сих пор на 10.2с, возьмите ее. Так проще чем вот удаленно все это править. Как нить займусь правками под 10.4 но не сейчас

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, des00 сказал:

аа, это параноидальность 10.4 квесты, там, спустя кучу лет, накрутили проверок на уникальность доступа в случае always_ff + изменили по умолчанию режим компиляции файлов на mfcu. Поэтому я до сих пор на 10.2с, возьмите ее. Так проще чем вот удаленно все это править. Как нить займусь правками под 10.4 но не сейчас

 

Понял, спасибо

Есть несколько вопросов по поводу Вашего декодера. 

Никогда в жизни не писал декодеры и сейчас только вникаю в эту тему, поэтому есть вопрос на основе того, что посмотрел в различных работах (имеющих разную дату опубликования) на эту тему (статьи, диссертации, IP ядра различных компаний). Очень часто вижу параллельную или layered структуру декодеров. Предполагаю, что эти структуры обоснованы "параллелизмом" ПЛИС и поэтому чаще всего применяются.
А какую структуру имеет Ваш декодер ? Есть ли его функциональная схема ? Я видел схожие черты Вашего декодера с другими структурами, но не смог установить явного сходства.

Также на основе просмотра статей (отчасти беглого) я увидел, что mapping памяти для хранения проверочной матрицы H у всех различных и нет какого-то единого формата. Возможно, я ошибаюсь. 
Так как Ваш проект можно попробовать в работе в целях изучения, то есть ли какие-то статьи/диссертации/любая другая информация на основе которой Вы писали свой декодер и "размечали" память? 
Я столкнулся с тем, что есть разные архитектуры и разные методы разметки памяти, поэтому не знаю с чего можно было бы начать (ввиду малого опыта).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, Zalman_ said:

Очень часто вижу параллельную или layered структуру декодеров.

ИМХО для плис и нет других подходящих алгоритмов, либо двухпроходное либо послойное декодирование с использованием алгоритма min-sum с разными видами нормализации и аппроксимации гиперболического тангенса.

4 minutes ago, Zalman_ said:

А какую структуру имеет Ваш декодер ? Есть ли его функциональная схема ? Я видел схожие черты Вашего декодера с другими структурами, но не смог установить явного сходства.

В описании там указано:

Quote

Decoder use 2D normalized Min-Sum algorithm with near fixed performance engine, fast decoder syndrome based stop logic, optional 2 types of normalization and self-corrected algorithm.

схема есть, но у меня) но в целом, не вижу особых проблем вам ее восстановить, заодно подтянете навыки реверс инженеринга. Начните с топа, там 4 основных модуля + память, в самом ядре еще 6 модулей. Сходство там есть, просто его не видно сразу.

4 minutes ago, Zalman_ said:

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

Здесь каждый делает как хочет и как удобно под конкретную архитектуру, которая зависит от организации памяти нодов/метрик, матричного умножителя, требований к производительности. Но по сути все сводится к одному: храним в ROM памяти либо базовые матрицы (как в wimax), либо полные матрицы (как в dvb), нативный или упакованный формат тут уже от архитектуры зависит.

4 minutes ago, Zalman_ said:

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

информации много, папка документации по кодированию у меня занимает порядка 1.2ГБ, из них LDPC порядка 300МБ. Но по сути все в статьях пишут одно и тоже. Проще всего взять матлаб/питон и написать свой LDPC декодер для какого нить Wimax. Он тоже QC-LDPC, но меньшего размера чем DVB и его проще отлаживать. У него не такая разряженная матрица и на нем можно попробовать 2-4 архитектуры декодера под разную организацию памяти.

Выложенный DVB относиться к декодерам с широким словом (360 метрик за такт), для достижения высокой производительности. Структура памяти там в упакованном формате с перестановками, для минимизации ресурса. Он прилично весит, но и дает 250/500Мб/с при частоте ядра 250МГц, для 50/25 итераций, при этом производительность можно масштабировать в 2/4/8 раз при работе по одному блоку (для некоторых применений это важно).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 10.05.2023 в 09:00, des00 сказал:

ИМХО для плис и нет других подходящих алгоритмов, либо двухпроходное либо послойное декодирование с использованием алгоритма min-sum с разными видами нормализации и аппроксимации гиперболического тангенса.

В описании там указано:

схема есть, но у меня) но в целом, не вижу особых проблем вам ее восстановить, заодно подтянете навыки реверс инженеринга. Начните с топа, там 4 основных модуля + память, в самом ядре еще 6 модулей. Сходство там есть, просто его не видно сразу.

Здесь каждый делает как хочет и как удобно под конкретную архитектуру, которая зависит от организации памяти нодов/метрик, матричного умножителя, требований к производительности. Но по сути все сводится к одному: храним в ROM памяти либо базовые матрицы (как в wimax), либо полные матрицы (как в dvb), нативный или упакованный формат тут уже от архитектуры зависит.

информации много, папка документации по кодированию у меня занимает порядка 1.2ГБ, из них LDPC порядка 300МБ. Но по сути все в статьях пишут одно и тоже. Проще всего взять матлаб/питон и написать свой LDPC декодер для какого нить Wimax. Он тоже QC-LDPC, но меньшего размера чем DVB и его проще отлаживать. У него не такая разряженная матрица и на нем можно попробовать 2-4 архитектуры декодера под разную организацию памяти.

Выложенный DVB относиться к декодерам с широким словом (360 метрик за такт), для достижения высокой производительности. Структура памяти там в упакованном формате с перестановками, для минимизации ресурса. Он прилично весит, но и дает 250/500Мб/с при частоте ядра 250МГц, для 50/25 итераций, при этом производительность можно масштабировать в 2/4/8 раз при работе по одному блоку (для некоторых применений это важно).

Спасибо за ответ!


Есть небольшой вопрос по поводу работы Вашего проекта в QuestaSim 10.2c. 
Установил рекомендованную Вами версию и все работает как часы, спасибо. 

Есть некоторый нюанс, который я не смог найти в сети. 
Суть нюанса:
1) В качестве примера возьмем первый модуль (ldpc_dvb_dec_source). 
2) После успешной компиляции Questa переходит в этап симуляции, на котором открывается окно sim. В этом окне перечислены инстансы компонентов и если щелкнуть на какой-либо из них, то в другом окне (Objects) появится список всех переменных (reg, wire и т.д.). Подобное я замечал ранее при работе с ModelSim (работал именно с ней). Проще говоря, щелкнув на нужный инстанс я мог посмотреть работу любой объявленной переменной и таким образом отладить работу какого-то внутреннего процесса. 
3) У Вас в проекте такая возможность отсутствует. Я вижу только input/output сигналы, но нет ничего, что находится внутри.
4) Заранее скажу, что если в окне Objects кликнуть ПКМ и перейти в пункт Show, то у меня все включено. Соответственно, сам я ничего не ограничивал. 

Собственно вопрос. Это особенность работы QuestaSim и SystemVerilog или дело в моем малом опыте?


UPD: проблема решена. Дело было в функции vopt, которая по дефолту оптимизировала проект, из-за чего отображались лишь входные и выходные порты

Изменено пользователем Zalman_
Решение проблемы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Zalman_ said:

Это особенность работы QuestaSim

Да. Если хотите увидеть всё, в команде vcom надо добавить +acc. Если не всё, а что-то конкретное, читайте в мануале раздел "Preservation of Object Visibility for Debugging"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немного о кодах выложенных в репо для оценки. DVB-S2x референсные значения из стандарта, LDPC+BCH, метрика 4 бита, алгоритм с нормализацией умножением на 0.875 + стирание вертикальных нодов. Для среднего кодового слова нужна коррекция в 3дб, до BPSK. Ну и укорочение для 1/5 не сделано, для простоты. FER/PER = 1e-5 считается для DVB по пакету 188байт и соответствует BER ~= 1e-8

DVB_S2X_performance.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Wimax 802.16-2012 BTC (TPC) кодек.

Поддерживаются все компонентные коды с динамическим переключением, но без укорочения. 

Ресурсы кодера  LUT/REG/RAMB     ~310/~300/1.5    >250MHz (up to 250Mbps)

Ресурсы декодера для внешней метрики 4 бита: Decoder     : LUT/REG/RAMB     4.8k/5.2k/2.5    >250MHz (~100-200Mbps)

Производительность для 4-х итераций. 

(57, 64)x(57, 64) = 4889 tick

(26, 32)x(26, 32) = 1561 tick

(11, 16)x(11, 16) = 665 tick 

(4, 8)x(4, 8)     = 345 tick 

(63, 64)x(63, 64) = 4743 tick 

(31, 32)x(31, 32) = 1417 tick 

(15, 16)x(15, 16) = 521 tick 

(7, 8)x(7, 8)    = 256 tick 

Типовые характеристики для кода (26, 32)х(57, 64) 

Quote

# code 1482/2048 = 0.72 results
# bits 1.48e+005 EbNo(SNR) = 2.00(3.61): ber = 4.41e-002. fer = 5.76e-002, ch_err = 6.55e-002
# bits 1.48e+005 EbNo(SNR) = 2.50(4.11): ber = 1.26e-002. fer = 5.25e-002, ch_err = 5.39e-002
# bits 1.48e+005 EbNo(SNR) = 3.00(4.61): ber = 3.04e-004. fer = 4.50e-002, ch_err = 4.48e-002
# bits 1.48e+005 EbNo(SNR) = 3.50(5.11): ber = 0.00e+000. fer = 3.64e-002, ch_err = 3.54e-002
# bits 1.48e+005 EbNo(SNR) = 4.00(5.61): ber = 0.00e+000. fer = 2.88e-002, ch_err = 2.79e-002
# bits 1.48e+005 EbNo(SNR) = 4.50(6.11): ber = 0.00e+000. fer = 2.22e-002, ch_err = 2.16e-002
# bits 1.48e+005 EbNo(SNR) = 5.00(6.61): ber = 0.00e+000. fer = 1.64e-002, ch_err = 1.60e-002
# bits 1.48e+005 EbNo(SNR) = 5.50(7.11): ber = 0.00e+000. fer = 1.24e-002, ch_err = 1.16e-002

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...