summaryrefslogtreecommitdiff
path: root/cesar/ce/rx/bitloading
diff options
context:
space:
mode:
authorJérémy Dufour2011-10-20 11:04:31 +0200
committerJérémy Dufour2012-09-12 16:20:39 +0200
commit13c988524051af80bccd0ca292466ab86a94a245 (patch)
treef802147ed20542ed873e9aac9bffaff4822b0c5f /cesar/ce/rx/bitloading
parentcb804b5abc4adcc58fa3217eb8062eb3a1e4fec3 (diff)
cesar/ce/rx/bl/doc: add BER margin update implementation doc, refs #2376
Diffstat (limited to 'cesar/ce/rx/bitloading')
-rw-r--r--cesar/ce/rx/bitloading/doc/bitloading.rst70
-rw-r--r--cesar/ce/rx/bitloading/doc/bitloading.sdl13
2 files changed, 79 insertions, 4 deletions
diff --git a/cesar/ce/rx/bitloading/doc/bitloading.rst b/cesar/ce/rx/bitloading/doc/bitloading.rst
index 5333945380..b10057f6c2 100644
--- a/cesar/ce/rx/bitloading/doc/bitloading.rst
+++ b/cesar/ce/rx/bitloading/doc/bitloading.rst
@@ -194,6 +194,15 @@ These polynomials are detailed in § 3.2 of the TNS specification.
To determine the BER target, the CE RX applies the adequate polynomial to an
average number of 10 bits per tone.
+After computing the BER target, we apply:
+
+- a static BER margin
+- a dynamic BER margin (generated by the BER margin update algorithm)
+
+Application of a BER margin is done by the following formula::
+
+ ber = ber - ber_margin
+
Quantification
^^^^^^^^^^^^^^
@@ -565,6 +574,11 @@ We can now write:
selected 6912 as good value (see `PBER evaluation for BMU algorithm
<http://stestephe/svn/spidcom_digital_svn/projects/DSP_GESSICA/DSP_chain/SW/Bit_Loading/Documentation/Study/PBER%20evaluation%20for%20BMU%20Algoriothm.pdf>`_).
+Initialization of the PBER sliding mean can be configured to be:
+
+- set to PBER of the first frame
+- set to a predefined value (for example 1%)
+
Statistics
^^^^^^^^^^
@@ -575,10 +589,11 @@ These statistics are detailed in the specification of the corresponding MMEs
Conditions required to restart the CE
-------------------------------------
-There are 2 conditions which lead to a CE restart:
+There are 3 conditions which leads to a CE restart:
- PBER too high
- BER too low
+- BER margin update (BMU)
PBER too high
^^^^^^^^^^^^^
@@ -661,6 +676,59 @@ BER sliding means are only evaluated when PBER is not considered as high::
&& (ber_sliding_mean_q53[fast] < lower_bound))
// Reset CE RX & CE TX.
+
+BER margin update
+^^^^^^^^^^^^^^^^^
+
+The BMU updates the BER target at the input of the BL algorithm depending on
+the PBER sliding mean value. There are two BER margins, one for each FEC rate.
+
+BER margin update computation
++++++++++++++++++++++++++++++
+
+Using current PBER sliding mean, a new BER margin can be computed: there are
+two differents polynomials, one if we need to increase the BER margin (plus)
+and one if we need to decrease it (minus).
+
+BER margin conditions of trigger
+++++++++++++++++++++++++++++++++
+
+The BMU is only used when the channel is stable: no BER too low or PBER too
+high has been triggered since 3 seconds and 150 frames.
+
+To prevent infinite loop, it is not trigered if BER margin is already at
+its limits::
+
+ // Configuration of BMU.
+ bmu_conf.fecrate_factors = { 3, 1 } // 1/2, 16/21
+ bmu_conf.frame_count_min = 150
+ bmu_conf.pber_limit = { 642, 3276 } // 1% - 5%
+ // If channel is stable.
+ if ((bmu.frame_count > bmu_conf.frame_count_min)
+ && (next_bmu_restart > current_time ()))
+
+ // We can now do a BMU because channel is stable, but is it really
+ // necessary?
+ poly = NONE
+ // Minus?
+ if (pber.mean < bmu_conf.pber_limit[0])
+ poly = MINUS
+ else if (pber.mean > bmu_conf.pber_limit[1])
+ poly = PLUS
+
+ // A polynomial has been choosen?
+ if (poly != NONE)
+ // Compute a new BER margin.
+ bmu_run (poly, fecrate, bmu)
+ // Reset CE TX & RX.
+
+
+BER margin update reset
++++++++++++++++++++++++
+
+The BER margins are reseted to 0 every time the CE restarts for a reason
+different of BMU.
+
Channel Estimation in TX
************************
diff --git a/cesar/ce/rx/bitloading/doc/bitloading.sdl b/cesar/ce/rx/bitloading/doc/bitloading.sdl
index 0b575f89a2..c41652b598 100644
--- a/cesar/ce/rx/bitloading/doc/bitloading.sdl
+++ b/cesar/ce/rx/bitloading/doc/bitloading.sdl
@@ -25,12 +25,19 @@
<PB error rate high?> -no-> |clear high PB error\nrate frame counter| -> <BER too low?>
<PB error rate high?> -yes-> <PBER:enough frame&time\nsince last restart>
-<PBER:enough frame&time\nsince last restart> -yes-> |reset CE TX & CE RX|
+<PBER:enough frame&time\nsince last restart> -yes-> |reset BER margins|
<PBER:enough frame&time\nsince last restart> -no-> (tracking)
<BER too low?> -yes-> <tone map not at max &\nenough time since last restart>
-<tone map not at max &\nenough time since last restart> -yes-> |reset CE TX & CE RX|
+<tone map not at max &\nenough time since last restart> -yes-> |reset BER margins|
<tone map not at max &\nenough time since last restart> -no-> (tracking)
-<BER too low?> -no-> (tracking)
+<BER too low?> -no-> <BER margin update\nenough frame & time?>
+
+|reset BER margins| -> |reset CE TX & CE RX|
+
+<BER margin update\nenough frame & time?> -yes-> <PBER sliding mean\noutside of tunnel?>
+<PBER sliding mean\noutside of tunnel?> -yes-> |run BMU| -> |reset CE TX & CE RX|
+<PBER sliding mean\noutside of tunnel?> -no-> (tracking)
+<BER margin update\nenough frame & time?> -no-> (tracking)
|reset CE TX & CE RX| -> (idle)