Add LteMiErrorModel and update LteSpectrumPhy for managing the error model

This commit is contained in:
Marco Miozzo
2011-12-20 16:15:40 +01:00
parent 8150da3fef
commit db169c76d9
20 changed files with 71141 additions and 50 deletions

View File

@@ -658,7 +658,7 @@ BuildingsPropagationLossModel::GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel>
{
// out of bound
loss = std::numeric_limits<double>::infinity ();
NS_LOG_INFO (this << " 0-0 (>2000): down rooftop -> ITUR1411 : " << loss);
NS_LOG_INFO (this << " 0-0 (>2000): down rooftop -> Infinity (out of bound) : " << loss);
}
}
else

View File

@@ -181,7 +181,8 @@ latex_documents = [
# ('lte-testing', 'lte-doc-testing.tex', u'LTE Simulator Testing Documentation', u'Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
# ('lte-design', 'lte-doc-design.tex', u'LTE Simulator Design Documentation', u'Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
# ('lte-user', 'lte-doc-user.tex', u'LTE Simulator User Documentation', u'Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
('lte', 'lte-sim-doc.tex', u'LTE Simulator Documentation', u'Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
('lte-phy-error-model-design', 'lte-phy-error-model-design.tex', u'LTE Simulator Phy Error Model Desing Documentation', u'Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
#('lte', 'lte-sim-doc.tex', u'LTE Simulator Documentation', u'Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,934 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: MATLAB, The Mathworks, Inc. Version 7.8.0.347 (R2009a). Operating System: Microsoft Windows XP.
%%Title: \\Hercules.cttc.es\mmiozzo\Ubiquisys\ErrorModel\27-MCS\MCS_27.eps
%%CreationDate: 12/19/2011 15:51:28
%%DocumentNeededFonts: Helvetica
%%DocumentProcessColors: Cyan Magenta Yellow Black
%%LanguageLevel: 2
%%Pages: 1
%%BoundingBox: 87 262 507 578
%%EndComments
%%BeginProlog
% MathWorks dictionary
/MathWorks 160 dict begin
% definition operators
/bdef {bind def} bind def
/ldef {load def} bind def
/xdef {exch def} bdef
/xstore {exch store} bdef
% operator abbreviations
/c /clip ldef
/cc /concat ldef
/cp /closepath ldef
/gr /grestore ldef
/gs /gsave ldef
/mt /moveto ldef
/np /newpath ldef
/cm /currentmatrix ldef
/sm /setmatrix ldef
/rm /rmoveto ldef
/rl /rlineto ldef
/s {show newpath} bdef
/sc {setcmykcolor} bdef
/sr /setrgbcolor ldef
/sg /setgray ldef
/w /setlinewidth ldef
/j /setlinejoin ldef
/cap /setlinecap ldef
/rc {rectclip} bdef
/rf {rectfill} bdef
% page state control
/pgsv () def
/bpage {/pgsv save def} bdef
/epage {pgsv restore} bdef
/bplot /gsave ldef
/eplot {stroke grestore} bdef
% orientation switch
/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
% coordinate system mappings
/dpi2point 0 def
% font control
/FontSize 0 def
/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
makefont setfont} bdef
/ISOLatin1Encoding where {pop /WindowsLatin1Encoding 256 array bdef
ISOLatin1Encoding WindowsLatin1Encoding copy pop
/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger
/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef
/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet
/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef
/Ydieresis WindowsLatin1Encoding 128 32 getinterval astore pop}
{/WindowsLatin1Encoding StandardEncoding bdef} ifelse
/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
exch dup 3 1 roll findfont dup length dict begin
{ 1 index /FID ne {def}{pop pop} ifelse } forall
/Encoding exch def currentdict end definefont pop} bdef
/isroman {findfont /CharStrings get /Agrave known} bdef
/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
exch FMS} bdef
/csm {1 dpi2point div -1 dpi2point div scale neg translate
dup landscapeMode eq {pop -90 rotate}
{rotateMode eq {90 rotate} if} ifelse} bdef
% line types: solid, dotted, dashed, dotdash
/SO { [] 0 setdash } bdef
/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
/DA { [6 dpi2point mul] 0 setdash } bdef
/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
dpi2point mul] 0 setdash } bdef
% macros for lines and objects
/L {lineto stroke} bdef
/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
/AP {{rlineto} repeat} bdef
/PDlw -1 def
/W {/PDlw currentlinewidth def setlinewidth} def
/PP {closepath eofill} bdef
/DP {closepath stroke} bdef
/MR {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto
neg 0 exch rlineto closepath} bdef
/FR {MR stroke} bdef
/PR {MR fill} bdef
/L1i {{currentfile picstr readhexstring pop} image} bdef
/tMatrix matrix def
/MakeOval {newpath tMatrix currentmatrix pop translate scale
0 0 1 0 360 arc tMatrix setmatrix} bdef
/FO {MakeOval stroke} bdef
/PO {MakeOval fill} bdef
/PD {currentlinewidth 2 div 0 360 arc fill
PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
/FA {newpath tMatrix currentmatrix pop translate scale
0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
/PA {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
/FAn {newpath tMatrix currentmatrix pop translate scale
0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
/vradius 0 def /hradius 0 def /lry 0 def
/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
/ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
vradius add translate hradius vradius scale 0 0 1 180 270 arc
tMatrix setmatrix lrx hradius sub uly vradius add translate
hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
lrx hradius sub lry vradius sub translate hradius vradius scale
0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
closepath} bdef
/FRR {MRR stroke } bdef
/PRR {MRR fill } bdef
/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
closepath} bdef
/FlrRR {MlrRR stroke } bdef
/PlrRR {MlrRR fill } bdef
/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
closepath} bdef
/FtbRR {MtbRR stroke } bdef
/PtbRR {MtbRR fill } bdef
/stri 6 array def /dtri 6 array def
/smat 6 array def /dmat 6 array def
/tmat1 6 array def /tmat2 6 array def /dif 3 array def
/asub {/ind2 exch def /ind1 exch def dup dup
ind1 get exch ind2 get sub exch } bdef
/tri_to_matrix {
2 0 asub 3 1 asub 4 0 asub 5 1 asub
dup 0 get exch 1 get 7 -1 roll astore } bdef
/compute_transform {
dmat dtri tri_to_matrix tmat1 invertmatrix
smat stri tri_to_matrix tmat2 concatmatrix } bdef
/ds {stri astore pop} bdef
/dt {dtri astore pop} bdef
/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
currentfile
3 index 0 eq {/ASCIIHexDecode filter}
{/ASCII85Decode filter 3 index 2 eq {/RunLengthDecode filter} if }
ifelse exch readstring pop
dup 0 3 index getinterval /rbmap xdef
dup 2 index dup getinterval /gbmap xdef
1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
/it {gs np dtri aload pop moveto lineto lineto cp c
cols rows 8 compute_transform
rbmap gbmap bbmap true 3 colorimage gr}bdef
/il {newpath moveto lineto stroke}bdef
currentdict end def
%%EndProlog
%%BeginSetup
MathWorks begin
0 cap
end
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
%%PageBoundingBox: 87 262 507 578
MathWorks begin
bpage
%%EndPageSetup
%%BeginObject: obj1
bplot
/dpi2point 12 def
portraitMode 1044 6936 csm
0 0 5045 3782 rc
85 dict begin %Colortable dictionary
/c0 { 0.000000 0.000000 0.000000 sr} bdef
/c1 { 1.000000 1.000000 1.000000 sr} bdef
/c2 { 0.900000 0.000000 0.000000 sr} bdef
/c3 { 0.000000 0.820000 0.000000 sr} bdef
/c4 { 0.000000 0.000000 0.800000 sr} bdef
/c5 { 0.910000 0.820000 0.320000 sr} bdef
/c6 { 1.000000 0.260000 0.820000 sr} bdef
/c7 { 0.000000 0.820000 0.820000 sr} bdef
c0
1 j
1 sg
0 0 5046 3783 rf
6 w
0 3082 3910 0 0 -3082 656 3366 4 MP
PP
-3910 0 0 3082 3910 0 0 -3082 656 3366 5 MP stroke
4 w
DO
0 sg
656 3366 mt 656 284 L
656 284 mt 656 284 L
1438 3366 mt 1438 284 L
1438 284 mt 1438 284 L
2220 3366 mt 2220 284 L
2220 284 mt 2220 284 L
3002 3366 mt 3002 284 L
3002 284 mt 3002 284 L
3784 3366 mt 3784 284 L
3784 284 mt 3784 284 L
4566 3366 mt 4566 284 L
4566 284 mt 4566 284 L
656 3366 mt 4566 3366 L
4566 3366 mt 4566 3366 L
656 2338 mt 4566 2338 L
4566 2338 mt 4566 2338 L
656 1311 mt 4566 1311 L
4566 1311 mt 4566 1311 L
656 284 mt 4566 284 L
4566 284 mt 4566 284 L
SO
6 w
656 284 mt 4566 284 L
656 3366 mt 4566 3366 L
4566 3366 mt 4566 284 L
656 3366 mt 656 284 L
656 3366 mt 4566 3366 L
656 3366 mt 656 284 L
656 3366 mt 656 3326 L
656 284 mt 656 323 L
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 120 FMSR
590 3511 mt
(16) s
1438 3366 mt 1438 3326 L
1438 284 mt 1438 323 L
1372 3511 mt
(17) s
2220 3366 mt 2220 3326 L
2220 284 mt 2220 323 L
2154 3511 mt
(18) s
3002 3366 mt 3002 3326 L
3002 284 mt 3002 323 L
2936 3511 mt
(19) s
3784 3366 mt 3784 3326 L
3784 284 mt 3784 323 L
3718 3511 mt
(20) s
4566 3366 mt 4566 3326 L
4566 284 mt 4566 323 L
4500 3511 mt
(21) s
656 3366 mt 675 3366 L
4566 3366 mt 4546 3366 L
DO
656 3366 mt 4566 3366 L
4566 3366 mt 4566 3366 L
SO
656 3366 mt 695 3366 L
4566 3366 mt 4526 3366 L
397 3410 mt
(10) s
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 80 FMSR
530 3336 mt
(-3) s
656 3056 mt 675 3056 L
4566 3056 mt 4546 3056 L
DO
656 3056 mt 4566 3056 L
4566 3056 mt 4566 3056 L
SO
656 2875 mt 675 2875 L
4566 2875 mt 4546 2875 L
DO
656 2875 mt 4566 2875 L
4566 2875 mt 4566 2875 L
SO
656 2747 mt 675 2747 L
4566 2747 mt 4546 2747 L
DO
656 2747 mt 4566 2747 L
4566 2747 mt 4566 2747 L
SO
656 2647 mt 675 2647 L
4566 2647 mt 4546 2647 L
DO
656 2647 mt 4566 2647 L
4566 2647 mt 4566 2647 L
SO
656 2566 mt 675 2566 L
4566 2566 mt 4546 2566 L
DO
656 2566 mt 4566 2566 L
4566 2566 mt 4566 2566 L
SO
656 2497 mt 675 2497 L
4566 2497 mt 4546 2497 L
DO
656 2497 mt 4566 2497 L
4566 2497 mt 4566 2497 L
SO
656 2438 mt 675 2438 L
4566 2438 mt 4546 2438 L
DO
656 2438 mt 4566 2438 L
4566 2438 mt 4566 2438 L
SO
656 2385 mt 675 2385 L
4566 2385 mt 4546 2385 L
DO
656 2385 mt 4566 2385 L
4566 2385 mt 4566 2385 L
SO
656 2338 mt 675 2338 L
4566 2338 mt 4546 2338 L
DO
656 2338 mt 4566 2338 L
4566 2338 mt 4566 2338 L
SO
656 2338 mt 695 2338 L
4566 2338 mt 4526 2338 L
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 120 FMSR
397 2382 mt
(10) s
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 80 FMSR
530 2308 mt
(-2) s
656 2029 mt 675 2029 L
4566 2029 mt 4546 2029 L
DO
656 2029 mt 4566 2029 L
4566 2029 mt 4566 2029 L
SO
656 1848 mt 675 1848 L
4566 1848 mt 4546 1848 L
DO
656 1848 mt 4566 1848 L
4566 1848 mt 4566 1848 L
SO
656 1720 mt 675 1720 L
4566 1720 mt 4546 1720 L
DO
656 1720 mt 4566 1720 L
4566 1720 mt 4566 1720 L
SO
656 1620 mt 675 1620 L
4566 1620 mt 4546 1620 L
DO
656 1620 mt 4566 1620 L
4566 1620 mt 4566 1620 L
SO
656 1539 mt 675 1539 L
4566 1539 mt 4546 1539 L
DO
656 1539 mt 4566 1539 L
4566 1539 mt 4566 1539 L
SO
656 1470 mt 675 1470 L
4566 1470 mt 4546 1470 L
DO
656 1470 mt 4566 1470 L
4566 1470 mt 4566 1470 L
SO
656 1410 mt 675 1410 L
4566 1410 mt 4546 1410 L
DO
656 1410 mt 4566 1410 L
4566 1410 mt 4566 1410 L
SO
656 1358 mt 675 1358 L
4566 1358 mt 4546 1358 L
DO
656 1358 mt 4566 1358 L
4566 1358 mt 4566 1358 L
SO
656 1311 mt 675 1311 L
4566 1311 mt 4546 1311 L
DO
656 1311 mt 4566 1311 L
4566 1311 mt 4566 1311 L
SO
656 1311 mt 695 1311 L
4566 1311 mt 4526 1311 L
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 120 FMSR
397 1355 mt
(10) s
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 80 FMSR
530 1281 mt
(-1) s
656 1002 mt 675 1002 L
4566 1002 mt 4546 1002 L
DO
656 1002 mt 4566 1002 L
4566 1002 mt 4566 1002 L
SO
656 821 mt 675 821 L
4566 821 mt 4546 821 L
DO
656 821 mt 4566 821 L
4566 821 mt 4566 821 L
SO
656 692 mt 675 692 L
4566 692 mt 4546 692 L
DO
656 692 mt 4566 692 L
4566 692 mt 4566 692 L
SO
656 593 mt 675 593 L
4566 593 mt 4546 593 L
DO
656 593 mt 4566 593 L
4566 593 mt 4566 593 L
SO
656 511 mt 675 511 L
4566 511 mt 4546 511 L
DO
656 511 mt 4566 511 L
4566 511 mt 4566 511 L
SO
656 443 mt 675 443 L
4566 443 mt 4546 443 L
DO
656 443 mt 4566 443 L
4566 443 mt 4566 443 L
SO
656 383 mt 675 383 L
4566 383 mt 4546 383 L
DO
656 383 mt 4566 383 L
4566 383 mt 4566 383 L
SO
656 331 mt 675 331 L
4566 331 mt 4546 331 L
DO
656 331 mt 4566 331 L
4566 331 mt 4566 331 L
SO
656 284 mt 675 284 L
4566 284 mt 4546 284 L
DO
656 284 mt 4566 284 L
4566 284 mt 4566 284 L
SO
656 284 mt 695 284 L
4566 284 mt 4526 284 L
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 120 FMSR
397 328 mt
(10) s
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 80 FMSR
530 254 mt
(0) s
656 284 mt 4566 284 L
656 3366 mt 4566 3366 L
4566 3366 mt 4566 284 L
656 3366 mt 656 284 L
gs 656 283 3911 3083 rc
DA
24 w
/c8 { 1.000000 0.000000 0.000000 sr} bdef
c8
78 354 78 494 78 413 78 355 79 264 78 211 78 148 78 108
78 68 79 40 78 19 78 8 78 4 78 0 79 0 78 0
78 0 78 0 78 0 79 0 78 0 78 0 78 0 78 0
79 0 78 0 78 0 78 0 78 0 79 0 78 0 78 0
78 0 78 0 656 284 35 MP stroke
SO
12 w
/c9 { 0.000000 0.000000 1.000000 sr} bdef
c9
78 448 78 404 78 356 78 307 79 257 78 204 78 156 78 109
78 70 79 40 78 19 78 7 78 3 78 0 79 0 78 0
78 0 78 0 78 0 79 0 78 0 78 0 78 0 78 0
79 0 78 0 78 0 78 0 78 0 79 0 78 0 78 0
78 0 78 0 656 284 35 MP stroke
gr
12 w
c9
gs 535 163 2901 2623 rc
0 j
-69 119 -69 -119 138 0 587 324 4 MP
DP
-69 119 -69 -119 138 0 665 324 4 MP
DP
-69 119 -69 -119 138 0 743 324 4 MP
DP
-69 119 -69 -119 138 0 821 324 4 MP
DP
-69 119 -69 -119 138 0 899 324 4 MP
DP
-69 119 -69 -119 138 0 978 324 4 MP
DP
-69 119 -69 -119 138 0 1056 324 4 MP
DP
-69 119 -69 -119 138 0 1134 324 4 MP
DP
-69 119 -69 -119 138 0 1212 324 4 MP
DP
-69 119 -69 -119 138 0 1290 324 4 MP
DP
-69 119 -69 -119 138 0 1369 324 4 MP
DP
-69 119 -69 -119 138 0 1447 324 4 MP
DP
-69 119 -69 -119 138 0 1525 324 4 MP
DP
-69 119 -69 -119 138 0 1603 324 4 MP
DP
-69 119 -69 -119 138 0 1681 324 4 MP
DP
-69 119 -69 -119 138 0 1760 324 4 MP
DP
-69 119 -69 -119 138 0 1838 324 4 MP
DP
-69 119 -69 -119 138 0 1916 324 4 MP
DP
-69 119 -69 -119 138 0 1994 324 4 MP
DP
-69 119 -69 -119 138 0 2072 324 4 MP
DP
-69 119 -69 -119 138 0 2151 324 4 MP
DP
-69 119 -69 -119 138 0 2229 324 4 MP
DP
-69 119 -69 -119 138 0 2307 327 4 MP
DP
-69 119 -69 -119 138 0 2385 334 4 MP
DP
-69 119 -69 -119 138 0 2463 353 4 MP
DP
-69 119 -69 -119 138 0 2542 393 4 MP
DP
-69 119 -69 -119 138 0 2620 463 4 MP
DP
-69 119 -69 -119 138 0 2698 572 4 MP
DP
-69 119 -69 -119 138 0 2776 728 4 MP
DP
-69 119 -69 -119 138 0 2854 932 4 MP
DP
-69 119 -69 -119 138 0 2933 1189 4 MP
DP
-69 119 -69 -119 138 0 3011 1496 4 MP
DP
-69 119 -69 -119 138 0 3089 1852 4 MP
DP
-69 119 -69 -119 138 0 3167 2256 4 MP
DP
-69 119 -69 -119 138 0 3245 2704 4 MP
DP
gr
gs 656 283 3911 3083 rc
DA
24 w
c8
78 384 79 337 78 287 78 267 78 224 78 182 79 159 78 126
78 96 78 70 78 49 79 30 78 15 78 8 78 4 78 2
79 0 78 0 78 0 78 0 78 0 79 0 78 0 78 0
78 0 78 0 79 0 78 0 78 0 78 0 78 0 79 0
78 0 78 0 78 0 78 0 656 284 37 MP stroke
SO
12 w
c9
78 322 79 299 78 274 78 246 78 217 78 187 79 157 78 127
78 97 78 71 78 48 79 30 78 16 78 8 78 4 78 1
79 0 78 0 78 0 78 0 78 0 79 0 78 0 78 0
78 0 78 0 79 0 78 0 78 0 78 0 78 0 79 0
78 0 78 0 78 0 78 0 656 284 37 MP stroke
gr
gs 535 163 3058 2347 rc
0 j
0 -94 -94 0 0 94 94 0 609 237 5 MP
DP
0 -94 -94 0 0 94 94 0 687 237 5 MP
DP
0 -94 -94 0 0 94 94 0 765 237 5 MP
DP
0 -94 -94 0 0 94 94 0 843 237 5 MP
DP
0 -94 -94 0 0 94 94 0 921 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1000 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1078 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1156 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1234 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1312 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1391 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1469 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1547 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1625 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1703 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1782 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1860 237 5 MP
DP
0 -94 -94 0 0 94 94 0 1938 237 5 MP
DP
0 -94 -94 0 0 94 94 0 2016 237 5 MP
DP
0 -94 -94 0 0 94 94 0 2094 237 5 MP
DP
0 -94 -94 0 0 94 94 0 2173 237 5 MP
DP
0 -94 -94 0 0 94 94 0 2251 238 5 MP
DP
0 -94 -94 0 0 94 94 0 2329 242 5 MP
DP
0 -94 -94 0 0 94 94 0 2407 250 5 MP
DP
0 -94 -94 0 0 94 94 0 2485 266 5 MP
DP
0 -94 -94 0 0 94 94 0 2564 296 5 MP
DP
0 -94 -94 0 0 94 94 0 2642 344 5 MP
DP
0 -94 -94 0 0 94 94 0 2720 415 5 MP
DP
0 -94 -94 0 0 94 94 0 2798 512 5 MP
DP
0 -94 -94 0 0 94 94 0 2876 639 5 MP
DP
0 -94 -94 0 0 94 94 0 2955 796 5 MP
DP
0 -94 -94 0 0 94 94 0 3033 983 5 MP
DP
0 -94 -94 0 0 94 94 0 3111 1200 5 MP
DP
0 -94 -94 0 0 94 94 0 3189 1446 5 MP
DP
0 -94 -94 0 0 94 94 0 3267 1720 5 MP
DP
0 -94 -94 0 0 94 94 0 3346 2019 5 MP
DP
0 -94 -94 0 0 94 94 0 3424 2341 5 MP
DP
gr
gs 656 283 3911 3083 rc
DA
24 w
c8
78 164 79 181 78 145 78 167 78 155 78 178 79 120 78 173
78 138 78 122 78 94 79 119 78 86 78 78 78 69 78 52
79 38 78 39 78 27 78 17 78 11 79 12 78 7 78 4
78 2 78 1 79 1 78 1 78 0 78 0 78 0 79 0
78 0 78 0 78 0 78 0 79 0 78 0 78 0 78 0
78 0 79 0 78 0 78 0 78 0 78 0 656 284 47 MP stroke
SO
12 w
c9
78 166 79 164 78 161 78 158 78 153 78 147 79 142 78 134
78 126 78 118 78 108 79 99 78 88 78 78 78 67 78 56
79 46 78 36 78 28 78 20 78 14 79 9 78 5 78 3
78 2 78 1 79 0 78 0 78 0 78 0 78 0 79 0
78 0 78 0 78 0 78 0 79 0 78 0 78 0 78 0
78 0 79 0 78 0 78 0 78 0 78 0 656 284 47 MP stroke
gr
gs 535 163 3840 2372 rc
596 284 mt 716 284 L
656 224 mt 656 344 L
674 284 mt 794 284 L
734 224 mt 734 344 L
752 284 mt 872 284 L
812 224 mt 812 344 L
830 284 mt 950 284 L
890 224 mt 890 344 L
908 284 mt 1028 284 L
968 224 mt 968 344 L
987 284 mt 1107 284 L
1047 224 mt 1047 344 L
1065 284 mt 1185 284 L
1125 224 mt 1125 344 L
1143 284 mt 1263 284 L
1203 224 mt 1203 344 L
1221 284 mt 1341 284 L
1281 224 mt 1281 344 L
1299 284 mt 1419 284 L
1359 224 mt 1359 344 L
1378 284 mt 1498 284 L
1438 224 mt 1438 344 L
1456 284 mt 1576 284 L
1516 224 mt 1516 344 L
1534 284 mt 1654 284 L
1594 224 mt 1594 344 L
1612 284 mt 1732 284 L
1672 224 mt 1672 344 L
1690 284 mt 1810 284 L
1750 224 mt 1750 344 L
1769 284 mt 1889 284 L
1829 224 mt 1829 344 L
1847 284 mt 1967 284 L
1907 224 mt 1907 344 L
1925 284 mt 2045 284 L
1985 224 mt 1985 344 L
2003 284 mt 2123 284 L
2063 224 mt 2063 344 L
2081 284 mt 2201 284 L
2141 224 mt 2141 344 L
2160 284 mt 2280 284 L
2220 224 mt 2220 344 L
2238 285 mt 2358 285 L
2298 225 mt 2298 345 L
2316 287 mt 2436 287 L
2376 227 mt 2376 347 L
2394 290 mt 2514 290 L
2454 230 mt 2454 350 L
2472 295 mt 2592 295 L
2532 235 mt 2532 355 L
2551 304 mt 2671 304 L
2611 244 mt 2611 364 L
2629 318 mt 2749 318 L
2689 258 mt 2689 378 L
2707 338 mt 2827 338 L
2767 278 mt 2767 398 L
2785 366 mt 2905 366 L
2845 306 mt 2845 426 L
2863 402 mt 2983 402 L
2923 342 mt 2923 462 L
2942 448 mt 3062 448 L
3002 388 mt 3002 508 L
3020 504 mt 3140 504 L
3080 444 mt 3080 564 L
3098 571 mt 3218 571 L
3158 511 mt 3158 631 L
3176 649 mt 3296 649 L
3236 589 mt 3236 709 L
3254 737 mt 3374 737 L
3314 677 mt 3314 797 L
3333 836 mt 3453 836 L
3393 776 mt 3393 896 L
3411 944 mt 3531 944 L
3471 884 mt 3471 1004 L
3489 1062 mt 3609 1062 L
3549 1002 mt 3549 1122 L
3567 1188 mt 3687 1188 L
3627 1128 mt 3627 1248 L
3645 1322 mt 3765 1322 L
3705 1262 mt 3705 1382 L
3724 1464 mt 3844 1464 L
3784 1404 mt 3784 1524 L
3802 1611 mt 3922 1611 L
3862 1551 mt 3862 1671 L
3880 1764 mt 4000 1764 L
3940 1704 mt 3940 1824 L
3958 1922 mt 4078 1922 L
4018 1862 mt 4018 1982 L
4036 2083 mt 4156 2083 L
4096 2023 mt 4096 2143 L
4115 2247 mt 4235 2247 L
4175 2187 mt 4175 2307 L
4193 2413 mt 4313 2413 L
4253 2353 mt 4253 2473 L
gr
gs 656 283 3911 3083 rc
gr
0 sg
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 120 FMSR
2397 3654 mt
(SNR) s
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 96 FMSR
315 1983 mt -90 rotate
(BLER) s
90 rotate
639 3408 mt
( ) s
4550 325 mt
( ) s
6 w
1 sg
0 1050 1696 0 0 -1050 678 3330 4 MP
PP
-1696 0 0 1050 1696 0 0 -1050 678 3330 5 MP stroke
4 w
DO
SO
6 w
0 sg
678 2280 mt 2374 2280 L
678 3330 mt 2374 3330 L
2374 3330 mt 2374 2280 L
678 3330 mt 678 2280 L
678 3330 mt 2374 3330 L
678 3330 mt 678 2280 L
678 2280 mt 2374 2280 L
678 3330 mt 2374 3330 L
2374 3330 mt 2374 2280 L
678 3330 mt 678 2280 L
1150 2427 mt
(TB = 6000 \(AWGN\)) s
gs 678 2280 1697 1051 rc
DA
24 w
c8
363 0 750 2385 2 MP stroke
SO
gr
24 w
c8
0 sg
1150 2595 mt
(TB = 6000 \(estimated\)) s
gs 678 2280 1697 1051 rc
12 w
c9
363 0 750 2553 2 MP stroke
gs 810 2432 243 243 rc
0 j
-69 119 -69 -119 138 0 862 2593 4 MP
DP
gr
gr
12 w
c9
0 sg
1150 2763 mt
(TB = 4000 \(AWGN\)) s
gs 678 2280 1697 1051 rc
DA
24 w
c8
363 0 750 2721 2 MP stroke
SO
gr
24 w
c8
0 sg
1150 2932 mt
(TB = 4000 \(estimated\)) s
gs 678 2280 1697 1051 rc
12 w
c9
363 0 750 2889 2 MP stroke
gs 810 2768 243 243 rc
0 j
0 -94 -94 0 0 94 94 0 884 2842 5 MP
DP
gr
gr
12 w
c9
0 sg
1150 3100 mt
(TB = 2560 \(AWGN\)) s
gs 678 2280 1697 1051 rc
DA
24 w
c8
363 0 750 3057 2 MP stroke
SO
gr
24 w
c8
0 sg
1150 3268 mt
(TB = 2560 \(estimated\)) s
gs 678 2280 1697 1051 rc
12 w
c9
363 0 750 3225 2 MP stroke
gr
12 w
c9
gs 810 3104 243 243 rc
871 3225 mt 991 3225 L
931 3165 mt 931 3285 L
gr
gs 678 2280 1697 1051 rc
6 w
gr
6 w
end %%Color Dict
eplot
%%EndObject
epage
end
showpage
%%Trailer
%%EOF

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,98 @@
#FIG 3.2 Produced by xfig version 3.2.5b
Landscape
Center
Inches
Letter
100.00
Single
-2
1200 2
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
675 2475 1125 2475
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
675 2775 1125 2775
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
675 3075 1125 3075
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
675 5475 1125 5475
2 1 2 1 0 7 50 -1 -1 10.000 0 0 -1 0 0 2
300 3300 300 5250
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
5325 2475 6000 2475
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
5325 2775 6000 2775
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
5325 3075 6000 3075
2 1 2 1 0 7 50 -1 -1 10.000 0 0 -1 0 0 2
5625 3225 5625 5325
2 2 0 1 7 7 49 -1 20 0.000 0 0 -1 0 0 5
2700 5100 4125 5100 4125 5400 2700 5400 2700 5100
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
6000 2100 8400 2100 8400 5775 6000 5775 6000 2100
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
8400 3900 9000 3900
2 1 1 1 0 7 44 -1 -1 4.000 0 0 -1 0 1 3
2 1 1.00 60.00 120.00
9975 5550 9975 6225 9975 6150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
5325 5475 6000 5475
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
1275 2025 5325 2025 5325 5700 1275 5700 1275 2025
2 2 0 1 0 7 47 -1 -1 0.000 0 0 -1 0 0 5
9000 2100 12675 2100 12675 5775 9000 5775 9000 2100
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
5775 1725 12900 1725 12900 6000 5775 6000 5775 1725
2 1 1 1 0 7 44 -1 -1 4.000 0 0 -1 0 1 3
2 1 1.00 60.00 120.00
10950 5550 10950 6225 10950 6150
2 1 1 1 0 7 44 -1 -1 4.000 0 0 -1 0 1 3
2 1 1.00 60.00 120.00
12000 5550 12000 6225 12000 6150
2 5 0 1 0 -1 50 -1 -1 0.000 0 0 -1 0 0 5
0 /home/mmiozzo/papers/nstools09Democles/figures/rbir.eps
1652 2775 4427 2775 4427 4875 1652 4875 1652 2775
2 2 0 1 7 7 49 -1 20 0.000 0 0 -1 0 0 5
1550 3488 1775 3488 1775 4163 1550 4163 1550 3488
2 5 0 1 0 -1 50 -1 -1 0.000 0 0 -1 0 0 5
0 MCS_1.eps
9225 2775 12075 2775 12075 4875 9225 4875 9225 2775
2 5 0 1 0 -1 50 -1 -1 0.000 0 0 -1 0 0 5
0 MCS_1.eps
9375 3075 12225 3075 12225 5175 9375 5175 9375 3075
2 5 0 1 0 -1 50 -1 -1 0.000 0 0 -1 0 0 5
0 MCS_1.eps
9750 3450 12600 3450 12600 5550 9750 5550 9750 3450
4 0 0 50 -1 0 10 0.0000 4 105 510 75 2550 SINR#1\001
4 0 0 50 -1 0 10 0.0000 4 105 510 75 2850 SINR#2\001
4 0 0 50 -1 0 10 0.0000 4 105 510 75 3150 SINR#3\001
4 0 0 50 -1 0 10 0.0000 4 105 555 75 5550 SINR#N\001
4 0 0 48 -1 0 10 0.0000 4 105 360 3075 5250 SINR\001
4 0 0 48 -1 0 10 1.5708 4 105 360 1650 4050 RBIR\001
4 0 0 50 -1 0 8 0.0000 4 90 195 5550 2325 I#1\001
4 0 0 50 -1 0 8 0.0000 4 90 195 5550 2700 I#2\001
4 0 0 50 -1 0 8 0.0000 4 90 195 5550 3000 I#3\001
4 0 0 50 -1 0 12 0.0000 4 135 1560 2550 2400 Modulation Model\001
4 0 0 50 -1 0 12 0.0000 4 135 960 6675 3375 Information\001
4 0 0 50 -1 0 12 0.0000 4 135 1890 6225 3600 collection & correction\001
4 0 0 50 -1 0 12 0.0000 4 135 810 6750 4350 MI-metric\001
4 0 0 50 -1 0 10 0.0000 4 105 210 8550 3750 MI\001
4 0 0 50 -1 0 10 0.0000 4 135 615 9600 6450 TB length\001
4 0 0 50 -1 0 10 0.0000 4 105 330 10725 6450 MCS\001
4 0 0 50 -1 0 10 0.0000 4 105 300 11775 6450 ECR\001
4 0 0 50 -1 0 10 0.0000 4 105 780 11550 6600 Performance\001
4 0 0 50 -1 0 10 0.0000 4 135 495 11700 6750 (tables)\001
4 0 0 50 -1 0 12 0.0000 4 180 1200 8850 1950 Coding Model\001
4 0 0 50 -1 0 8 0.0000 4 90 225 5550 5400 I#N\001
4 0 0 50 -1 0 8 0.0000 4 135 480 4425 2925 64QAM\001
4 0 0 50 -1 0 12 0.0000 4 180 2625 9300 2475 Vienna LTE Simulator Mapping\001
4 0 0 50 -1 0 8 0.0000 4 135 480 4365 3522 16QAM\001
4 0 0 50 -1 0 8 0.0000 4 120 360 4394 4103 QPSK\001

View File

@@ -0,0 +1,98 @@
#FIG 3.2 Produced by xfig version 3.2.5b
Landscape
Center
Inches
Letter
100.00
Single
-2
1200 2
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
675 2475 1125 2475
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
675 2775 1125 2775
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
675 3075 1125 3075
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
675 5475 1125 5475
2 1 2 1 0 7 50 -1 -1 10.000 0 0 -1 0 0 2
300 3300 300 5250
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
5325 2475 6000 2475
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
5325 2775 6000 2775
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
5325 3075 6000 3075
2 1 2 1 0 7 50 -1 -1 10.000 0 0 -1 0 0 2
5625 3225 5625 5325
2 2 0 1 7 7 49 -1 20 0.000 0 0 -1 0 0 5
2700 5100 4125 5100 4125 5400 2700 5400 2700 5100
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
6000 2100 8400 2100 8400 5775 6000 5775 6000 2100
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
8400 3900 9000 3900
2 5 0 1 0 -1 50 -1 -1 0.000 0 0 -1 0 0 5
0 /home/mmiozzo/papers/nstools09Democles/figures/wer.png
9000 2625 11775 2625 11775 4800 9000 4800 9000 2625
2 5 0 1 0 -1 49 -1 -1 0.000 0 0 -1 0 0 5
0 /home/mmiozzo/papers/nstools09Democles/figures/wer.png
9225 2925 12000 2925 12000 5100 9225 5100 9225 2925
2 5 0 1 0 -1 48 -1 -1 0.000 0 0 -1 0 0 5
0 /home/mmiozzo/papers/nstools09Democles/figures/wer.png
9450 3150 12225 3150 12225 5325 9450 5325 9450 3150
2 1 1 1 0 7 44 -1 -1 4.000 0 0 -1 0 1 3
2 1 1.00 60.00 120.00
9975 5550 9975 6225 9975 6150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
2 1 1.00 60.00 120.00
5325 5475 6000 5475
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
1275 2025 5325 2025 5325 5700 1275 5700 1275 2025
2 2 0 1 0 7 47 -1 -1 0.000 0 0 -1 0 0 5
9000 2100 12675 2100 12675 5775 9000 5775 9000 2100
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
5775 1725 12900 1725 12900 6000 5775 6000 5775 1725
2 1 1 1 0 7 44 -1 -1 4.000 0 0 -1 0 1 3
2 1 1.00 60.00 120.00
10950 5550 10950 6225 10950 6150
2 1 1 1 0 7 44 -1 -1 4.000 0 0 -1 0 1 3
2 1 1.00 60.00 120.00
12000 5550 12000 6225 12000 6150
2 5 0 1 0 -1 50 -1 -1 0.000 0 0 -1 0 0 5
0 /home/mmiozzo/papers/nstools09Democles/figures/rbir.eps
1652 2775 4427 2775 4427 4875 1652 4875 1652 2775
2 2 0 1 7 7 49 -1 20 0.000 0 0 -1 0 0 5
1550 3488 1775 3488 1775 4163 1550 4163 1550 3488
4 0 0 50 -1 0 10 0.0000 4 105 510 75 2550 SINR#1\001
4 0 0 50 -1 0 10 0.0000 4 105 510 75 2850 SINR#2\001
4 0 0 50 -1 0 10 0.0000 4 105 510 75 3150 SINR#3\001
4 0 0 50 -1 0 10 0.0000 4 105 555 75 5550 SINR#N\001
4 0 0 48 -1 0 10 0.0000 4 105 360 3075 5250 SINR\001
4 0 0 48 -1 0 10 1.5708 4 105 360 1650 4050 RBIR\001
4 0 0 50 -1 0 8 0.0000 4 90 195 5550 2325 I#1\001
4 0 0 50 -1 0 8 0.0000 4 90 195 5550 2700 I#2\001
4 0 0 50 -1 0 8 0.0000 4 90 195 5550 3000 I#3\001
4 0 0 50 -1 0 12 0.0000 4 135 1560 2550 2400 Modulation Model\001
4 0 0 50 -1 0 12 0.0000 4 135 960 6675 3375 Information\001
4 0 0 50 -1 0 12 0.0000 4 135 1890 6225 3600 collection & correction\001
4 0 0 50 -1 0 12 0.0000 4 135 810 6750 4350 MI-metric\001
4 0 0 50 -1 0 10 0.0000 4 105 210 8550 3750 MI\001
4 0 0 50 -1 0 10 0.0000 4 135 615 9600 6450 TB length\001
4 0 0 50 -1 0 10 0.0000 4 105 330 10725 6450 MCS\001
4 0 0 50 -1 0 10 0.0000 4 105 300 11775 6450 ECR\001
4 0 0 50 -1 0 10 0.0000 4 105 780 11550 6600 Performance\001
4 0 0 50 -1 0 10 0.0000 4 135 495 11700 6750 (tables)\001
4 0 0 50 -1 0 12 0.0000 4 180 1200 8850 1950 Coding Model\001
4 0 0 50 -1 0 8 0.0000 4 90 225 5550 5400 I#N\001
4 0 0 50 -1 0 8 0.0000 4 135 480 4425 2925 64QAM\001
4 0 0 50 -1 0 12 0.0000 4 180 2625 9300 2475 Vienna LTE Simulator Mapping\001
4 0 0 50 -1 0 8 0.0000 4 135 480 4365 3522 16QAM\001
4 0 0 50 -1 0 8 0.0000 4 120 360 4394 4103 QPSK\001

Binary file not shown.

View File

@@ -0,0 +1,94 @@
++++++++++++++++++++++++++
Design Documentation
++++++++++++++++++++++++++
PHY Error Model
+++++++++++++++
The simulator includes an error model of the data plane (i.e., PDSCH) according to the standard link-to-system mapping (LSM) techniques. The choice is aligned with the standard system simulation methodology of OFDMA radio transmission technology. Thanks to LSM we are able to maintain a good level of accuracy and at the same time limiting the computational complexity increase. It is based on the mapping of single link layer performance obtained by means of link level simulators to system (in our case network) simulators. In particular link the layer simulator is used for generating the performance of a single link from a PHY layer perspective, usually in terms of code block error rate (BLER), under specific static conditions. LSM allows the usage of these parameters in more complex scenarios, typical of system/network simulators, where we have more links, interference and "colored" channel propagation phenomena (e.g., frequency selective fading).
To do this the Vienna LTE Simulator [Vienna]_ has been used for what concerns the extraction of link layer performance and the Mutual Information Based Effective SINR (MIESM) as LSM mapping function using part of the work recently published by the Signet Group of University of Padua [PaduaPEM]_.
MIESM
-----
The specific LSM method adopted is the one based on the usage of a mutual information metric, commonly referred to as the mutual information per per coded bit (MIB or MMIB when a mean of multiples MIBs is involved). Another option would be represented by the Exponential ESM (EESM); however, recent studies demonstrate that MIESM outperforms EESM in terms of accuracy [LozanoCost]_.
Moreover, from an HARQ perspective, the MIESM has more flexibility in managing the combinations of the HARQ blocks. In fact, by working in the MI field, the formulas for evaluating both the chase combining (CC) and the incremental redundancy (IR) schemes work in the MI field as well, where there is no dependency respect to the MCS. On the contrary, the HARQ model of EESM works in the effective SINR field, which is MCS dependent, and does not allow the combination of HARQ blocks using different MCSs [wimaxEmd]_.
.. _fig-miesm-architecture:
.. figure:: figures/miesm_scheme.*
:align: center
MIESM computational procedure diagram
The mutual information (MI) is dependent on the constellation mapping and can be calculated per transport block (TB) basis, by evaluating the MI over the symbols and the subcarrier. However, this would be too complex for a network simulator. Hence, in our implementation a flat channel response within the RB has been considered; therefore the overall MI of a TB is calculated averaging the MI evaluated per each RB used in the TB. In detail, the implemented scheme is depicted in Figure :ref:`fig-miesm-architecture`, where we see that the model starts by evaluating the MI value for each RB, represented in the figure by the SINR samples. Then the equivalent MI is evaluated per TB basis by averaging the MI values. Finally, a further step has to be done since the link level simulator returns the performance of the link in terms of block error rate (BLER) in a addive white guassian noise (AWGN) channel, where the blocks are the code blocks (CBs) independently encoded/decoded by the turbo encoder. On this matter the standard 3GPP segmentation scheme has been used for estimating the actual CB size (described in section 5.1.2 of [TS36.212]_). This scheme divides the the TB in :math:`N_{K_-}` blocks of size :math:`K_-` and :math:`N_{K+}` blocks of size :math:`K_+`. Therefore the overall TB BLER (TBLER) can be expressed as
.. math::
TBLER = 1- \prod\limits_{i=1}^{C}(1-CBLER_i)
where the :math:`CBLER_i` is the BLER of the CB :math:`i` obtained according to the link level simulator CB BLER curves.
For estimating the :math:`CBLER_i`, the MI evaluation has been implemented according to its numerical approximation defined in [wimaxEmd]_. Moreover, for reducing the complexity of the computation, the approximation has been converted into lookup tables. In detail, Gaussian cumulative model has been used for approximating the AWGN BLER curves with three parameters which provides a close fit to the standard AWGN performances, in formula:
.. math::
CBLER_i = \frac{1}{2}\left[1-erf\left(\frac{x-b_{ECR}}{\sqrt{2}c_{ECR}} \right) \right]
where :math:`x` is the MI of the TB, :math:`b_{ECR}` represents the "transition center" and :math:`c_{ECR}` is related to the "transition width" of the Gaussian cumulative distribution for each Effective Code Rate (ECR) which is the actual transmission rate according to the channel coding and MCS. For limiting the computational complexity of the model we considered only a subset of the possible ECRs in fact we would have potentially 5076 possible ECRs (i.e., 27 MCSs and 188 CB sizes). On this respect, we will limit the CB sizes to some representative values (i.e., 40, 140, 256, 512, 1024, 2048, 4032, 6144), while for the others the worst one approximating the real one will be used (i.e., the smaller CB size value available respect to the real one). This choice is aligned to the typical performance of turbo codes, where the CB size is not strongly impacting on the BLER. However, it is to be notes that for CB sizes lower than 1000 bits the effect might be relevant (i.e., till 2 dB); therefore, we adopt this unbalanced sampling interval for having more precision where it is necessary. This behaviour is confirmed by the following figures, where the BLER is plotted as function of the SINR and the CB sizes (plotted with blue lines). We note that, the results depicted in these figures are a subset of the ones parametrized to the Gaussian cumulative function (plotted with dashed red lines).
.. _fig-mcs-0:
.. figure:: figures/MCS_1.*
:align: center
BLER and correspondent Gaussian cumulative function for MCS = 0.
.. _fig-mcs-15:
.. figure:: figures/MCS_15.*
:align: center
BLER and correspondent Gaussian cumulative function for MCS = 15.
.. _fig-mcs-27:
.. figure:: figures/MCS_27.*
:align: center
BLER and correspondent Gaussian cumulative function for MCS = 27.
Link Layer Performance
---------------------
On this respect, we reused part of the curves obtained within [PaduaPEM]_. In detail, we introduced the CB size dependency to the CB BLER curves with the support of the developers of [PaduaPEM]_ and of the LTE Vienna Simulator. In fact, the module released provides the link layer performance only for what concerns the MCSs (i.e, with a given fixed ECR). In detail the new error rate curves for each has been evaluated with a simulation campaign with the link layer simulator for a single link with AWGN noise and for CB size of 104, 140, 256, 512, 1024, 2048, 4032 and 6144. These curves has been mapped with the Gaussian cumulative model formula presented above for obtaining the correspondents :math:`b_{ECR}` and :math:`c_{ECR}` parameters.
Simulator Design
----------------
The model implemented uses the curves for the LSM of the recently LTE PHY Error Model released in the ns3 community by the Signet Group [PaduaPEM]_ and the new ones generated for different CB sizes. The ``LteSpectrumPhy`` class is in charge of evaluating the TB BLER thanks to the methods provided by the ``LteMiErrorModel`` class, which is in charge of evaluating the TB BLER according to the vector of the perceived SINR per RB, the MCS and the size in order to proper model the segmentation of the TB in CBs. In order to obtain the vector of the perceived SINR two instances of ``LtePemSinrChunkProcessor`` (child of ``LteSinrChunkProcessor`` dedicated to evaluate the SINR for obtaining physical error performance) have been attached to UE downlink and eNB uplink ``LteSpectrumPhy`` modules for evaluating the error model distribution respectively of PDSCH (UE side) and ULSCH (eNB side).
Test Environment
----------------
The test suite ``lte-phy-error-model`` generates different test cases with single eNB and a various number of UEs, all having the same Radio Bearer specification. Each test is designed for evaluating the error rate perceived by a specific TB size in order to verify that it corresponds to the expected values according to the BLER generated for CB size analog to the TB size. This means that, for instance, the test will check that the performance of a TB of :math:`N` bits is analogous to the one of a a CB size of :math:`N` bits by collecting the performance of a user which has been forced the generation of a such TB size according to the distance to eNB. In order to significantly test the BER at MAC level, we modified the Adaptive Modulation and Coding (AMC) module, the ``LteAmc`` class, for making it less robust to channel conditions by adding a configurable BER parameter (called ``Ber`` in the ns3 attribute system) which enable the selection of the desired BER at MAC level when choosing the MCS to be used (before was fixed to 0.00005).
.. [PaduaPEM] http://mailman.isi.edu/pipermail/ns-developers/2011-November/009559.html
.. [Vienna] The Vienna LTE Simulators http://www.nt.tuwien.ac.at/about-us/staff/josep-colom-ikuno/lte-simulators/
.. [LozanoCost] Joan Olmos, Silvia Ruiz, Mario García-Lozano and David Martín-Sacristán, "Link Abstraction Models Based on Mutual Information for LTE Downlink", COST 2100 TD(10)11052 Report
.. [wimaxEmd] WiMAX Forum White Paper, WiMAX System Evaluation Methodology, July 2008.
.. [TS36.212] 3GPP TS 36.212 "E-UTRA Multiplexing and channel coding"

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,91 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2011 SIGNET LAB. Department of Information Engineering (DEI), University of Padua
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Original Authors: Marco Mezzavilla <mezzavil@dei.unipd.it>
* Giovanni Tomasi <tomasigv@gmail.com>
* Integration in LENA and extension done by:
* Marco Miozzo <marco.miozzo@cttc.es>
*/
#ifndef LTE_MI_ERROR_MODEL_H
#define LTE_MI_ERROR_MODEL_H
#include <list>
#include <vector>
#include <ns3/ptr.h>
#include <stdint.h>
#include <ns3/spectrum-value.h>
namespace ns3 {
const uint16_t MI_MAP_QPSK_SIZE = 411;
const uint16_t MI_MAP_16QAM_SIZE = 601;
const uint16_t MI_MAP_64QAM_SIZE = 676;
/**
* This class provides the BLER estimation based on mutual information metrics
*/
class LteMiErrorModel
{
public:
LteMiErrorModel (void);
~LteMiErrorModel (void);
/**
* \brief find the mmib (mean mutual information per bit) for different modulations of the specified TB
* \param sinr the perceived sinrs in the whole bandwidth
* \param map the actives RBs for the TB
* \param cms the MCS of the TB
* \return the mmib
*/
static double Mib (SpectrumValue& sinr, std::vector<int> map, uint8_t mcs);
/**
* \brief map the mmib (mean mutual information per bit) for different MCS
* \param mmib mean mutual information per bit of a code-block
* \param mcs the MCS
* \param cbSize the size of the CB
* \return the bler
*/
static double MappingMiBler (double mib, uint8_t mcs, uint16_t cbSize);
/**
* \brief run the error-model algorithm for the specified TB
* \param modulation the modulations (qpsk, 16-qam, 64-qam)
* \param code block-size and code-rate
*/
static double GetTbError (SpectrumValue& sinr, std::vector<int> map, uint16_t size, uint8_t mcs);
//private:
};
} // namespace ns3
#endif /* LTE_MI_ERROR_MODEL_H */

View File

@@ -17,6 +17,7 @@
*
* Author: Nicola Baldo <nbaldo@cttc.es>
* Giuseppe Piro <g.piro@poliba.it>
* Marco Miozzo <marco.miozzo@cttc.es> (add physical error model)
*/
@@ -31,6 +32,8 @@
#include "lte-mac-tag.h"
#include "lte-sinr-chunk-processor.h"
#include "lte-phy-tag.h"
#include <ns3/lte-mi-error-model.h>
#include <ns3/lte-mac-tag.h>
NS_LOG_COMPONENT_DEFINE ("LteSpectrumPhy");
@@ -40,7 +43,8 @@ namespace ns3 {
NS_OBJECT_ENSURE_REGISTERED (LteSpectrumPhy);
LteSpectrumPhy::LteSpectrumPhy ()
: m_state (IDLE)
: m_state (IDLE),
m_random (0.0, 1.0)
{
NS_LOG_FUNCTION (this);
m_interference = CreateObject<LteInterference> ();
@@ -405,19 +409,17 @@ LteSpectrumPhy::UpdateSinrPerceived (const SpectrumValue& sinr)
void
LteSpectrumPhy::AddExpectedTb (uint16_t rnti, uint16_t size, uint8_t mcs, std::vector<int> map)
{
NS_LOG_LOGIC (this << " rnti: " << rnti << " size " << size << " mcs " << mcs);
NS_LOG_LOGIC (this << " rnti: " << rnti << " size " << size << " mcs " << (uint16_t)mcs);
expectedTbs_t::iterator it;
it = m_expectedTbs.find (rnti);
if (it == m_expectedTbs.end ())
if (it != m_expectedTbs.end ())
{
// insert new entry
tbInfo_t tbInfo = {size, mcs, map, false};
m_expectedTbs.insert (std::pair<uint16_t, tbInfo_t> (rnti,tbInfo ));
}
else
{
NS_FATAL_ERROR ("Expectd two TBs from the same UE");
// migth be a TB of an unreceived packet (due to high progpalosses)
m_expectedTbs.erase (it);
}
// insert new entry
tbInfo_t tbInfo = {size, mcs, map, false};
m_expectedTbs.insert (std::pair<uint16_t, tbInfo_t> (rnti,tbInfo ));
}
@@ -437,46 +439,50 @@ LteSpectrumPhy::EndRx ()
expectedTbs_t::iterator itTb = m_expectedTbs.begin ();
while (itTb!=m_expectedTbs.end ())
{
NS_LOG_DEBUG (this << "RNTI " << (*itTb).first << " size " << (*itTb).second.size << " mcs " << (uint32_t)(*itTb).second.mcs << " bitmap " << (*itTb).second.rbBitmap.size ());
double errorRate = LteMiErrorModel::GetTbError (m_sinrPerceived, (*itTb).second.rbBitmap, (*itTb).second.size, (*itTb).second.mcs);
(*itTb).second.corrupt = m_random.GetValue () > errorRate ? false : true;
NS_LOG_DEBUG (this << "RNTI " << (*itTb).first << " size " << (*itTb).second.size << " mcs " << (uint32_t)(*itTb).second.mcs << " bitmap " << (*itTb).second.rbBitmap.size () << " ErrorRate " << errorRate << " corrupted " << (*itTb).second.corrupt);
for (uint16_t i = 0; i < (*itTb).second.rbBitmap.size (); i++)
{
NS_LOG_DEBUG (this << " RB " << (*itTb).second.rbBitmap.at (i) << " SINR " << m_sinrPerceived[(*itTb).second.rbBitmap.at (i)]);
}
itTb++;
}
m_expectedTbs.clear (); // DEBUG
for (std::list<Ptr<PacketBurst> >::const_iterator i = m_rxPacketBurstList.begin ();
i != m_rxPacketBurstList.end (); ++i)
{
// here we should determine whether this TB has been received
// correctly or not
bool tbRxOk = true;
NS_LOG_INFO (this << " Burst of " << (*i)->GetNPackets ());
if (tbRxOk)
{
m_phyRxEndOkTrace (*i);
// forward each PDU in the PacketBurst separately to the MAC
// WILD HACK: we currently don't model properly the aggregation
// of PDUs into TBs. In reality, the PHY is concerned only with
// TBs, and it should be left to the MAC to decompose the TB into PDUs
for (std::list<Ptr<Packet> >::const_iterator j = (*i)->Begin ();
j != (*i)->End (); ++j)
{
if (!m_genericPhyRxEndOkCallback.IsNull ())
{
m_genericPhyRxEndOkCallback (*j);
}
}
}
else
{
// TB received with errors
m_phyRxEndErrorTrace (*i);
}
}
for (std::list<Ptr<PacketBurst> >::const_iterator i = m_rxPacketBurstList.begin ();
i != m_rxPacketBurstList.end (); ++i)
{
for (std::list<Ptr<Packet> >::const_iterator j = (*i)->Begin (); j != (*i)->End (); ++j)
{
// retrieve TB info of this packet
LteMacTag tag;
(*j)->RemovePacketTag (tag);
itTb = m_expectedTbs.find (tag.GetRnti ());
(*j)->AddPacketTag (tag);
NS_LOG_INFO (this << " Packet of " << tag.GetRnti ());
if (itTb!=m_expectedTbs.end ())
{
if (!(*itTb).second.corrupt)
{
m_phyRxEndOkTrace (*j);
if (!m_genericPhyRxEndOkCallback.IsNull ())
{
m_genericPhyRxEndOkCallback (*j);
}
}
else
{
// TB received with errors
m_phyRxEndErrorTrace (*j);
}
}
}
}
ChangeState (IDLE);
m_rxPacketBurstList.clear ();
m_expectedTbs.clear ();
}
void

View File

@@ -17,6 +17,7 @@
*
* Author: Nicola Baldo <nbaldo@cttc.es>
* Giuseppe Piro <g.piro@poliba.it>
* Modified by: Marco Miozzo <mmiozzo@cttc.es> (introduce physical error model)
*/
#ifndef LTE_SPECTRUM_PHY_H
@@ -35,6 +36,7 @@
#include <ns3/generic-phy.h>
#include <ns3/packet-burst.h>
#include <ns3/lte-interference.h>
#include <ns3/random-variable.h>
#include <map>
namespace ns3 {
@@ -195,8 +197,8 @@ private:
TracedCallback<Ptr<const PacketBurst> > m_phyTxStartTrace;
TracedCallback<Ptr<const PacketBurst> > m_phyTxEndTrace;
TracedCallback<Ptr<const PacketBurst> > m_phyRxStartTrace;
TracedCallback<Ptr<const PacketBurst> > m_phyRxEndOkTrace;
TracedCallback<Ptr<const PacketBurst> > m_phyRxEndErrorTrace;
TracedCallback<Ptr<const Packet> > m_phyRxEndOkTrace;
TracedCallback<Ptr<const Packet> > m_phyRxEndErrorTrace;
GenericPhyTxEndCallback m_genericPhyTxEndCallback;
GenericPhyRxEndErrorCallback m_genericPhyRxEndErrorCallback;
@@ -208,6 +210,8 @@ private:
expectedTbs_t m_expectedTbs;
SpectrumValue m_sinrPerceived;
UniformVariable m_random;
};

View File

@@ -0,0 +1,240 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Marco Miozzo <marco.miozzo@cttc.es>
*/
#include <ns3/object.h>
#include <ns3/spectrum-interference.h>
#include <ns3/spectrum-error-model.h>
#include <ns3/log.h>
#include <ns3/test.h>
#include <ns3/simulator.h>
#include <ns3/packet.h>
#include <ns3/ptr.h>
#include <iostream>
#include "ns3/rlc-stats-calculator.h"
#include <ns3/buildings-mobility-model.h>
#include <ns3/buildings-propagation-loss-model.h>
#include "ns3/lte-test-phy-error-model.h"
#include <ns3/eps-bearer.h>
#include <ns3/node-container.h>
#include <ns3/mobility-helper.h>
#include <ns3/net-device-container.h>
#include <ns3/lte-ue-net-device.h>
#include <ns3/lte-enb-net-device.h>
#include <ns3/lte-ue-rrc.h>
#include <ns3/lena-helper.h>
#include "ns3/string.h"
#include "ns3/double.h"
#include <ns3/lte-enb-phy.h>
#include <ns3/lte-ue-phy.h>
NS_LOG_COMPONENT_DEFINE ("LenaTestPhyErrorModel");
using namespace ns3;
LenaTestPhyErrorModelrSuite::LenaTestPhyErrorModelrSuite ()
: TestSuite ("lte-phy-error-model", SYSTEM)
{
NS_LOG_INFO ("creating LenaTestPhyErrorModelTestCase");
// TB size of 72 bits
AddTestCase (new LenaPhyErrorModelTestCase (7,700,1383000,1239000));
}
static LenaTestPhyErrorModelrSuite lenaTestPhyErrorModelrSuite;
std::string
LenaPhyErrorModelTestCase::BuildNameString (uint16_t nUser, uint16_t dist)
{
std::ostringstream oss;
oss << nUser << " UEs, distance " << dist << " m";
return oss.str ();
}
LenaPhyErrorModelTestCase::LenaPhyErrorModelTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl)
: TestCase (BuildNameString (nUser, dist)),
m_nUser (nUser),
m_dist (dist),
m_thrRefDl (thrRefDl),
m_thrRefUl (thrRefUl)
{
}
LenaPhyErrorModelTestCase::~LenaPhyErrorModelTestCase ()
{
}
void
LenaPhyErrorModelTestCase::DoRun (void)
{
// LogComponentEnable ("LteEnbRrc", LOG_LEVEL_ALL);
// LogComponentEnable ("LteUeRrc", LOG_LEVEL_ALL);
// LogComponentEnable ("LteEnbMac", LOG_LEVEL_ALL);
// LogComponentEnable ("LteUeMac", LOG_LEVEL_ALL);
// LogComponentEnable ("LteRlc", LOG_LEVEL_ALL);
//
// LogComponentEnable ("LtePhy", LOG_LEVEL_ALL);
// LogComponentEnable ("LteEnbPhy", LOG_LEVEL_ALL);
// LogComponentEnable ("LteUePhy", LOG_LEVEL_ALL);
// LogComponentEnable ("LteSpectrumPhy", LOG_LEVEL_ALL);
// LogComponentEnable ("LteInterference", LOG_LEVEL_ALL);
// LogComponentEnable ("LteSinrChunkProcessor", LOG_LEVEL_ALL);
//
// LogComponentEnable ("LtePropagationLossModel", LOG_LEVEL_ALL);
// LogComponentEnable ("LossModel", LOG_LEVEL_ALL);
// LogComponentEnable ("ShadowingLossModel", LOG_LEVEL_ALL);
// LogComponentEnable ("PenetrationLossModel", LOG_LEVEL_ALL);
// LogComponentEnable ("MultipathLossModel", LOG_LEVEL_ALL);
// LogComponentEnable ("PathLossModel", LOG_LEVEL_ALL);
//
// LogComponentEnable ("LteNetDevice", LOG_LEVEL_ALL);
// LogComponentEnable ("LteUeNetDevice", LOG_LEVEL_ALL);
// LogComponentEnable ("LteEnbNetDevice", LOG_LEVEL_ALL);
// LogComponentEnable ("RrFfMacScheduler", LOG_LEVEL_ALL);
// LogComponentEnable ("LenaHelper", LOG_LEVEL_ALL);
// LogComponentEnable ("RlcStatsCalculator", LOG_LEVEL_ALL);
LogComponentEnable ("LteSpectrumPhy", LOG_LEVEL_ALL);
LogComponentEnable ("LteEnbMac", LOG_LEVEL_ALL);
LogComponentEnable ("LteEnbPhy", LOG_LEVEL_ALL);
LogComponentEnable ("LteUePhy", LOG_LEVEL_ALL);
LogComponentEnable ("RrFfMacScheduler", LOG_LEVEL_ALL);
LogComponentEnable ("LenaHelper", LOG_LEVEL_ALL);
LogComponentEnable ("BuildingsPropagationLossModel", LOG_LEVEL_ALL);
// LogComponentEnable ("LteInterference", LOG_LEVEL_ALL);
LogComponentEnable ("LteMiErrorModel", LOG_LEVEL_ALL);
LogComponentEnable ("LteAmc", LOG_LEVEL_ALL);
LogComponentEnable ("LenaTestPhyErrorModel", LOG_LEVEL_ALL);
/**
* Initialize Simulation Scenario: 1 eNB and m_nUser UEs
*/
Ptr<LenaHelper> lena = CreateObject<LenaHelper> ();
// Create Nodes: eNodeB and UE
NodeContainer enbNodes;
NodeContainer ueNodes;
enbNodes.Create (1);
ueNodes.Create (m_nUser);
// Install Mobility Model
MobilityHelper mobility;
mobility.SetMobilityModel ("ns3::BuildingsMobilityModel");
mobility.Install (enbNodes);
mobility.SetMobilityModel ("ns3::BuildingsMobilityModel");
mobility.Install (ueNodes);
// remove random shadowing component
lena->SetPathlossModelAttribute ("ShadowSigmaOutdoor", DoubleValue (0.0));
lena->SetPathlossModelAttribute ("ShadowSigmaIndoor", DoubleValue (0.0));
lena->SetPathlossModelAttribute ("ShadowSigmaExtWalls", DoubleValue (0.0));
double ber = 0.00005;
ber = 0.1;
Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (ber));
// Create Devices and install them in the Nodes (eNB and UE)
NetDeviceContainer enbDevs;
NetDeviceContainer ueDevs;
lena->SetSchedulerType ("ns3::RrFfMacScheduler");
enbDevs = lena->InstallEnbDevice (enbNodes);
ueDevs = lena->InstallUeDevice (ueNodes);
// Attach a UE to a eNB
lena->Attach (ueDevs, enbDevs.Get (0));
// Activate an EPS bearer
enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
EpsBearer bearer (q);
lena->ActivateEpsBearer (ueDevs, bearer);
Ptr<LteEnbNetDevice> lteEnbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
Ptr<LteEnbPhy> enbPhy = lteEnbDev->GetPhy ();
enbPhy->SetAttribute ("TxPower", DoubleValue (43.0));
enbPhy->SetAttribute ("NoiseFigure", DoubleValue (5.0));
// place the HeNB over the default rooftop level (20 mt.)
Ptr<BuildingsMobilityModel> mm = enbNodes.Get (0)->GetObject<BuildingsMobilityModel> ();
mm->SetPosition (Vector (0.0, 0.0, 30.0));
// Set UEs' position and power
for (int i = 0; i < m_nUser; i++)
{
Ptr<BuildingsMobilityModel> mm = ueNodes.Get (i)->GetObject<BuildingsMobilityModel> ();
mm->SetPosition (Vector (m_dist, 0.0, 1.0));
Ptr<LteUeNetDevice> lteUeDev = ueDevs.Get (i)->GetObject<LteUeNetDevice> ();
Ptr<LteUePhy> uePhy = lteUeDev->GetPhy ();
uePhy->SetAttribute ("TxPower", DoubleValue (23.0));
uePhy->SetAttribute ("NoiseFigure", DoubleValue (9.0));
}
lena->EnableRlcTraces ();
double simulationTime = 0.008;
// double tolerance = 0.1;
Simulator::Stop (Seconds (simulationTime));
Ptr<RlcStatsCalculator> rlcStats = lena->GetRlcStats ();
rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (simulationTime)));
Simulator::Run ();
/**
* Check that the assignation is done in a RR fashion
*/
NS_LOG_INFO ("DL - Test with " << m_nUser << " user(s) at distance " << m_dist);
std::vector <uint64_t> dlDataRxed;
for (int i = 0; i < m_nUser; i++)
{
// get the imsi
uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
// get the lcId
uint8_t lcId = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetRrc ()->GetLcIdVector ().at (0);
dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId));
NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " thr " << (double)dlDataRxed.at (i) / simulationTime << " ref " << m_thrRefDl);
// NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataRxed.at (i) / simulationTime, m_thrRefDl, m_thrRefDl * tolerance, " Unfair Throughput!");
}
NS_LOG_INFO ("UL - Test with " << m_nUser << " user(s) at distance " << m_dist);
std::vector <uint64_t> ulDataRxed;
for (int i = 0; i < m_nUser; i++)
{
// get the imsi
uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
// get the lcId
uint8_t lcId = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetRrc ()->GetLcIdVector ().at (0);
ulDataRxed.push_back (rlcStats->GetUlRxData (imsi, lcId));
NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)ulDataRxed.at (i) << " thr " << (double)ulDataRxed.at (i) / simulationTime << " ref " << m_thrRefUl);
// NS_TEST_ASSERT_MSG_EQ_TOL ((double)ulDataRxed.at (i) / simulationTime, m_thrRefUl, m_thrRefUl * tolerance, " Unfair Throughput!");
}
Simulator::Destroy ();
}

