diff options
author | sara <sara.halter@gmx.ch> | 2021-11-16 20:39:48 +0100 |
---|---|---|
committer | sara <sara.halter@gmx.ch> | 2021-11-16 20:39:48 +0100 |
commit | 7103ec40137d9c31d8d1095a355b5023f3ce4305 (patch) | |
tree | a2ea8d3d3e022959a6f6fe963ddcdb80600f4bf3 | |
parent | Merge branch 'master' of github.com:NaoPross/Fading (diff) | |
download | Fading-7103ec40137d9c31d8d1095a355b5023f3ce4305.tar.gz Fading-7103ec40137d9c31d8d1095a355b5023f3ce4305.zip |
Docu Simulations teil angefangen
-rw-r--r-- | doc/thesis/chapters/implementation.tex | 69 | ||||
-rw-r--r-- | doc/thesis/figures/screenshots/QAM16_Fading_2.png | bin | 0 -> 85732 bytes | |||
-rw-r--r-- | doc/thesis/figures/screenshots/QAM16_Fading_2_.png | bin | 0 -> 60702 bytes | |||
-rw-r--r-- | doc/thesis/figures/screenshots/qam_fading_V2_1611.pdf | bin | 0 -> 31646 bytes | |||
-rw-r--r-- | doc/thesis/pdfs/qam_nogui.pdf | bin | 0 -> 30002 bytes | |||
-rwxr-xr-x | simulation/QAM_Fading/qam_fading.py | 8 | ||||
-rw-r--r-- | simulation/QAM_Fading/qam_fading_V2.grc | 88 | ||||
-rw-r--r-- | simulation/QAM_Fading/qam_fading_V2_1611.pdf | bin | 0 -> 31646 bytes |
8 files changed, 106 insertions, 59 deletions
diff --git a/doc/thesis/chapters/implementation.tex b/doc/thesis/chapters/implementation.tex index 18282e4..923cf2b 100644 --- a/doc/thesis/chapters/implementation.tex +++ b/doc/thesis/chapters/implementation.tex @@ -7,36 +7,85 @@ For the simulation task and after for the Hardware part, the open-source Software GNU Radio has been chosen. This software uses toolboxes for signal processing systems too simulate or/and implement a software-defined radio, based on Python and some C++ implementations for some rapid-application-development environments. The toolboxes can simply, with the help of the graphical user interface, used by drag-and-drop. The Boxes are used to write applications, to receive or to transmit date for a digital system. Some blocks like different filters, channel codes or demodulator elements and a lot more are already implemented. For missing application new elements can be added by coding own block. With the help of the GNU Radio software those toolboxes can easily get connected to each other, creating data streams. +\begin{figure} + \includegraphics[width=14cm]{./pdfs/qam_nogui.pdf} + \caption{GNU Radio Blocks} + \label{fig:simul16QAM_block} +\end{figure} + + +\begin{figure} + \includegraphics[width=14cm]{./figures/screenshots/QAM16_Fading_2.png} + \caption{Simulation results} + \label{fig:simul16QAM} +\end{figure} + +\begin{figure} + \includegraphics[width=14cm]{./figures/screenshots/QAM16_Fading_2_.png} + \caption{Simulation results} + \label{fig:simul16QAM_1} +\end{figure} \subsection{16QAM Simulation} +To get a basic line for further simulations a 16QAM has been made. The results of this simulation are shown in \figref{fig:simul16QAM} and \figref{fig:simul16QAM_1} as the red Signal. In \tabref{tab:modulation_settings} some importer Parameter settings for the Simulation Model are mentionet. + +\begin{table}[] + \caption{modulation settings} + \begin{tabular}[h]{|c|c|c|} + \hline + modulation type & Samples per Symbols & costas loop order\\ + \hline + BPSK & & 2\\ + \hline + QPSK & & 4\\ + \hline + 8PSK & & 8\\ + \hline + 16QAM & 4 & 4 \\ + \hline + \end{tabular} + \label{tab:modulation_settings} +\end{table} -\paragraph{Source} +\subsubsection{Transmitter} +\paragraph{Source} +In this simulation a random source has been chosen. \paragraph{Modulator} +The constellation modulator block is used for a root-raised-cosine-filtered basis modulation. The block gives an input of a byte stream as complex modulated signal in the baseband back. +Further more it's possible to chose the modulation type here, in this example it is 16QAM, but QPSK, 8PSK and BPSK would also be possible. +\subsubsection{Channel} \paragraph{Channel Mode} +Here its possible to add some AWGN noise in the channel line. Different parameters can be changed like the noise voltage, time or the frequency offset. +\subsubsection{Receiver} \paragraph{Polyphase Clock Sync} +%% To Do : nochmals anschauen ob dieese erklärung verständlich ist und richtig interpretiert wurde. +With the the polyphase clock sync the symbols can be synchronized by preforming a time synchronization with the help of multiple filterbanks. For that the derivation of the filtered signal should be minimized whish turns to a better SNR. This works with the help of two filterbanks, one of them contains the filters of the signal adapted to the pulse shaping with several phases. The other contains its derivative. So in the time domain it has a sinc shape, for the output Signal the sinc peak should be on a sample, with the fact that sinc(0) = 1 and sinc(0)' = 0 an error signal can be generated which tells how far away from the peak it is. This error Signal should be zero this is possible with the help of a loop second order whish constants the number of the filterbank and the rate. This rate is generated because of the clock difference between the transmitter and reviver to synchronies the receiver the filter goes through the phases. + +For the output one sample per symbol is enough. \paragraph{Equalizer} +? + \paragraph{Costas Loop} +The Costas Loop is used for frequency and phase adjustment it locks the center frequency of the signal additional it converts it back to de baseband. For different modulation types different orders of the loop had to be chosen + \paragraph{Decoder} +From the complex space the constellation points are decode to bits. \subsection{Simulation Fading} -%% TO DO: Quelle: +For the a first simulation with some fading the 16QAM simulation model has been extended with a FIR-Filter in the Chanel. The results of this simulation are shown in \figref{fig:simul16QAM} and \figref{fig:simul16QAM_1} as the blue Signal. +\subsubsection{Channel} \subsubsection{FIR-Filter} - -For a first simple Simulation of the Fading effect. A FIR-Filter has been integrate in the Simulation Model. -\begin{figure} - - \includegraphics[width=10cm]{./figures/screenshots/QAM16_Fading_2.png} - \end{figure} +A FIR-Filter was added in the Channel to create a time delay between tow paths. In \figref{fig:simul16QAM} the result includes a direct path and a delayed one. In the plot of \figref{fig:simul16QAM_1} the transmission line dosn't include a direct path. It's impotent to mention that the delay should be smaller than the symbol rate or a multiple of it. \section{Hardware} @@ -46,13 +95,11 @@ As Hardware we chosen the USRP B210 from Ettus Research, with the following spec \subsection{Hardware setup} The First Hardware set up was from the first SDR to the second, with a coaxial cable in between. - The second was with the antennas. 2.4GHz. % To Do: Picture - \begin{table}[] %To DO sepzifikationen ampssen / genauer? https://www.ettus.com/wp-content/uploads/2019/01/b200-b210_spec_sheet.pdf %https://kb.ettus.com/B200/B210/B200mini/B205mini#FAQ @@ -62,7 +109,7 @@ The second was with the antennas. 2.4GHz. Dimensions & 9.7 x 15.5 x 1.5 cm \\ \hline Ports & -2 TX , 2 RX, Half or Full Duplex\\ + 2 TX , 2 RX, Half or Full Duplex\\ \hline RF frequencies & from 70MHz to 6GHz\\ \hline diff --git a/doc/thesis/figures/screenshots/QAM16_Fading_2.png b/doc/thesis/figures/screenshots/QAM16_Fading_2.png Binary files differnew file mode 100644 index 0000000..cb4d4ed --- /dev/null +++ b/doc/thesis/figures/screenshots/QAM16_Fading_2.png diff --git a/doc/thesis/figures/screenshots/QAM16_Fading_2_.png b/doc/thesis/figures/screenshots/QAM16_Fading_2_.png Binary files differnew file mode 100644 index 0000000..90dc07c --- /dev/null +++ b/doc/thesis/figures/screenshots/QAM16_Fading_2_.png diff --git a/doc/thesis/figures/screenshots/qam_fading_V2_1611.pdf b/doc/thesis/figures/screenshots/qam_fading_V2_1611.pdf Binary files differnew file mode 100644 index 0000000..1c77eed --- /dev/null +++ b/doc/thesis/figures/screenshots/qam_fading_V2_1611.pdf diff --git a/doc/thesis/pdfs/qam_nogui.pdf b/doc/thesis/pdfs/qam_nogui.pdf Binary files differnew file mode 100644 index 0000000..13dd689 --- /dev/null +++ b/doc/thesis/pdfs/qam_nogui.pdf diff --git a/simulation/QAM_Fading/qam_fading.py b/simulation/QAM_Fading/qam_fading.py index fff224a..a921443 100755 --- a/simulation/QAM_Fading/qam_fading.py +++ b/simulation/QAM_Fading/qam_fading.py @@ -350,7 +350,7 @@ class qam_fading(gr.top_block, Qt.QWidget): self.qtgui_const_sink_x_2.enable_axis_labels(True) - labels = ['Fading', '', '', '', '', + labels = ['fading', 'normal', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] @@ -394,7 +394,7 @@ class qam_fading(gr.top_block, Qt.QWidget): self.qtgui_const_sink_x_1.enable_axis_labels(True) - labels = ['Fading', '', '', '', '', + labels = ['fading', 'normal', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] @@ -438,7 +438,7 @@ class qam_fading(gr.top_block, Qt.QWidget): self.qtgui_const_sink_x_0_0.enable_axis_labels(True) - labels = ['Fading', '', '', '', '', + labels = ['fading', 'normal', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] @@ -482,7 +482,7 @@ class qam_fading(gr.top_block, Qt.QWidget): self.qtgui_const_sink_x_0.enable_axis_labels(True) - labels = ['Fading', '', '', '', '', + labels = ['fading', 'normal', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] diff --git a/simulation/QAM_Fading/qam_fading_V2.grc b/simulation/QAM_Fading/qam_fading_V2.grc index adc1925..7f2014b 100644 --- a/simulation/QAM_Fading/qam_fading_V2.grc +++ b/simulation/QAM_Fading/qam_fading_V2.grc @@ -50,7 +50,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1200, 484.0] + coordinate: [1104, 484.0] rotation: 0 state: true - name: amp @@ -71,7 +71,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1136, 612.0] + coordinate: [1040, 612.0] rotation: 0 state: true - name: chn_taps @@ -122,7 +122,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1864, 480.0] + coordinate: [1744, 452.0] rotation: 0 state: true - name: eq_mod @@ -134,7 +134,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1864, 400.0] + coordinate: [1744, 376.0] rotation: 0 state: true - name: eq_ntaps @@ -146,7 +146,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1944, 400.0] + coordinate: [1824, 376.0] rotation: 0 state: true - name: excess_bw @@ -179,7 +179,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1080, 484.0] + coordinate: [984, 484.0] rotation: 0 state: true - name: freq_offset @@ -212,7 +212,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1528, 128.0] + coordinate: [1408, 104.0] rotation: 0 state: true - name: noise_volt @@ -254,7 +254,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2168, 448.0] + coordinate: [2048, 420.0] rotation: 0 state: true - name: rrc_taps @@ -266,7 +266,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1608, 128.0] + coordinate: [1488, 104.0] rotation: 0 state: true - name: samp_rate @@ -332,7 +332,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1528, 192.0] + coordinate: [1408, 164.0] rotation: 0 state: true - name: analog_random_source_x_0 @@ -369,7 +369,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2808, 296.0] + coordinate: [2688, 272.0] rotation: 0 state: true - name: blocks_char_to_float_0_0 @@ -403,7 +403,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2760, 696.0] + coordinate: [2640, 672.0] rotation: 0 state: true - name: blocks_delay_0 @@ -422,7 +422,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2848, 1356.0] + coordinate: [2736, 1360.0] rotation: 0 state: true - name: blocks_throttle_0 @@ -457,7 +457,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2728, 456.0] + coordinate: [2608, 432.0] rotation: 0 state: true - name: blocks_unpack_k_bits_bb_0_0 @@ -489,7 +489,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2664, 872.0] + coordinate: [2544, 848.0] rotation: 0 state: true - name: channels_channel_model_0 @@ -529,7 +529,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1864, 304.0] + coordinate: [1744, 276.0] rotation: 0 state: true - name: digital_cma_equalizer_cc_0_0 @@ -548,7 +548,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1784, 956.0] + coordinate: [1664, 932.0] rotation: 0 state: true - name: digital_constellation_decoder_cb_0 @@ -564,7 +564,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2504, 296.0] + coordinate: [2384, 272.0] rotation: 0 state: true - name: digital_constellation_decoder_cb_0_0 @@ -580,7 +580,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2440, 680.0] + coordinate: [2320, 656.0] rotation: 0 state: true - name: digital_constellation_modulator_0 @@ -619,7 +619,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2168, 288.0] + coordinate: [2048, 264.0] rotation: 0 state: true - name: digital_costas_loop_cc_0_0 @@ -637,7 +637,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2096, 952.0] + coordinate: [1984, 928.0] rotation: 0 state: true - name: digital_diff_decoder_bb_0 @@ -653,7 +653,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2504, 360.0] + coordinate: [2384, 336.0] rotation: 180 state: true - name: digital_diff_decoder_bb_0_0 @@ -669,7 +669,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2472, 760.0] + coordinate: [2352, 736.0] rotation: 180 state: true - name: digital_map_bb_0 @@ -685,7 +685,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2520, 456.0] + coordinate: [2400, 432.0] rotation: 0 state: true - name: digital_map_bb_0_0 @@ -701,7 +701,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2488, 872.0] + coordinate: [2368, 848.0] rotation: 0 state: true - name: digital_pfb_clock_sync_xxx_0 @@ -724,7 +724,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1528, 328.0] + coordinate: [1408, 300.0] rotation: 0 state: true - name: digital_pfb_clock_sync_xxx_0_0 @@ -747,7 +747,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1248, 980.0] + coordinate: [1136, 956.0] rotation: 0 state: true - name: import_0 @@ -779,9 +779,9 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1128, 348.0] + coordinate: [1032, 348.0] rotation: 0 - state: true + state: enabled - name: params id: qtgui_tab_widget parameters: @@ -880,9 +880,9 @@ blocks: comment: '' grid: 'False' gui_hint: 'plots@0: 0,0,1,1' - label1: Fading + label1: fading label10: '' - label2: '' + label2: normal label3: '' label4: '' label5: '' @@ -939,7 +939,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1348.0, -80] + coordinate: [1044.0, -32] rotation: 90 state: enabled - name: qtgui_const_sink_x_0_0 @@ -972,9 +972,9 @@ blocks: comment: '' grid: 'False' gui_hint: 'plots@0: 0,1,1,1' - label1: Fading + label1: fading label10: '' - label2: '' + label2: normal label3: '' label4: '' label5: '' @@ -1031,7 +1031,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1776.0, 80] + coordinate: [1656.0, 56] rotation: 90 state: enabled - name: qtgui_const_sink_x_1 @@ -1064,9 +1064,9 @@ blocks: comment: '' grid: 'False' gui_hint: 'plots@0: 1,0,1,1' - label1: Fading + label1: fading label10: '' - label2: '' + label2: normal label3: '' label4: '' label5: '' @@ -1123,7 +1123,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2016.0, 48] + coordinate: [1896.0, 24] rotation: 90 state: true - name: qtgui_const_sink_x_2 @@ -1156,9 +1156,9 @@ blocks: comment: '' grid: 'False' gui_hint: 'plots@0: 1,1,1,1' - label1: Fading + label1: fading label10: '' - label2: '' + label2: normal label3: '' label4: '' label5: '' @@ -1215,7 +1215,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2400.0, 0] + coordinate: [2280.0, -24] rotation: 90 state: true - name: qtgui_freq_sink_x_0 @@ -1295,7 +1295,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1424.0, 584] + coordinate: [1256.0, 560] rotation: 270 state: true - name: qtgui_freq_sink_x_2_1 @@ -1375,7 +1375,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [3064, 480.0] + coordinate: [2944, 456.0] rotation: 0 state: true - name: qtgui_time_sink_x_0 @@ -1472,7 +1472,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [3032, 288.0] + coordinate: [2912, 260.0] rotation: 0 state: true diff --git a/simulation/QAM_Fading/qam_fading_V2_1611.pdf b/simulation/QAM_Fading/qam_fading_V2_1611.pdf Binary files differnew file mode 100644 index 0000000..1c77eed --- /dev/null +++ b/simulation/QAM_Fading/qam_fading_V2_1611.pdf |