rf.mdl

来自「用Matlab将Radio Frequency(RF)收发模块进行模型化。非常少」· MDL 代码 · 共 2,144 行 · 第 1/5 页

MDL
2,144
字号
	      SrcBlock		      "5th Order\nDecimation\nFilter"
	      SrcPort		      1
	      DstBlock		      "I Out"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Split"
	      SrcPort		      2
	      Points		      [10, 0; 0, 65; 100, 0]
	      Branch {
		Points			[0, -105]
		DstBlock		"Product1"
		DstPort			1
	      }
	      Branch {
		DstBlock		"Product3"
		DstPort			1
	      }
	    }
	    Line {
	      SrcBlock		      "Split"
	      SrcPort		      1
	      Points		      [10, 0; 0, -70; 115, 0]
	      Branch {
		DstBlock		"Product"
		DstPort			1
	      }
	      Branch {
		DstBlock		"Product2"
		DstPort			1
	      }
	    }
	    Line {
	      SrcBlock		      "Sine Wave"
	      SrcPort		      1
	      Points		      [25, 0]
	      Branch {
		Points			[0, 15]
		DstBlock		"Product2"
		DstPort			2
	      }
	      Branch {
		Points			[0, -40]
		DstBlock		"Product1"
		DstPort			2
	      }
	    }
	    Line {
	      SrcBlock		      "Cosine Wave"
	      SrcPort		      1
	      Points		      [10, 0]
	      Branch {
		Points			[0, 120]
		DstBlock		"Product3"
		DstPort			2
	      }
	      Branch {
		Points			[0, -35]
		DstBlock		"Product"
		DstPort			2
	      }
	    }
	    Line {
	      SrcBlock		      "Product"
	      SrcPort		      1
	      DstBlock		      "Sum1"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Product1"
	      SrcPort		      1
	      Points		      [25, 0]
	      DstBlock		      "Sum1"
	      DstPort		      2
	    }
	    Line {
	      SrcBlock		      "Product2"
	      SrcPort		      1
	      DstBlock		      "Sum"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Product3"
	      SrcPort		      1
	      Points		      [25, 0]
	      DstBlock		      "Sum"
	      DstPort		      2
	    }
	  }
	}
	Block {
	  BlockType		  SubSystem
	  Name			  "A/D Converter"
	  Ports			  [1, 1]
	  Position		  [565, 429, 625, 481]
	  ShowPortLabels	  on
	  TreatAsAtomicUnit	  off
	  RTWSystemCode		  "Auto"
	  RTWFcnNameOpts	  "Auto"
	  RTWFileNameOpts	  "Auto"
	  MaskType		  "Ideal A/D Converter"
	  MaskDescription	  "Performs A/D Conversion.  Full-scale output"
" range is full-scale input range - 1 LSB.  In other words, 1 LSB is full-scal"
"e input range / 2^N, which is full-scale output range / 2^N - 1.  The zero le"
"vel is midtread for unsigned input."
	  MaskHelp		  "Performs A/D Conversion.  Full-scale output"
" range is full-scale input range - 1 LSB.  In other words, 1 LSB is full-scal"
"e input range / 2^N, which is full-scale output range / 2^N - 1.  The zero le"
"vel is midtread for unsigned input."
	  MaskPromptString	  "Full-Scale Output Range|Signed Input?|Sampl"
"ing Frequency|Number of Bits|Extra Level?"
	  MaskStyleString	  "edit,checkbox,edit,edit,checkbox"
	  MaskTunableValueString  "on,on,on,on,on"
	  MaskCallbackString	  "||||"
	  MaskEnableString	  "on,on,on,on,on"
	  MaskVisibilityString	  "on,on,on,on,on"
	  MaskToolTipString	  "on,on,on,on,on"
	  MaskVariables		  "FSlevel=@1;signed=@2;fs=@3;N=@4;el=@5;"
	  MaskInitialization	  "N = round(N);\nqlevel = FSlevel/(2^N-1 + el"
");\nilevel = signed*FSlevel/2;\nslevel = (2^N - 1 + el)/FSlevel;\n"
	  MaskDisplay		  "disp('Ideal A/D')"
	  MaskIconFrame		  on
	  MaskIconOpaque	  on
	  MaskIconRotate	  "none"
	  MaskIconUnits		  "autoscale"
	  MaskValueString	  "1|off|2048|2|on"
	  MaskVariableAliases	  ",,,,"
	  System {
	    Name		    "A/D Converter"
	    Location		    [440, 238, 922, 375]
	    Open		    off
	    ModelBrowserVisibility  off
	    ModelBrowserWidth	    200
	    ScreenColor		    "white"
	    PaperOrientation	    "landscape"
	    PaperPositionMode	    "auto"
	    PaperType		    "usletter"
	    PaperUnits		    "inches"
	    ZoomFactor		    "100"
	    AutoZoom		    on
	    Block {
	      BlockType		      Inport
	      Name		      "In1"
	      Position		      [25, 33, 55, 47]
	      Port		      "1"
	      Interpolate	      on
	    }
	    Block {
	      BlockType		      Constant
	      Name		      "Constant"
	      Position		      [70, 90, 110, 110]
	      Value		      "ilevel"
	      VectorParams1D	      on
	    }
	    Block {
	      BlockType		      Gain
	      Name		      "Gain"
	      Position		      [330, 35, 360, 65]
	      Gain		      "slevel"
	      Multiplication	      "Element-wise(K.*u)"
	      SaturateOnIntegerOverflow	on
	    }
	    Block {
	      BlockType		      Quantizer
	      Name		      "Quantizer"
	      Position		      [200, 35, 230, 65]
	      QuantizationInterval    "qlevel"
	      LinearizeAsGain	      on
	    }
	    Block {
	      BlockType		      Rounding
	      Name		      "Rounding\nFunction"
	      Position		      [390, 35, 420, 65]
	      Operator		      "round"
	    }
	    Block {
	      BlockType		      Saturate
	      Name		      "Saturation"
	      Position		      [265, 35, 295, 65]
	      UpperLimit	      "FSlevel"
	      LowerLimit	      "0"
	      LinearizeAsGain	      on
	    }
	    Block {
	      BlockType		      Sum
	      Name		      "Sum"
	      Ports		      [2, 1]
	      Position		      [140, 32, 170, 63]
	      IconShape		      "rectangular"
	      Inputs		      "++"
	      SaturateOnIntegerOverflow	on
	    }
	    Block {
	      BlockType		      ZeroOrderHold
	      Name		      "Zero-Order\nHold"
	      Position		      [80, 25, 110, 55]
	      SampleTime	      "1/fs"
	    }
	    Block {
	      BlockType		      Outport
	      Name		      "Out1"
	      Position		      [445, 43, 475, 57]
	      Port		      "1"
	      OutputWhenDisabled      "held"
	      InitialOutput	      "0"
	    }
	    Line {
	      SrcBlock		      "Rounding\nFunction"
	      SrcPort		      1
	      DstBlock		      "Out1"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Gain"
	      SrcPort		      1
	      DstBlock		      "Rounding\nFunction"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Saturation"
	      SrcPort		      1
	      DstBlock		      "Gain"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Quantizer"
	      SrcPort		      1
	      DstBlock		      "Saturation"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "In1"
	      SrcPort		      1
	      DstBlock		      "Zero-Order\nHold"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Constant"
	      SrcPort		      1
	      Points		      [10, 0]
	      DstBlock		      "Sum"
	      DstPort		      2
	    }
	    Line {
	      SrcBlock		      "Sum"
	      SrcPort		      1
	      DstBlock		      "Quantizer"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Zero-Order\nHold"
	      SrcPort		      1
	      DstBlock		      "Sum"
	      DstPort		      1
	    }
	  }
	}
	Block {
	  BlockType		  SubSystem
	  Name			  "Digital Mirror\nSuppression"
	  Ports			  [4, 2]
	  Position		  [90, 433, 160, 492]
	  ShowPortLabels	  on
	  TreatAsAtomicUnit	  off
	  RTWSystemCode		  "Auto"
	  RTWFcnNameOpts	  "Auto"
	  RTWFileNameOpts	  "Auto"
	  MaskType		  "Digital Image Suppression"
	  MaskDescription	  "Perform Image Suppression in the digital do"
"main for the low IF receiver topology.  The inputs are the I and Q signals of"
" both the I and Q branches. For instance, 'I,Q' is the Q output of the I chan"
"nel."
	  MaskHelp		  "Perform Image Suppression in the digital do"
"main for the low IF receiver topology.  The inputs are the I and Q signals of"
" both the I and Q branches. For instance, 'I,Q' is the Q output of the I chan"
"nel."
	  MaskPromptString	  "Mask Parameter 1:"
	  MaskStyleString	  "popup(Signal Higher than LO|Signal Lower th"
"an LO)"
	  MaskTunableValueString  "on"
	  MaskEnableString	  "on"
	  MaskVisibilityString	  "on"
	  MaskToolTipString	  "on"
	  MaskVariables		  "S=@1;"
	  MaskInitialization	  "if (S==1),\n  g1=1; g2=-1;\nend;\nif (S==2)"
",\n  g1=-1;g2=1;\nend;"
	  MaskDisplay		  "plot(0,0,100,100,[50,50,90,10],[90,50,50,50"
"],[70,70],[60,50],[80,75,65,60],[50,80,80,49]); text(5,35,'Q,I'); text(5,7,'Q"
",Q')\ntext(95,15,'Q'); text(98,80,'I'); text(5,95,'I,I'), text(5, 70,'I,Q');"
"\n"
	  MaskIconFrame		  on
	  MaskIconOpaque	  on
	  MaskIconRotate	  "none"
	  MaskIconUnits		  "autoscale"
	  MaskValueString	  "Signal Higher than LO"
	  System {
	    Name		    "Digital Mirror\nSuppression"
	    Location		    [447, 221, 816, 403]
	    Open		    off
	    ModelBrowserVisibility  off
	    ModelBrowserWidth	    200
	    ScreenColor		    "white"
	    PaperOrientation	    "landscape"
	    PaperPositionMode	    "auto"
	    PaperType		    "usletter"
	    PaperUnits		    "inches"
	    ZoomFactor		    "100"
	    AutoZoom		    on
	    Block {
	      BlockType		      Inport
	      Name		      "I_I"
	      Position		      [25, 108, 55, 122]
	      Port		      "1"
	      Interpolate	      on
	    }
	    Block {
	      BlockType		      Inport
	      Name		      "I_Q"
	      Position		      [25, 23, 55, 37]
	      Port		      "2"
	      Interpolate	      on
	    }
	    Block {
	      BlockType		      Inport
	      Name		      "Q_I"
	      Position		      [25, 58, 55, 72]
	      Port		      "3"
	      Interpolate	      on
	    }
	    Block {
	      BlockType		      Inport
	      Name		      "Q_Q"
	      Position		      [25, 143, 55, 157]
	      Port		      "4"
	      Interpolate	      on
	    }
	    Block {
	      BlockType		      Gain
	      Name		      "Gain"
	      Position		      [95, 100, 125, 130]
	      Gain		      "g1"
	      Multiplication	      "Element-wise(K.*u)"
	      SaturateOnIntegerOverflow	on
	    }
	    Block {
	      BlockType		      Gain
	      Name		      "Gain1"
	      Position		      [95, 50, 125, 80]
	      Gain		      "g2"
	      Multiplication	      "Element-wise(K.*u)"
	      SaturateOnIntegerOverflow	on
	    }
	    Block {
	      BlockType		      Sum
	      Name		      "Sum"
	      Ports		      [2, 1]
	      Position		      [255, 107, 285, 138]
	      IconShape		      "rectangular"
	      Inputs		      "++"
	      SaturateOnIntegerOverflow	on
	    }
	    Block {
	      BlockType		      Sum
	      Name		      "Sum1"
	      Ports		      [2, 1]
	      Position		      [255, 22, 285, 53]
	      IconShape		      "rectangular"
	      Inputs		      "++"
	      SaturateOnIntegerOverflow	on
	    }
	    Block {
	      BlockType		      Outport
	      Name		      "I_Out"
	      Position		      [310, 33, 340, 47]
	      Port		      "1"
	      OutputWhenDisabled      "held"
	      InitialOutput	      "0"
	    }
	    Block {
	      BlockType		      Outport
	      Name		      "Q_Out"
	      Position		      [310, 118, 340, 132]
	      Port		      "2"
	      OutputWhenDisabled      "held"
	      InitialOutput	      "0"
	    }
	    Line {
	      SrcBlock		      "Q_Q"
	      SrcPort		      1
	      Points		      [180, 0]
	      DstBlock		      "Sum"
	      DstPort		      2
	    }
	    Line {
	      SrcBlock		      "Gain"
	      SrcPort		      1
	      DstBlock		      "Sum"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "I_I"
	      SrcPort		      1
	      DstBlock		      "Gain"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Sum"
	      SrcPort		      1
	      DstBlock		      "Q_Out"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Gain1"
	      SrcPort		      1
	      Points		      [110, 0]
	      DstBlock		      "Sum1"
	      DstPort		      2
	    }
	    Line {
	      SrcBlock		      "I_Q"
	      SrcPort		      1
	      DstBlock		      "Sum1"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Sum1"
	      SrcPort		      1

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?