diff --git a/Bilder/fig_noise_signals.png b/Bilder/fig_noise_signals.png new file mode 100644 index 0000000..589c1c0 Binary files /dev/null and b/Bilder/fig_noise_signals.png differ diff --git a/Bilder/fig_plot_1_dsp_complex.png b/Bilder/fig_plot_1_dsp_complex.png index f06f4f4..afb68f3 100644 Binary files a/Bilder/fig_plot_1_dsp_complex.png and b/Bilder/fig_plot_1_dsp_complex.png differ diff --git a/Bilder/fig_plot_1_noise.png b/Bilder/fig_plot_1_noise.png index ab23f9c..ea5d836 100644 Binary files a/Bilder/fig_plot_1_noise.png and b/Bilder/fig_plot_1_noise.png differ diff --git a/Bilder/fig_plot_1_sine_1.png b/Bilder/fig_plot_1_sine_1.png index e07e44c..3df8769 100644 Binary files a/Bilder/fig_plot_1_sine_1.png and b/Bilder/fig_plot_1_sine_1.png differ diff --git a/Bilder/fig_plot_1_sine_2.png b/Bilder/fig_plot_1_sine_2.png index db18aa3..de57678 100644 Binary files a/Bilder/fig_plot_1_sine_2.png and b/Bilder/fig_plot_1_sine_2.png differ diff --git a/Bilder/fig_plot_1_wav.png b/Bilder/fig_plot_1_wav.png index fb34db0..053e059 100644 Binary files a/Bilder/fig_plot_1_wav.png and b/Bilder/fig_plot_1_wav.png differ diff --git a/Bilder/fig_plot_1_wav_complex.png b/Bilder/fig_plot_1_wav_complex.png index 20f5b8c..e4adc46 100644 Binary files a/Bilder/fig_plot_1_wav_complex.png and b/Bilder/fig_plot_1_wav_complex.png differ diff --git a/Bilder/fig_plot_2_dsp_complex.png b/Bilder/fig_plot_2_dsp_complex.png index 93bc7fa..25c3596 100644 Binary files a/Bilder/fig_plot_2_dsp_complex.png and b/Bilder/fig_plot_2_dsp_complex.png differ diff --git a/Bilder/fig_plot_2_noise.png b/Bilder/fig_plot_2_noise.png index b44918a..2d55221 100644 Binary files a/Bilder/fig_plot_2_noise.png and b/Bilder/fig_plot_2_noise.png differ diff --git a/Bilder/fig_plot_2_sine_1.png b/Bilder/fig_plot_2_sine_1.png index 3e97429..1813270 100644 Binary files a/Bilder/fig_plot_2_sine_1.png and b/Bilder/fig_plot_2_sine_1.png differ diff --git a/Bilder/fig_plot_2_sine_2.png b/Bilder/fig_plot_2_sine_2.png index 3287d79..0b473bb 100644 Binary files a/Bilder/fig_plot_2_sine_2.png and b/Bilder/fig_plot_2_sine_2.png differ diff --git a/Bilder/fig_plot_2_wav.png b/Bilder/fig_plot_2_wav.png index af6c6d9..5bdd3f0 100644 Binary files a/Bilder/fig_plot_2_wav.png and b/Bilder/fig_plot_2_wav.png differ diff --git a/Bilder/fig_plot_2_wav_complex.png b/Bilder/fig_plot_2_wav_complex.png index 378486a..1611e4b 100644 Binary files a/Bilder/fig_plot_2_wav_complex.png and b/Bilder/fig_plot_2_wav_complex.png differ diff --git a/Bilder/fig_plot_3_wav_complex.png b/Bilder/fig_plot_3_wav_complex.png index 990caba..61f2092 100644 Binary files a/Bilder/fig_plot_3_wav_complex.png and b/Bilder/fig_plot_3_wav_complex.png differ diff --git a/Bilder/fig_plot_4_wav_complex.png b/Bilder/fig_plot_4_wav_complex.png index 4c1b9cf..c8274a0 100644 Binary files a/Bilder/fig_plot_4_wav_complex.png and b/Bilder/fig_plot_4_wav_complex.png differ diff --git a/Bilder/fig_snr_comparison.png b/Bilder/fig_snr_comparison.png new file mode 100644 index 0000000..a4fda2e Binary files /dev/null and b/Bilder/fig_snr_comparison.png differ diff --git a/chapter_04.aux b/chapter_04.aux index 1878977..9a490f4 100644 --- a/chapter_04.aux +++ b/chapter_04.aux @@ -1,28 +1,28 @@ \relax -\@writefile{toc}{\contentsline {section}{\numberline {4}Hardware implementation and performance quantization of the ANR Algorithm on a low-power system}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}Hardware implementation and performance quantization of the ANR Algorithm on a low-power system}{42}{}\protected@file@percent } \acronymused{ANR} \acronymused{CI} \acronymused{ANR} \acronymused{ANR} \acronymused{ANR} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Low-power system architecture and integration}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Low-power system architecture and integration}{42}{}\protected@file@percent } \AC@undonewlabel{acro:SOC} -\newlabel{acro:SOC}{{4.1}{40}{}{subsection.4.1}{}} +\newlabel{acro:SOC}{{4.1}{42}{}{}{}} \acronymused{SOC} \AC@undonewlabel{acro:ARM} -\newlabel{acro:ARM}{{4.1}{40}{}{subsection.4.1}{}} +\newlabel{acro:ARM}{{4.1}{42}{}{}{}} \acronymused{ARM} \acronymused{DSP} \acronymused{ARM} \acronymused{DSP} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}ARM and DSP hardware architecture overview}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}ARM and DSP hardware architecture overview}{42}{}\protected@file@percent } \acronymused{ARM} \acronymused{ARM} \acronymused{CI} \acronymused{DSP} \acronymused{DSP} \AC@undonewlabel{acro:MAC} -\newlabel{acro:MAC}{{4.1.1}{40}{}{subsubsection.4.1.1}{}} +\newlabel{acro:MAC}{{4.1.1}{42}{}{}{}} \acronymused{MAC} \acronymused{ARM} \acronymused{ANR} @@ -37,10 +37,10 @@ \acronymused{ARM} \acronymused{DSP} \AC@undonewlabel{acro:DMA} -\newlabel{acro:DMA}{{4.1.1}{41}{}{subsubsection.4.1.1}{}} +\newlabel{acro:DMA}{{4.1.1}{43}{}{}{}} \acronymused{DMA} \AC@undonewlabel{acro:PCM} -\newlabel{acro:PCM}{{4.1.1}{41}{}{subsubsection.4.1.1}{}} +\newlabel{acro:PCM}{{4.1.1}{43}{}{}{}} \acronymused{PCM} \acronymused{DSP} \acronymused{PCM} @@ -51,13 +51,13 @@ \acronymused{DSP} \acronymused{DSP} \AC@undonewlabel{acro:ALU} -\newlabel{acro:ALU}{{4.1.1}{41}{}{subsubsection.4.1.1}{}} +\newlabel{acro:ALU}{{4.1.1}{43}{}{}{}} \acronymused{ALU} \acronymused{DSP} \acronymused{MAC} \acronymused{ALU} \acronymused{MAC} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Intercore communication mechanisms}{41}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Intercore communication mechanisms}{43}{}\protected@file@percent } \acronymused{CI} \acronymused{ARM} \acronymused{DSP} @@ -65,12 +65,12 @@ \acronymused{DSP} \acronymused{DSP} \acronymused{ARM} -\@writefile{lof}{\contentsline {figure}{\numberline {32}{\ignorespaces Simplified visualization of the interaction between the \ac {CI}-System, the \ac {ARM} core and the \ac {DSP} core, making use of the \ac {PCM} interface and shared memory for audio data exchange.}}{42}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {32}{\ignorespaces Simplified visualization of the interaction between the \ac {CI}-System, the \ac {ARM} core and the \ac {DSP} core, making use of the \ac {PCM} interface and shared memory for audio data exchange.}}{44}{}\protected@file@percent } \acronymused{CI} \acronymused{ARM} \acronymused{DSP} \acronymused{PCM} -\newlabel{fig:fig_dsp_setup.jpg}{{32}{42}{}{figure.32}{}} +\newlabel{fig:fig_dsp_setup.jpg}{{32}{44}{}{}{}} \acronymused{ARM} \acronymused{PCM} \acronymused{DMA} @@ -82,12 +82,12 @@ \acronymused{DSP} \acronymused{DMA} \acronymused{PCM} -\@writefile{lof}{\contentsline {figure}{\numberline {33}{\ignorespaces Simplified flowchart of the sample processing between the \ac {ARM} core and the \ac {DSP} core via interrupts and shared memory.}}{43}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {33}{\ignorespaces Simplified flowchart of the sample processing between the \ac {ARM} core and the \ac {DSP} core via interrupts and shared memory.}}{45}{}\protected@file@percent } \acronymused{ARM} \acronymused{DSP} -\newlabel{fig:fig_dsp_comm.jpg}{{33}{43}{}{figure.33}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Software architecture and execution flow}{43}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}ARM–DSP communication and data exchange details}{43}{}\protected@file@percent } +\newlabel{fig:fig_dsp_comm.jpg}{{33}{45}{}{}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Software architecture and execution flow}{45}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}ARM–DSP communication and data exchange details}{45}{}\protected@file@percent } \acronymused{ANR} \acronymused{DSP} \acronymused{DSP} @@ -117,11 +117,11 @@ \acronymused{PCM} \acronymused{ARM} \acronymused{DSP} -\@writefile{lof}{\contentsline {figure}{\numberline {34}{\ignorespaces Detailed visualization of the \ac {DMA} operations between the PCM interface to the shared memory section. When the memory buffer occupied, an interrupt is triggered, either to the \ac {DSP} core or to the \ac {ARM} core, depending on, if triggered during a Read- or Write-operation.}}{45}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {34}{\ignorespaces Detailed visualization of the \ac {DMA} operations between the PCM interface to the shared memory section. When the memory buffer occupied, an interrupt is triggered, either to the \ac {DSP} core or to the \ac {ARM} core, depending on, if triggered during a Read- or Write-operation.}}{47}{}\protected@file@percent } \acronymused{DMA} \acronymused{DSP} \acronymused{ARM} -\newlabel{fig:fig_dsp_dma.jpg}{{34}{45}{}{figure.34}{}} +\newlabel{fig:fig_dsp_dma.jpg}{{34}{47}{}{}{}} \acronymused{DMA} \acronymused{DMA} \acronymused{PCM} @@ -131,18 +131,18 @@ \acronymused{ARM} \acronymused{ANR} \acronymused{DSP} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}System control flow and main processing loop}{45}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}System control flow and main processing loop}{47}{}\protected@file@percent } \acronymused{ANR} \acronymused{DSP} -\@writefile{toc}{\contentsline {paragraph}{Memory initialization and mapping}{45}{}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{Memory initialization and mapping}{47}{}\protected@file@percent } \acronymused{DSP} \acronymused{PCM} \acronymused{DSP} -\newlabel{fig:fig_dps_code_memory}{{4.2.2}{46}{}{lstnumber.-2.13}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {35}{\ignorespaces Low-level implementation: Memory initialization and mapping}}{46}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {36}{\ignorespaces Exemplary memory map of the 4-element input buffer array. As it is initialized as a 16-bit integer array, each element occupies 2 bytes of memory, resulting in a total size of 8 bytes for the entire array. As the DSP architecture works in 32-bit double-words, the bytewise addressing is a result of the compiler abstraction.}}{46}{}\protected@file@percent } -\newlabel{fig:fig_compiler.jpg}{{36}{46}{}{figure.36}{}} -\@writefile{toc}{\contentsline {paragraph}{Main loop and interrupt handling}{46}{}\protected@file@percent } +\newlabel{fig:fig_dps_code_memory}{{4.2.2}{48}{}{}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {35}{\ignorespaces Low-level implementation: Memory initialization and mapping}}{48}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {36}{\ignorespaces Exemplary memory map of the 4-element input buffer array. As it is initialized as a 16-bit integer array, each element occupies 2 bytes of memory, resulting in a total size of 8 bytes for the entire array. As the DSP architecture works in 32-bit double-words, the bytewise addressing is a result of the compiler abstraction.}}{48}{}\protected@file@percent } +\newlabel{fig:fig_compiler.jpg}{{36}{48}{}{}{}} +\@writefile{toc}{\contentsline {paragraph}{Main loop and interrupt handling}{48}{}\protected@file@percent } \acronymused{DSP} \acronymused{ANR} \acronymused{ARM} @@ -150,76 +150,76 @@ \acronymused{DSP} \acronymused{ARM} \acronymused{DSP} -\@writefile{lof}{\contentsline {figure}{\numberline {37}{\ignorespaces Low-level implementation: Main loop and interrupt handling}}{47}{}\protected@file@percent } -\newlabel{fig:fig_dps_code_mainloop}{{37}{47}{}{figure.37}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {38}{\ignorespaces Flow diagram of the code implementation of the main loop and interrupt handling on the \ac {DSP} core.}}{48}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {37}{\ignorespaces Low-level implementation: Main loop and interrupt handling}}{49}{}\protected@file@percent } +\newlabel{fig:fig_dps_code_mainloop}{{37}{49}{}{}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {38}{\ignorespaces Flow diagram of the code implementation of the main loop and interrupt handling on the \ac {DSP} core.}}{50}{}\protected@file@percent } \acronymused{DSP} -\newlabel{fig:fig_dsp_logic.jpg}{{38}{48}{}{figure.38}{}} -\@writefile{toc}{\contentsline {paragraph}{calculate\_output()-function}{48}{}\protected@file@percent } +\newlabel{fig:fig_dsp_logic.jpg}{{38}{50}{}{}{}} +\@writefile{toc}{\contentsline {paragraph}{calculate\_output()-function}{50}{}\protected@file@percent } \acronymused{DSP} \acronymused{ANR} \acronymused{DSP} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}DSP-level implementation of the ANR algorithm}{49}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}DSP-level implementation of the ANR algorithm}{51}{}\protected@file@percent } \acronymused{DSP} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.1}DSP-specific optimizations for real-time processing}{49}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.1}DSP-specific optimizations for real-time processing}{51}{}\protected@file@percent } \acronymused{ANR} \acronymused{DSP} -\@writefile{toc}{\contentsline {paragraph}{Logic operations}{49}{}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{Logic operations}{51}{}\protected@file@percent } \acronymused{DSP} \acronymused{DSP} -\@writefile{lof}{\contentsline {figure}{\numberline {39}{\ignorespaces Manual implementation of a max-function, returning the maximum of two integer values, taking 12 cycles to execute. The intrinsic functions of the DSP compiler allows a 4-cycle implementation of such an operation.}}{49}{}\protected@file@percent } -\newlabel{fig:fig_dsp_code_find_max}{{39}{49}{}{figure.39}{}} -\@writefile{toc}{\contentsline {paragraph}{Cyclic array iteration}{49}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {39}{\ignorespaces Manual implementation of a max-function, returning the maximum of two integer values, taking 12 cycles to execute. The intrinsic functions of the DSP compiler allows a 4-cycle implementation of such an operation.}}{51}{}\protected@file@percent } +\newlabel{fig:fig_dsp_code_find_max}{{39}{51}{}{}{}} +\@writefile{toc}{\contentsline {paragraph}{Cyclic array iteration}{51}{}\protected@file@percent } \acronymused{ANR} -\@writefile{lof}{\contentsline {figure}{\numberline {40}{\ignorespaces Manual implementation of a cyclic array iteration function in C, taking the core 20 cycles to execute a pointer inremen of 1. The intrinsic functions of the DSP compiler allows a single-cycle implementation of such cyclic additions.}}{50}{}\protected@file@percent } -\newlabel{fig:fig_dsp_code_cyclic_add}{{40}{50}{}{figure.40}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {40}{\ignorespaces Manual implementation of a cyclic array iteration function in C, taking the core 20 cycles to execute a pointer inremen of 1. The intrinsic functions of the DSP compiler allows a single-cycle implementation of such cyclic additions.}}{52}{}\protected@file@percent } +\newlabel{fig:fig_dsp_code_cyclic_add}{{40}{52}{}{}{}} \acronymused{DSP} \acronymused{DSP} -\@writefile{toc}{\contentsline {paragraph}{Fractional fixed-point arithmetic}{50}{}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{Fractional fixed-point arithmetic}{52}{}\protected@file@percent } \acronymused{DSP} \acronymused{MAC} \acronymused{ALU} \acronymused{DSP} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.2}Performance quantization of the ANR calculation}{50}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.2}Performance quantization of the ANR calculation}{52}{}\protected@file@percent } \acronymused{ANR} \acronymused{DSP} \acronymused{FIR} \acronymused{FIR} \acronymused{DSP} -\@writefile{toc}{\contentsline {paragraph}{write\_buffer}{51}{}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{write\_buffer}{53}{}\protected@file@percent } \acronymused{DSP} -\@writefile{toc}{\contentsline {paragraph}{apply\_fir\_filter}{51}{}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{apply\_fir\_filter}{53}{}\protected@file@percent } \acronymused{FIR} \acronymused{MAC} \acronymused{DSP} \acronymused{DSP} -\@writefile{lof}{\contentsline {figure}{\numberline {41}{\ignorespaces Code snippet of the $apply\_fir\_filter$-function, showing the use of the dual \ac {MAC} architecture of the \ac {DSP} and the fractional multiplication function. The loop iterates through the filter coefficients and reference noise signal samples, performing two multiplications and two additions in each cycle.}}{52}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {41}{\ignorespaces Code snippet of the $apply\_fir\_filter$-function, showing the use of the dual \ac {MAC} architecture of the \ac {DSP} and the fractional multiplication function. The loop iterates through the filter coefficients and reference noise signal samples, performing two multiplications and two additions in each cycle.}}{54}{}\protected@file@percent } \acronymused{MAC} \acronymused{DSP} -\newlabel{fig:fig_dsp_code_apply_fir_filter}{{41}{52}{}{figure.41}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {42}{\ignorespaces Visualization of the FIR filter calculation in the $apply\_fir\_filter$-function during the 2nd cyclce of a calculation loop. The reference noise signal samples are stored in the sample line, while the filter coefficients are stored in a separate memory section (filter line).}}{52}{}\protected@file@percent } -\newlabel{fig:fig_dsp_fir_cycle.jpg}{{42}{52}{}{figure.42}{}} -\@writefile{toc}{\contentsline {paragraph}{update\_output}{53}{}\protected@file@percent } -\@writefile{toc}{\contentsline {paragraph}{update\_filter\_coefficient}{53}{}\protected@file@percent } +\newlabel{fig:fig_dsp_code_apply_fir_filter}{{41}{54}{}{}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {42}{\ignorespaces Visualization of the FIR filter calculation in the $apply\_fir\_filter$-function during the 2nd cyclce of a calculation loop. The reference noise signal samples are stored in the sample line, while the filter coefficients are stored in a separate memory section (filter line).}}{54}{}\protected@file@percent } +\newlabel{fig:fig_dsp_fir_cycle.jpg}{{42}{54}{}{}{}} +\@writefile{toc}{\contentsline {paragraph}{update\_output}{55}{}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{update\_filter\_coefficient}{55}{}\protected@file@percent } \acronymused{DSP} \acronymused{MAC} -\@writefile{lof}{\contentsline {figure}{\numberline {43}{\ignorespaces Code snippet of the $update\_filter\_coefficient$-function, again making use of the dual \ac {MAC} architecture of the \ac {DSP} and the fractional multiplication function. Additionaly, 32-bit values are loaded and stored as 64-bit values, using two also intrinisc functions, allowing to update two filter coefficients in a single cycle.}}{53}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {43}{\ignorespaces Code snippet of the $update\_filter\_coefficient$-function, again making use of the dual \ac {MAC} architecture of the \ac {DSP} and the fractional multiplication function. Additionaly, 32-bit values are loaded and stored as 64-bit values, using two also intrinisc functions, allowing to update two filter coefficients in a single cycle.}}{55}{}\protected@file@percent } \acronymused{MAC} \acronymused{DSP} -\newlabel{fig:fig_dsp_code_update_filter_coefficients}{{43}{53}{}{figure.43}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {44}{\ignorespaces Visualization of the coefficient calculation in the $update\_filter\_coefficient$-function during the 2nd cyclce of a calculation loop. The output is multiplied with the step size and the corresponding sample from the sample line, before being added to the current filter coefficient.}}{54}{}\protected@file@percent } -\newlabel{fig:fig_dsp_coefficient_cycle.jpg}{{44}{54}{}{figure.44}{}} -\@writefile{toc}{\contentsline {paragraph}{write\_output}{54}{}\protected@file@percent } -\newlabel{equation_computing}{{24}{54}{}{equation.24}{}} -\newlabel{equation_c_1}{{25}{54}{}{equation.25}{}} -\newlabel{equation_c_2}{{26}{54}{}{equation.26}{}} -\newlabel{equation_c_3}{{27}{54}{}{equation.27}{}} -\newlabel{equation_c_4}{{28}{54}{}{equation.28}{}} -\newlabel{equation_c_5}{{30}{54}{}{equation.30}{}} -\newlabel{equation_computing_final}{{31}{55}{}{equation.31}{}} +\newlabel{fig:fig_dsp_code_update_filter_coefficients}{{43}{55}{}{}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {44}{\ignorespaces Visualization of the coefficient calculation in the $update\_filter\_coefficient$-function during the 2nd cyclce of a calculation loop. The output is multiplied with the step size and the corresponding sample from the sample line, before being added to the current filter coefficient.}}{56}{}\protected@file@percent } +\newlabel{fig:fig_dsp_coefficient_cycle.jpg}{{44}{56}{}{}{}} +\@writefile{toc}{\contentsline {paragraph}{write\_output}{56}{}\protected@file@percent } +\newlabel{equation_computing}{{24}{56}{}{}{}} +\newlabel{equation_c_1}{{25}{56}{}{}{}} +\newlabel{equation_c_2}{{26}{56}{}{}{}} +\newlabel{equation_c_3}{{27}{56}{}{}{}} +\newlabel{equation_c_4}{{28}{56}{}{}{}} +\newlabel{equation_c_5}{{30}{56}{}{}{}} +\newlabel{equation_computing_final}{{31}{57}{}{}{}} \acronymused{DSP} \@setckpt{chapter_04}{ -\setcounter{page}{56} +\setcounter{page}{58} \setcounter{equation}{31} \setcounter{enumi}{0} \setcounter{enumii}{0} @@ -354,7 +354,7 @@ \setcounter{lstnumber}{15} \setcounter{FancyVerbLine}{0} \setcounter{linenumber}{1} -\setcounter{LN@truepage}{55} +\setcounter{LN@truepage}{57} \setcounter{FancyVerbWriteLine}{0} \setcounter{FancyVerbBufferLine}{0} \setcounter{FV@TrueTabGroupLevel}{0} diff --git a/chapter_05.aux b/chapter_05.aux index ada39fd..3bc2fe8 100644 --- a/chapter_05.aux +++ b/chapter_05.aux @@ -1,18 +1,18 @@ \relax -\@writefile{toc}{\contentsline {section}{\numberline {5}Performance evaluation of different implementation variants}{56}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5}Performance evaluation of different implementation variants}{58}{}\protected@file@percent } \acronymused{DSP} \acronymused{ANR} \acronymused{FIR} \acronymused{ANR} \acronymused{SNR} -\@writefile{lof}{\contentsline {figure}{\numberline {45}{\ignorespaces Desired signal, corrupted signal, reference noise signal and filter output of the complex \ac {ANR} use case, simulated on the \ac {DSP}}}{56}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {45}{\ignorespaces Desired signal, corrupted signal, reference noise signal and filter output of the complex \ac {ANR} use case, simulated on the \ac {DSP}}}{58}{}\protected@file@percent } \acronymused{ANR} \acronymused{DSP} -\newlabel{fig:fig_plot_1_dsp_complex.png}{{45}{56}{}{figure.45}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {46}{\ignorespaces Error signal and filter coefficient evolution of the complex \ac {ANR} use case, simulated on the \ac {DSP}}}{57}{}\protected@file@percent } +\newlabel{fig:fig_plot_1_dsp_complex.png}{{45}{58}{}{}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {46}{\ignorespaces Error signal of the complex \ac {ANR} use case, simulated on the \ac {DSP}}}{59}{}\protected@file@percent } \acronymused{ANR} \acronymused{DSP} -\newlabel{fig:fig_plot_2_dsp_complex.png}{{46}{57}{}{figure.46}{}} +\newlabel{fig:fig_plot_2_dsp_complex.png}{{46}{59}{}{}{}} \acronymused{ANR} \acronymused{DSP} \acronymused{SNR} @@ -20,12 +20,21 @@ \acronymused{DSP} \acronymused{ANR} \acronymused{DSP} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Computational efficiency evaluation}{57}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Computational efficiency evaluation}{59}{}\protected@file@percent } +\acronymused{CI} \acronymused{ANR} +\acronymused{CI} +\@writefile{lof}{\contentsline {figure}{\numberline {47}{\ignorespaces Noise signals used to corrupt the desired signal in the computational efficiency evaluation}}{60}{}\protected@file@percent } +\newlabel{fig:fig_noise_signals.png}{{47}{60}{}{}{}} \acronymused{ANR} \acronymused{SNR} +\@writefile{lof}{\contentsline {figure}{\numberline {48}{\ignorespaces Python simulation of the to be expected \ac {SNR}-Gain for different noise signals and filter lengths applied to the desired signal of a male speaker. The applied delay between the signals amounts 2ms. The graphes are smoothed by a third order savigol filter.}}{61}{}\protected@file@percent } +\acronymused{SNR} +\newlabel{fig:fig_snr_comparison.png}{{48}{61}{}{}{}} +\acronymused{SNR} +\acronymused{SNR} \@setckpt{chapter_05}{ -\setcounter{page}{58} +\setcounter{page}{62} \setcounter{equation}{31} \setcounter{enumi}{0} \setcounter{enumii}{0} @@ -39,7 +48,7 @@ \setcounter{subsubsection}{0} \setcounter{paragraph}{0} \setcounter{subparagraph}{0} -\setcounter{figure}{46} +\setcounter{figure}{48} \setcounter{table}{0} \setcounter{float@type}{16} \setcounter{tabx@nest}{0} @@ -160,7 +169,7 @@ \setcounter{lstnumber}{15} \setcounter{FancyVerbLine}{0} \setcounter{linenumber}{1} -\setcounter{LN@truepage}{57} +\setcounter{LN@truepage}{61} \setcounter{FancyVerbWriteLine}{0} \setcounter{FancyVerbBufferLine}{0} \setcounter{FV@TrueTabGroupLevel}{0} diff --git a/chapter_05.tex b/chapter_05.tex index 3e24527..3bb0e4e 100644 --- a/chapter_05.tex +++ b/chapter_05.tex @@ -1,5 +1,5 @@ \section{Performance evaluation of different implementation variants} -To verify the general performance of the \ac{DSP} implemented \ac{ANR} algorithm, the complex usecase of the high-level implemenation is used, which includes, again, a 16-tap \ac{FIR} filter and an update of the filter coefficients every cycle. In contary to the high-level implementation, the coeffcient convergence is now not included in the evaluation anymore, but the metric for the \ac{ANR} performance stays the same as the \ac{SNR} improvement. +To verify the general performance of the \ac{DSP}-implemented \ac{ANR} algorithm, the complex usecase of the high-level implemenation is utilized, which includes, again, a 16-tap \ac{FIR} filter and an update of the filter coefficients every cycle. In contary to the high-level implementation, the coeffcient convergence is now not included in the evaluation anymore, but the metric for the \ac{ANR} performance stays the same as the \ac{SNR} improvement. \begin{figure}[H] \centering \includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_dsp_complex.png} @@ -9,23 +9,32 @@ To verify the general performance of the \ac{DSP} implemented \ac{ANR} algorithm \begin{figure}[H] \centering \includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_dsp_complex.png} - \caption{Error signal and filter coefficient evolution of the complex \ac{ANR} use case, simulated on the \ac{DSP}} + \caption{Error signal of the complex \ac{ANR} use case, simulated on the \ac{DSP}} \label{fig:fig_plot_2_dsp_complex.png} \end{figure} -Figure \ref{fig:fig_plot_1_dsp_complex.png} and \ref{fig:fig_plot_2_dsp_complex.png} show the results of the complex \ac{ANR} use case, simulated on the \ac{DSP}. The \ac{SNR} improvement of XXXX dB is nearly the same as the one of the high-level implementation, which is XXXX dB. The small difference can be explained by the fact that the \ac{DSP} implementation is based on fixed-point arithmetic, which leads to a slightly different convergence behavior. Nevertheless, the results show that the \ac{DSP} implementation of the \ac{ANR} algorithm is able to achieve a similar performance as the high-level implementation, again indicating the fact, that 16 filter coefficients are insufficent to filter out a complex, phase-shifted noise signal. The next step is of evaluate the performance of the \ac{DSP} implementation in terms of computational efficiency under different scenarios. +\noindent Figure \ref{fig:fig_plot_1_dsp_complex.png} and \ref{fig:fig_plot_2_dsp_complex.png} show the results of the complex \ac{ANR} use case, simulated on the \ac{DSP}. The \ac{SNR} improvement of 5.92 dB is similar to the one of the high-level implementation, which is 5.14 dB. The small difference can be explained by the fact that the \ac{DSP} implementation is based on fixed-point arithmetic, which leads to a slightly different convergence behavior. Nevertheless, the results show that the \ac{DSP} implementation of the \ac{ANR} algorithm is able to achieve a similar performance as the high-level implementation, again indicating the fact, that 16 filter coefficients are insufficent to filter out a complex, phase-shifted noise signal. The next step is of evaluate the performance of the \ac{DSP} implementation in terms of computational efficiency under different scenarios. \subsection{Computational efficiency evaluation} -\noindent For the evaluation of the computational efficiency, different combinations of desired signals and noise signals are considered. This approach rules out, that a certain combination of signals is not representative for the overall performance of the \ac{ANR} algorithm. -The desired signals are chosen as follows: +\noindent For the evaluation of the computational efficiency, different signal combinations, which are to be expected everyday situiations for a \ac{CI} patient, are considered. This approach rules out, that a certain combination of signals is not representative for the overall performance of the \ac{ANR} algorithm. +The desired signal of a male voice over speaker is now corrupted with 5 different noise signals: \begin{itemize} - \item A male speaker on TV - \item A short music jingle + \item Breathing noise: Already used in the high-level implementation, this noise signal is a typical noise source for \ac{CI} patients, especially in quiet environments. It consists out of slowly rising and falling peaks. + \item Coughing noise: This noise signal is generated by coughing and consists out few, but long lasting peaks. + \item Scratching noise: This noise signal is generated by scratching some material, like the hair or clothes. It consists out of a high number of sharp peaks. + \item Drinking Noise: This noise signal is generated by drinking and consists out of a low number of peaks, which are not as sharp as the ones of the scratching noise, but still more sharp than the ones of the breathing and coughing noise. + \item Chewing Noise: This noise signal is generated by chewing and consists out of a high number of peaks of different amplitude. \end{itemize} -PLOT -These two desired signals are corrupted with 3 different noise signals: -\begin{itemize} - \item The already used breathing sound - \item A chewing sound - \item A scratching sound -\end{itemize} -PLOT -The combination of stated sets delivers 6 different scenarious, everyone different in regard of it's challenges for the \ac{ANR} algorithm. For every scenario, the \ac{SNR}-Gain is calculated with an increasing set of filter coeffcients, ranging from 16 to 64. \ No newline at end of file +The vizualization of the noise signals is shown in figure \ref{fig:fig_noise_signals.png}. +\begin{figure}[H] + \centering + \includegraphics[width=1.0\linewidth]{Bilder/fig_noise_signals.png} + \caption{Noise signals used to corrupt the desired signal in the computational efficiency evaluation} + \label{fig:fig_noise_signals.png} +\end{figure} +The combination of stated sets delivers five different scenarious, everyone different in regard of it's challenges for the \ac{ANR} algorithm. For every scenario, the \ac{SNR}-Gain is calculated with an increasing set of filter coeffcients, ranging from 16 to 64. +\begin{figure}[H] + \centering + \includegraphics[width=1.0\linewidth]{Bilder/fig_snr_comparison.png} + \caption{Python simulation of the to be expected \ac{SNR}-Gain for different noise signals and filter lengths applied to the desired signal of a male speaker. The applied delay between the signals amounts 2ms. The graphes are smoothed by a third order savigol filter.} + \label{fig:fig_snr_comparison.png} +\end{figure} +Figure \ref{fig:fig_snr_comparison.png} shows the expected \ac{SNR}-Gain for the different noise signals and filter lengths. The results shows, that a minimum filter length of about 32 taps is required, before (in any case) a rise in the \ac{SNR}-Gain can be observed. \ No newline at end of file diff --git a/main.bbl-SAVE-ERROR b/main.bbl-SAVE-ERROR new file mode 100644 index 0000000..81a4eca --- /dev/null +++ b/main.bbl-SAVE-ERROR @@ -0,0 +1,164 @@ +% $ biblatex auxiliary file $ +% $ biblatex bbl format version 3.2 $ +% Do not modify the above lines! +% +% This is an auxiliary file used by the 'biblatex' package. +% This file may safely be deleted. It will be recreated by +% biber as required. +% +\begingroup +\makeatletter +\@ifundefined{ver@biblatex.sty} + {\@latex@error + {Missing 'biblatex' package} + {The bibliography requires the 'biblatex' package.} + \aftergroup\endinput} + {} +\endgroup + + +\refsection{0} + \datalist[entry]{none/global//global/global} + \entry{source_synchrony}{misc}{} + \name{author}{1}{}{% + {{hash=ffb45f0281705211553241b831eeaf22}{% + family={MED-EL}, + familyi={M\bibinithyphendelim E\bibinitperiod}}}% + } + \strng{namehash}{ffb45f0281705211553241b831eeaf22} + \strng{fullhash}{ffb45f0281705211553241b831eeaf22} + \strng{bibnamehash}{ffb45f0281705211553241b831eeaf22} + \strng{authorbibnamehash}{ffb45f0281705211553241b831eeaf22} + \strng{authornamehash}{ffb45f0281705211553241b831eeaf22} + \strng{authorfullhash}{ffb45f0281705211553241b831eeaf22} + \field{extraname}{1} + \field{sortinit}{1} + \field{sortinithash}{4f6aaa89bab872aa0999fec09ff8e98a} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{howpublished}{\url{https://www.medel.com/de/hearing-solutions/cochlear-implants}} + \field{note}{Accessed on 20.01.2026} + \field{title}{MED-EL Synchrony Cochlear Implant with a Sonnet 3 Audio Processor} + \field{year}{2026} + \endentry + \entry{source_electrode}{misc}{} + \name{author}{1}{}{% + {{hash=ffb45f0281705211553241b831eeaf22}{% + family={MED-EL}, + familyi={M\bibinithyphendelim E\bibinitperiod}}}% + } + \strng{namehash}{ffb45f0281705211553241b831eeaf22} + \strng{fullhash}{ffb45f0281705211553241b831eeaf22} + \strng{bibnamehash}{ffb45f0281705211553241b831eeaf22} + \strng{authorbibnamehash}{ffb45f0281705211553241b831eeaf22} + \strng{authornamehash}{ffb45f0281705211553241b831eeaf22} + \strng{authorfullhash}{ffb45f0281705211553241b831eeaf22} + \field{extraname}{2} + \field{sortinit}{3} + \field{sortinithash}{ad6fe7482ffbd7b9f99c9e8b5dccd3d7} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{howpublished}{\url{https://blog.medel.pro/de/chirurgie/relevanz-der-ci-elektrode/}} + \field{note}{Accessed on 30.01.2026} + \field{title}{Visualization of a MED-EL electrode inserted into a human cochlear} + \field{year}{2026} + \endentry + \entry{source_dsp_ch1}{misc}{} + \name{author}{1}{}{% + {{hash=26ad37f8f6f878dc28acadb561885bff}{% + family={Li\bibnamedelima Tan}, + familyi={L\bibinitperiod\bibinitdelim T\bibinitperiod}, + given={Jean\bibnamedelima Jiang}, + giveni={J\bibinitperiod\bibinitdelim J\bibinitperiod}}}% + } + \strng{namehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{fullhash}{26ad37f8f6f878dc28acadb561885bff} + \strng{bibnamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authorbibnamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authornamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authorfullhash}{26ad37f8f6f878dc28acadb561885bff} + \field{extraname}{1} + \field{sortinit}{4} + \field{sortinithash}{9381316451d1b9788675a07e972a12a7} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{howpublished}{Elsevier Inc.} + \field{note}{Chapter 1} + \field{title}{Digital Signal Processing Fundamentals and Applications 3rd Ed} + \field{year}{2013} + \endentry + \entry{source_dsp_ch2}{misc}{} + \name{author}{1}{}{% + {{hash=26ad37f8f6f878dc28acadb561885bff}{% + family={Li\bibnamedelima Tan}, + familyi={L\bibinitperiod\bibinitdelim T\bibinitperiod}, + given={Jean\bibnamedelima Jiang}, + giveni={J\bibinitperiod\bibinitdelim J\bibinitperiod}}}% + } + \strng{namehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{fullhash}{26ad37f8f6f878dc28acadb561885bff} + \strng{bibnamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authorbibnamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authornamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authorfullhash}{26ad37f8f6f878dc28acadb561885bff} + \field{extraname}{2} + \field{sortinit}{1} + \field{sortinithash}{4f6aaa89bab872aa0999fec09ff8e98a} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{howpublished}{Elsevier Inc.} + \field{note}{Chapter 2} + \field{title}{Digital Signal Processing Fundamentals and Applications 3rd Ed} + \field{year}{2013} + \endentry + \entry{source_patent}{misc}{} + \name{author}{1}{}{% + {{hash=93a5470d20a141eea1a1f94678d4a447}{% + family={Fogel}, + familyi={F\bibinitperiod}, + given={Lawrence\bibnamedelima J.}, + giveni={L\bibinitperiod\bibinitdelim J\bibinitperiod}}}% + } + \strng{namehash}{93a5470d20a141eea1a1f94678d4a447} + \strng{fullhash}{93a5470d20a141eea1a1f94678d4a447} + \strng{bibnamehash}{93a5470d20a141eea1a1f94678d4a447} + \strng{authorbibnamehash}{93a5470d20a141eea1a1f94678d4a447} + \strng{authornamehash}{93a5470d20a141eea1a1f94678d4a447} + \strng{authorfullhash}{93a5470d20a141eea1a1f94678d4a447} + \field{sortinit}{1} + \field{sortinithash}{4f6aaa89bab872aa0999fec09ff8e98a} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{howpublished}{United States Patent Office} + \field{note}{Pat. Nr. 2966549} + \field{title}{Apparatus for improving intelligence under high ambient noise levels} + \field{year}{1960} + \endentry + \entry{source_dsp_ch9}{misc}{} + \name{author}{1}{}{% + {{hash=26ad37f8f6f878dc28acadb561885bff}{% + family={Li\bibnamedelima Tan}, + familyi={L\bibinitperiod\bibinitdelim T\bibinitperiod}, + given={Jean\bibnamedelima Jiang}, + giveni={J\bibinitperiod\bibinitdelim J\bibinitperiod}}}% + } + \strng{namehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{fullhash}{26ad37f8f6f878dc28acadb561885bff} + \strng{bibnamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authorbibnamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authornamehash}{26ad37f8f6f878dc28acadb561885bff} + \strng{authorfullhash}{26ad37f8f6f878dc28acadb561885bff} + \field{extraname}{3} + \field{sortinit}{1} + \field{sortinithash}{4f6aaa89bab872aa0999fec09ff8e98a} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{howpublished}{Elsevier Inc.} + \field{note}{Chapter 9} + \field{title}{Digital Signal Processing Fundamentals and Applications 3rd Ed} + \field{year}{2013} + \endentry + \enddatalist +\endrefsection +\endinput +