📄 evm_library.mdl
字号:
SrcPort 1
Points [0, 80]
DstBlock " Demux "
DstPort 1
}
Line {
SrcBlock " Demux "
SrcPort 1
DstBlock " Terminator "
DstPort 1
}
Line {
SrcBlock "noisyIn"
SrcPort 1
DstBlock " SFunction "
DstPort 1
}
Line {
Name "EVM"
Labels [0, 0]
SrcBlock " SFunction "
SrcPort 2
DstBlock "EVM"
DstPort 1
}
}
}
Block {
BlockType Reference
Name "Constellation\nPoints"
Ports [0, 1]
Position [40, 94, 75, 126]
SourceBlock "dspsrcs4/DSP\nConstant"
SourceType "DSP Constant"
ShowPortLabels "FromPortIcon"
SystemSampleTime "-1"
FunctionWithSeparateData "off"
RTWMemSecFuncInitTerm "Inherit from model"
RTWMemSecFuncExecute "Inherit from model"
RTWMemSecDataConstants "Inherit from model"
RTWMemSecDataInternal "Inherit from model"
RTWMemSecDataParameters "Inherit from model"
Value "C"
SampleMode "Discrete"
discreteOutput "Frame-based"
continuousOutput "Sample-based"
sampTime "1"
framePeriod "inf"
additionalParams "off"
allowOverrides "on"
dataType "Inherit from 'Constant value'"
isSigned "on"
wordLen "16"
udDataType "sfix(16)"
fracBitsMode "Best precision"
numFracBits "15"
InterpretAs1D "-inf"
Ts "-inf"
FramebasedOutput "-inf"
}
Block {
BlockType Math
Name "Math\nFunction"
Ports [1, 1]
Position [340, 65, 370, 95]
ShowName off
Operator "sqrt"
}
Block {
BlockType Gain
Name "Normalize"
Position [435, 64, 495, 96]
Gain "1/Pmax"
ParameterDataTypeMode "Inherit via internal rule"
OutDataTypeMode "Inherit via internal rule"
SaturateOnIntegerOverflow off
}
Block {
BlockType Outport
Name "RMS EVM"
Position [560, 73, 590, 87]
IconDisplay "Port number"
BusOutputAsStruct off
}
Line {
SrcBlock "Constellation\nPoints"
SrcPort 1
Points [30, 0; 0, -15]
DstBlock "Compute\nEVM"
DstPort 2
}
Line {
SrcBlock "Normalize"
SrcPort 1
DstBlock "RMS EVM"
DstPort 1
}
Line {
SrcBlock "Math\nFunction"
SrcPort 1
DstBlock "Normalize"
DstPort 1
}
Line {
SrcBlock "In1"
SrcPort 1
DstBlock "Compute\nEVM"
DstPort 1
}
Line {
Name "EVM"
Labels [0, 0; 1, 0]
SrcBlock "Compute\nEVM"
SrcPort 1
DstBlock "Math\nFunction"
DstPort 1
}
}
}
Block {
BlockType SubSystem
Name "EVM\nSimulink Blocks"
Ports [1, 1]
Position [60, 16, 110, 74]
TreatAsAtomicUnit on
MinAlgLoopOccurrences off
RTWSystemCode "Auto"
FunctionWithSeparateData off
MaskHideContents off
MaskType "Error Vector Magnitude"
MaskDescription "Compute the Error Vector Magnitude by comparing"
" the input signal to the reference provided by the Signal Constellation param"
"eter."
MaskHelp "<p>\nIf the RMS EVM box is checked, this block "
"outputs the RMS value of the EVM for each input frame, i.e., the output will "
"be a single value per input frame.\n</p>\n<p>\nIf the RMS EVM box is unchecke"
"d, this block will output the EVM value per input sample, i.e., the output wi"
"ll be of the same size as the input.\n</p>\n<p>To convert the output of this "
"block to dB, use the dB Conversion block from the Signal Processing Blockset "
"and set it to \"Power\" mode.</p>\n<p>To convert the output of this block to "
"a percentage value, simply multiply its output by 100.</p>"
MaskPromptString "Signal constellation:|RMS EVM"
MaskStyleString "edit,checkbox"
MaskTunableValueString "on,off"
MaskCallbackString "|"
MaskEnableString "on,on"
MaskVisibilityString "on,on"
MaskToolTipString "on,on"
MaskVarAliasString ","
MaskVariables "sigconst=@1;doRMS=@2;"
MaskInitialization "C = sigconst(:).';\nPmax = max(abs(C)); % max p"
"ower point\nmyOut=find_system(gcbh,'LookUnderMasks','all','Name','myOutput');"
"\n\nif doRMS\n set_param(myOut,'GotoTag','RMS_EVM')\nelse\n set_par"
"am(myOut,'GotoTag','EVM')\nend"
MaskDisplay "disp('EVM');"
MaskIconFrame on
MaskIconOpaque on
MaskIconRotate "none"
MaskIconUnits "autoscale"
MaskValueString "[1+j -1+j -1-j 1-j]|on"
MaskTabNameString ","
System {
Name "EVM\nSimulink Blocks"
Location [862, 677, 1686, 1022]
Open off
ModelBrowserVisibility off
ModelBrowserWidth 200
ScreenColor "white"
PaperOrientation "landscape"
PaperPositionMode "auto"
PaperType "usletter"
PaperUnits "inches"
TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
TiledPageScale 1
ShowPageBoundaries off
ZoomFactor "100"
Block {
BlockType Inport
Name "In1"
Position [30, 123, 60, 137]
IconDisplay "Port number"
}
Block {
BlockType Goto
Name "EVM_Out"
Position [470, 215, 540, 245]
GotoTag "EVM"
TagVisibility "local"
}
Block {
BlockType Reference
Name "General QAM\nDemodulator\nBaseband1"
Ports [1, 1]
Position [115, 189, 190, 241]
DialogController "commDDGCreate"
DialogControllerArgs "DataTag1"
SourceBlock "commdigbbndam3/General QAM\nDemodulator\nBa"
"seband"
SourceType "General QAM Demodulator Baseband"
SigCon "C"
OutType "Integer"
DecType "Hard decision"
VarSource "Dialog"
Variance "1"
outDtypeBit "Inherit via internal rule"
outDtype "Inherit via internal rule"
}
Block {
BlockType Reference
Name "General QAM\nModulator\nBaseband1"
Ports [1, 1]
Position [220, 189, 295, 241]
SourceBlock "commdigbbndam3/General QAM\nModulator\nBase"
"band"
SourceType "General QAM Modulator Baseband"
SigCon "C"
outDtype "double"
outWordLen "16"
outUDDataType "sfix(16)"
outFracLenMode "Best precision"
outFracLen "15"
}
Block {
BlockType Gain
Name "Normalization\n(if necessary)"
Position [590, 107, 660, 153]
NamePlacement "alternate"
Gain "1/Pmax"
}
Block {
BlockType Reference
Name "RMS"
Ports [1, 1]
Position [440, 112, 515, 148]
SourceBlock "dspstat3/RMS"
SourceType "RMS"
run off
reset_popup "None"
Port {
PortNumber 1
Name "RMS EVM"
RTWStorageClass "Auto"
DataLoggingNameMode "SignalName"
}
}
Block {
BlockType Goto
Name "RMS_EVM_Out"
Position [695, 115, 785, 145]
GotoTag "RMS_EVM"
TagVisibility "local"
}
Block {
BlockType Sum
Name "Sum"
Ports [2, 1]
Position [310, 120, 330, 140]
ShowName off
IconShape "round"
Inputs "|+-"
CollapseMode "All dimensions"
InputSameDT off
OutDataTypeMode "Inherit via internal rule"
}
Block {
BlockType From
Name "myOutput"
Position [605, 209, 705, 241]
CloseFcn "tagdialog Close"
GotoTag "RMS_EVM"
}
Block {
BlockType Outport
Name "RMS EVM"
Position [750, 218, 780, 232]
IconDisplay "Port number"
BusOutputAsStruct off
}
Line {
SrcBlock "myOutput"
SrcPort 1
DstBlock "RMS EVM"
DstPort 1
}
Line {
SrcBlock "Sum"
SrcPort 1
Points [50, 0]
Branch {
Points [0, 100]
DstBlock "EVM_Out"
DstPort 1
}
Branch {
DstBlock "RMS"
DstPort 1
}
}
Line {
SrcBlock "In1"
SrcPort 1
Points [20, 0]
Branch {
Points [0, 85]
DstBlock "General QAM\nDemodulator\nBaseband1"
DstPort 1
}
Branch {
DstBlock "Sum"
DstPort 1
}
}
Line {
SrcBlock "General QAM\nModulator\nBaseband1"
SrcPort 1
Points [20, 0]
DstBlock "Sum"
DstPort 2
}
Line {
SrcBlock "General QAM\nDemodulator\nBaseband1"
SrcPort 1
DstBlock "General QAM\nModulator\nBaseband1"
DstPort 1
}
Line {
Name "RMS EVM"
Labels [0, 0]
SrcBlock "RMS"
SrcPort 1
DstBlock "Normalization\n(if necessary)"
DstPort 1
}
Line {
SrcBlock "Normalization\n(if necessary)"
SrcPort 1
DstBlock "RMS_EVM_Out"
DstPort 1
}
}
}
}
}
MatData {
NumRecords 2
DataRecord {
Tag DataTag1
Data " %)30 . < 8 ( 0 % "
"\" $ ! 0 . 0 8 ( ! % \" $ "
"/ 0 0 #P $=104U$96UO9'5L871O<@ "
}
DataRecord {
Tag DataTag0
Data " %)30 . :!\\ 8 ( @ % "
"\" $ ! 0 % 0 &@ $ !: P 4V9U;DYA;64 "
" !);G!U=%!O<G17:61T: $]U='!U=%!O<G17:61T: 4"
"V9U;F-T:6]N4&%R86UE=&5R<P !.=6UB97)/9E!A<F%M971E<G, $1I<F5C=$"
"9E9614:')O=6=H 4V%M<&QE5&EM90 !.=6UB97)/9D1I<V-"
"R971E4W1A=&5S $1I<V-R971E4W1A=&5S24, 3G5M8F5R3V9#;VYT:6YU;W5S"
"4W1A=&5S !#;VYT:6YU;W5S4W1A=&5S24, $5X=&5R;F%L1&5C;&%R871I;VX "
" 26YC;'5D94AE861E<G-497AT !,:6)R87)Y1FEL97-497AT %5S97"
")#;V1E5&5X= 57-E<D-O9&5497AT;61L57!D871E !5<V5R0V]D951"
"E>'1M9&Q$97)I=F%T:79E $=E;F5R871E5$Q# 4&%N96Q);F1E> "
" !5<V53:6U3=')U8W0 %-H;W=#;VUP:6QE4W1E<', "
" 0W)E871E1&5B=6=-97@ !3879E0V]D94]N;'D $"
"EN<'5T4&]R=', 3W5T<'5T4&]R=', !087)A;65"
"T97)S $EN<'5T1&%T851Y<&4P 3W5T<'5T1&%T851Y"
"<&4P !);G!U=%-I9VYA;%1Y<&4P $]U='!U=%-I9VYA;%1Y<&4P "
" 26Y&<F%M94)A<V5D, !/=71&<F%M94)A<V5D, "
" %1E;7!L871E5'EP90 #@ #@ & \" 0 "
" !0 @ ! !0 $ $ 4 !M>45630 X P !@ @ "
"$ 4 ( 0 ( ! ! @ M,0 #@ # & \" 0"
" !0 @ ! 0 $ $ ! #$ . , 8 ( ! "
" % \" 0 0 X P !@ @ $ "
" 4 ( 0 $ ! ! 0 S #@ # & \" 0 "
" !0 @ ! 0 $ $ ! #$ . 0 8 ( ! "
" % \" $ ) 0 0 \"0 $EN:&5R:71E9 . , "
" 8 ( ! % \" $ ! 0 0 $ , X P "
"!@ @ $ 4 ( 0 $ ! ! 0 P #@ # & "
" \" 0 !0 @ ! 0 $ $ ! # . , 8 "
" ( ! % \" $ ! 0 0 $ , X !8 !@ "
" @ $ 4 ( 0 \"0 ! ! D \"B\\J(&5X=&5R;B!"
"D;W5B;&4@9G5N8RAD;W5B;&4@82D[(\"HO X !H !@ @ $ 4 "
"( 0 #< ! ! W \"B-I;F-L=61E(#QM871H+F@^\"B-I;F-L=61E(#"
"QC9FQO870^\"B-I;F-L=61E(#QC87-S97)T/@ . , 8 ( ! % \""
" $ ! 0 0 $ \"@ X #@ @ !@ @ $ 4 ( "
" 0 *P\" ! ! \"L @ \"B\\J(%1H:7,@<V%M<&QE('-E=',@=&AE(&]U='"
"!U=\"!E<75A;\"!T;R!T:&4@:6YP=70*(\" @(\" @(\" @>3!;,%T@/2!U,%LP73L*1F]R(&-O;7"
"!L97@@<VEG;F%L<R!U<V4Z('DP6S!=+G)E(#T@=3!;,%TN<F4[\"B @(\" @(\" @(\" @(\" @("
"\" @(\" @(\" @(\"!Y,%LP72YI;2 ]('4P6S!=+FEM.PH@(\" @(\" @(\" @(\" @(\" @(\" @"
"(\" @(\" @>3%;,%TN<F4@/2!U,5LP72YR93L*(\" @(\" @(\" @(\" @(\" @(\" @(\" @(\" "
"@('DQ6S!=+FEM(#T@=3%;,%TN:6T[*B\\*:6YT(&DL(&H[\"F1O=6)L92!M>4UI;CL*9&]U8FQE('"
"0[\"F1O=6)L92!F<F%M95-U;3TP.PIF;W(@*&D],#L@:3QU7W=I9'1H.R!I*RLI\"GL*(\" @(&UY"
"36EN(#T@1$),7TU!6#L*(\" @(&9O<B H:CTP.R!J/'!?=VED=&@P.R!J*RLI\"B @(\"![\"B @("
"\" @(\" @=#TH:6Y&<F%M95MI72YR92UC;VYS=%!T<U);:ETI*BAI;D9R86UE6VE=+G)E+6-O;G-T"
"4'1S4EMJ72D@*PH@(\" @(\" @(\"AI;D9R86UE6VE=+FEM+6-O;G-T4'1S25MJ72DJ*&EN1G)A;6"
"5;:5TN:6TM8V]N<W10='-)6VI=*3L*(\" @(\" @(\"!I9B H=\" \\(&UY36EN*0H@(\" @(\" @"
"(\" @(\"!M>4UI;B ]('0[\"B @(\"!]\"B @(\"!235-?159-6VE=/7-Q<G0H;7E-:6XI.PH@(\""
" @9G)A;653=6T@*ST@;7E-:6X[\"GT**E)-4U]%5DT@/2!S<7)T*&9R86UE4W5M+W5?=VED=&@I+R"
"@J<$UA>\"D[ X P !@ @ $ 4 ( ! "
" ! #@ # & \" 0 !0 @ $ "
" $ . , 8 ( ! % \" $ ! 0 "
" 0 $ ,0 X P !@ @ $ 4 ( 0 $ ! ! "
" 0 V #@ # & \" 0 !0 @ ! 0 $ $ "
"! # . 2 8 ( ! % \" $ 4 0 0 "
" % # @(\" @(\" @(\" @(\" @(\" @(\" @ X P !@ @ $ "
"4 ( 0 $ ! ! 0 P #@ # & \" 0 !0"
" @ ! 0 $ $ ! # . V 8 8 ( @ % "
" \" $ ! 0 % 0 % $ $ 0 3F%M90 !"
"$871A5'EP90 $1I;7, 4F]W "
" !#;VUP;&5X:71Y $9R86UE 0V]L "
" !)<U-I9VYE9 %=O<F1,96YG=&@ 1FEX4&]I;G138V%L:6"
"YG5'EP90!&<F%C=&EO;DQE;F=T: %-L;W!E 0FEA<P "
" #@ &@ & \" $ !0 @ ! 0 $ "
" #@ #@ & \" 0 !0 @ ! !P $ $ <"
" !I;D9R86UE X !H !@ @ ! 4 ( 0 $ ! "
" X X !@ @ $ 4 ( 0 < ! ! ' 8"
"W)E86Q?5 . 8 8 ( 0 % \" $ ! 0 . "
" , 8 ( ! % \" $ # 0 0 , ,2U$ X "
" !X !@ @ ! 4 ( 0 $ ! X !( !@ "
"@ $ 4 ( 0 !$ ! ! 1 1%E.04U)0T%,3%E?4TE"
":140 #@ ' & \" $ !0 @ ! 0 $ "
" #@ $ & \" 0 !0 @ ! \"P $ $ L "
"!#3TU03$587UE%4P #@ ' & \" $ !0 @ ! 0 "
"$ #@ $ & \" 0 !0 @ ! \"0 $ $"
" D !&4D%-15]915, #@ & & \" $ !0 @ ! "
" 0 $ #@ # & \" 0 !0 @ ! 0 $ "
" $ ! #$ . 8 8 ( 0 % \" $ ! 0 "
" . , 8 ( ! % \" $ ! 0 0 $ ,"
" X !@ !@ @ ! 4 ( 0 $ ! X P "
" !@ @ $ 4 ( 0 $ ! ! 0 X #@ & "
"& \" $ !0 @ ! 0 $ #@ # & \" "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -