CA250 Cookbook En
CA250 Cookbook En
CA250 Cookbook En
(XÚÀ93)
4076.5009.03 ─ 01
Radiomonitoring & Radiolocation
The software contained in this product uses several valuable open source software packages. For information, see the "Open
Source Acknowledgment" on the user documentation CD-ROM (included in delivery).
Rohde & Schwarz would like to thank the open source community for their valuable contribution to embedded computing.
The following abbreviations are used throughout this manual: R&S®CA250 is abbreviated as R&S CA250.
R&S®CA250 Contents
Contents
1 Introduction............................................................................................ 5
1.1 About this Document....................................................................................................5
1.2 Additional Hints.............................................................................................................5
1.2.1 Getting Started................................................................................................................ 5
1.2.2 Getting Help.................................................................................................................... 6
1.2.3 Software Version.............................................................................................................6
2 General Requirements...........................................................................7
7 Alphabets..............................................................................................27
7.1 Steps for editing the sample XML file....................................................................... 27
7.2 Steps for producing test data for the sample alphabet........................................... 31
7.3 Steps to process the test data using the sample decoder......................................32
7.4 Steps to display shift and erroneous characters.....................................................33
1 Introduction
The sample R&S CA250 usage scenarios in this document are offered ‘as is’.
The scenarios do not aspire to represent complete workflow processes. They are to be
seen as a guide to aid the novice to gain familiarity with R&S CA250, and to surpass
the initial threshold of ‘Yes, but what is it good for?’.
Licensing Functionality
Some of the functionality described in this document is only available with the proper
license. Please refer to the R&S CA250 Manual or the R&S CA250 data sheet for
details on licensed functionality.
If in doubt...
● Press the F1 key on the keyboard. This offers a context-sensitive help.
● Refer to the R&S CA250 User Manual.
Versioning
This document has been prepared based on R&S CA250 Version 04.03.
2 General Requirements
The requirements which apply to all the examples are:
● The R&S CA250 application should be open.
● The provided bitstream files should be available.
● Ideally, the operator should have an extensive knowledge of transmission systems.
The requirements which apply when using your own files are:
● The bitstream must be long enough to contain a statistically relevant number of
elements. This number can vary strongly. In cases where the "suitable" length can-
not be estimated (e.g. if a particular signal is unknown), an appropriate workflow is
to: (a) record as long as possible, (b) extract shorter bitstreams as "samples", and
then ©) extract longer samples if the short samples prove to be unsuitable.
● The bitstream should have been produced from a signal with a good SNR - i.e. the
lower the SNR, the higher the probability of errors.
The requirements which apply to the operator:
● A basic knowledge of communications engineering, including knowledge of infor-
mation theory and coding would be beneficial.
Conclusion
Any additional information which narrows the scope of the analysis is beneficial to the
analyst.
1. Open the given bitstream file in R&S CA250. As mentioned in Chapter 1.2.1, "Get-
ting Started", on page 5, the file can be opened via drag-and-drop or using the
"File" menu. The contents of the file will be displayed in the "Table View" as shown
in the following figure.
There seams to be a repeating pattern so the next task is to determine the number
of symbols per frame - i.e. the cycle length within the bitstream.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
6. Zoom in to the left side of the plot. Drag a rectangle over the left side of the plot
using the mouse. Repeat until peaks are visible in the x-axis range 0 to 60. Here
you can see repeating peaks which indicate a repeating pattern - i.e. multiples of
the actual cycle length.
7. Zoom in to the left side of the plot in the range 0 to 15. Here you can see that
the first peak occurs at "13" - i.e. this is the actual cycle length.
8. Click the "Reset Cursors" button. This causes the measurement cursors to be
set to the current size of the autocorrelation plot.
9. Grab the cursor on the right side and drag it to the peak. The measured value
(shown above the plot) should now be 13.
10. Click the "Set Cycle Length" button. This the causes the cycle length in the
"Table View" to be set to the measured value.
11. Select the "Table View" tab. The regular pattern should now be visible, as shown
in the figure below.
12. Select the "Visualization Toolbox". This causes the controls for the "Table View"
to appear.
13. Select the "Header" checkbox. This causes row and column headers to appear.
14. Select column headers: "0", "10", "11", and "12". These columns do not appear
to be carrying information.
NOTE: Although column "8" also does not appear to carry information, it is within
the data part of the frame and should be assessed separately.
15. Right-click and select "Delete selected items" in the context menu.
16. Set the "Cycle Length" to 9. You have deleted four columns so the length is now
13 - 4 = 9.
NOTE: This would be an unusual length for the data frame so we have probably
not removed all the non-data symbols. A logical next step is to check for parity bits.
17. Select the Decimal checkbox. This causes the symbols to be displayed in place
of the colored cells.
18. Select the "Row's Sum and Parity" checkbox. This causes the sum of the sym-
bols in each row to be displayed along with the resulting parity (0 = even, 1 = odd).
NOTE: In this case, the symbol in column 8 is being used to achieve even parity.
Therefore, column 8 does not contain information and can be deleted.
19. Select column header "8" and use the context menu to delete it.
Conclusions
The R&S CA250 offers straight forward functionality for determining the frame cycle
length and removing frame-related symbols. Similarly the tools for dealing with parity
bits enable fast recognition and removal.
2. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
4. Set the "Analysis length" to 8 and select the "Bit order 'LSB first'." checkbox.
NOTE: In normal practice you would run the histogram analysis twice - i.e. with and
without the "Bit order" checkbox selected. This is because you have no way of
knowing whether the bit order has been reversed before transmission. The peaks
in the histogram will indicate whether ASCII is being used or not (see next step).
5. Click the "Run" button. The analysis will be performed and the resulting histo-
gram will be displayed in its own "Histogram Analysis" tab.
NOTE: The 3 typical signs for ASCII coding should be visible:
● Maximum peak at 32: the SPACE character
● Cluster of peaks from 97 to 122: lower case letters
● Single peaks at 10 and 13: CR and LF (carriage return and line feed)
6. Go back to the previous "Table View" tab. Select the "Table View" tab prior to
the "Histogram Analysis" tab.
8. Click the "..." button. Select "Decoder" to browse the list of decoders and decod-
ing tools.
10. Set "Alphabets" to ASCII_8bit and leave the "Swap element order" checkbox
unselected
NOTE: In normal practice you might need to run the decoder several times using
different alphabets, both with and without swapping the elements. This is because
you often have no way of knowing which alphabet was used and whether the bit
order was reversed before transmission.
The "Swap element order" checkbox affects the processing of the 5-bit blocks.
11. Click the "Run" button. The decoding will be performed and the resulting text will
be displayed in its own "Extendable Alphabet Decoder" tab.
Conclusions
The "Histogram" offers clear indications for ASCII coding. Decoding through the appli-
cation of various alphabets is simple and easy to perform.
If all steps have been performed correctly, the text in the tab should be human reada-
ble.
1. Open the given bitstream file in R&S CA250. AS mentioned in Chapter 1.2.1, "Get-
ting Started", on page 5, the file can be opened via drag-and-drop or using the
"File" menu. The contents of the file will be displayed in the "Table View" as shown
in the following figure.
There seams to be a repeating pattern so the next task is to determine the number
of symbols per frame - i.e. the cycle length within the bitstream.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
6. Zoom in to the left side of the plot. Drag a rectangle over the left side of the plot
using the mouse. Repeat until peaks are visible in the x-axis range 0 to 60. Here
you can see repeating peaks which indicate a repeating pattern - i.e. multiples of
the actual cycle length.
7. Zoom in to the left side of the plot in the range 0 to 100. Here you can see that
the first peak occurs at "10" - i.e. this is the actual cycle length.
8. Click the "Reset Cursors" button. This causes the measurement cursors to be
set to the current size of the autocorrelation plot.
9. Grab the cursor on the right side and drag it to the peak. The measured value
(shown above the plot) should now be 10
10. Click the "Set Cycle Length" button. This the causes the cycle length in the
"Table View" to be set to the measured value.
11. Select the "Table View" tab. The regular pattern should now be visible, as shown
in the figure below.
12. Select the "Visualization Toolbox". This causes the controls for the "Table View"
to appear.
13. Select the "Header" checkbox. This causes row and column headers to appear.
14. Select column headers: "0", "1", and "2". These columns do not appear to be
carrying information.
NOTE: Although column "8" also does not appear to carry information, it is within
the data part of the frame and should be assessed separately.
15. Right-click and select "Delete selected items" in the context menu.
16. Set the "Cycle Length" to 7. You have deleted three columns so the length is
now 10 - 3 = 7.
NOTE: It would appear that we are dealing with a codec which uses 7 bits per
frame. The next step is to find indications that a 7 bit text codec actually was used
and, if so, which alphabets might be appropriate for decoding.
2. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
4. Set the "Analysis length" to 7 and select the "Bit order 'LSB first'." checkbox.
NOTE: In normal practice you might need to run the decoder several times using
different alphabets, both with and without swapping the elements. This is because
you often have no way of knowing which alphabet was used and whether the bit
order was reversed before transmission.
The "Swap element order" checkbox affects the processing of the 7-bit blocks.
● Unchecked = LSB to MSB (e.g. 0000011 = 96).
● Checked = MSB to LSB (e.g. 0000011= 3).
5. Click the "Run" button. The analysis will be performed and the resulting histo-
gram will be displayed in its own "Histogram Analysis" tab.
NOTE: The 3 typical signs for ASCII coding (as describe in step 5) are not present.
Although ASCII is not indicated, the single large peak could be the "space" charac-
ter and the cluster of discrete peaks could indicate the characters of an alphabet.
An attribute of any text is that the letters do not occur with the same frequency. We
can therefor use an entropy analysis to (a) confirm that text is probably present and
(b) confirm the frame length.
6. Right-click and close the "Histogram " tab using the context menu. This will
return you to the "Table View" tab.
8. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
9. Select the "Tsalis Entropy Test". For any given number of symbols (the block
length), an entropy test indicates when some of the possible symbol combinations
are missing from a symbol stream. Symbol combinations will be missing because:
● Not all possible bit combinations are used to code the letters of an alphabet.
● Not all letters of an alphabet are present in a text.
● Not all letters of an alphabet are present in the same numbers in a text.
All possible block lengths up to the user specified maximum (the "Block Length"
field) are tried and plotted on the x-axis. The notches indicate block lengths at
which such missing sequences occur. The more sequences are missing, the
deeper the notch.
10. Set he "Block Length" field to a reasonable multiple of the suspected frame
length. In this case, a length of 7 is suspected so a "Block Length" setting of 35
would be appropriate
11. Click the "Run" button. The result of the entropy analysis will appear in its own
"Tsalis Entropy Test" tab.
12. Zoom in to the top of the curve. Drag a rectangle parallel to the x-axis from 0 to
35, which includes the deepest notch. The result should be similar to the figure
below.
13. Click the "Reset Cursors" button. This causes the measurement cursors to be
set to the current size of the autocorrelation plot.
14. Grab the cursor on the right side and drag it to the 1st notch Here you can see
that the first notch occurs at a block length of "7" - a strong indication that we are
dealing with a 7-bit codec.
The following table from the R&S CA250 manual describes some 7 bit alphabets.
Two of the alphabets are known as "three-four" alphabets as each frame consists
of three "1" bits and four "0" bits. We can perform a statistical analysis on the bit-
stream to detect the use of such an alphabet.
15. Select the "Table View" tab so that the bitstream is visible again.
17. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
18. Select "Statistical Analysis". This causes "Statistical Analysis" to appear in the
"Symbol operation selection" field. The "Run" button appears below the field.
19. Set the codeword length fields. Set the "Lower codeword length" field to 1 and
the "Upper codeword length" field to 7.
20. Click the "Run" button. The result of the statistical analysis will appear in its own
"Statistical Analysis" tab. In this case, the result should be similar to the figure
below.
The rows show the analysis of the bitstream based on all possible code lengths
between 1 and 7. The term "Weight" refers to how many "1" bits were present - for
example:
● Bitstream: ...000101100111001110000010110000001111101010...
● Length = 1 to 6: in each case segments containing only "1" bits and only "0"
bits exist, therefore "Min Weight" = 0 and "Max Weight" = length.
● Length = 7: in this case, each segment contains three "1" bits and four "0" bits,
therefore "Min Weight" = 3 and "Max Weight" = 3.
The figure above shows a similar result which indicates that we should apply a
three-four alphabet - e.g. the ITA3 shown in the table in Figure 6-1.
21. Select the "Table View" tab so that the bitstream is visible again.
22. Click the "..." button in the "Working Toolbox". Select "Decoder" to browse the
list of decoders and decoding tools.
24. Set "Alphabets" to ITA3 and select the "Swap element order" checkbox.
NOTE: In normal practice you might need to run the decoder several times using
different alphabets, both with and without swapping the elements. This is because
you often have no way of knowing which alphabet was used and whether the bit
order was reversed before transmission.
The "Swap element order" checkbox affects the processing of the 7-bit blocks.
● Unchecked = LSB to MSB (e.g. 0000011 = 96).
● Checked = MSB to LSB (e.g. 0000011= 3).
25. Click the "Run" button. The decoding will be performed and the resulting text will
be displayed in its own "Extendable Alphabet Decoder" tab.
Conclusions
Although the "Histogram" offered no clear indications for ASCII coding, use of the
"Entropy " test and "Statistical analysis" lead us to the correct "Cycle length" and type
of alphabet used. Such information makes it possible to adopt a trial-and-error
approach using a limited number of alphabets.
If all steps have been performed correctly, the text in the tab should be human reada-
ble.
7 Alphabets
Background: The assignment of given bit or symbol sequences to human readable
characters is here referred as an "alphabet". Except for a few minor constraints, the
construction rules for these alphabets are quite arbitrary. Therefore, during the long
history of communications engineering, countless alphabets have been invented. Addi-
tionally, the number of languages which have their own character set has also been a
driving force for the invention of alphabets. Hence, the probability that a transmission
of interest is using a non-standard alphabet is quite high. Therefore it is very important,
that a bitstream analysis tool enables the quick development and easy integration of
new alphabets. This example is focused on the creation and integration of new alpha-
bets in R&S CA250. However, the research and development process by which the
alphabet is constructed is out of scope.
In any language, certain syllables occur more often than others. When the language is
written down, this means that certain letters/letter combinations occur more often than
others. The percentage occurrence of these letters/letter combinations can be derived
from a simple statistical analysis.
Studies have shown that for any particular language, a characteristic set of occurrence
values can be produced which are unique to the alphabet used to represent that lan-
guage.
In terms of decoding unknown alphabets, this is a key concept. If an unencrypted sym-
bol stream is available but there is no suitable alphabet, a statistical analysis of the
symbol stream may produce a valid starting point for the development of a custom
alphabet.
Objective: To demonstrate how alphabets can be created and added to the R&S
CA250.
Procedure: Open the sample XML code (provided below) in an XML editor, edit the
essential fields, edit the alphabet, save in the alphabets folder, create a test file, and
test the alphabet.
Focus: The main focus is on the following functionality:
● Editing the sample XML file
● Testing the custom alphabet
<AlphabetName>TEST_DECODER</AlphabetName>
<SymbolValency>2</SymbolValency>
<ErrorHandling error_char="#">correction</ErrorHandling>
<OutputDirection>LeftToRight</OutputDirection>
<FixBlockLength>
<BlockLength>5</BlockLength>
<Alphabet>
<CharacterSet data="0" char="a"/>
<CharacterSet data="1" char="b"/>
<CharacterSet data="2" char="^"/>
<CharacterSet data="3" char="^"/>
</Alphabet>
<Alphabet>
<CharacterSet data="0" char="0"/>
<CharacterSet data="1" char="1"/>
<CharacterSet data="2" char="^"/>
<CharacterSet data="3" char="^"/>
</Alphabet>
</AlphabetTables>
</FixBlockLength>
</UserDefinedAlphabet>
Some characters have special functions in XML. If you want to use these characters in
text, they must be added using the following codes:
● For < use <
● For > use >
● For & use &
● For " use "
● For ' use '
In general, it is very helpful to replace any special or local character by its decimal or
hexadecimal equivalent. For example, the German "Ä" character can be represented
by Ä.
Further information on XML coding and its structures can be found on diverse sites in
the internet.
2. Edit the block length tag (if necessary). The two possibilities are:
3. Enter the block length. For example, if you are defining a 3-4 alphabet, set the
length to seven, using <BlockLength>7</BlockLength>
4. Edit the alphabet table definition. The alphabet table is the container for the
character set data and also defines the data format (use decimal or sequence)
and character format used (always use plain) . Typically, the data format is deci-
mal as this avoids the necessity of entering all the values as binary ones and
zeros(e.g. 1,0,1,0,0,1,1). For example <AlphabetTables
data_format="decimal" char_format="plain">
5. Edit the shift characters (if necessary). If your decoder should shift between
character sets (e.g. as with Baudot) you can configure the handling of shift charac-
ters as follows:
● shift_format - can be set to usedata (shift on a certain data sequence) or
usechar (shift on a certain character).
● shift_policy - can be set to permanent (shift toggles between character
sets) or singular (shift only for the next character).
● shift_display - can be set to show (shift character is displayed) or hide
(shift character is not displayed).
For example, <ShiftCharacters shift_format="usedata"
shift_policy="permanent" shift_display="hide">
Use the shift data tags to specify the shift characters themselves. For example,
<Shift data="27"/>
6. Enter the alphabet definitions (data and character mappings). Typically, for a
shifted alphabet, two sets of alphabet definitions are required. In the sample XML,
the alphabets used are very short. You can add as many character set tags as you
need for your alphabet.
NOTE: data is the decimal value of the symbol and char is the character to be
displayed:
<CharacterSet data="0" char=" "/>
<CharacterSet data="1" char="a"/>
<CharacterSet data="2" char="b"/>
<CharacterSet data="3" char="c"/>
<CharacterSet data="4" char="d"/>
<CharacterSet data="5" char="e"/>
<CharacterSet data="6" char="f"/>
<CharacterSet data="7" char="g"/>
7. Save the edited XML. Go to the following folder and save the edited file with an
appropriate name.
C:\Program Files (x86)\Rohde-Schwarz\CA250\alphabets
8. Start R&S CA250 and check that the alphabet is available. After starting R&S
CA250, select the "Working Toolbox" tab. Click the "..." button and select
"Decoder" > "Extendable Alphabet Decoder". Open the "Alphabets" drop down
menu and check that your alphabet is present in the list.
Conclusions
The process for creating a custom alphabet and making it available in R&S CA250 is
simple and straightforward. It enables the user to quickly and easily create and use a
custom alphabet.
7.2 Steps for producing test data for the sample alphabet
This section describes an approach for producing test data for the sample alphabet
provided at the start of the previous section.
3. Enter binary data which correspond to the defined characters. For example:
000000000000000 will produce the output "aaa" and 000010000100001 will
produce "bbb".
5. Enter binary data which correspond to the defined characters. For example:
000000000000000 will produce the output "000" and 000010000100001 will
produce "111".
7. Enter binary data which correspond to the defined characters. For example:
000000000000000 will produce the output "aaa" and 000010000100001 will
produce "bbb".
8. Enter binary data which does not correspond to any of the defined charac-
ters. For example: 101011010110101 will produce the output "###" - i.e. the error
character will be output.
9. Save the file as a .txt file. This ensures that no formatting metadata is saved with
the content.
The following bitstream contains all the steps described above and can be simply cop-
ied and pasted into a text editor.
000100000000000000000000100001000010001100000000000000000001000010000
100010000000000000000000010000100001101011010110101
2. Drag and drop the test data file into the R&S CA250 GUI. Open a file browser
and navigate to the file containing the test data. Use the mouse to drag and drop it
anywhere in the R&S CA250 GUI. This will cause a "Table View" tab to open and
display the data from the file in graphical form.
3. Select the sample alphabet decoder . Go to the "Working Toolbox" in the R&S
CA250 GUI and click the "..." button. Select "Decode" > "Extendable Alphabet
Decoder". Select the decoder in the "Alphabets" drop down list.
Note: If the decoder is not available, navigate to the following folder with a file
browser and save the decoder there:
C:\Program Files (x86)\Rohde-Schwarz\CA250\alphabets
4. Select the "Swap element order" checkbox. This affects the processing of the 5-
bit blocks.
● Unchecked = LSB to MSB (e.g. 00011 = 24).
● Checked = MSB to LSB (e.g. 00011= 3).
5. Select the "Run" button. This will cause the test data to be processed using the
selected alphabet. If the test data described above is used, the output should be:
"aaabbb000111aaabbb"
Conclusion
If the output is as expected, the alphabet is working correctly. In this case, errors are
being corrected and shift characters are not being displayed. If you would like to see
the shit characters and erroneous characters, perform the steps described below.
1. Open the sample decoder in an XML editor. A normal text editor can also be
used.
3. Save the XML file in the alphabets folder. The folder is located at:
C:\Program Files (x86)\Rohde-Schwarz\CA250\alphabets
4. Process the test data using the modified alphabet description. Perform the
steps described in the previous process. This time, the output should be:
"^aaabbb^000111^aaabbb###". Shifts are indicated by the "^" characters and "#"
represents an error.
Conclusion
If the output is as expected, the alphabet is working correctly and you have demonstra-
ted how easy it is to modify the behavior of the decoder.
BCH = Bose-Chaudhuri-Hocquenghem
In coding theory, BCH codes form a class of cyclic error-correcting codes used to
implement forward error correction (FEC).
For the purposes of the R&S CA250:
● BCH coding can be recognized in a bitstream.
● BCH coding can be used to correct errors in the bitstream we are trying to decode.
● BCH coding can be removed from the corrected bitstream.
1. Open the given bitstream file in R&S CA250. As mentioned in Chapter 1.2.1, "Get-
ting Started", on page 5, the file can be opened via drag-and-drop or using the
"File" menu. The contents of the file will be displayed in the "Table View" as shown
in the following figure.
There seams to be a repeating pattern so the next task is to determine the number
of symbols per frame - i.e. the cycle length within the bitstream.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
6. Zoom in to the highest peak on the left side of the plot. Drag a rectangle over
the left side of the plot using the mouse. Repeat until peaks are visible in the x-axis
range 0 to 1000. Here you can see repeating peaks which indicate a repeating pat-
tern.
7. Zoom in to the highest peak. Here you can see that the first peak occurs at "640"
- i.e. this could be the actual cycle length.
8. Click the "Reset Cursors" button. This causes the measurement cursors to be
set to the current size of the autocorrelation plot.
9. Grab the cursor on the right side and drag it to the peak. The measured value
(shown above the plot) should now be 640.
10. Click the "Set Cycle Length" button. This causes the cycle length in the "Table
View" to be set to the measured value.
11. Select the "Table View" tab. A regular pattern should now be visible, part of
which is shown in the figure below.
NOTE: You now have clear evidence of a repeating structure but you should
immediately suspect that the cycle length requires further adjustment. The thick
vertical lines look like a preamble but a preamble does not usually repeat within the
payload. The goal is to align the symbols so that only one preamble is visible. You
can reasonably assume that 640 is a multiple of the true cycle length - you need to
determine the multiplier.
12. Count the number of times the preamble pattern are repeated. It may help you
to try any or all of the following:
● Reduce the "Cell Size" setting (this makes the colored blocks smaller).
● Increase the size of the R&S CA250 window (if you are using more than one
display).
● Scroll the "Table View" using the horizontal scroll bar at the bottom of the view.
NOTE: In this case the pattern repeats eight times.
13. Set the "Cycle Length" to the correct value. In this case 640 / 8 = 80.
NOTE: there are some important differences between the above figure and Fig-
ure 8-4:
● Only a single preamble pattern is now present. This will be removed in the next
step.
● The repeating vertical pattern in the payload is no longer visible. Instead, a
diagonal pattern is apparent.
● Counting the bits in Figure 8-4 reveals an 8-bit repetition in which the MSB is
always "1". This is an indicator for an ASCII alphabet. This clue will be used in
a later step.
● The vertical pattern in Figure 8-4 is followed by an apparently random
sequence of bits. This is an indication that some kind of forward error correc-
tion (FEC) may have been used. This clue will be used in a later step.
14. Select the "Visualization Toolbox". This causes the controls for the "Table View"
to appear.
15. Select the "Header" checkbox. This causes row and column headers to appear.
16. Select column headers: from "0" to "16". These columns represent the pream-
ble and are not carrying information.
17. Right-click and select "Delete selected items" in the context menu.
18. Set the "Cycle Length" to 63. You have deleted 17 columns so the length is now
80 - 17 = 63.
NOTE: In a previous step there was an indication that several ASCII coded words
may be present in the payload. It was also noted that FEC may have been used.
Several analysis tools exist for checking whether FEC is present. In this case, a
cycle length of 63 is quite characteristic for BCH codes. Hence, the next step is to
perform a BCH code check.
1. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
2. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
3. Select "BCH Code Check". This causes "BCH Code Check" to appear in the
"Symbol operation selection" field. The "Run" button appears below the field.
4. Click the "Run" button. This causes BCH Code Check process to be performed
which attempts to derive the parameters and polynomial used in the BCh coding.
The results are displayed in a table (as shown below).
NOTE: Clearly, a successful result indicates that BCH was used (in this case, all
parameters with 100% confidence). If unsuccessful, another coding such as Reed
Solomon (RS) could be tried.
The next step is to decode the payload using a BCH decoder and the parameters
from the table.
1. Select the "Table View" tab so that the bitstream is visible again.
2. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Decoder" to browse the list of decoding tools.
NOTE: Two kinds of BCH coding exist: systematic and non-systematic. As Fig-
ure 8-4 appeared to have a definite structure, it makes sense to try the systematic
variant first.
3. Select "BCH and Hamming Decoder Systematic". This causes "BCH and Ham-
ming Decoder Systematic" to appear in the "Symbol operation selection" field. The
"Run" button appears below the field.
5. Click the "Run" button. This causes a BCH decoding process o be performed
using the given parameters..
When completed, a new "Table View" tab will open which contains the decoded
symbols. The next step is to check the quality of the resulting bitstream.
6. Select the "Visualization Toolbox". This causes the controls for the "Table View"
to appear.
7. Select the "Decimal" radio button and the "Quality" checkbox. The bitstream
is checked for errors and each symbol is color coded: green = ok, red = error, and
yellow =an error which has been corrected.
In this case, all symbols should be green. The next step is to check for ASCII and
decode using a suitable alphabet.
1. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
2. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
4. Set the "Analysis length" to 8 and select the "Bit order 'LSB first'." checkbox.
NOTE: In normal practice you would run the histogram analysis twice - i.e. with and
without the "Bit order" checkbox selected. This is because you have no way of
knowing whether the bit order has been reversed before transmission. The peaks
in the histogram will indicate whether ASCII is being used or not (see next step).
5. Click the "Run" button. The analysis will be performed and the resulting histo-
gram will be displayed in its own "Histogram Analysis" tab.
NOTE: The 3 typical signs for ASCII coding should be visible:
● Maximum peak at 32: the SPACE character
● Cluster of peaks from 97 to 122: lower case letters
● Single peaks at 10 and 13: CR and LF (carriage return and line feed)
6. Select the previous "Table View" tab so that the bitstream is visible again.
8. Click the "..." button. Select "Decoder" to browse the list of decoders and decod-
ing tools.
10. Set "Alphabets" to ASCII_8bit and leave the "Swap element order" checkbox
unselected
NOTE: In normal practice you might need to run the decoder several times using
different alphabets, both with and without swapping the elements. This is because
you often have no way of knowing which alphabet was used and which bit-order
was used by the designer of the transmission system. In this case, you already
have 2 indications for the number of bits:
● Count the bits between the repeating vertical lines in the payload (see Fig-
ure 8-4) - there are 8 bits.
● Perform a Tsalis entropy analysis (as described in step 9). There are notches
at 4 and 8. As we have a clear indication for an 8-bit alphabet (probably ASCII)
we can ignore the notch at 4.
11. Click the "Run" button. The decoding will be performed and the resulting text will
be displayed in its own "Extendable Alphabet Decoder" tab.
Conclusions
Although he "Autocorrelation" did not provide exactly the right cycle length, it did pro-
vide a valid starting point for the analysis - i.e. indications that the payload contained
ASCII text and was channel coded.
Such indications enable relevant analysis and decoding tools to be selected, which in
turn enable the channel coding to be removed (along with the added benefit of error
correction).
Use of the "Entropy " test and "Histogram " analysis lead us to the correct "Cycle
length" and type of alphabet used. Such information makes it possible to adopt a trial-
and-error approach using a limited number of alphabets.
If all steps have been performed correctly, the text in the tab should be human reada-
ble.
1. Open the given bitstream file in R&S CA250. As mentioned in Chapter 1.2.1, "Get-
ting Started", on page 5, the file can be opened via drag-and-drop or using the
"File" menu. The contents of the file will be displayed in the "Table View" as shown
in the following figure.
There does not seem to be a repeating pattern so there is no obvious starting point
for the analysis. The next step is to use autocorrelation to discover whether there is
in fact any repetition within the bitstream.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
6. Zoom in to any section of the plot. Drag a rectangle using the mouse. Repeat
until the yellow line of the plot is clearly visible. In this case, the result resembles
the noise found in a spectrum. This indicates that:
● There are no repeating elements in the bitstream.
● The bits have an apparently random distribution (this could be verified using an
entropy check).
NOTE: Both the above points indicate that the bits have been scrambled.
The next step is to determine whether the type of scrambler (and the polynomial
used) can be identified.
1. Select the previous "Table View" tab so that the bitstream is visible again.
3. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
5. Click the "Run" button. The lookup will be performed and the polynomial with the
best match to the bitstream will be displayed along with a confidence value for the
result.
A significant result from this test indicates that a self-synchronizing linear binary
shift register was used to scramble the bitstream.
In this case, the following result should be displayed:
NOTE: for this test, any result with a confidence greater than 30% is significant.
The next step is to confirm that a self-synchronizing scrambler was used, as
opposed to an additive scrambler (for more information on scrambling, see the
"Descrambler" chapters in the R&S CA250 Manual).
6. Select the previous "Table View" tab so that the bitstream is visible again.
8. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
10. Enter the register settings and run the analysis. The algorithm calculates gen-
erator polynomials (based on the given number of registers) at all possible start
points within the data stream. You can either use the default values (5 and 15) or
make an educated guess based on the result of the Lookup Table result. In this
case, the Lookup Table result indicated a maximum length of 7. You should there-
for use settings around this value - e.g. min = 5 and max = 9.
NOTE: this process may take some minutes (even with a high performance sys-
tem) especially if a high "Max. number of registers" has been specified.
In this case, the result should be similar to the following figure:
11. Right-click and select "Calculate appearances" in the context menu. This will
cause the "Maximum appearances" window to open. This provides a summary of
how often each polynomial was generated by the algorithm, along with the list of
positions within the bitstream at which the polynomial was produced.
Significant results are:
● One polynomial has a much higher occurrence than the others.
● The polynomial with the highest appearance matches the result provided by the
"Lookup Table" test.
● Other polynomials in the list are x^1 multiples of the polynomial with the highest
occurrence.
In this case the result should be similar to the following figure:
As you can see, the winning polynomial is the same as the "Lookup Table" result
and is also factor 20 higher than the next highest result.
The next step is to use this polynomial to descramble the bitstream.
1. In the "Maximum appearances" window, copy the polynomial with the high-
est number of appearances. Double-click the polynomial and use CTRL+C or the
context menu.
3. Select the previous "Table View" tab so that the bitstream is visible again.
5. Click the "..." button. Select "Decoder" to browse the list of decoding tools.
7. Paste the polynomial into the "Feedback coefficients" field. Use CTRL+V or
the context menu.
8. Click the "Run" button. The descrambling will be performed and the descrambled
bitstream will be displayed in its own "Table View" tab.
The following figure shows the bitstream before and after descrambling.
NOTE: To perform side-by-side comparison of any tabs (as shown in the figure
above), right-click on one of the tabs and select "Move to new horizontal tab" in the
context menu. The selected tab will be moved to its own window next to the origi-
nal group of tabs. Further tabs can be added to this window (known as a "group")
via drag-and-drop.
The next steps are to determine the frame structure and then decode the bit-
stream.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
6. Zoom in to the left side of the plot. Drag a rectangle over the left side of the plot
using the mouse. Repeat until peaks are visible in the x-axis range 0 to 60. Here
you can see repeating peaks which indicate a repeating pattern - i.e. multiples of
the actual cycle length.
7. Zoom in to the left side of the plot in the range 0 to 300. Here you can see that
the first peak occurs at "256" - i.e. this is the actual cycle length.
8. Click the "Reset Cursors" button. This causes the measurement cursors to be
set to the current size of the autocorrelation plot.
9. Grab the cursor on the right side and drag it to the peak. The measured value
(shown above the plot) should now be 256.
NOTE: it may be necessary to zoom in further if you are not using a large display.
10. Click the "Set Cycle Length" button. This the causes the cycle length in the
"Table View" to be set to the measured value.
11. Select the "Table View" tab. The regular pattern should now be visible, as shown
in the figure below.
12. Select the "Visualization Toolbox". This causes the controls for the "Table View"
to appear.
13. Select the "Header" checkbox. This causes row and column headers to appear.
14. Select column headers: "0" to "31". These columns do not appear to be carrying
information.
15. Right-click and select "Delete selected items" in the context menu.
NOTE: With large numbers of leading zeros, it may be more convenient to remove
the columns using the "Basic Demultiplexer". In this case you could have set up the
demultiplexer to remove the 32 columns with the following settings: Cycle length =
256, Frame size = 224, Frame offset = 32.
Conclusions
Up to this point we have descrambled the bitstream, determined the frame structure
and removed the leading zeros. Typically the next step would be to determine whether
forward error correction (FEC) has been applied to the bitstream.
As the descrambled bitstream has no apparent pattern (this can be confirmed using
autocorrelation) it would appear that some kind of FEC has been used. This means we
must again find a starting point for further analysis. At this point in an analysis, the
"Code Classifier" may indicate the kind of FEC used.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
4. Select "Code Classifier". This causes "Code Classifier" to appear in the "Symbol
operation selection" field. The "Run" button appears below the field.
5. Select a block of10 to 12 consecutive rows in the "Table View". The "Code
Classifier" typically requires 2000 to 3000 bits to derive the used code. With 256
bits per row, this equates to 10 to 12 rows. Simply select the row headers using the
mouse.
6. Click the "Run" button. This causes the classification process to be performed
which first detects redundancy in a bitstream and then looks for non-systematic
convolution codes (with or without puncturing) and for block codes (BCH code or
RS code).
The "Code Classifier" results table appears in its own tab, as shown in the figure
below.
the first polynomial of the first result multiplied by x^1. The second result is
therefor a shifted version of the first result - i.e. they represent the same code.
● The polynomials in the first result are the actual generator polynomials.
7. Copy the polynomials of the first result. Select them with the mouse and use
CTRL+C or the context menu.
The next step is to use the polynomials to remove the convolutional coding from
the bitstream.
8. Select the previous "Table View" and double click anywhere in the view to
deselect the selected rows.
9. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
10. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Decoder" to browse the list of decoding tools.
For the next step (removing the convolutional code) only one tool is available: the
"Viterbi Decoder".
11. Select "Viterbi Decoder". This causes "Viterbi Decoder" to appear in the "Symbol
operation selection" field. The "Run" button appears below the field.
12. Paste the polynomials from the "Code Classifier" into the "Generator polyno-
mials" field. Delete the current contents of the field and use CTRL+V or the con-
text menu to paste in the copied polynomials.
13. Click the "Run" button. This causes the decoding process to be performed which
results in the decoded bitstream being displayed in its own "Table View" tab - part
of which is shown in the figure below.
The repeating 8-bit structure may indicate an ASCII alphabet. The next step is to
confirm this and decode the payload.
14. Perform a "Tsallis Entropy Test". This described in previous chapters and can
be summarized as:
● Select "Tsallis Entropy Test" from the "Analysis" submenu in the "Working
Toolbox".
● Set the "Block length" field to a reasonable multiple of the expected block
length - i.e. 8 is expected so a setting of 40 would be ok.
● Run the analysis and check where the notches in the graphic appear. In this
case notches appear at 4 and 8 so we have another indicator for ASCII coding.
15. Perform a "Histogram Analysis". This has been described in previous chapters
and can be summarized as:
● Select "Histogram Analysis" from the "Analysis" submenu in the "Working Tool-
box".
● Set the "Analysis length" field to the expected block length (in this case set it to
8) and run the analysis.
● If the result is inconclusive (as in this case) set the "Bit Order 'LSB first'" check-
box and run the analysis again.
● If the result is conclusive (i.e. the typically ASCII pattern is present), move on to
the next step.
NOTE: In this case, the histogram displays the typical ASCII pattern but it is
reversed (see figure below). This indicates that the bitstream has been inverted
- e.g. the typical peak at 32 caused by the SPACE character occurs at 223 (32
= 00100000 = inverted 11011111 = 223).
The next step is to invert the bitstream so to restore the ASCII coding.
16. Select the previous "Table View" and double-click anywhere in the view to
make sure no elements are selected.
19. Select "Inverter" from the list of manipulation tools. Several settings will
appear but in this case, only the "Invert all" checkbox is relevant.
20. Select the "Invert all" checkbox and click the "Run" button. The process
inverts all the bits in the bitstream and displays the resulting bitstream in its own
"Table View".
22. Click the "..." button. Select "Decoder" to browse the list of decoders and decod-
ing tools.
24. Set "Alphabets" to ASCII_8bit and leave the "Swap element order" checkbox
unselected
NOTE: In normal practice, you might need to run the decoder several times using
different alphabets, both with and without swapping the elements. This is because
you often have no way of knowing which alphabet was used and whether the bit
order was reversed before transmission.
25. Click the "Run" button. The decoding will be performed and the resulting text will
be displayed in its own "Extendable Alphabet Decoder" tab.
If all steps have been performed correctly, human readable text will be displayed.
1. Open the given bitstream file in R&S CA250. AS mentioned in Chapter 1.2.1, "Get-
ting Started", on page 5, the file can be opened via drag-and-drop or using the
"File" menu. The contents of the file will be displayed in the "Table View" as shown
in the following figure.
There seams to be a repeating pattern so the next task is to determine the number
of symbols per frame - i.e. the cycle length within the bitstream.
NOTE: In this case the frame length can be estimated from the number of rows
between the blocks of colored symbols (32 cols x 34 rows = 1088). Typically, it will
not be so easy or so obvious. The "Autocorrelation" analysis produces the same
result and also delivers other useful information (as described below).
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
5. Select the "Visualization Toolbox". This causes the controls for the "Table View"
to appear.
6. Select the "Header" checkbox. This causes row and column headers to appear.
7. Select row headers: from "0" to "102". This provides a sample of: 32 x 100 =
3264 symbols - i.e. 3 complete frames based on the estimate of 1088 symbols per
frame.
NOTE: In many cases, you will have no basis for such an estimate. In such cases,
it is advisable to take a much larger sample - e.g. 20000 symbols. If this does not
produce meaningful results then increase to 100000 symbols.
8. Select the "Working Toolbox" tab and click the "Run" button. This causes an
autocorrelation process to be performed which correlates the bitstream with itself.
The "Autocorrelation" plot appears in its own tab. The numbers on the x-axis repre-
sent the cycle length. Here you can see repeating peaks which indicate a repeating
pattern - i.e. multiples of the actual cycle length.
9. Zoom in to the left side of the plot. Drag a rectangle over the left side of the plot
using the mouse. Cover the x-axis range from 0 to around 1250.
10. Zoom in to the large peak. Drag a rectangle over the peak using the mouse.
11. Click the "Reset Cursors" button. This causes the measurement cursors to be
set to the current size of the autocorrelation plot.
12. Grab the cursor on the right side and drag it to the peak. The measured value
(shown above the plot) should now be 1088.
13. Click the "Set Cycle Length" button. This the causes the cycle length in the
"Table View" to be set to the measured value.
14. Select the "Table View" tab. The regular pattern should now be visible, as shown
in the figure below .
NOTE: In this case, the cycle length of 1088 symbols consists of 256 preamble
symbols + 832 payload symbols.
The eight colors in the preamble correspond to the 8 positions in the PSK8 constel-
lation diagram (for an explanation of the colors see Chapter 13, "Appendix - Fre-
quently Asked Questions", on page 109).
The next step is to remove the preamble symbols. This can be done with the
"Basic Demultiplexer" tool.
16. Click the "..." button. Select "Manipulation" to browse the list of symbol manipula-
tion tools.
17. Select "Basic Demultiplexer". This causes "Basic Demultiplexer" to appear in the
"Symbol operation selection" field. The "Run" button appears below the field.
Conclusions
As with previous examples, Autocorrelation has been successfully utilized to provide a
clear starting point for the analysis. In this example we have also seen that:
● Preambles are not always binary - in this case PSK8 is used.
● Preambles are not always short - in this case a preamble with 256 symbols is used
● PSK constellation symbols can be represented as discrete colors.
● The Basic Demultiplexer offers a better way of removing preamble symbols as
there is no need to manually select a large number of columns. The demultiplexer
is faster and lowers the risk of mistakes.
As the bitstream has no apparent pattern (this can be confirmed using autocorrelation)
it would appear that some kind of FEC has been used. This means we must again find
a starting point for further analysis. At this point in an analysis, the "Code Classifier"
may indicate the kind of FEC used.
1. Select the "Table View" tab containing the demultiplexed symbol stream.
3. Set the "Decimal" checkbox. This causes the symbols to be displayed as num-
bers rather than colors. In this case, the numbers correspond to th PSK constella-
tion point.
NOTE: In this case, as shown in the above figure, only the values "0" and "4" are
present. This indicates that binary data is being sent and that only two of the eight
constellation points are being used. To further process the symbol stream as
binary data we need to convert al l the "4" symbols to "1" symbols.
5. Click the "..." button. Select "Manipulation" to browse the list of symbol manipula-
tion tools.
Figure 10-8: Table View (after mapping) showing only symbols 0 and 1
NOTE: As we have effectively changed the valency of the symbol stream, we now
need to change the metadata of the file to indicate this change.
9. Click the "..." button. Select "Manipulation" to browse the list of symbol manipula-
tion tools.
10. Select "Change valency". This causes "Change valency" to appear in the "Sym-
bol operation selection" field. The "Run" button appears below the field.
11. Set the "New valency" field to 2 and click "Run". The result is displayed in its
own "Table View" tab and should be similar to the figure below.
NOTE: The new "Table View" has a default "Cycle length" of "32" - i.e. the actual
"Cycle length" needs to be determined and used.
Regardless of the "Cycle length", it is apparent from the "Table View" that a repeat-
ing structure is present in the data. An "Autocorrelation" plot may therefor provide
an indication of the true "Cycle length".
12. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
13. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
15. Click the "Run" button. This causes an autocorrelation process to be performed
which correlates the bitstream with itself. The "Autocorrelation" plot appears in its
own tab. The numbers on the x-axis represent the cycle length.
16. Zoom in to the left side of the plot. Drag a rectangle over the left side of the plot
using the mouse. Cover the x-axis range from 0 to around 80.
17. Click the "Reset Cursors" button. This causes the measurement cursors to be
set to the current size of the autocorrelation plot.
18. Grab the cursor on the right side and drag it to the first peak. The measured
value (shown above the plot) should now be 16.
19. Click the "Set Cycle Length" button. This the causes the cycle length in the
"Table View" to be set to the measured value.
20. Select the "Table View" tab. The regular pattern should now be visible, as shown
in the figure below .
NOTE: It is clear from the "Table View" that each 16-symbol frame occurs 4 times.
The next step is to remove the repetitions.
21. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
22. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
23. Select "Repetition Decoder". This causes "Repetition Decoder" to appear in the
"Symbol operation selection" field. The "Run" button appears below the field.
NOTE: Looking closely at the "Table View" it appears that discrete sequences are
repeated. For example, the following sequence is repeated several times in the fig-
ure above.
The next step is to use a Histogram analysis to find out how many discrete sequen-
ces there are.
25. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
26. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
27. Select "Histogram Analysis". This causes "Histogram Analysis" to appear in the
"Symbol operation selection" field. The "Run" button appears below the field.
NOTE: In this case, the result is a histogram with 16 peaks. This indicates that
only 16 different 16-bit values are present in the bitstream. This is a typical
result for a bitstream containing Walsh codes. The "Walsh Decoder" can be
used to confirm the presence of Walsh codes.
30. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
31. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Decoder" to browse the list of analysis tools.
32. Select "Walsh Decoder". This causes "Walsh Decoder" to appear in the "Symbol
operation selection" field. The "Run" button appears below the field.
33. Set the "Walsh length in bits" field to 4 and click "Run". The result is displayed
in its own "Table View" tab and should be similar to the figure below.
Conclusions
Up to this point, we have determined the frame structure, removed the preamble, con-
verted the PSK symbols to a binary datastream, removed the copied bits, identified the
presence of Walsh codes and removed this encoding. Typically, the next step would be
to further analyze the payload.
1. Select the "Table View" displaying the bitstream produced by the Walsh
decoder.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
4. Select "Code Classifier". This causes "Code Classifier" to appear in the "Symbol
operation selection" field. The "Run" button appears below the field.
5. Select a block of 150 to 200 consecutive rows in the "Table View". The "Code
Classifier" typically requires 2000 to 3000 bits to derive the used code. With 16 bits
per row, this equates to 150 to 200 rows. Simply select the row headers using the
mouse.
6. Click the "Run" button. This causes the classification process to be performed
which first detects redundancy in a bitstream and then looks for non-systematic
convolution codes (with or without puncturing) and for block codes (BCH code or
RS code).
The "Code Classifier" results table appears in its own tab, as shown in the figure
below.
● The polynomials in the first result are the actual generator polynomials.
7. Copy the polynomials of the first result. Select them with the mouse and use
CTRL+C or the context menu.
The next step is to use the polynomials to remove the convolutional coding from
the bitstream.
8. Select the previous "Table View" and double click anywhere in the view to
deselect the selected rows.
9. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
10. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Decoder" to browse the list of decoding tools.
For the next step (removing the convolutional code) only one tool is available: the
11. Select "Viterbi Decoder". This causes "Viterbi Decoder" to appear in the "Symbol
operation selection" field. The "Run" button appears below the field.
12. Paste the polynomials from the "Code Classifier" into the "Generator polyno-
mials" field. Delete the current contents of the field and use CTRL+V or the con-
text menu to paste in the copied polynomials.
13. Click the "Run" button. This causes the decoding process to be performed which
results in the decoded bitstream being displayed in its own "Table View" tab - part
of which is shown in the figure below.
NOTE: After the Viterbi decoding, the "Cycle length" of the "Table View" is too
short to see any structures which might be present in the bitstream. Adjusting the
"Cycle length" to a higher value (e.g. 256) enables you to see the structure illustra-
ted in the above figure.
Conclusions
At this point of the analysis it is highly possible, that we have removed all channel cod-
ing mechanisms and we see the payload data. The structure visible in the above figure
is typical of a data file or graphics file format - i.e. there appears to be a header fol-
lowed by structured data.
The next task is to confirm this and decode the payload.
3. Perform an "Tsalis Entropy Test" analysis. In this case, notches at 16, 32 and
64 indicate that structured data is present.
● Click the "Run" button. The analysis will be performed and the results will be
displayed as a table in a "File Detection" tab. In this case, two possible file
types (TIFF_II and JPEG_JFIF) are detected which are indicated by true in the
"Detected" column. Of these, JPEG_JFIF is more likely to be valid as it has a
much higher "Detection rating" percentage value.
5. Select the previous "Table View" tab so that the bitstream is visible again.
6. Save the bitstream as a binary file. Open the "Save File" dialog via the "File"
menu. Enter a filename with a .bin suffix and click the "Save" button.
7. Change the file suffix . Use a file browser to edit the filename and change the suf-
fix. In this case, change it to .jpg (as indicated by the "File Detection" results).
Conclusions
A successful decoding of such signals depends heavily on the experience of the opera-
tor.
The operator must be familiar with:
● The handling of symbols rather than of bits.
● The recognition and handling of repetitions (e.g. 4 instances of each symbol in the
"Table View" )
● The recognition and handling of Walsh codes (e.g. 16 peaks in the "Histogram" as
an indicator for Walsh sequences).
● The handling of simple, basic spreading mechanisms.
● The recognition and handling of convolutional codes including the influences of bit
errors.
● The recognition and handling of a complex payload. In this case an image file
transmission.
Objective: To understand how to decode turbo-coded text when neither of the 2 codes
is known.
The concatenation of two codes for the turbo coding poses a particular problem for bit-
stream analysis. In order to make use of the turbo principle, both codes must be
known. But at the beginning of the analysis neither of them is known.
As the additional gain of the turbo principle cannot be used, care should be taken to
collect the signal under the best possible reception conditions, using a high quality
receiver with the best possible antenna. This will ensure the lowest possible error rate
which in turn will improve the decoding results.
Procedure: Determine that BCH coding is used and decode the bitstream. Determine
that Turbo coding has been used to encode this bitstream and then use the De-inter-
leaver and BCH Decoder to enable full decoding of the content.
Focus: The main focus is on the use of the following functionality:
● Autocorrelation
● BCH Code Check
● BCH and Hamming Decoder Systematic".
● Quality check
● Histogram Analysis
● Block De-interleaver
● ASCII Decoding
1. Open the given bitstream file in R&S CA250. As mentioned in Chapter 1.2.1, "Get-
ting Started", on page 5, the file can be opened via drag-and-drop or using the
"File" menu. The contents of the file will be displayed in the "Table View" as shown
in the following figure.
There appears to be a structure within the bitstream so the next task is to deter-
mine the number of symbols per frame - i.e. the cycle length within the bitstream.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
6. Zoom in to the highest peak on the left side of the plot. Drag a rectangle over
the left side of the plot using the mouse. Repeat until peaks are visible in the x-axis
range 0 to 1000. Here you can see repeating peaks which indicate a repeating pat-
tern.
7. Zoom in to the highest peak. Here you can see that the first peak occurs at "556"
- i.e. this could be the actual cycle length.
8. Click the "Reset Cursors" button. This causes the measurement cursors to be
set to the current size of the autocorrelation plot.
9. Grab the cursor on the right side and drag it to the peak. The measured value
(shown above the plot) should now be 556.
10. Click the "Set Cycle Length" button. This the causes the cycle length in the
"Table View" to be set to the measured value.
11. Select the "Table View" tab. The Table View now has a cycle length of 556, part
of the view is shown in the figure below.
12. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
13. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
14. Select "BCH Code Check". This causes "BCH Code Check" to appear in the
"Symbol operation selection" field. The "Run" button appears below the field.
15. Click the "Run" button. This causes the BCH Code Check process to be per-
formed which attempts to derive the parameters and polynomial used in the BCH
coding. The results are displayed in a table (as shown below).
NOTES:
● Clearly, a successful result indicates that BCH was used (in this case, all
parameters with 66% confidence). If unsuccessful, another coding such as
Reed Solomon (RS) could be tried.
● In this case, 68% indicates that the correct polynomial has been found but
there are uncorrectable errors in the bitstream.
The next step is to decode the payload using a BCH decoder and the parameters
from the table.
16. Select the "Table View" tab so that the bitstream is visible again.
17. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Decoder" to browse the list of decoding tools.
NOTE: Two kinds of BCH coding exist: systematic and non-systematic. As Fig-
ure 11-4 appeared to have a definite structure, it makes sense to try the systematic
variant first.
18. Select "BCH and Hamming Decoder Systematic". This causes "BCH and Ham-
ming Decoder Systematic" to appear in the "Symbol operation selection" field. The
"Run" button appears below the field.
19. Setup the decoder using the settings from Figure 11-5.
In this case:
● GF = 6
● Number of info symbols = 51
● Use shortened code = not selected
● Skipped bits = not selected
● Error correction = selected
● Bit order 'LSB first' = not selected
20. Click the "Run" button. This causes a BCH decoding process o be performed
using the given parameters..
When completed, a new "Table View" tab will open which contains the decoded
symbols. In this case a structure is clearly present.
21. Select the "Visualization Toolbox" and set the cycle length to 51. This pres-
ents the data with the block length used in the BCH decoding.
22. Select the "Decimal" radio button and the "Quality" checkbox. The bitstream
is checked for errors and each symbol is color coded: green = ok, red = error, and
yellow =an error which has been corrected.
The next step is to check for ASCII and decode using a suitable alphabet.
1. Select the "Working Toolbox" tab and click the "..." button This tab offers a
range of symbol operations.
3. Zoom in to the left side of the plot. Drag a rectangle over the left side of the plot
using the mouse. Repeat until peaks are visible in the x-axis range 0 to 80. Here
you can see that the correlation peaks repeat every 8 symbols. This might indicate
an 8-bit structure such as an ASCII alphabet.
4. Select the "Table View" tab so that the bitstream is visible again.
5. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
6. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
8. Set the "Analysis length" to 8 and select the "Bit order 'LSB first'." checkbox.
NOTE: In normal practice you would run the histogram analysis twice - i.e. with and
without the "Bit order" checkbox selected. This is because you have no way of
knowing whether the bit order has been reversed before transmission. The peaks
in the histogram will indicate whether ASCII is being used or not (see next step).
9. Click the "Run" button. The analysis will be performed and the resulting histo-
gram will be displayed in its own "Histogram Analysis" tab.
NOTE: In this case, two typical signs for ASCII coding are visible:
10. Select the previous "Table View" tab so that the bitstream is visible again.
12. Click the "..." button. Select "Decoder" to browse the list of decoders and decod-
ing tools.
14. Set "Alphabets" to ASCII_8bit and leave the "Swap element order" checkbox
selected
NOTE: In normal practice you might need to run the decoder several times using
different alphabets, both with and without swapping the elements. This is because
you often have no way of knowing which alphabet was used and which bit-order
was used by the designer of the transmission system.
15. Click the "Run" button. The decoding will be performed and the resulting text will
be displayed in its own "Extendable Alphabet Decoder" tab.
NOTES:
● The text is partially decoded which indicates the used alphabet was correct.
● The text contains discontinuities and blocks of wrongly decoded text which is a
typical indicator for Turbo coding.
● The typical steps for a Turbo coder are:
Info-word ⇨ Encoder 1 ⇨ Interleaver ⇨ Encoder 2 ⇨ Code-word
Clearly, the decoding performed above was only partially successful due to the
use of interleaving and a second encoding.
● The initial bitstream was based on a 63 x 63 block code - i.e. 51 x 51 data bits
+ horizontal and vertical checksums.
The first BCH decoding resulted in a 51 x 63 block code in which the ASCII
characters were arranged horizontally and could therefore be partially decoded.
● Part 3 describes the necessary de-interleaving and second decoding step.
1. Select the previous "Table View" tab so that the bitstream is visible again.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Decoder" to browse the list of decoding tools.
7. Select the "Table View" tab so that the bitstream is visible again.
8. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
9. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
10. Select "BCH Code Check". This causes "BCH Code Check" to appear in the
"Symbol operation selection" field. The "Run" button appears below the field.
11. Click the "Run" button. This causes the BCH Code Check process to be per-
formed which attempts to derive the parameters and polynomial used in the BCH
coding. The results are displayed in a table (as shown below).
NOTES:
● Clearly, a successful result indicates that BCH was used (in this case, all
parameters with 71% confidence). If unsuccessful, another coding such as
Reed Solomon (RS) could be tried.
● In this case, 71% indicates that the correct polynomial has been found but
there are uncorrectable errors in the bitstream.
● The checksum bits are now properly aligned with the data kit.
The next step is to decode the payload using a BCH decoder and the parameters
from the table.
12. Select the "Table View" tab so that the bitstream is visible again.
13. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Decoder" to browse the list of decoding tools.
NOTE: As mentioned previously, two kinds of BCH coding exist: systematic and
non-systematic. As the previous BCH decoding produced a valid result using the
systematic variant, it makes sense to use this variant again.
14. Select "BCH and Hamming Decoder Systematic". This causes "BCH and Ham-
ming Decoder Systematic" to appear in the "Symbol operation selection" field. The
"Run" button appears below the field.
15. Setup the decoder using the settings from Figure 11-10.
In this case:
● GF = 6
● Number of info symbols = 51
● Use shortened code = not selected
● Skipped bits = not selected
● Error correction = selected
● Bit order 'LSB first' = not selected
16. Click the "Run" button. This causes a BCH decoding process to be performed
using the given parameters.
When completed, a new "Table View" tab will open which contains the decoded
symbols. In this case a structure is clearly present, although a clear pattern is not
recognizable.
NOTES:
● The checksum bit have been removed, leaving a 51 x 51 data block.
● The ASCII characters are now aligned vertically within the block.
● The de-interleaver can be used to align the ASCII characters horizontally so
that they can be decoded.
17. Select the previous "Table View" tab so that the bitstream is visible again.
18. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
19. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Decoder" to browse the list of decoding tools.
22. Click the "Run" button. This causes a de-interleaving process to be performed
using the given parameters. The resulting bitstream will be displayed in its own
"Table View" tab.
NOTES:
● After the first decoding, the vertical checksum bits were no longer aligned with
the correct data bits. The de-interleaving has re-aligned the bits.
● The next step is to perform a "BCH Code Check" to verify that the result is
valid. If the result is valid the "BCH Code Check" will derive the polynomial
required for decoding.
23. Select the previous "Table View" tab so that the bitstream is visible again.
25. Click the "..." button. Select "Decoder" to browse the list of decoders and decod-
ing tools.
27. Set "Alphabets" to ASCII_8bit and leave the "Swap element order" checkbox
selected
NOTE: In normal practice you might need to run the decoder several times using
different alphabets, both with and without swapping the elements. This is because
you often have no way of knowing which alphabet was used and which bit-order
was used by the designer of the transmission system.
28. Click the "Run" button. The decoding will be performed and the resulting text will
be displayed in its own "Extendable Alphabet Decoder" tab.
Conclusions
The typical steps for a Turbo coder are: Info-word ⇨ Encoder 1 ⇨ Interleaver ⇨
Encoder 2 ⇨ Code-word.
These steps result in horizontal and vertical checksum bits being added to the original
datablock, and the orientation of these bits must be considered during decoding.
The initial bitstream was based on a 63 x 63 block code - i.e. 51 x 51 data bits + hori-
zontal and vertical checksums.
The first BCH decoding resulted in a 51 x 63 block code - i.e. the horizontal checksums
were removed (light grey area of the above figure).
The second BCH decoding resulted in a 51 x 51 block code - i.e. the vertical check-
sums were removed (dark grey area of the above figure).
The first de-interleaving restored the alignment between data bits and vertical check-
sums.
The second de-interleaving restored the horizontal alignment of the ASCII characters.
1. Open the given bitstream file in R&S CA250. As mentioned in Chapter 1.2.1, "Get-
ting Started", on page 5, the file can be opened via drag-and-drop or using the
"File" menu. The contents of the file will be displayed in the "Table View" as shown
in the following figure.
There does not seem to be a repeating pattern so there is no obvious starting point
for the analysis. The next step is to use autocorrelation to discover whether there is
in fact any repetition within the bitstream.
2. Select the "Working Toolbox" tab. This tab offers a range of symbol operations.
3. Click the "..." button. This causes a short list of symbol operation categories to
appear. Select "Analysis" to browse the list of analysis tools.
6. Zoom in to any section of the plot. Drag a rectangle using the mouse. Repeat
until the yellow line of the plot is clearly visible. In this case, the result resembles
the noise found in a spectrum. This indicates that:
● There are no repeating elements in the bitstream.
● The bits have an apparently random distribution (this could be verified using an
entropy check).
NOTE: Both the above points indicate that the original bits have been spread.
The next step is to determine the polynomial to be used for a "Spreading Analysis".
Although scrambling and spreading have different purposes, the techniques used in
each process are the same. This means that we can use the "Scrambler Lookup
Table" and the "Berlekamp-Massey" test to find the correct polynomial for a "Spreading
Analysis".
1. Select the previous "Table View" tab so that the bitstream is visible again.
3. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
For detailed information, see the "Scrambler Lookup-Table Test" chapter in the
R&S CA250 Manual (this is installed with the software).
5. Click the "Run" button. The lookup will be performed and the polynomial with the
best match to the bitstream will be displayed along with a confidence value for the
result.
A significant result from this test indicates that a self-synchronizing linear binary
shift register was used to scramble the bitstream.
In this case, the following result should be displayed:
NOTE: for this test, any result with a confidence greater than 30% is significant.
The next step is to confirm the polynomial by performing a second test and com-
paring the results.
6. Select the previous "Table View" tab so that the bitstream is visible again.
8. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
10. Enter the register settings and run the analysis. The algorithm calculates gen-
erator polynomials (based on the given number of registers) at all possible start
points within the data stream. You can either use the default values (5 and 15) or
make an educated guess based on the result of the Lookup Table result. In this
case, the Lookup Table result indicated a maximum length of 15. You should there-
for use settings around this value - e.g. min = 13 and max = 17.
NOTE: this process may take some minutes (even with a high performance sys-
tem) especially if a high "Max. number of registers" has been specified.
In this case, the result should be similar to the following figure:
11. Right-click and select "Calculate appearances" in the context menu. This will
cause the "Maximum appearances" window to open. This provides a summary of
how often each polynomial was generated by the algorithm, along with the list of
positions within the bitstream at which the polynomial was produced.
Significant results are:
● One polynomial has a much higher occurrence than the others.
● The polynomial with the highest appearance matches the result provided by the
"Lookup Table" test.
● Other polynomials in the list are x^1 multiples of the polynomial with the highest
occurrence.
In this case the result should be similar to the following figure:
As you can see, the winning polynomial is the same as the "Lookup Table" result
and other polynomials in the list are x^1 multiples of the winner - i.e. the result is
significant and may be used in the next step.
The next step is to use this polynomial in a "Spreading Analysis" to discover the
settings to be used for despreading the bitstream.
1. In the "Maximum appearances" window, copy the polynomial with the high-
est number of appearances. Double-click the polynomial and use CTRL+C or the
context menu.
3. Select the previous "Table View" tab so that the bitstream is visible again.
5. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
7. Paste the polynomial into the "Feedback coefficients" field. Use CTRL+V or
the context menu.
8. Click the "Run" button. The spreading analysis will be performed and the result
will be displayed in its own "Table View" tab (see the figure below).
1. Select the previous "Table View" tab so that the bitstream is visible again.
3. Click the "..." button. Select "Decoder" to browse the list of decoding tools.
5. Copy the "LFSR Setup" polynomial from the "Spreading Analysis" into the
"Feedback coefficients" field.
6. Copy the "Register Init" sequence from the "Spreading Analysis" into the
"Register Initialization" field.
7. Copy the "Chip Rate" value from the "Spreading Analysis" into the "Chip
rate" field.
10. Select the "Visualization Toolbox". This causes the controls for the "Table View"
to appear.
11. Set the "Cycle Length" to 24. This corresponds to the chip rate determined by
the "Spreading" analysis.
NOTE: The despreading has removed the 24-chip channelization code, so for each
original bit there are now 24 bits with the same value. As the "Overlay" setting was
selected, the extra bits have not been removed. Using a cycle length of 24, these
are aligned into horizontal blocks as shown in the figure below. The benefits are:
● Random errors (caused by noise) are clearly visible.
● If the bits are not aligned, the spreading analysis has not correctly identified the
chip rate.
The next step is to repeat the despreading with the "Overlay" checkbox de-
selected. This will automatically remove the redundant bits and simultaneously cor-
rect the bit errors.
1. Select the previous "Table View" tab so that the spread bitstream is visible
again.
4. Click the "Run" button. This causes the despreading process to be performed
again using the given parameters. As the "Overly only" checkbox is now de-
selected, redundant bits will be removed and errors will be corrected (as far as pos-
sible).
When completed, a new "Table View" tab will open which contains the despread
symbols (as shown in the figure below).
NOTE: You can use the tooltip text of the Table Views to check that the original
bitstream had 24x more bits than the processed bitstream.
Typically, such transmissions use convolutional coding so the next step is to per-
form an analysis to detect the encoding polynomials and determine whether punc-
turing has been used.
3. Click the "..." button. Select "Analysis" to browse the list of analysis tools.
4. Select "Code Classifier". This causes "Code Classifier" to appear in the "Symbol
operation selection" field. The "Run" button appears below the field.
5. Click the "Run" button. The classification process will be performed and the
result will be displayed in its own "Table View" tab (see the figure below).
As you can see, two results are ambiguous and the others all have the same poly-
nomials and puncturing rate. The puncturing patterns are all just shifted versions of
the first pattern. For these reasons, the first result will be used in the next step.
The next step is to use the polynomial and puncturing pattern to decode the bit-
stream.
Typically, a Viterbi decoder is used to remove the convolutional coding.
1. Select the "Table View" tab containing the processed bitstream (no overlay).
3. Click the "..." button. Select "Decoder" to browse the list of decoding tools.
4. Select "Viterbi Decoder". This causes "Viterbi Decoder" to appear in the "Symbol
operation selection". The following elements also appear:
● "Generator Polynomials" field
● "Use puncturing" checkbox
● "Puncturing vector" field
● "Run" button
5. Copy the "Generator Polynomials" from the "Code Classifier" result into the
"Generator Polynomials" field.
7. Copy the "Puncturing pattern" from the "Code Classifier" result into the
"Puncturing vector" field.
8. Click the "Run" button. This causes the Viterbi process to be performed using the
given parameters.
When completed, a new "Table View" tab will open which contains the decoded
symbols.
Typically, such a datastream will be interleaved so the next step is to de-interleave
the data. Unfortunately, there are no de-interleaver settings available and there is
no analysis tool available to find them. This means a brute force approach is
required. A script can be used to perform this task.
Concept
The main challenge when designing a script is how to evaluate the results - i.e. how to
determine which results are significant and which are meaningless. In this example,
the following approach is used:
1. For a given de-interleaver, all possible combinations of row, column and step are
used to de-interleave the bitstream.
2. After each de-interleaving, the de-interleaved data is fed to the "RS Code Check"
tool which analyses the bitstream to see if a Reed-Solomon coding is present.
3. The output of the "RS Code Check" contains a confidence value which is then used
an indicator for how good the result from the de-interleaver was - i.e. if Reed-Solo-
mon is coding is present, it will only be detected if the de-interleaver settings were
valid.
4. After all iterations have been performed (i.e. all possible combinations have been
tried), all combinations which produced a low confidence "RS Code Check" result
are discarded.
5. High confidence results are displayed to th operator who can then select a winner.
In this case, it is known that the "Helical Scan De-interleaver" was used - i.e. the script
only iterates the row, column and step values. In reality, you would need to add
another loop to the script in order to perform the iteration process for each possible de-
interleaver.
The Script
Users with some experience of Python or other scripting languages should be able to
understand the provided sample script. This section looks at some key aspects pf the
sample script.
At the beginning of the script, some variables are initialized which contain the ranges to
be used in the de-interleaving.
row_low, row_high = 11, 12
col_low, col_high = 4, 5
step_low, step_high = 1, 2
After the values are assigned to the variables, the testing of all possible combinations
is performed in the following way:
● The iteration is performed using a set of nested For loops.
● The interleaver is configured via the CA250.setParameterValue() command.
● The interleaver is run via the CA250.runAlgorithm('result_id_scan',
data_id, 'Helical Scan Deinterleaver') command.
● The interleaver results are fed to the Reed-Solomon test via the
CA250.setParameterValue() command.
● The Reed-Solomon test is run via the
CA250.runAlgorithm('result_id_rs_check', result_id_scan[0],
'RS Code Check') command.
For row in range(row_low, row_high + 1):
CA250.setParameterValue('Helical Scan Deinterleaver', 'Number of rows', row)
For col in range(col_low, col_high + 1):
CA250.setParameterValue('Helical Scan Deinterleaver', 'Number of columns', col)
For step in range(step_low, step_high + 1):
print output
If int(powerGF) > 0:
confidence = symlab.parse_int(result_rs_check[0], posConfidence+13)
rs_list.append([confidence, (row, col, step), result_id_scan[0], result_id_rs_
winner_code = result_rs_check
winner_id = result_id_scan
Del result_rs_check
Del result_id_rs_check
Del result_id_scan
rs_list.sort()
The next step is to define the parameters required for the Reed Solomon decoder ("RS
Decoder Non-Systematic").
primitive_polynomial = symlab.cut_out(winner_code[0], ';4 Primitive polynomial:', ';5 LSS')
num_info_sym = symlab.cut_out(winner_code[0], 'Number of Infobits (k):', ';4 Primitive polynom
num_info_sym = int(num_info_sym)
if lss == 'true':
lss_first = 1
else:
lss_first = 0
The decoder is configured using the settings defined above and then run.
Parameters are configured via the CA250.setParameterValue() command.
The decoder is run via the CA250.runAlgorithm() command.
CA250.setParameterValue('RS Decoder Non-Systematic', 'Select GF(2^m)', powerGF)
CA250.enableGuiOutput(1)
retValRS = CA250.runAlgorithm('result_rs_dec', winner_id[0], 'RS Decoder Non-Systematic')
In the script above, you can see that some parameters have been configured via varia-
bles but others have been set directly with a value (e.g. "Error correction"). Those con-
figured via a variable are the values which are important for this example. The others
are set directly in order to keep this script short and simple. In reality, you would also
need to address these settings via the script.
Finally, the results are displayed to the operator. This is done in two steps. First, the
information is prepared using the Output commands. Then, it is displayed using the
Print Output command.
output = '\n\nThe following setup was found with a confidence of '
output += str(confidence) + '%\n\n'
output += '\nHelical Scan Deinterleaver:\n'
output += '\tNumber of rows: ' + str(rs_list[len(rs_list) - 1][1][0]) + '\n'
output += '\tNumber of columns: ' + str(rs_list[len(rs_list) - 1][1][1])+ '\n'
output += '\tStep size: ' + str(rs_list[len(rs_list) - 1][1][2]) + '\n'
print output
2. Double-click anywhere in the "Table View". This will clear any selections which
may have been made.
3. Select "Scripting" in the main menu. Choose "Evaluate script" in the drop down
menu. This will cause a standard file browser to open.
4. Navigate to the script and select it in the browser. Click the "Open" button to
run the script.
NOTE: The script will run immediately! This is a run script operation, not a load
script operation. This will cause the following actions:
● New tabs will open in the R&S CA250 as the script is run and combinations
are tested.
● The "Scripting Console" opens in a new window. Script results are displayed
here.
NOTE: Depending on your system, you may need to select this in the Windows
Task Bar to make it visible - simply click the R&S CA250 icon in the task bar.
● The final results are displayed in the console when all iterations have bee
completed (as shown in the figure below).
1. Select the "Table View" tab containing the bitstream produced by the Viterbi
decoder.
2. Double-click anywhere in the TableView. This will clear any selections which
may have been made.
4. Click the "..." button. Select "Decoder" to browse the list of decoding tools.
9. Click the "Run" button. This causes the de-interleaving process to be performed
using the given parameters.
When completed, a new "Table View" tab will open which contains the de-inter-
leaved symbols.
Typically, such a datastream will included some form of error correction in order to
deal with the errors which remain in the bitstream after the channel coding has
been removed. In this case, such errors typically occur in bursts due to the effects
of spurious noise on the downlink. Reed-Solomon coding is usually used for this
purpose as it can detect and correct such error bursts.
The next step is to use the "Code Classifier" to discover whether Reed-Solomon
has been used and if so, to remove this encoding using the "Reed-Solomon"
decoder. This process will also correct as many remaining errors as possible.
1. The type of coding can be determined using the "Code Classifier". Perform
the classification as described in Chapter 12.6, "Steps to check for channel cod-
ing", on page 97. In this case, the "Code Classifier" result indicates a Reed-Solo-
mon coding, as shown in the figure below.
NOTE: These results should match the results displayed in the Scripting Console
(see Figure 12-3). If they match, proceed to the next step, if not check that you
have selected the correct "Table View" and repeat the previous procedure.
2. Select the "Table View" tab containing the bitstream produced by the de-
interleaver.
4. Click the "..." button. Select "Decoder" to browse the list of decoding tools.
12. Click the "Run" button. This causes the Reed-Solomon (non-systematic) decod-
ing to be performed using the given parameters.
When completed, a new "Table View" tab will open which contains the decoded bit-
stream.
The final step is to select a suitable voice codec.
1. Select the "Table View" tab containing the bitstream produced by the de-
interleaver.
2. Double-click anywhere in the TableView. This will clear any selections which
may have been made.
4. Click the "..." button. Select "Decoder" to browse the list of decoding tools.
5. Select "MELP". This causes "MELP" to appear in the "Symbol operation selection"
field. The "Run" button appears below the field.
6. Click the "Run" button. This causes the datastream to be decoded using the
MELP voice codec.
When completed, a new "MELP" tab will open as shown in the figure below.
7. Click the "Play File Once" button to listen to the result. Ensure that your head-
phones/loud speakers are connected, the volume control is set to an appropriate
level and the sound card's mute function is not selected.
Conclusions
A successful decoding of such a signal depends on:
● Input (possibly from the persons who intercepted/collected it) regarding the type of
signal and its use (i.e. DSSS voice channel used for satellite communications).
● Knowledge of such signals and the coding methods used to create them.
● Experience with scripting and how to effectively implement an iterative script to dis-
cover the interleaver parameters.
● Knowledge of voice codecs and access to codecs suitable for decoding such bit-
streams.
● PSK data is displayed in several colors. For example, from an PSK8 signal:
In "Quality" mode:
● Green = ok
● Red = error
● Yellow = an error which has been corrected
There can be many cyclic structures within the data caused by the conveyed payload
data. So the highest peak may not be the only significant indicator revealed by the
autocorrelation analysis - i.e. lesser peaks may also be worth investigating.
This decision can only be made once! If you choose horizontal then all subsequent
new groups will be added next to the previous one. If you choose vertical then all sub-
sequent new groups will be added below the previous one.
Further tabs can be added to the new group by simply dragging and dropping them
using the mouse.
Further new groups can be added via the right-click context menu. As mention above,
these will bee positioned below/next to the previous group, depending on the position
of the first new group.
Tabs can be dragged and dropped at any time in order to:
● Change the order of the tabs within a group.
● Move tabs from one group to another.
A group must contain at least one tab. A group is erased when its last tab is closed or
moved to another group.
Using these commands, you can create a set of groups and then populate them with
views by simply dragging and dropping the individual tabs. Furthermore, each group
has its own frame which can be resized using the mouse. In this way, user-specific lay-
outs can be created quickly and easily.
These values are based on results from operational experience and should not be
interpreted as being proven standards.
Analytical Convolution Analysis > 2.000 NOTE: selecting more symbols does not
improve the quality of the result.
Robust Convolutional Code > 100.000 Selecting more symbols improves the
Analysis quality of the result.
NOTE: the algorithm needs time
Code Classifier 2.000 - 4.000 NOTE: selecting more symbols does not
improve the quality of the result.
Scrambler Lookup-Table Test > 25.000 Selecting more symbols improves the
quality of the result.