View File

@@ -0,0 +1,65 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Marco Miozzo <marco.miozzo@cttc.es>
*/
#ifndef LENA_TEST_PHY_ERROR_MODEL_H
#define LENA_TEST_PHY_ERROR_MODEL_H
#include "ns3/simulator.h"
#include "ns3/test.h"
using namespace ns3;
/**
* This system test program creates different test cases with a single eNB and
* several UEs, all having the same Radio Bearer specification. In each test
* case, the UEs see the same SINR from the eNB; different test cases are
* implemented obtained by using different SINR values and different numbers of
* UEs. The test consists on ...
*/
class LenaPhyErrorModelTestCase : public TestCase
{
public:
LenaPhyErrorModelTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl);
virtual ~LenaPhyErrorModelTestCase ();
private:
virtual void DoRun (void);
static std::string BuildNameString (uint16_t nUser, uint16_t dist);
uint16_t m_nUser;
uint16_t m_dist;
double m_thrRefDl;
double m_thrRefUl;
};
class LenaTestPhyErrorModelrSuite : public TestSuite
{
public:
LenaTestPhyErrorModelrSuite ();
};
#endif /* LENA_TEST_PHY_ERROR_MODEL_H */

View File

@@ -42,7 +42,8 @@ def build(bld):
'model/lte-sinr-chunk-processor.cc',
'model/pf-ff-mac-scheduler.cc',
'model/epc-gtpu-v1.cc',
'model/trace-fading-loss-model.cc'
'model/trace-fading-loss-model.cc',
'model/lte-mi-error-model.cc'
]
module_test = bld.create_ns3_module_test_library('lte')
@@ -58,7 +59,8 @@ def build(bld):
'test/lte-test-earfcn.cc',
'test/lte-test-spectrum-value-helper.cc',
'test/epc-test-gtpu-v1.cc',
'test/lte-test-pathloss-model.cc'
'test/lte-test-pathloss-model.cc',
'test/lte-test-phy-error-model.cc'
]
headers = bld.new_task_gen(features=['ns3header'])
@@ -112,9 +114,10 @@ def build(bld):
'test/lte-test-ue-phy.h',
'test/lte-test-rr-ff-mac-scheduler.h',
'test/lte-test-pf-ff-mac-scheduler.h',
'test/lte-test-pf-ff-mac-scheduler.h',
'test/lte-test-phy-error-model.h',
'test/epc-test-gtpu-v1.h',
'test/lte-test-pathloss-model.h'
'test/lte-test-pathloss-model.h',
'model/lte-mi-error-model.h'
]
if (bld.env['ENABLE_EXAMPLES']):