7 7 Lab 2: Budget Analysis Lab 2: System Budget Analysis 7-2 Lab 2: System Budget Analysis 7 LAB 2: BUDGET ANALYSIS ................................................................................................................ 7-1 7.1 OBJECTIVES: .......................................................................................................................................... 7-5 7.2 GAIN AND GAIN COMPRESSION BUDGET: .............................................................................................. 7-5 7.2.1 Schematic Capture and Simulation Setup: ................................................................................. 7-5 7.2.1.1 7.2.1.2 7.2.1.3 7.2.1.4 7.2.2 7.2.2.1 7.2.2.2 Set up the budget analysis ....................................................................................................................... 7-5 Alphabetize the Component Instance Names .......................................................................................... 7-5 Set up a parameter sweep ........................................................................................................................ 7-6 Simulate: ................................................................................................................................................. 7-8 Display Simulation Results: ........................................................................................................ 7-8 Gain Budget (bud_gain function): ........................................................................................................... 7-8 Gain Compression Budget (bud_gain_comp function): ........................................................................ 7-10 7.3 NOISE FIGURE AND SIGNAL-TO-NOISE RATIO BUDGET: ...................................................................... 7-11 7.3.1 Schematic Capture and Simulation Setup: ............................................................................... 7-11 7.3.2 Display Simulation Results: ...................................................................................................... 7-13 7.3.2.1 7.3.2.2 7.3.2.3 Check the Output Frequency: ................................................................................................................ 7-13 Noise Figure Budget (bud_nf function): ............................................................................................... 7-13 Signal-to-Noise Ratio Budget (bud_snr function): ................................................................................ 7-14 7.4 FORMAT THE BUDGET LISTINGS: ......................................................................................................... 7-15 7.4.1 Interdependencies (the “what” function): ................................................................................ 7-15 7.4.2 Data Indexing (the “::” operator): .......................................................................................... 7-16 7.4.3 Independent Variable Values (the “indep” function): .............................................................. 7-17 7.4.4 Find Position in a Vector (the “find_index” Function): .......................................................... 7-17 7.4.5 Putting it all together: .............................................................................................................. 7-18 7.5 BUDGET ANALYSIS WITH AN ADDITIONAL AMPLIFIER: ....................................................................... 7-18 7.6 REVIEW OF LAB2: ................................................................................................................................ 7-20 7-3 Lab 2: System Budget Analysis 7-4 Lab 2: System Budget Analysis 7.1 Objectives: Perform HB budget analysis of a transmitter Perform AC budget analysis of a receiver 7.2 Gain and Gain Compression Budget: 7.2.1 Schematic Capture and Simulation Setup: 7.2.1.1 Set up the budget analysis 1. Open the project d:\users\ads\CommSys_Lab2. 2. Open the design “a_xmtr” (identical with “c_xmtr_basic_amps_filters” that was saved in Lab1). 3. “Save As…” the design with the new name “b_xmtr_budget_gain”. 4. Edit the Harmonic Balance controller (double click on it). Set the following parameters: a. under the “Params” tab: Perform Budget simulation to yes (check box). to yes (check box). b. under the Display tab: OutputBudgetIV The HB simulator will now generate additional data to create budget measurements in the Data Display window. The controller should look like this: 7.2.1.2 Alphabetize the Component Instance Names The names of the components need to be changed (in the schematic window) to ensure the budget measurements will appear in the correct (signal flow) order in the DDS window. 7-5 Lab 2: System Budget Analysis Change the component names as follows (type over existing names directly on the screen): z0_PORT1 (IF Source) a0_MIX1 a1_BPF1 a2_Preamp a3_Poweramp a4_BPF2 a5_Term2 (RF Load) z1_PORT2 (LO Source) NOTE: The z* designators force these elements to the bottom of the list, thus getting them out of the way of the “critical path” elements on the list. Save the schematic (it should already have the name “b_xmtr_budget_gain”). The schematic should look like the following one: 7.2.1.3 Set up a parameter sweep The gain and gain compression of each component will be computed using the functions: “bud_gain()” and “bud_gain_comp()”. The “bud_gain_comp()” function computes gain compression by taking the difference between the small signal (linear) gain and the large signal gain using a swept input source, where the lowest input power level is used to calculate the small-signal gain. A parameter sweep will be used to sweep the input power for the “bud_gain_comp()” function. 7-6 Lab 2: System Budget Analysis 1. Edit the following parameters: a. On the VAR component add a variable p_in: p_in to – units to None. -10 _dBm b. On the IF source P_1Tone named A_Port1: P to p_in dBm In “Edit Component Parameters” window: value=”p_in” and units=“dBm” type in, directly in the schematic window: dbmtow(p_in) OR 2. Insert a “ParamSweep” from the “Simulation-HB” library to sweep the input power from -50 dBm to -10 dBm with Step = 40. A minimum of two power points is sufficient to compute gain compression. Set the following parameters, using the Edit Component Parameters dialog window (double click on the component to bring up this window): a. Under Sweep tab: SweepVar to p_in Start to -50 _dBm Stop to -10 _dBm Step to 40 _dBm b. Under Simulations tab: Simulation1 to HB1 (name of the harm. balance simulation controller). Please note that the underscore means the text following it is just a comment. So, _dBm is just a reminder for the user that this value is given in dBm. The _dBm does not set the units to dBm; this is done in the power source component, where P has the value of p_in with the units set to dBm. VAR VAR1 IF_freq=70 MHz LO_freq=766.5 MHz RF_freq=LO_freq+IF_freq p_in=-10 _dBm ParamSweep Sweep1 SweepVar="p_in" SimInstanceName[1]="HB1" SimInstanceName[2]= SimInstanceName[3]= SimInstanceName[4]= SimInstanceName[5]= SimInstanceName[6]= Start=-50 _dBm Stop=-10 _dBm Step=40 _dBm 7-7 Lab 2: System Budget Analysis The final schematic is shown below: 7.2.1.4 Simulate: Perform the simulation. The dataset should default to “b_xmtr_budget_gain” (you can check this under Simulate>Simulation Setup…). 7.2.2 Display Simulation Results: 7.2.2.1 Gain Budget (bud_gain function): 1. A DDS window should open automatically with “b_xmtr_budget_gain” as the default dataset. 2. Insert an equation to compute the gain at the given input frequency from the system input to pin 1 of each component: xmtr_bud_gain=bud_gain("z0_PORT1",1,,1) 7-8 Lab 2: System Budget Analysis NOTE about the bud_gain arguments (also see “Functions Help”): “z0_PORT1” is the name of source supplying the input power The second parameter is the frequency index of desired input tone. Here, it is 70 MHz, where index=1. There can, however, be multiple input tones. The last parameter is the number of the HB frequency plan. The function bud_freq will return the frequencies used. In this case, there is only one plan, so it is set to 1. 3. Insert a “List” under the xmtr_bud_gain equation. When the dialog appears, scroll down to the “Equations” and select the equation “xmtr_bud_gain”. However, before adding this equation to the Traces field, choose the “Plot Options” tab and select “Transpose Data”. This will put the component names in a leftjustified column and the data in adjacent columns as shown below: Eqn xmtr_bud_gain=bud_gain("z0_PORT1",1,,1) Component a1_MIX1 a2_BPF1 a3_Preamp a4_Poweramp a5_BPF2 a6_Term2 z0_PORT1 z1_PORT3 xmtr_bud_gain p_in=-50.000 p_in=-10.000 -0.000 0.000 -6.500 -6.500 -7.500 -7.500 22.500 22.344 34.500 31.598 33.500 30.598 0.000 0.000 57.000 17.000 NOTE: Notice that bud_gain() is displaying the gain values for both the -50 dBm and -10 dBm input power levels due to the parameter sweep. The gain compression of the power amplifier can be observed. QUESTION: Recall that bud_gain function returns the gain of the system from system input to the input terminal of the corresponding component. For example, the input of a2_BPF1 (also the output of a1_MIX1) has a value of –6.5 dB gain, the conversion loss of the mixer. How much compression do the two amplifier stages have at -10 dBm input power? Write your answers below: a3_Preamp: _____ dB compression a4_Poweramp _____ dB compression 7-9 Lab 2: System Budget Analysis 7.2.2.2 Gain Compression Budget (bud_gain_comp function): The gain compression of each component will be computed using the function: “bud_gain_comp ()”. 1. Insert an equation in the DDS window: xmtr_bud_gain_comp = bud_gain_comp("z0_PORT1",1,,1) where "z0_PORT1" is the input source, 1 is the index of the source tone, and 1 is the number of the HB frequency plan The equation xmtr_bud_gain_comp returns the gain compression at the given input frequency from the input to pin 1 of each component. 2. Insert a list and add the equation as in the previous steps. The data should appear similar to the following table: Eqn xmtr_bud_gain_comp=bud_gain_comp("z0_PORT1",1,,1) Component a1_MIX1 a2_BPF1 a3_Preamp a4_Poweramp a5_BPF2 a6_Term2 z0_PORT1 z1_PORT3 xmtr_bud_gain_comp p_in=-50.000 p_in=-10.000 0.000 -0.000 0.000 0.000 0.000 0.000 0.000 0.156 0.000 2.901 0.000 2.901 0.000 0.000 0.000 40.000 Because a parameter sweep was performed, the function returns data at both values of the swept parameter (p_in=-50 dBm and –10dBm). The gain compression is simply the difference between the gain at p_in=-50 dBm and the gain at p_in=-10 dBm. The Preamp shows only slight compression, while the Poweramp shows significant compression. Recall that the table entry for each component is the compression from the system input to the component's input pin. 3. Save the data display window with the name “b_xmtr_budget_gain”. 7-10 Lab 2: System Budget Analysis 7.3 Noise Figure and Generate Budget Path: 7.3.1 Schematic Capture and Simulation Setup: NOTE: The following steps use a design that has been created for this lab. 1. Open the design “c_rcvr” from the CommSys_Lab2_prj that you are currently in. Note the presence of an AC simulation controller. The AC controller must be edited to enable frequency conversion and budget data. 2. “Save As…” the design with the new name “d_rcvr_budget”. 3. In the AC controller set the following parameters: a. Under “Frequency” tab: Note that a single frequency of 1 GHz is specified. This frequency has no meaning, as the simulation frequencies are explicitly set by the sources when AC analysis is performed on frequency converter designs. Although this frequency has no real meaning, for unambiguous results display, set it to: Freq to – units set to None. RF_freq b. Under “Noise” tab: Calculate noise to yes Nodes for noise parameter calculation to vout – check box Select “vout” from the “Edit” field and use the “Add” button to add it to the “Select” field. Include port noise to yes – check box. c. Under “Parameters” tab: Enable AC frequency conversion to yes – check box Perform Budget simulation to yes - check box. d. Under “Display” tab: CalcNoise NoiseNode to – check box yes to yes – check box 7-11 Lab 2: System Budget Analysis IncludePortNoise to yes – check box BandwidthForNoise to yes – check box FreqConversion to yes – check box OutputBudgetIV to yes – check box Freq to yes - check box The AC simulation controller should look like the following at this point: AC AC1 CalcNoise=yes NoiseNode[1]="vout" IncludePortNoise=yes BandwidthForNoise=1 Hz FreqConversion=yes OutputBudgetIV=yes Freq=RF_freq 4. Save the schematic (the name should already be set to “d_rcvr_budget”). 5. The “Generate Budget Path” function in the Simulate menu helps you to specify a signal path for a budget analysis. Select the starting and ending component for the analysis. Press Generate to have a budget path measurement equation created. Press Highlight to have the signal path highlighted on the schematic. 7-12 Lab 2: System Budget Analysis 6. Simulate the design. The dataset name should default to “d_rcvr_budget”. Note: The “Options” item in the schematic window is required to set the temperature for the noise simulation. 7.3.2 Display Simulation Results: 7.3.2.1 Check the Output Frequency: 1. Open a new DDS window and select the dataset “d_rcvr_budget”. 2. Save the data display window with the name “d_rcvr_budget”. 3. Insert a list with the measurement data “vout.fss”. The controller sets the value of freq, while the actual output frequency is given by the fss measurement. This verifies that the IF output frequency is the difference between the RF and LO frequencies. Also, note the frequency displayed has the value of RF_freq; this display is due to setting the frequency to RF_freq in the AC controller (remember its value has no meaning in a frequency conversion measurement). freq 858.5MHz 7.3.2.2 vout.fss 70.00MHz Noise Figure Budget (bud_nf function): 1. Insert an equation in the DDS window: NF = bud_nf (budget_path) 2. Insert a list and add the equation. Be sure to use the plot option “Transpose Data” as in the previous steps. The results should be similar to those shown 6 Eqn NF=bud_nf(budget_path) 5 3 2 1 0 a6_Term3.t1 a5_GAIN.t2 a4_BPF2.t2 a3_MIX.t2 a2_LNA.t2 a1_BPF1.t2 below: 4 a0_PORT1.t1 a0_PORT1.t1 a1_BPF1.t2 a2_LNA.t2 a3_MIX.t2 a4_BPF2.t2 a5_GAIN.t2 a6_Term3.t1 NF freq=858500000.000 0.000 1.000 3.500 3.618 3.675 5.202 5.202 NF[::,0] Component Component, M Insert a plot of NF. In order to have the 7-13 Lab 2: System Budget Analysis components names on the X-axis it’s necessary to specify NF[::,0]. Try adding the [::,0] directly to the NF parameter on the plot! 7.3.2.3 Signal-to-Noise Ratio Budget (bud_snr function): The signal-to-noise ratio of the system can be computed using the “bud_snr” function. Insert the following equation in the DDS window and place it in a list: rcvr_bud_snr = bud_snr(,budget_path) Eqn bud_SNR=bud_snr(,budget_path) 90 bud_SNR[::,0] 89 88 87 86 85 84 a6_Term3.t1 a5_GAIN.t2 a4_BPF2.t2 a3_MIX.t2 a2_LNA.t2 a1_BPF1.t2 a0_PORT1.t1 Component This computation can be validated using the noise power equation: Pn = kTB. This results in a noise spectral density of -174 dBm/Hz. The noise bandwidth is set to 1 Hz in the controller, so the input noise power is -174 dBm. The input signal is -84 dBm, resulting in an approximate input SNR of -84 - (-174) = 90 dB. The expected degradation in SNR is caused by the two noisy gain stages. 7-14 Lab 2: System Budget Analysis 7.4 Format the Budget Listings: This exercise will introduce a few new concepts for use in the data display. In the xmtr_budget_gain DDS window we examined the gain and gain compression of an up-converter chain. However, Port2 was included in the gain chain results listing. It would be preferable to display only the items up to and including the output port for the termination. On the data display we will use the following new functions and operators: :: Variable info… find_index indep To prepare for these examples, please perform the following steps: 1. Open a new data display and name it (“Save As…”) “b1_xmtr_budget_gain_sort”. 2. Set the default data set to “b_xmtr_budget_gain”. 3. Add the following equations: Eqn xmtr_bud_gain=bud_gain("z0_PORT1",1,,1) Eqn xmtr_bud_gain_comp=bud_gain_comp("z0_PORT1",1,,1) 7.4.1 Variable info…: The “Variable info…” feature can be used to gather information about data in the data display. Double-click on any equation or plot and use the Browse Data function to locate the response parameter or equation in the DDS window. Here “xmtr_bud_gain” is a 2dimensional scalar matrix. The first index is the “component” index and the second element is the “p_in” index. 7-15 Lab 2: System Budget Analysis 7.4.2 Data Indexing (the “::” operator): The “::” operator is used to index data in a data array on the DDS page. Three transposed listing boxes of the xmtr_bud_gain data array are shown below. The first just lists the data: Component a1_MIX1 a2_BPF1 a3_Preamp a4_Poweramp a5_BPF2 a6_Term2 z0_PORT1 z1_PORT3 xmtr_bud_gain p_in=-50.000 p_in=-10.000 -0.000 0.000 -6.500 -6.500 -7.500 -7.500 22.500 22.344 34.500 31.598 33.500 30.598 0.000 0.000 57.000 17.000 There are two ways to use the “::” operator. First if the operator is used with no numbers on either side, then the “::” operator selects the entire index of that array. Therefore “xmtr_bud_gain” is identically equal to “xmtr_bud_gain[::,::]” as shown below. A fast way to make this change is to click directly on “xmtr_bud_gain” in the data table and add the “[::,::] to the end. The results will immediately update with the new data. Component a1_MIX1 a2_BPF1 a3_Preamp a4_Poweramp a5_BPF2 a6_Term2 z0_PORT1 z1_PORT3 xmtr_bud_gain[::,::] p_in=-50.000 p_in=-10.000 -0.000 0.000 -6.500 -6.500 -7.500 -7.500 22.500 22.344 34.500 31.598 33.500 30.598 0.000 0.000 57.000 17.000 Lastly, if numbers are included on both sides of the :: operator you can explicitly select a subset of the data array. Therefore “xmtr_bud_gain[0::3,::] selects the first 4 rows of data and all the columns of data as shown below. Component a1_MIX1 a2_BPF1 a3_Preamp a4_Poweramp 7-16 xmtr_bud_gain[0::3,::] p_in=-50.000 p_in=-10.000 -0.000 0.000 -6.500 -6.500 -7.500 -7.500 22.500 22.344 Lab 2: System Budget Analysis 7.4.3 Independent Variable Values (the “indep” function): Use the “indep” function to display the component values in a listing box. The “indep” function is used to gather the values associated with a particular index in an array of data. Apply the “indep” function as show below to get the names of the indep(xmtr_bud_gain[::,0]) a1_MIX1 a2_BPF1 a3_Preamp a4_Poweramp a5_BPF2 a6_Term2 z0_PORT1 z1_PORT3 components. 7.4.4 Find Position in a Vector (the “find_index” Function): The “find_index” function can be used to get the index of a piece of data in a vector. As shown below the “find_index” function can be added to the previous listing box to find the index value of the "a6_Term2" element. The "a6_Term2" element is the 7th element in the array (the 1st element has the index 0). find_index(indep(xmtr_bud_gain[::,0]),"a6_Term2") 5 7-17 Lab 2: System Budget Analysis 7.4.5 Putting it all together: Add the following equations to your DDS. Eqn last=find_index(indep(xmtr_bud_gain[::,0]),"a6_Term2") Eqn IF2RF_bud_gain=xmtr_bud_gain[0::last,::] Eqn IF2RF_bud_gain_comp=xmtr_bud_gain_comp[0::last,::] The equation named “last” is the index value for "a6_Term2". It is used in the next two equations to get only the IF to RF gain and the IF to RF gain compression. We can now create a listing box to display those values: Component a1_MIX1 a2_BPF1 a3_Preamp a4_Poweramp a5_BPF2 a6_Term2 IF2RF_bud_gain p_in=-50.000 p_in=-10.000 -0.000 0.000 -6.500 -6.500 -7.500 -7.500 22.500 22.344 34.500 31.598 33.500 30.598 IF2RF_bud_gain_comp p_in=-50.000 p_in=-10.000 0.000 -0.000 0.000 0.000 0.000 0.000 0.000 0.156 0.000 2.901 0.000 2.901 NOTE: You may notice some of the numbers on your data display page are in scientific notation, i.e. –1.446E-15. In the box above the numbers were represented as type Full instead of Auto. To do this double-click on the table and select the Plot Options tab and change the format from Auto to Full. 7.5 Budget Analysis with an Additional Amplifier: 1. Open the schematic “b_xmtr_budget_gain”. 2. “Save As…” the schematic with the new name “e_xmtr_budget_gain_amp”. 3. Copy the a3_Preamp and insert the new amplifier in between the first band-pass filter, a2_BPF1, and the preamplifier itself, a3_Preamp. 4. Change the settings for the following parameters on the new amplifier: Instance Name S21 7-18 to a3a_Amp to dbpolar (10,0) – units to None. Lab 2: System Budget Analysis 5. Perform the simulation. The data set name should default to “e_xmtr_budget_gain_amp”. 6. “Save As…” the data display window “b1_xmtr_budget_gain_sort” with the new name “e_xmtr_budget_gain_amp”. 7. Change the default data set name to “e_xmtr_budget_gain_amp”. The final table in the data display window should show the following results: Component a1_MIX1 a2_BPF1 a3a_Amp a3_Preamp a4_Poweramp a5_BPF2 a6_Term2 IF2RF_bud_gain p_in=-50.000 p_in=-10.000 -0.000 0.000 -6.500 -6.500 -7.500 -7.500 2.500 2.498 32.500 30.798 44.497 32.095 43.497 31.095 IF2RF_bud_gain_comp p_in=-50.000 p_in=-10.000 0.000 -0.000 0.000 0.000 0.000 0.000 0.000 0.002 0.000 1.701 0.000 12.402 0.000 12.402 7-19 Lab 2: System Budget Analysis Note: Since we used the “find_index” function, updates of the listing will still not include PORT3. 7.6 Review of Lab2: In this lab, budget analysis was performed on the transmitter design to observe the gain and gain compression at each stage in the cascade of elements. Budget analysis was also performed on a receiver design to observe the NF and SNR degradation at each stage. Budget is a useful tool for determining where the performance degradation is occurring in a system. This allows the system designer to optimize the performance of specific components in the system to meet the overall system design specifications. 7-20