US20140078316A1
2014-03-20
13/622,683
2012-09-19
US 8,675,078 B1
2014-03-18
-
-
Jefferey Harold | Mustafizur Rahman
Robert D. Shedd | Robert B. Levy
2032-09-19
A test system (200) for testing for missing or shorted parts within a tuner circuit includes a signal generator (202) for applying a harmonic-containing baseband time varying RF test signal to the tuner circuit. The tuner circuit is tuned to a harmonic of test signal. A detector 208 coupled to the baseband IF output of the tuner circuit detects the voltage generated in response to the applied RF test signal. A voltage measurement device (210) measures voltage detected by detector to provide an indication of the gain. Significant changes in the gain indicate missing part(s) or short circuits.
Get notified when new applications in this technology area are published.
H04N17/04 » CPC main
Diagnosis, testing or measuring for television systems or their details for receivers
H04N17/00 IPC
Diagnosis, testing or measuring for television systems or their details
H04N17/02 IPC
Diagnosis, testing or measuring for television systems or their details for colour television signals
This application claims priority under 35 U.S.C. 119(e) to U.S. Provisional Patent Application Ser. No. 61/451,439, filed Sep. 30, 2011, the teachings of which are incorporated herein.
This invention relates to a technique for testing set-top boxes and the like.
Current day set-top boxes typically include one of more tuners for tuning RF signals for extracting signals transmitted by a satellite or cable television service provider. A typical set top box tuner will include various components, including various integrated circuits, as well as passive components, (e.g., resistors, inductors, and capacitors) mounted on a circuit board inside an enclosure. Due to the limitation of board space and the nature of the RF signal received by the set-top box tuner, detection of missing parts and short circuits (βshortsβ) has proved a challenge because of the difficulty in adding one or Integrated Circuit Test points on the circuit board for this purpose. Thus, other mechanisms become necessary to detect missing parts or shorts in the tuner circuit during product assembly.
In the past, set-top box manufacturers have relied on the Media over Cable Association (MOCA) transmission (TX) signal for detecting missing part(s) or shorts in the tuner circuit during product assembly. However, if the set-top box does not have a MOCA transmitter, another test technique becomes necessary. Moreover, the MOCA transmission signal frequency has a limited frequency range (475-625 MHz), whereas the parts in a set-top box tuner typically operate in a frequency range of 950-2150 MHz. Thus, the coverage range of the MOCA frequency for checking for shorted or missing parts is limited.
Thus, a need exists for a technique for testing a set-top box capable of checking the working frequency range of components within the box.
A method for testing for missing or shorted parts within a tuner circuit commences by applying a harmonic-containing baseband time varying RF test signal to the tuner circuit. The tuner circuit is tuned to a harmonic of test signal. Thereafter, a baseband IF output of the tuner circuit measured to detect gain. If any part is missing or shorted, the gain will exhibit significant change.
FIG. 1 depicts an exemplary schematic diagram of a tuner circuit of a typical set-top box;
FIG. 2 depicts a test apparatus for testing the tuner circuit of FIG. 1;
FIG. 3 depicts an exemplary spectrum of a 10 MHz square wave test signal from the test apparatus of FIG. 2 for the frequency spectrum of 400 MHz to 500 MHz;
FIG. 4 depicts an exemplary spectrum of a 10 MHz square wave test signal from the test apparatus of FIG. 2 for the frequency spectrum of 2.0 GHz to 2.1 GHz;
FIG. 5 depicts an exemplary spectrum of a 10 MHz square wave test signal from the test apparatus of FIG. 2 for the frequency spectrum of 400 MHz to 2.2 GHz;
FIG. 6 depicts a graph showing a Voltage versus dBm curve produced by a log detector of the test apparatus of FIG. 2;
FIG. 7 depicts a graph showing measured gain versus high-pass measured gain produced by the test apparatus of FIG. 2;
FIG. 8 depicts a graph showing Automatic Gain Control (AGC) during gain measurement by the test apparatus of FIG. 2;
FIG. 9 depicts a graph showing the tuner baseband output measured by the test apparatus of FIG. 2;
FIG. 10 depicts a set of graphs of gain versus frequency measured by the test apparatus of FIG. 2 when various components are missing from the tuner circuit of FIG. 1
FIG. 11 depicts graphs of gain versus frequency successively measured by the test apparatus of FIG. 2 when individual various components are successively removed from the tuner circuit of FIG. 1;
FIG. 12 depicts a graph showing averages of the gain versus frequency when successive components are removed from the tuner circuit of FIG. 1 to establish a unique signature for each part in the tuner circuit of FIG. 1.
FIG. 1 depicts an exemplary high-pass filter circuit 10 of the type commonly found in satellite set-top boxes. The circuit 10 includes an antenna jack 12 coupled to an antenna 14. An inductor 16 passes a DC voltage from a DC supply (not shown) on a line 17 coupled to a line 18 from the antenna jack. A gas discharge tube 19 and capacitors 20 and 22 each shunt the line 18 to ground. The series combination of an inductor 24, a capacitor 26, and a resistor 28 shunt the line 18 to ground. A series combination of capacitors 24, 32, 34, and 36 coupled the line 18 to an output 37 of the circuit 10. A separate one of inductors 38, 40 and 42 shunts a respective one of capacitors 32, 34 and 36, respectively. An inductor 44 shunts the junction between capacitors 32 and 34 to ground whereas the inductor 46 shunts the junction between capacitors 34 and 36 to ground. An inductor 47 shunts the output 37 of the tuner circuit 10 to ground.
In practice, the components of the circuit 10 described above reside on a circuit board (not shown). Due to constraints on the size of the circuit board, placement of test pads becomes very difficult so use of a functional test technique becomes necessary to detect missing tuner components during manufacture. If the part is missing in circuit 10, the gain will typically show a significant change. Therefore, measurement of the gain of the circuit 10 during production can provide a mechanism for detecting one or more missing parts. A commercial Vector Network Analyzer (VNA) can easily measure the gain. However, such devices have a high cost, effectively prohibiting their use.
In accordance with the present principles, gain measurement can occur using a low-cost test system 200 depicted in block schematic form in FIG. 2. As discussed in detail below, the test system 200 includes a signal generator 202 for applying a time-varying RF signal test signal, for example, a square wave rich in harmonics so that the periodic spectrum of the test signal drives the test circuit 10 of FIG. 1. The circuit 10 can tune to one of the harmonics of the test signal. Measuring the baseband output of the circuit 10 using a log detector enables calculation of the gain.
In practice, the signal generator 202 of the system 200 provides a 10 MHz square-wave signal to the antenna input of the circuit 10 of FIG. 1 through an impedance match and DC-blocker 204. The test system 200 also includes a band pass filter 206 for band-pass filtering the output of the circuit 10 for receipt by a log detector 208, typically, although not necessarily, an Analog Devices model AD8306 High Precision Limiting-Logarithmic Amplifier. A voltage-measuring device 210, such as, but not limited to, a Hewlett Packard Model 34401A multi-meter, serves to determine the voltage produced at the output of the log detector 208. Thus, the voltage-measuring device 210 provides a measure of the gain of the circuit 10 in response to the time-varying harmonic-rich signal received at the input of the circuit 10 from the signal generator 202.
As previously discussed, the conventional approach to testing the circuit 10 of FIG. 1 would make use of a Vector Network Analyzer (not shown) having a tracking signal generator that would sweep the frequency of the signal applied to the input circuit 10. The test system 200 of FIG. 2 does not need require the use of such a tracking generator since the harmonic-rich square wave output signal of the signal generator 202 has proven successful in practice to sweep the input of the circuit 10 during testing.
FIG. 3 and Table 1 show the spectrum of a square wave, 10 MHz, 0.517Vpp (with 50 ohm load) produced by the signal generator 202 of FIG. 2.
| TABLE 1 | |||
| MHz | dBm | Note | |
| 10 | 0 | Fundamental | |
| 110 | β20.6 | ||
| 410 | β32.7 | ||
| 610 | β36.1 | ||
| 950 | β53 | ||
| 1510 | β70 | Sinc function zeros | |
| 2010 | β65 | ||
| 2190 | β67 | Tuner can reach | |
| β70 dBm | |||
When testing a circuit 10 used in satellite set-top boxes, for example the circuit 10, using a square wave instead of other waveforms remains preferable because the satellite path typically will have a High Pass Filter, with a 50 dB MOCA band rejecter. Under such circumstances, a stronger input signal in the frequency range of 475 to 625 MHz becomes necessary to test this band.
A typical tuner in a Set-top Box can tune down to 270 MHz, which covers what the frequency range needed for testing purposes. Most tuners have Automatic Gain Control (AGC), which participates in the gain measurement. For a Broadcom SOC BCM7313 chip used in typical satellite set-top boxes, the AGC range can be measured by the following steps:
2) Kill the ISR (optional)
3) Write AII and AIT to manually control the IF and RF gain.
Using this approach, the tuner AGC ranges are:
IF gain: 0-30 dB when AII changes from 0x0000 0000 to 0xffff fff0
RF gain: 0-26 dB when AIT changes from 0x0000 0000 to 0xffff 0000
gain_dB=IF_dBm-sigLevel_dBm+56-IF_AGC_dB-RF_AGC_dB
RF_AGC_dB(i)=26/65535*(oemRtVal(3)*256+oemRtVal(4));
IF_AGC_dB(i)=30/65535*(oemRtVal(7)*256+oemRtVal(8));
FIG. 6 and Table 2 below lists depicts voltage values measured by the log detector 208 of FIG. 2 for different level output signals of the tuner circuit 10 under test. 2.
| TABLE 2 | ||
| dBm | V | |
| 0 | 2.1511 | |
| β20 | 1.7331 | |
| β40 | 1.3238 | |
| β60 | 0.914 | |
| β80 | 0.5108 | |
Table 3 depicts exemplary test results for the circuit 10 undergoing testing via the test system 200 of FIG. 2
| TABLE 3 | |||||
| Tune_freq | RF_freq | RF_dBm | IF_freq | IF_dBm | Gain |
| 530.7 | 520 | β41 | 10.7 | β67 | β26 |
| 2020.7 | 2010 | β66 | 10.7 | β45 | 21 |
| 1020.7 | 1010 | β54 | 10.7 | β40 | 14 |
| 860.7 | 850 | β50 | 10.7 | β41.5 | 8.5 |
FIG. 8 depicts the change in AGC during gain measurement. FIG. 9 depicts a graph of IF output versus frequency, showing peaks at approximately 500 MHz, 1000 MHz, and 1900 Mhz.
FIG. 10 depicts a graph of gain versus frequency when no parts are missing and when individual parts are missing such as capacitors 34 or 30. FIG. 11 depicts a set of gain versus frequency curves obtained when of an individual one of the components of the circuit 10 under test was removed.
FIG. 12 represents an average of a collection gain versus frequency measurements as depicted in FIG. 11. Each component part was removed one at a time and the gain was measured in the manner described using the system 200 to apply a harmonic rich time-varying RF signal to the circuit 10. The process was repeated to collect four graphs. The graphs were then passed through a computer program, such as Matlab, from Mathworks, to read the data from each graph, produce an average of the data, and plots it to a common graph with all other averaged data. The graph of FIG. 12 provided the basis for picking six frequencies for missing part identification. The frequencies chosen were (in MHz) 410, 550, 610, 910, 1510, 2150. Using these points each part should have a unique signature.
Using the aforementioned Matlab computer program, the gain for the six points is processed using the βcompare.mβ and βcompare_direct.mβ user defined Matlab scripts. The compare.m function takes the original missing parts data and compares it to the averaged data to see if each part will be identified correctly when compared to the template. The compare_direct.m function of the Matlab program uses the executables βoem.exeβ and βmtune.exeβ to configure and tune the tuner directly in order to test circuit 10. Only the 6 points of interest are measured to decrease time taken for testing. Once the measurements are made the data is compared to each part template.
The following constitutes the software for performing the following functions:
| +β |
| % File Name: measure_gain,m |
| % This program drives HP8594A SA, to measure the circuit 10 gain curve. |
| clear all; |
| %close all; |
| load sigLevel_dBm |
| [stat, str]= system(βgpibwrite 18 SP 0.1MHZβ); |
| [stat, str]= system(βgpibwrite 18 CF 10.7MHZβ); |
| [stat, str]= system(βgpibwrite 18 RL -35β); β% reference level |
| oemRtVal=zeros(11,1); |
| freq_MHz_set=410:20:2150; % to measure the square wave harmonic |
| IF_dBm=zeros(1,length(freq_MHz_set)); |
| RF_agc_dB=zeros(1,length(freq_MHz_set)); |
| IF_agc_dB=zeros(1,length(freq_MHz_set)); |
| IF_MHz=10.7; |
| for i=1:length(freq_MHz_set) |
| cmd=sprintf(βmtune %fβ, (freq_MHz_set(i)+IF_MHz)); |
| [stat, str]= system(cmd); |
| pause(0.5) |
| [stat, str]= system(βgpibwrite 18 MKPKβ); |
| [stat, str]= system(βgpibQuery 18 MKA?β); |
| IF_dBm(i)=(sscanf(str,β%eβ)); |
| %now we can read AGC value, keep AGC alive |
| [stat, str]= system(βoem 11 fa e0 d5 01β); |
| oemRtVal=sscanf(str(48:length(str));β=>DEC: %d %d %d %d %d %d %d %d %d %d %dβ); |
| RF_AGC_dB(i)=26/65535*(oemRtVal(3)*256+oemRtVal(4)); |
| IF_AGC_dB(i)=30/65535*(oemRtVal(7)*256+oemRtVal(8)); |
| disp ( [freq_MHz_set(i),IF_dBm(i), RF_AGC_dB(i), IF_AGC_dB(i)]) |
| end |
| gain_dB=IF_dBm-sigLevel_dBm+56-IF_AGC_dB-RF_AGC_dB; |
| plot(freq_MHz_set,gain_dB) |
| grid on |
| hold on |
| title (βGain vs. MHz β); |
| xlabel(βMHzβ); |
| ylabel(βdBβ); |
| figure (2) |
| AGC_dB=IF_AGC_dB+RF_AGC_dB; |
| plot(freq_MHz_set,(AGC_dB)) |
| grid on |
| hold on |
| title (βAGC vs. MHz β); |
| xlabel(βMHzβ); |
| ylabel(βdBβ); |
| figure (3) |
| plot(freq_MHz_set,IF_dBm) |
| grid on |
| hold on |
| title (βIF output vs. MHz β); |
| xlabel(βMHzβ); |
| ylabel(βdBmβ); |
| figure(1); |
| load freq; |
| plot(freq, S21+15,βrβ); |
| legend(βLow costβ,βHP8753Dβ); |
| ----------------------------------------------------------------------- |
| % File name:measure_squarewave_spectrum.m |
| % This program drives HP8594A SA, to measure square wave spectrum. |
| % Manual set the SA to RBW=100kHz, Reference level β14dBm |
| clear all; |
| %cmd=sprintf(βgpibclear 18β); %reset sA |
| %[stat, str]= system(cmd); |
| %freq_MHz_set=410:20:2150; % to measure the square wave harmonic |
| freq_MHz_set=410:20:990; % to measure the square wave harmonic |
| %amp_dBm=zeros(1,length(freq_MHz_set)); |
| sigLevel_dBm=zeros(1,length(freq_MHz_set)); |
| for i=1:length(freq_MHz_set) |
| cmd=sprintf(βgpibwrite 18 CF %dMHzβ, freq_MHz_set(i)); |
| [stat, str]= system(cmd); |
| pause(1) |
| [stat, str]= system(βgpibwrite 18 MKPKβ); |
| [stat, str]= system(βgpibQuery 18 MKA?β); |
| sigLevel_dBm(i)=(sscanf(str,β%eβ)) |
| end |
| plot(freq_MHz_set,sigLevel_dBm) |
| grid on |
| hold on |
| title (βMHz vs. dBmβ); |
| xlabel(βMHzβ); |
| ylabel(βdBmβ); |
| % File Name: measure_gain,m |
| % This program drives HP34401A multi-meter, to measure the circuit 10 gain curve with log |
| detector. |
| clear all; |
| close all; |
| load sigLevel_dBm |
| %[stat, str]= system(βgpibwrite 18 SP 0.1 MHZβ); |
| %[stat, str]= system(βgpibwrite 18 CF 10.7MHZβ); |
| %[stat, str]= system(βgpibwrite 18 RL -35β); % reference level |
| oemRtVal=zeros(11,1); |
| freq_MHz_set=410:20:2150; % to measure the square wave harmonic |
| IF_dBm=zeros(1,length(freq_MHz_set)); |
| RF_agc_dB=zeros(1,length(freq_MHz_set)); |
| IF_agc_dB=zeros(1,length(freq_MHz_set)); |
| IF_MHz=10.7; |
| k=48.83409; % y=kx+b for log detector. |
| b=β104.634; |
| for i=1:length(freq_MHz_set) |
| cmd=sprintf(βmtune %fβ, (freq_MHz_set(i)+IF_MHz)); |
| [stat, str]= system(cmd); |
| pause(1) |
| %[stat, str]= system(βgpibwrite 18 MKPKβ); |
| %[stat, str]= system(βgpibQuery 18 MKA?β); |
| %IF_dBm(i)=(sscanf(str,β%eβ)); |
| [stat, str]= system(βgpibQuery 22 MEAS:VOLT:DC?β); |
| volt=(sscanf(str,β%eβ)); |
| IF_dBm(i)=k*volt+b; |
| %now we can read AGC value, keep AGC alive |
| [stat, str]= system(βoem 11 fa e0 d5 01β); |
| oemRtVal=sscanf(str(48:length(str)),β=>DEC: %d %d %d %d %d %d %d %d %d %d %dβ); |
| RF_AGC_dB(i)=26/65535*(oemRtVal(3)*256+oemRtVal(4)); |
| IF_AGC_dB(i)=30/65535*(oemRtVal(7)*256+oemRtVal(8)); |
| disp ( [freq_MHz_set(i),IF_dBm(i), RF_AGC_dB(i), IF_AGC_dB(i)]) |
| end |
| gain_dB=IF_dBm-sigLevel_dBm+56-IF_AGC_dB-RF_AGC_dB; |
| plot(freq_MHz_set,gain_dB) |
| grid on |
| hold on |
| title (βGain vs. MHz β); |
| xlabel(βMHzβ); |
| ylabel(βdBβ); |
| figure (2) |
| AGC_dB=IF_AGC_dB+RF_AGC_dB; |
| plot(freq_MHz_set,(AGC_dB)) |
| grid on |
| hold on |
| title (βAGC vs. MHz β); |
| xlabel(βMHzβ); |
| ylabel(βdBβ); |
| figure (3) |
| plot(freq_MHz_set,IF_dBm) |
| grid on |
| hold on |
| title (βIF output vs. MHz β); |
| xlabel(βMHzβ); |
| ylabel(βdBmβ); |
| figure(1); |
| load freq; |
| plot(freq, S21+15,βrβ); |
| legend(βLow costβ,βHP8753Dβ); |
| %this program will take existing .fig files, extract the data |
| %and graph the data to a single plot. As well as an average of |
| %the plotted data. |
| %merge_graphs.m |
| clc |
| clear |
| close all |
| ext = {β,figβ}; |
| graphs = {βAGCvsMHzβ;βGainvsMHzβ;βTFvsMHzβ}; |
| parts = {βnomissingβ;βLZ108β;βEZ109β;βCZ115β;βCZ117β;βCZ101β;... |
| ββCZ111β;βLZ110β;βLZ113β;βLZ118β;βCZ119β;... |
| ββLZ122β;βLZ126β;βCZ127β;βLZ128β;βLZ107β;... |
| ββCZ106β;βRZ108β}; |
| offsets = {β;β_1β;β_2β;β_3β}; |
| boards = {β9β; β16β}; |
| color = |
| {βr+β;βb+β;βg+β;βm+β;βc+β;βy+β;βk+β;βrxβ;βbxβ;βgxβ;βmxβ;βcxβ;βyxβ;βkxβ;βr*β;βb*β;βg*β;βm*β;βc*β;βy*β;βk*β;}; |
| colcnt = 1; |
| count = 0; |
| y = zeros(4,88); |
| load freq |
| h = figure(1); |
| j = figure(2); |
| k = figure(3); |
| leg_str = { }; |
| leg_count = 1; |
| x1 = [1;8;11;26;56;88;]; %410 550 610 910 1510 2150 |
| x1f= [410;550;610;910;1510;2150;]; |
| for part=1:18, |
| βfor graph=1:3, |
| ββfor board=1:2, |
| βββhold on; |
| βββcount = 1; |
| βββfor offset=1:4, |
| ββββfile = |
| strcat(β.\β,boards(board),β\β,graphs(graph),β_β,parts(part),β_S14MLab21_β,boards(board),offsets(offset |
| ),extβ); |
| ββββtry |
| βββββd = load(char(file),β-matβ); |
| βββββx= d.hgS_070000.children(1).children(1).properties.XData; |
| βββββy(count,:)= d.hgS_070000.children(1).children(1).properties.YData; |
| βββββy1 = d.hgS_070000.children(1).children(1).properties.YData; |
| βββββif(strcmpi(graphs(graph),βIFvsMHzβ)) |
| ββββββif(strcmpi(boards(board),β9β)) |
| βββββββ%fprintf(β%s %f,%f,%f,%f,%f,%f,\nβ,char(parts(part)),y1(x1(1)),y1(x1(2)),y1 |
| (x1(3)),y1(x1(4)),y1(x1(5)),y1(x1(6))); |
| βββββββ%fprintf(β%f;%f;%f;%f;%f;%f;\nβ,y1(x1(1)),y1(x1(2)),y1(x1(3)),y1(x1(4)),y |
| 1(x1(5)),y1(x1(6))); |
| βββββββfprintf(ββ%sβ;β,char(parts(part))); |
| ββββββend |
| βββββend |
| βββββfigure(h); |
| βββββhold on; |
| βββββplot(x,y(count,:)) |
| βββββcount = count + 1; |
| βββββhold off; |
| ββββcatch err |
| ββββend |
| βββend |
| βββif (count > 2) |
| ββββyavg = y(1,:)./(countβ1); |
| ββββfor i=2:(countβ1), |
| βββββyavg = yavg + y(i,:)./(countβ1); |
| ββββend |
| ββββif(strcmpi(graphs(graph),βIFvsMHzβ)) |
| βββββif(strcmpi(boards(board),β9β)) |
| ββββββfigure(j); |
| ββββββblah = char(parts(part)); |
| ββββββswitch blah |
| βββββββcase {βLZ107β,βCZ106β,βRZ108β} |
| ββββββββplot(x,yavg,βb:β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βLZ108β |
| ββββββββplot(x,yavg,βg:β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βCZ115β |
| ββββββββplot(x,yavg,βr:β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βCZ117β |
| ββββββββplot(x,yavg,βc:β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βCZ101β |
| ββββββββplot(x,yavg,βm:β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βLZ110β |
| ββββββββplot(x,yavg,βy:β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βCZ111β |
| ββββββββplot(x,yavg,βgβββ) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βLZ113β |
| ββββββββplot(x,yavg,βrβββ) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βLZ118β |
| ββββββββplot(x,yavg,βcβββ) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βCZ119β |
| ββββββββplot(x,yavg,βmβββ) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βLZ122β |
| ββββββββplot(x,yavg,βyβββ) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βLZ126β |
| ββββββββplot(x,yavg,βgβ.β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βCZ127β |
| ββββββββplot(x,yavg,βrβ.β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββcase βnomissingβ |
| ββββββββplot(x,yavg,βr+β) |
| ββββββββleg_str(leg_count) = cellstr(blah); |
| ββββββββleg_count = leg_count + 1; |
| βββββββotherwise |
| ββββββββ%plot(x,yavg,βrβ) |
| ββββββend |
| ββββββfigure(k); |
| ββββββplot(x1f,yavg(x1),char(color(colcnt))); |
| ββββββcolcnt = colcnt + 1; |
| ββββββ%fprintf(βstatic part %s = |
| {β%sβ,.95*%f,%f,1.05*%f,.95*%f,%f,1.05*%f,.95*%f,%f,1.05*%f,.95*%f,%f,1.05*%f,.95* |
| %f,%f,1.05*%f,.95*%f,%f,1.05*%f};\nβ,blah,blah,yavg(((410-410)/20)+1),yavg(((410- |
| 410)/20)+1),yavg(((410-410)/20)+1),yavg(((550-410)/20)+1,yavg(((550- |
| 410)/20)+1),yavg(((550-410)/20)+1),yavg(((610-410)/20)+1,yavg(((610- |
| 410)/20)+1),yavg(((610-410)/20)+1),yavg(((910-410)/20)+1,yavg(((910- |
| 410)/20)+1),yavg(((910-410)/20)+1),yavg(((1510-410)/20)+1,yavg(((1510- |
| 410)/20)+1),yavg(((1510-410)/20)+1),yavg(((2150-410)/20)+1,yavg(((2150- |
| 410)/20)+1),yavg(((2150-410)/20)+1)); |
| ββββββ%fprintf(β%s = [%f;%f;%f;%f;%f;%f;]\nβ,blah,yavg(((410- |
| 410)/20)+1),yavg(((550-410)/20)+1),yavg(((610-410)/20)+1,yavg(((910- |
| 410)/20)+1),yavg(((1510-410)/20)+1),yavg(((2150-410)/20)+1)); |
| ββββββfigure(j); |
| βββββend |
| ββββend |
| ββββfigure(h); |
| ββββhold on; |
| ββββif(strcmpi(graphs(graph),βIFvsMHzβ)) |
| βββββplot(freq,S21+15,βgβββ); |
| ββββend |
| ββββplot(x,yavg,βrβ); |
| ββββgrid on; |
| ββββtitle(strcat(graphs(graph),β-β,parts(part),β-β,boards(board))); |
| file=strcat(β.\merged\β,graphs(graph),β_β,parts(part),β_S14MLab21_β,boards(board),extβ); |
| ββββhold off; |
| ββββsaveas(gcf,char(file)); |
| βββend |
| βββhold off; |
| βββfigure(h); |
| βββclose(gcf); |
| ββend |
| βend |
| end |
| figure(j); |
| plot(freq,S21+15,βgβββ); |
| legend(leg_str); |
| figure(k); |
| legend(leg_str); |
| saveas(gcf,βavg_merged_9.figβ); |
| %this program will use oem.exe and gpibQuery.exe to measure the six |
| %chosen points for missing part detection and compare the measurements |
| %to the template data. The top 3 matches will be printed to the screen |
| %compare_direct.m |
| close all |
| clear |
| nomissing = [β35.296588;β27.324503;β30.089108;21.672383;20.570093;22.533952;]; |
| LZ108 = [β31.698127;β29.392859;β32.140766;10.185280;28.632694;22.499279;]; |
| CZ115 = [β34.779644;β27.417730;β31.670673;16.812950;25.595003;14.643503;]; |
| CZ117 = [β34.739485;β27.717447;β31.692100;18.456583;24.216473;15.267420;]; |
| CZ101 = [β26.671921;β33.013183;β32.804831;β23.318169;β5.458138;β9.203954;]; |
| CZ111 = [β25.715071;β22.899536;β24.944953;6.482144;15.324326;β7.873211;]; |
| LZ110 = [β18.671654;β28.093328;β25.743041;21.074894;22.613928;18.869009;]; |
| LZ113 = [β15.179912;β20.530066;β27.561459;12.592989;24.168545;14.465974;]; |
| LZ118 = [β17.892018;β46.912835;β25.317950;19.381793;21.644654;19.448573;]; |
| CZ119 = [β26.163568;β25.076992;β30.512849;9.264697;13.914735;1.054201;]; |
| LZ122 = [β9.368090;β26.465813;β26.744361;16.089041;23.015365;16.329984;]; |
| LZ126 = [β14.793340;β30.653785;β38.688210;18.091787;25.193597;15.727861;]; |
| CZ127 = [β20.251200;β25.148990;β26.653522;8.188249;6.602823;β4.674796;]; |
| LZ107 = [β35.071958;β23.752973;β27.327082;17.720450;26.162055;17.731054;]; |
| CZ106 = [β34.287086;β22.848966;β26.420487;19.418531;26.292773;21.001741;]; |
| RZ108 = [β34.493836;β23.068358;β26.526343;20.400419;24.099258;14.790296;]; |
| parts = |
| [nomissing,LZ108,CZ115,CZ117,CZ101,CZ111,LZ110,LZ113,LZ118,CZ119,LZ122,LZ126, |
| CZ127,LZ107,CZ106,RZ108]; |
| part = {βnomisβ;βLZ108β;βCZ115β;βCZ117β;βCZ101β;... |
| ββCZ111β;βLZ110β;βLZ113β;βLZ118β;βCZ119β;... |
| ββLZ122β;βLZ126β;βCZ127β;βLZ107β;... |
| ββCZ106β;βRZ108β}; |
| %board/dmm communication |
| load sigLevel_dBm |
| oemRtVal=zeros(11,1); |
| freq_MHz_set=[410,550,610,910,1510,2150]; % to measure the square wave harmonic |
| IF_dBm=zeros(1,length(freq_MHz_set)); |
| RF_agc_dB=zeros(1,length(freq_MHz_set)); |
| IF_agc_dB=zeros(1,length(freq_MHz_set)); |
| IF_MHz=10.7; |
| k=48.83409; % y=kx+b for log detector. |
| b=β104.634; |
| for i=1:length(freq_MHz_set) |
| βcmd=sprintf(βmtune %fβ, (freq_MHz_set(i)+IF_MHz)); |
| β[stat, str]= system(cmd); |
| βpause(3) |
| β[stat, str]= system(βgpibQuery 22 MEAS:VOLT:DC?β); |
| βvolt=(sscanf(str,β%eβ)); |
| βIF_dBm(i)=k*volt+b; |
| β%now we can read AGC value, keep AGC alive |
| β[stat, str]= system(βoem 11 fa e0 d5 01β); |
| βpause(1) |
| βoemRtVal=sscanf(str(48:length(str));β=>DEC: %d %d %d %d %d %d %d %d %d %d %dβ); |
| βRF_AGC_dB(i)=26/65535*(oemRtVal(3)*256+oemRtVal(4)); |
| βIF_AGC_dB(i)=30/65535*(oemRtVal(7)*256+oemRtVal(8)); |
| βdisp(IF_dBm(i)); |
| end |
| gain_dB=IF_dBm-sigLevel_dBm(((freq_MHz_set-410)./20)+1)+56-IF_AGC_dB- |
| RF_AGC_dB-5; |
| for j = 1:16 |
| βresult(j,1) = {sum((transpose(gain_dB) - parts(:,j)).{circumflex over (β)}2)}; |
| βresult(j,2) = part(j); |
| end |
| missing = sortrows(result,1); |
| disp(missing(:,:)); |
1. A method for testing for one of a missing or shorted part within a tuner circuit, comprising the steps of:
applying a harmonic-containing baseband time varying RF test signal to the tuner circuit;
tuning the tuner circuit to a harmonic of test signal; and
detecting a change in gain measured at a baseband IF output of the tuner circuit indicative of one of a missing part or short circuit.
2. The method according to claim 1 wherein the time-varying RF test signal comprises a square wave signal.
3. The method according to claim 2 wherein the square wave signal has a frequency of 10 MHz.
4. The method according to claim 1 wherein the comparing step comprises the steps of:
(a) converting a voltage generated at the baseband IF output to a logarithmic value:
(b) measuring the logarithmic value to establish the gain.
5. The method according to claim 4 wherein the steps (a) and (b) are repeated multiple times to yield an average gain value.
6. A method for testing for one of a missing or shorted part within a tuner circuit, comprising the steps of:
applying a harmonic-containing baseband time varying RF test signal to the tuner circuit;
tuning the tuner circuit to a harmonic of test signal;
detecting a change in gain measured at a baseband IF output of the tuner circuit, and
comparing the change in gain to a change in gain associated with a specific missing or shorted part to determine whether that specific part is missing or shorted.
7. The method according to claim 6 wherein the time-varying RF test signal comprises a square wave signal.
8. The method according to claim 7 wherein the square wave signal has a frequency of 10 MHz.
9. The method according to claim 6 wherein the comparing step comprises the steps of:
(a) converting a voltage generated at the baseband IF output to a logarithmic value:
(b) measuring the logarithmic value to establish the gain.
10. The method according to claim 9 wherein the steps (a) and (b) are repeated multiple times to yield an average gain value.
11. A test system to detect one of a missing or shorted part within a tuner circuit, comprising:
a signal generator for applying a harmonic-containing baseband time varying RF test signal to the tuner circuit tuned to receive to a harmonic of test signal; and
a detector for detecting a voltage at a baseband IF output of the tuner circuit in response to application of the harmonic-containing baseband time varying RF test signal to the tuner circuit; and
a voltage measurement device for measuring voltage output by the detector to establish gain indicative of a missing component or short circuit.
12. The test system according to claim 1 wherein the signal generator generates a square wave signal.
13. The test system according to claim 12 wherein the square wave signal has a frequency of 10 MHz.
14. The test system according to claim 1 wherein the detector yields a logarithmically varying output voltage.
15. The test system of claim 11 wherein the voltage measurement device comprises a multi-meter.