Rechtschreibfehler
This commit is contained in:
2
.vscode/ltex.hiddenFalsePositives.en-US.txt
vendored
2
.vscode/ltex.hiddenFalsePositives.en-US.txt
vendored
@@ -1,3 +1,5 @@
|
||||
{"rule":"ABOUT_ITS_NN","sentence":"^\\QIn contrary to it's counterpart, it also uses past output samples in addition to current and past input samples - therefore the response of an IIR-filter theoretically continues indefinitely.\\E$"}
|
||||
{"rule":"THE_SUPERLATIVE","sentence":"^\\QNormalized Least Mean Squares (NLMS): An extension of the LMS algorithm that normalizes the step size based on the input signal, improving convergence speed.\\E$"}
|
||||
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QThe necessity for the use of electric filters arose the first time in the beginnings of the 20th century with the development of the quite young fields of tele- and radio-communication.\\E$"}
|
||||
{"rule":"EN_A_VS_AN","sentence":"^\\QFigure \\E(?:Dummy|Ina|Jimmy-|Dummy-|Maniquí-|Maniquíes-)[0-9]+\\Q showed us the basic concept of an \\E(?:Dummy|Ina|Jimmy-|Dummy-|Maniquí-|Maniquíes-)[0-9]+\\Q implementation, without a detailed description how the corrupted signal \\E(?:Dummy|Ina|Jimmy-|Dummy-|Maniquí-|Maniquíes-)[0-9]+\\Q and the reference noise signal \\E(?:Dummy|Ina|Jimmy-|Dummy-|Maniquí-|Maniquíes-)[0-9]+\\Q are formed.\\E$"}
|
||||
{"rule":"EN_A_VS_AN","sentence":"^\\QThe system combines the flexibility of an \\E(?:Dummy|Ina|Jimmy-|Dummy-|Maniquí-|Maniquíes-)[0-9]+\\Q-based control processor with the computational efficiency of a specialized \\E(?:Dummy|Ina|Jimmy-|Dummy-|Maniquí-|Maniquíes-)[0-9]+\\Q, splitting general computing tasks from real-time signal processing workloads.\\E$"}
|
||||
|
||||
@@ -5,7 +5,7 @@ Filters are used in various functional designs, therefore a short explanation in
|
||||
At this point an introduction into adaptive noise reduction follows, including a short overview of the most important steps in history, the general concept of \ac{ANR}, its design possibilities and its optimization possibilities in regard of error calculation.\\
|
||||
With this knowledge covered, a realistic signal flow diagram of an implanted \ac{CI} system with corresponding transfer functions is designed, essential to implement \ac{ANR} on a low-power digital signal processor.\\
|
||||
At the end of chapter two, high-level Python simulations shall function as a practical demonstration of the recently presented theoretical background.\\ \\
|
||||
Throughout this thesis, sampled signals are denoted in lowercase with square brackets (e.g. {x[n]}) to distinguish them from time-continuous signals (e.g. {x(t)}). Vectors are notaded in lowercase bold font, whereas matrix are notaded in uppercase bold font. Scalars are notated in normal lowercase font.\\
|
||||
Throughout this thesis, sampled signals are denoted in lowercase with square brackets (e.g. {x[n]}) to distinguish them from time-continuous signals (e.g. {x(t)}). Vectors are notated in lowercase bold font, whereas matrix are notated in uppercase bold font. Scalars are notated in normal lowercase font.\\
|
||||
\subsection{Signals and signal interference}
|
||||
A signal is a physical parameter (e.g. pressure, voltage) changing its value over time. Whereas in nature, a signal is always analog, meaning continuous in both time and amplitude, a digital signal is represented in a discrete form, being sampled at specific time intervals and quantized to finite amplitude levels.\\ \\
|
||||
The term "signal interference" describes the overlapping of unwanted signals or noise with the desired signal, degrading the overall quality and intelligibility of the processed information. A simple example of signal interference is shown in Figure \ref{fig:fig_interference} - the noisy signal (top) consists out of several signals of different frequencies, representing both the desired signal and unwanted noise. The cleaned signal (bottom) shows the desired signal after unwanted frequencies has been cut off by a filter.\\ \\
|
||||
@@ -81,7 +81,7 @@ As there are three operators present in the filter, three samples are needed bef
|
||||
\label{fig:fig_fir}
|
||||
\end{figure}
|
||||
\subsubsection{Infinite Impulse Response filters}
|
||||
An \ac{IIR} filter, commonly referred to as a ``Feedback Filter'' can be seen as an extension of the \ac{FIR} filter. In contrary to its counterpart, it also uses past output samples in addition to current input samples to adapt its filtering behavior - therefore the response of an \ac{IIR} filter theoretically continues indefinitely, even if the input signal is reduced to zero.\\ \\
|
||||
A \ac{IIR} filter, commonly referred to as a ``Feedback Filter'' can be seen as an extension of the \ac{FIR} filter. In contrary to its counterpart, it also uses past output samples in addition to current input samples to adapt its filtering behavior - therefore the response of a \ac{IIR} filter theoretically continues indefinitely, even if the input signal is reduced to zero.\\ \\
|
||||
Equation \ref{equation_iir} specifies the input-output relationship of a \ac{IIR} filter. In addition to Equation \ref{equation_fir} there is now a second term included, where $a_0$ to $a_N$ are the feedback coefficients with their own filter length N.
|
||||
\begin{equation}
|
||||
\label{equation_iir}
|
||||
@@ -96,7 +96,7 @@ Figure \ref{fig:fig_iir} visualizes a simple \ac{IIR} filter with two feedforwar
|
||||
\end{figure}
|
||||
\subsubsection{FIR- vs. IIR-filters}
|
||||
Due to the fact, that there is no feedback, a \ac{FIR} filter offers unconditional stability, meaning that the filter response always converges, no matter how the coefficients are set. The disadvantages of the \ac{FIR} design is the relatively flat frequency response and the higher number of needed coefficients needed to achieve a sharp frequency response compared to its Infinite Impulse Response counterpart.\\ \\
|
||||
The recursive nature of an \ac{IIR} filter, in contrary, allows achieving a sharp frequency response with significantly fewer coefficients than an equivalent \ac{FIR} filter, but it also opens up the possibility, that the filter response diverges, depending on the set coefficients.\\ \\
|
||||
The recursive nature of a \ac{IIR} filter, in contrary, allows achieving a sharp frequency response with significantly fewer coefficients than an equivalent \ac{FIR} filter, but it also opens up the possibility, that the filter response diverges, depending on the set coefficients.\\ \\
|
||||
A higher number of needed coefficients implies, that the filter itself needs more time to complete its signal response, as the group delay is increased.
|
||||
|
||||
\subsection{Introduction to Adaptive Noise Reduction}
|
||||
@@ -122,7 +122,7 @@ Although active noise cancellation and adaptive noise reduction share obvious si
|
||||
\caption{The basic idea of an adaptive filter design for noise reduction.}
|
||||
\label{fig:fig_anr}
|
||||
\end{figure}
|
||||
\noindent Figure \ref{fig:fig_anr} shows the basic concept of an adaptive filter design, represented through a feedback filter application. The primary sensor (top) aims to receive the desired signal and outputs the corrupted signal $d[n]$, which consists out of the desired signal $s[n]$ and the corruption noise signal $n[n]$ after passing the transfer function of the sensor, whereas the secondary signal sensor aims to receive (ideally) only the noise signal and outputs the reference noise signal $x[n]$ after also passing the respective transfer funtion, which then feeds the adaptive filter. We assume at this point, that the corruption noise signal is uncorrelated to the desired signal, and therefore separable from it. In addition, we assume, that the corruption noise signal is correlated to the reference noise signal, as it originates from the same source, but takes a different signal path. \\ \\ The adaptive filter removes a certain, noise-related, frequency part of the input signal and re-evaluates the output through its feedback design. The filter parameters are then adjusted and applied to the next sample to minimize the observed error $e[n]$, which also represents the approximated desired signal $š[n]$. In reality, a signal contamination of the two sensors has to be expected, which will be illustrated in a more realistic signal flow diagram of an implanted \ac{CI} system in chapter 2.6.
|
||||
\noindent Figure \ref{fig:fig_anr} shows the basic concept of an adaptive filter design, represented through a feedback filter application. The primary sensor (top) aims to receive the desired signal and outputs the corrupted signal $d[n]$, which consists out of the desired signal $s[n]$ and the corruption noise signal $n[n]$ after passing the transfer function of the sensor, whereas the secondary signal sensor aims to receive (ideally) only the noise signal and outputs the reference noise signal $x[n]$ after also passing the respective transfer function, which then feeds the adaptive filter. We assume at this point, that the corruption noise signal is uncorrelated to the desired signal, and therefore separable from it. In addition, we assume, that the corruption noise signal is correlated to the reference noise signal, as it originates from the same source, but takes a different signal path. \\ \\ The adaptive filter removes a certain, noise-related, frequency part of the input signal and re-evaluates the output through its feedback design. The filter parameters are then adjusted and applied to the next sample to minimize the observed error $e[n]$, which also represents the approximated desired signal $š[n]$. In reality, a signal contamination of the two sensors has to be expected, which will be illustrated in a more realistic signal flow diagram of an implanted \ac{CI} system in chapter 2.6.
|
||||
\subsubsection{Fully adaptive vs. hybrid filter design}
|
||||
The basic \ac{ANR} concept illustrated in Figure \ref{fig:fig_anr} can be understood as a fully adaptive variant. A fully adaptive filter design works with a fixed number of coefficients of which everyone is updated after every sample processing. Even if this approach features the best performance in noise reduction, it also requires a relatively high amount of computing power, as every coefficient has to be re-calculated after every evaluation step.\\ \\
|
||||
To reduce the required computing power, a hybrid static/adaptive filter design can be taken into consideration instead (refer to Figure \ref{fig:fig_anr_hybrid}). In this approach, the initial fully adaptive filter is split into a fixed and an adaptive part - the static filter removes a certain, known, or estimated, frequency portion of the noise signal, whereas the adaptive part only has to adapt to the remaining, unforecastable, noise parts. This approach reduces the number of coefficients required to be adapted, therefore lowering the required computing power.
|
||||
@@ -277,7 +277,7 @@ The following definitions of the involved signals shall help to better understan
|
||||
\item Filter output / Cleaned signal: The output signal of the \ac{ANR} algorithm, representing the desired signal after noise reduction. This signal also equals the error signal of the adaptive filter.
|
||||
\end{itemize}
|
||||
The primary sensor receives the desired- and noise signal over their respective transfer functions and outputs the corrupted signal $d[n]$, which consists out of the recorded desired signal $s[n]$ and the corruption noise signal $n[n]$, whereas the noise signal sensor aims to receive (ideally) only the noise signal $v[n]$ over its transfer function and outputs the reference noise signal $x[n]$, which then feeds the adaptive filter.\\ \\
|
||||
Additionally, now the relevant transfer functions of the overall system are illustrated in Figure \ref{fig:fig_anr_implant}. The transfer functions $C_n$, $D_n$, and $E_n$ describe the path from the signal sources to the cochlear implant system. As the sources, the relative location of the user to the sources and the medium bewteen them can vary, these transfer functions are time-variant and unknown. After the signals reached the implant systems, we establish the possibility, that the remaining path of the signals is mainly depented on the sensitivity curve of the respective sensors and therefore can be seen as time-invariant and known. This known transfer functions, which are titled $A$ and $B$, allow us to apply an hybrid static/adaptive filter design for the \ac{ANR} implementation, as described in chapter 2.5.2.\\ \\
|
||||
Additionally, now the relevant transfer functions of the overall system are illustrated in Figure \ref{fig:fig_anr_implant}. The transfer functions $C_n$, $D_n$, and $E_n$ describe the path from the signal sources to the cochlear implant system. As the sources, the relative location of the user to the sources and the medium between them can vary, these transfer functions are time-variant and unknown. After the signals reached the implant systems, we establish the possibility, that the remaining path of the signals is mainly depended on the sensitivity curve of the respective sensors and therefore can be seen as time-invariant and known. This known transfer functions, which are titled $A$ and $B$, allow us to apply a hybrid static/adaptive filter design for the \ac{ANR} implementation, as described in chapter 2.5.2.\\ \\
|
||||
\begin{equation}
|
||||
\label{equation_dn}
|
||||
d[n] = s[n] + n[n] = t[n] * (C_nA) + v[n] * (D_nA)
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
\section{High level simulations}
|
||||
The main purpose of the high-level simulations is to verify and demonstrate the theoretical approach of the previous chapters and to evaluate the performance of the proposed algorithms under various conditions. The following simulations include different scenarios such as, different types of noise signals and different cosniderations of transfer functions. The goal is to verify different approaches before taking the step to the implementation of said algorithms on the low-power \ac{DSP}.\\ \\
|
||||
The main purpose of the high-level simulations is to verify and demonstrate the theoretical approach of the previous chapters and to evaluate the performance of the proposed algorithms under various conditions. The following simulations include different scenarios such as, different types of noise signals and different considerations of transfer functions. The goal is to verify different approaches before taking the step to the implementation of said algorithms on the low-power \ac{DSP}.\\ \\
|
||||
The implementation is conducted in Python, which provides a flexible environment for numerical computations and data visualization. The simulation is graphically represented using the Python library Matplotlib, allowing for clear visualization of the results.
|
||||
\subsection{Adaptive Noise Reduction algorithm implementation}
|
||||
The high-level implementation of the \ac{ANR} algorithm follows the theoretical framework outlined in Subchapter 2.5, specificially Equation \ref{equation_lms}. The algorithm is designed to adaptively filter out noise from a desired signal using a reference noise input. The implementation of the \ac{ANR} function includes the following key steps:
|
||||
The high-level implementation of the \ac{ANR} algorithm follows the theoretical framework outlined in Subchapter 2.5, specifically Equation \ref{equation_lms}. The algorithm is designed to adaptively filter out noise from a desired signal using a reference noise input. The implementation of the \ac{ANR} function includes the following key steps:
|
||||
\begin{itemize}
|
||||
\item Initialization: Define vectors to store the filter coefficients, the output samples, and the updated filter coefficients over time.
|
||||
\item Filtering Process: After initially enough input samples (= number of filter coeffcients) passed the filter, for each sample in the input sample, the filter coefficients are multiplied with the corresponding reference noise samples before added to an accumulator.
|
||||
\item Error Calculation: The accumulator is then substracted from the current input sample to produce the output sample, which represents the error signal.
|
||||
\item Coefficient Update: The filter coefficients are updated by the corrector, which consists out of the error signal, scaled by the step size. The adaption step parameter allows to control how often the coefficients are updated.
|
||||
\item Filtering Process: After initially enough input samples (= number of filter coefficients) passed the filter, for each sample in the input sample, the filter coefficients are multiplied with the corresponding reference noise samples before added to an accumulator.
|
||||
\item Error Calculation: The accumulator is then subtracted from the current input sample to produce the output sample, which represents the error signal.
|
||||
\item Coefficient Update: The filter coefficients are updated by the corrector, which consists out of the error signal, scaled by the step size. The adaption step parameter allows controlling how often the coefficients are updated.
|
||||
\item Iteration: Repeat the process for all samples in the input signal.
|
||||
\end{itemize}
|
||||
The flow diagram in Figure \ref{fig:fig_anr_logic} illustrates the logical flow of the \ac{ANR} algorithm, while the code snippet in Figure \ref{fig:fig_anr_code} provides the concrete code implementation of the \ac{ANR}-function.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\linewidth]{Bilder/fig_anr_logic.jpg}
|
||||
\caption{Flow diagram of the code implementation of the \ac{ANR} algrotihm.}
|
||||
\caption{Flow diagram of the code implementation of the \ac{ANR} algorithm.}
|
||||
\label{fig:fig_anr_logic}
|
||||
\end{figure}
|
||||
\begin{figure}[H]
|
||||
@@ -44,101 +44,101 @@ The flow diagram in Figure \ref{fig:fig_anr_logic} illustrates the logical flow
|
||||
\label{fig:fig_anr_code}
|
||||
\caption{High-level implementation of the \ac{ANR} algorithm in Python}
|
||||
\end{figure}
|
||||
\noindent The algroithm implementation shall now be put under test by different usecases to demonstrate the functionality and performance under different secnarios, varying from simple to complex ones. Every usecase includes graphical representations of the desired signal, the corrupted signal, the reference noise signal, the filter output, the error signal and the evolution of selected filter coefficients over time. In contrary to a realistic setup, the desired signal is available, allowing to evaulatue the performance of the algorithm in a clear way. The performance of the \ac{ANR} algorithm is evaluated based on the error between the desired signal and the filter output, complemented whith the normalized integrated squared error.
|
||||
\subsection{Simple ANR usecases}
|
||||
To evaltuate the general functionality and performance of the \ac{ANR} algorithm from Figure \ref{fig:fig_anr_code} a set of three simple, artificial scenarios are introduced. These examples shall serve as a showcase to demonstrate the general functionality, the possibilities and the limitations of the \ac{ANR} algorithm.\\ \\
|
||||
In all three scenarios, a chirp signal with a frequency range from 100-1000 Hz is used as the desired signal, which is then corrupted with a sine wave (Usecase 1 and 2) or a gaussian white noise (Usecase 3) as noise signal respectively. In this simple setup, the corrpution noise signal is also available as the reference noise signal. Every approach is conducted with 16 filter coefficients and a stepsize of 0.01. The four graphs in the repsective first plot show the desired signal, the corrupted signal, the reference noise signal and the filter output. The two graphs in the respective second plot show the performance of the filter in form of the resulting error signal and the evolution of three filter coefficients over time.\\ \\
|
||||
\noindent This artificial setup could be solved analitically, as the signals do not pass seperate, different transfer functions. This means, that the reference noise signal is the same as the corruption noise signal. This simple setup would not require an adaptive filter approach, but it nevertheless allows to clearly evaluate the performance of the \ac{ANR} algorithm in different scenarios. Also, due to the fact that the desired signal is known, it is possible to graphically evaluate the performance of the algorithm in a simple way.
|
||||
\subsubsection{Simple usecase 1: Sine noise at 2000 Hz}
|
||||
In the first usecase, a sine wave with a frequency of 2000 Hz, which lies outside the frequency spectrum of the chirp, is used as noise signal to corrupt the desired signal. The shape of the initial desired signal is still clearly recognizeable, even if its shape is affected in the higher frequency area. The filter output in Figure \ref{fig:fig_plot_1_sine_1.png} shows a statisfying performance of the \ac{ANR} algorithm, as the noise is almost completely removed from the corrupted signal after the filter coefficients have adapted.
|
||||
\noindent The algorithm implementation shall now be put under test by different use cases to demonstrate the functionality and performance under different scenarios, varying from simple to complex ones. Every use case includes graphical representations of the desired signal, the corrupted signal, the reference noise signal, the filter output, the error signal and the evolution of selected filter coefficients over time. In contrary to a realistic setup, the desired signal is available, allowing to evaluate the performance of the algorithm in a clear way. The performance of the \ac{ANR} algorithm is evaluated based on the error between the desired signal and the filter output, complemented with the normalized integrated squared error.
|
||||
\subsection{Simple ANR use cases}
|
||||
To evaluate the general functionality and performance of the \ac{ANR} algorithm from Figure \ref{fig:fig_anr_code} a set of three simple, artificial scenarios are introduced. These examples shall serve as a showcase to demonstrate the general functionality, the possibilities and the limitations of the \ac{ANR} algorithm.\\ \\
|
||||
In all three scenarios, a chirp signal with a frequency range from 100-1000 Hz is used as the desired signal, which is then corrupted with a sine wave (Use case 1 and 2) or a Gaussian white noise (Use case 3) as noise signal respectively. In this simple setup, the corruption noise signal is also available as the reference noise signal. Every approach is conducted with 16 filter coefficients and a step size of 0.01. The four graphs in the respective first plot show the desired signal, the corrupted signal, the reference noise signal and the filter output. The two graphs in the respective second plot show the performance of the filter in form of the resulting error signal and the evolution of three filter coefficients over time.\\ \\
|
||||
\noindent This artificial setup could be solved analytically, as the signals do not pass separate, different transfer functions, meaning, that the reference noise signal is the same as the corruption noise signal. Though, this simple setup would not require an adaptive filter approach, it nevertheless allows to clearly evaluate the performance of the \ac{ANR} algorithm in different scenarios. Also, due to the fact that the desired signal is known, it is possible to graphically evaluate the performance of the algorithm in a simple way.
|
||||
\subsubsection{Simple use case 1: Sine noise at 2000 Hz}
|
||||
In the first use case, a sine wave with a frequency of 2000 Hz, which lies outside the frequency spectrum of the chirp, is used as noise signal to corrupt the desired signal. The shape of the initial desired signal is still clearly recognizable, even if its shape is affected in the higher frequency area. The filter output in Figure \ref{fig:fig_plot_1_sine_1.png} shows a satisfying performance of the \ac{ANR} algorithm, as the noise is almost completely removed from the corrupted signal after the filter coefficients have adapted.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_sine_1.png}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of simple usecase 1}
|
||||
\caption{Desired signal, corrupted signal, reference noise signal and filter output of simple use case 1}
|
||||
\label{fig:fig_plot_1_sine_1.png}
|
||||
\end{figure}
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_sine_1.png} confirms this observation, as the signal converges basically to zero after 200 ms. The evolution of the filter coefficients also indicates a quick convergence, meaning that the algorithm has adapted effectively to minimize the error over time.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_sine_1.png}
|
||||
\caption{Error signal and filter coefficient evolution of simple usecase 1}
|
||||
\caption{Error signal and filter coefficient evolution of simple use case 1}
|
||||
\label{fig:fig_plot_2_sine_1.png}
|
||||
\end{figure}
|
||||
\subsubsection{Simple usecase 2: Sine noise at 500 Hz}
|
||||
The second usecase resembles the first one, but instead of a 2000 Hz sine wave, a sine wave with a frequency of 500 Hz is used as noise signal. This means, that the noise signal now overlaps with the frequency spectrum of the chirp signal, making the noise cancellation task more challenging, as an osciillation beacon in the area of 500 Hz appears. Also, in contrary to usecase 1, the shape of the initial chirp is now far less recognizebale. The filter output in Figure \ref{fig:fig_plot_1_sine_2.png} indicates that the \ac{ANR} algorithm is still able to significantly reduce the noise from the corrputed signal,
|
||||
\subsubsection{Simple use case 2: Sine noise at 500 Hz}
|
||||
The second use case resembles the first one, but instead of a 2000 Hz sine wave, a sine wave with a frequency of 500 Hz is used as noise signal. This means, that the noise signal now overlaps with the frequency spectrum of the chirp signal, making the noise cancellation task more challenging, as an oscillation beacon in the area of 500 Hz appears. Also, in contrary to use case 1, the shape of the initial chirp is now far less recognizable. The filter output in Figure \ref{fig:fig_plot_1_sine_2.png} indicates that the \ac{ANR} algorithm is still able to significantly reduce the noise from the corrupted signal,
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_sine_2.png}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of simple usecase 2}
|
||||
\caption{Desired signal, corrupted signal, reference noise signal and filter output of simple use case 2}
|
||||
\label{fig:fig_plot_1_sine_2.png}
|
||||
\end{figure}
|
||||
\noindent Figure \ref{fig:fig_plot_2_sine_2.png} shows a significant increase of the amplitude of the error signal compared to Usecase 1, especially around the 500 Hz frequency of the noise signal. Also the adaption of the coefficients shows far more variance compared to Usecase 1, with a complete rearrangement in the area of 500 Hz. This indicates that the \ac{ANR} algorithm is struggling to adapt effectively in a scenario, where the noise signal overlaps with the desired signal.
|
||||
\noindent Figure \ref{fig:fig_plot_2_sine_2.png} shows a significant increase of the amplitude of the error signal compared to Use case 1, especially around the 500 Hz frequency of the noise signal. Also, the adaption of the coefficients shows far more variance compared to Use case 1, with a complete rearrangement in the area of 500 Hz. This indicates that the \ac{ANR} algorithm is struggling to adapt effectively in a scenario, where the noise signal overlaps with the desired signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_sine_2.png}
|
||||
\caption{Error signal and filter coefficient evolution of simple usecase 2}
|
||||
\caption{Error signal and filter coefficient evolution of simple use case 2}
|
||||
\label{fig:fig_plot_2_sine_2.png}
|
||||
\end{figure}
|
||||
\subsubsection{Simple usecase 3: Gaussian white noise}
|
||||
The last on of our three simplified usecases involves the use of a gaussian white noise signal as the noise signal to corrupt the desired signal. This scenario represents a more complex situation, as white noise contains a broad spectrum of frequencies and is not deterministic, making it more challenging for the \ac{ANR} algorithm to effectively generate a clean output. Nevertheless, the filter output in Figure \ref{fig:fig_plot_1_noise.png} demonstrates that the \ac{ANR} algorithm is capable of significantly reducing the noise from the desired signal, although the amplitude of the filter output varies, indicating difficulties adapting due to the broad frequency spectrum of the noise.
|
||||
\subsubsection{Simple use case 3: Gaussian white noise}
|
||||
The last on of our three simplified use cases involves the use of a Gaussian white noise signal as the noise signal to corrupt the desired signal. This scenario represents a more complex situation, as white noise contains a broad spectrum of frequencies and is not deterministic, making it more challenging for the \ac{ANR} algorithm to effectively generate a clean output. Nevertheless, the filter output in Figure \ref{fig:fig_plot_1_noise.png} demonstrates that the \ac{ANR} algorithm is capable of significantly reducing the noise from the desired signal, although the amplitude of the filter output varies, indicating difficulties adapting due to the broad frequency spectrum of the noise.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_noise.png}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of simple usecase 3}
|
||||
\caption{Desired signal, corrupted signal, reference noise signal and filter output of simple use case 3}
|
||||
\label{fig:fig_plot_1_noise.png}
|
||||
\end{figure}
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_noise.png} shows a noticeable variance compared to the previous usecases, especially at the beginning of the signal, where low frequencies dominate. The evolution of the filter coefficients show an interesting pattern, as only the coefficinet in the beginning adapts significantly, while the others remain relatively stable around zero.
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_noise.png} shows a noticeable variance compared to the previous use cases, especially at the beginning of the signal, where low frequencies dominate. The evolution of the filter coefficients show an interesting pattern, as only the coefficient in the beginning adapts significantly, while the others remain relatively stable around zero.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_noise.png}
|
||||
\caption{Error signal and filter coefficient evolution of simple usecase 3}
|
||||
\caption{Error signal and filter coefficient evolution of simple use case 3}
|
||||
\label{fig:fig_plot_2_noise.png}
|
||||
\end{figure}
|
||||
\subsection{Intermediate usecase}
|
||||
After the general functionality of the \ac{ANR} algorithm has been verified with the above simple and artificial usecases, a more complex and intermediate scenario is now introduced. In this usecase, a real-world audio track of a person speaking on TV (see top graph in Figure \ref{fig:fig_plot_1_wav.png}) is used as the desired signal, which is then corrupted with a dominant breathing noise as the noise signal. This scenario represents a more realistic application of the \ac{ANR} algorithm, as it involves complex audio signals with varying frequency components and relatively high dynamics, but still keeps the advantage of having the clean signal available for performance evaluation. Also, again, the same noise which corrputs the desired signal is used as the reference noise signal, as no transfer functionsare applied on the signals.
|
||||
\subsection{Intermediate use case}
|
||||
After the general functionality of the \ac{ANR} algorithm has been verified with the above simple and artificial use cases, a more complex and intermediate scenario is now introduced. In this use case, a real-world audio track of a person speaking on TV (see top graph in Figure \ref{fig:fig_plot_1_wav.png}) is used as the desired signal, which is then corrupted with a dominant breathing noise as the noise signal. This scenario represents a more realistic application of the \ac{ANR} algorithm, as it involves complex audio signals with varying frequency components and relatively high dynamics, but still keeps the advantage of having the clean signal available for performance evaluation. Also, again, the same noise which corrupts the desired signal is used as the reference noise signal, as no transfer functions are applied on the signals.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_wav.png}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of the intermediate \ac{ANR} usecase}
|
||||
\caption{Desired signal, corrupted signal, reference noise signal and filter output of the intermediate \ac{ANR} use case}
|
||||
\label{fig:fig_plot_1_wav.png}
|
||||
\end{figure}
|
||||
\noindent The filter output in Figure \ref{fig:fig_plot_1_wav.png} indicates already graphically, that the audio track of the person speaking is significantly more intelligible after the application of the \ac{ANR} algorithm - the prominent breathing noise is clearly reduced in the filter output compared to the corrupted signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_wav.png}
|
||||
\caption{Error signal and filter coefficient evolution of the intermediate \ac{ANR} usecase}
|
||||
\caption{Error signal and filter coefficient evolution of the intermediate \ac{ANR} use case}
|
||||
\label{fig:fig_plot_2_wav.png}
|
||||
\end{figure}
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav.png} confirms the function of the algorithm and shows peaks corresponding to the spikes in the breathing noise, indicating the the moments, when the \ac{ANR} algorithm is setting its coeffcients again to adapt to the changing noise characteristics. It makes sense, that the adaption of the filter coefficients causes repeating spikes in the error signal, as the noise signal now is not static or periodic, but rather dynamic and changing it frequenc and amplitude over time.
|
||||
\subsection{Complex ANR usecase}
|
||||
To close the topic of high-level simulations of the \ac{ANR} algorithm, a more complex and realistic usecase is finally introduced. In this scenario, the same two audio tracks of the previous usecase are used - but now they pass different transfer functions. Now, an analitical solution is not possible anymore, as the transfer functions affect the signals in different ways, making it impossible to simply subtract the noise signal from the corrupted signal. This scenario represents a more realistic application of the \ac{ANR} algorithm, as it involves complex audio signals with varying frequency components and dynamics, as well as different transfer functions affecting the signals.\\ \\
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav.png} confirms the function of the algorithm and shows peaks corresponding to the spikes in the breathing noise, indicating the moments, when the \ac{ANR} algorithm is setting its coefficients again to adapt to the changing noise characteristics. It makes sense, that the adaption of the filter coefficients causes repeating spikes in the error signal, as the noise signal now is not static or periodic, but rather dynamic and changing it frequency and amplitude over time.
|
||||
\subsection{Complex ANR use case}
|
||||
To close the topic of high-level simulations of the \ac{ANR} algorithm, a more complex and realistic use case is finally introduced. In this scenario, the same two audio tracks of the previous use case are used - but now they pass different transfer functions. Now, an analytical solution is not possible anymore, as the transfer functions affect the signals in different ways, making it impossible to simply subtract the noise signal from the corrupted signal. This scenario represents a more realistic application of the \ac{ANR} algorithm, as it involves complex audio signals with varying frequency components and dynamics, as well as different transfer functions affecting the signals.\\ \\
|
||||
Different transfer functions represent the reality of different sensors recording the corrupted signal and the reference noise signal with a specific frequency response characteristic - this circumstance is especially important, as later a fixed set of filter coefficients shall take care of the predictable part of the signal to reduce the computing power of the \ac{DSP}.\\
|
||||
Therefore, the audio tracks from the previous example are now convolved with different transfer functions, which mimic the case, that the sensor recording the corrputed signal, shows another frequency response characteristic as the one recording the reference noise signal. This means, that the reference noise signal is now different to the noise signal corrupting the desired signal, making adaptive noise reduction the only feasible approach to reduce the noise from the corrputed signal.
|
||||
Therefore, the audio tracks from the previous example are now convolved with different transfer functions, which mimic the case, that the sensor recording the corrupted signal, shows another frequency response characteristic as the one recording the reference noise signal. This means, that the reference noise signal is now different to the noise signal corrupting the desired signal, making adaptive noise reduction the only feasible approach to reduce the noise from the corrupted signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_3_wav_complex.png}
|
||||
\caption{Two different sensor sensitivity curves used for recording the corrupted signal and the reference noise signal}
|
||||
\label{fig:fig_plot_3_wav_complex.png}
|
||||
\end{figure}
|
||||
\noindent Figure \ref{fig:fig_plot_3_wav_complex.png} illustrates the sensitivity curve of two different microphones used to record the corrupted signal and the reference noise signal respectively, resulting in two different transfer functions applied to the signals. The effect of transfer functions on the noise signal is shown in Figure \ref{fig:fig_plot_4_wav_complex.png}, where the top graph shows the noise signal at it´s source, while the second and third graph show the effect of the two different transfer functions resulting in the corrpuption noise signal and the reference noise signal respectively.
|
||||
\noindent Figure \ref{fig:fig_plot_3_wav_complex.png} illustrates the sensitivity curve of two different microphones used to record the corrupted signal and the reference noise signal respectively, resulting in two different transfer functions applied to the signals. The effect of transfer functions on the noise signal is shown in Figure \ref{fig:fig_plot_4_wav_complex.png}, where the top graph shows the noise signal at it's source, while the second and third graph show the effect of the two different transfer functions resulting in the corruption noise signal and the reference noise signal respectively.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_4_wav_complex.png}
|
||||
\caption{The raw noise signal recorded with two different sensors, showing the effect of different transfer functions on the signal}
|
||||
\label{fig:fig_plot_4_wav_complex.png}
|
||||
\end{figure}
|
||||
\noindent To evaluate the performance of the \ac{ANR} algorithm in this complex scenario, the corrupted signal is recorded with the primary sensor while the reference noise signal is recorded with secondary sensor. The filter output in Figure \ref{fig:fig_plot_1_wav_complex.png} indicates, that the \ac{ANR} algorithm is still capable of significantly reducing the noise from the corrupted signal, even with the reference noise signal being different than the corrpuption noise signal.
|
||||
\noindent To evaluate the performance of the \ac{ANR} algorithm in this complex scenario, the corrupted signal is recorded with the primary sensor while the reference noise signal is recorded with secondary sensor. The filter output in Figure \ref{fig:fig_plot_1_wav_complex.png} indicates, that the \ac{ANR} algorithm is still capable of significantly reducing the noise from the corrupted signal, even with the reference noise signal being different from the corruption noise signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_wav_complex.png}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of the complex \ac{ANR} usecase}
|
||||
\caption{Desired signal, corrupted signal, reference noise signal and filter output of the complex \ac{ANR} use case}
|
||||
\label{fig:fig_plot_1_wav_complex.png}
|
||||
\end{figure}
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav_complex.png} shows an even better performance compared to the previous intermediate usecase, indicating that the \ac{ANR} algorithm is effectively adapting its filter coefficients. The performance increase can be explained by the fact, that the transfer functions applied to the signals have attenuated certain frequency components of the noise signal, making it easier for the \ac{ANR} algorithm to isolate and reduce the noise from the corrupted signal. Also the corrpution noise signal is reduced in amplitude, wheares the reference noise signal is amplified in certain frequency areas, which helps the \ac{ANR} algorithm to better identify and cancel out the noise components from the corrupted signal.
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav_complex.png} shows an even better performance compared to the previous intermediate use case, indicating that the \ac{ANR} algorithm is effectively adapting its filter coefficients. The performance increase can be explained by the fact, that the transfer functions applied to the signals have attenuated certain frequency components of the noise signal, making it easier for the \ac{ANR} algorithm to isolate and reduce the noise from the corrupted signal. Also, the corruption noise signal is reduced in amplitude, whereas the reference noise signal is amplified in certain frequency areas, which helps the \ac{ANR} algorithm to better identify and cancel out the noise components from the corrupted signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_wav_complex.png}
|
||||
\caption{Error signal and filter coefficient evolution of the complex \ac{ANR} usecase}
|
||||
\caption{Error signal and filter coefficient evolution of the complex \ac{ANR} use case}
|
||||
\label{fig:fig_plot_2_wav_complex.png}
|
||||
\end{figure}
|
||||
\noindent As now the functionality of the \ac{ANR} algorithm has been verified in different scenarios, varying from simple to complex, the next chapter of this thesis focuses on the implementation of the algorithm on the low-power \ac{DSP}.
|
||||
@@ -5,9 +5,9 @@
|
||||
\acronymused{DSP}
|
||||
\acronymused{ANR}
|
||||
\acronymused{ANR}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Description of the low-power DSP and it´s environment}{40}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Description of the low-power DSP and its environment}{40}{}\protected@file@percent }
|
||||
\AC@undonewlabel{acro:ARM}
|
||||
\newlabel{acro:ARM}{{4.1}{40}{}{}{}}
|
||||
\newlabel{acro:ARM}{{4.1}{40}{}{subsection.4.1}{}}
|
||||
\acronymused{ARM}
|
||||
\acronymused{DSP}
|
||||
\acronymused{ARM}
|
||||
@@ -15,16 +15,17 @@
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}Hardware overview}{40}{}\protected@file@percent }
|
||||
\acronymused{ARM}
|
||||
\acronymused{ARM}
|
||||
\acronymused{CI}
|
||||
\acronymused{DSP}
|
||||
\acronymused{DSP}
|
||||
\acronymused{ANR}
|
||||
\AC@undonewlabel{acro:ALU}
|
||||
\newlabel{acro:ALU}{{4.1.1}{40}{}{}{}}
|
||||
\newlabel{acro:ALU}{{4.1.1}{40}{}{subsubsection.4.1.1}{}}
|
||||
\acronymused{ALU}
|
||||
\acronymused{DSP}
|
||||
\acronymused{ALU}
|
||||
\AC@undonewlabel{acro:MAC}
|
||||
\newlabel{acro:MAC}{{4.1.1}{41}{}{}{}}
|
||||
\newlabel{acro:MAC}{{4.1.1}{41}{}{subsubsection.4.1.1}{}}
|
||||
\acronymused{MAC}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Communication between the ARM core and the DSP}{41}{}\protected@file@percent }
|
||||
@@ -37,18 +38,27 @@
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {32}{\ignorespaces Simplified visualization of the communication between the \ac {ARM} core and the \ac {DSP} core}}{41}{}\protected@file@percent }
|
||||
\acronymused{ARM}
|
||||
\acronymused{DSP}
|
||||
\newlabel{fig:fig_dsp_setup.jpg}{{32}{41}{}{}{}}
|
||||
\newlabel{fig:fig_dsp_setup.jpg}{{32}{41}{}{figure.32}{}}
|
||||
\acronymused{ARM}
|
||||
\AC@undonewlabel{acro:PCM}
|
||||
\newlabel{acro:PCM}{{4.1.2}{41}{}{figure.32}{}}
|
||||
\acronymused{PCM}
|
||||
\AC@undonewlabel{acro:DMA}
|
||||
\newlabel{acro:DMA}{{4.1.2}{41}{}{figure.32}{}}
|
||||
\acronymused{DMA}
|
||||
\acronymused{PCM}
|
||||
\acronymused{DSP}
|
||||
\acronymused{DSP}
|
||||
\acronymused{ANR}
|
||||
\acronymused{ARM}
|
||||
\acronymused{DSP}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {33}{\ignorespaces Simpliefied flowchart of the sample processing between the \ac {ARM} core and the \ac {DSP} core via interrupts and shared memory. For simplification, the registers of the \ac {DSP} core are not visualized.}}{42}{}\protected@file@percent }
|
||||
\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. For simplification, the registers of the \ac {DSP} core are not visualized.}}{42}{}\protected@file@percent }
|
||||
\acronymused{ARM}
|
||||
\acronymused{DSP}
|
||||
\acronymused{DSP}
|
||||
\newlabel{fig:fig_dsp_interrupt.jpg}{{33}{42}{}{}{}}
|
||||
\newlabel{fig:fig_dsp_interrupt.jpg}{{33}{42}{}{figure.33}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Implementation of the ANR algorithm on the DSP}{42}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}First optimization approach: algorithm implementation}{42}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Second optimization approach: hybrid ANR algorithm}{42}{}\protected@file@percent }
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
\section{DSP implementation and optimization of the ANR algorithm}
|
||||
This section aims to be the main part of this thesis. The first subchapter describes the hardware, on which the \ac{ANR} algorithm is implemented, including it´s envornment, which serves as a link to the CI system itself. The following subchapter continues with the basic implementation of the \ac{ANR} algorithm on the hardware itself and shall provide the reader with a basic understanding of its efficiency, which shall serve as a baseline for the following optimiziations.\\
|
||||
During the third chapter, this initial implementation is further optimized in order to achieve an improved real-time performance on the \ac{DSP}. The last subchapter picks the final optimizations of the \ac{ANR} algorithm itself as a central theme, especially with respect to the capabilites of a hybrid \ac{ANR} approach.
|
||||
\subsection{Description of the low-power DSP and it´s environment}
|
||||
This section aims to be the main part of this thesis. The first subchapter describes the hardware, on which the \ac{ANR} algorithm is implemented, including its environment, which serves as a link to the CI system itself. The following subchapter continues with the basic implementation of the \ac{ANR} algorithm on the hardware itself and shall provide the reader with a basic understanding of its efficiency, which shall serve as a baseline for the following optimizations.\\
|
||||
During the third chapter, this initial implementation is further optimized in order to achieve an improved real-time performance on the \ac{DSP}. The last subchapter picks the final optimizations of the \ac{ANR} algorithm itself as a central theme, especially with respect to the capabilities of a hybrid \ac{ANR} approach.
|
||||
\subsection{Description of the low-power DSP and its environment}
|
||||
This thesis considers a low-power system-on-chip architecture that integrates a general-purpose \ac{ARM} core with a dedicated \ac{DSP} core. The system combines the flexibility of an \ac{ARM}-based control processor with the computational efficiency of a specialized \ac{DSP}, splitting general computing tasks from real-time signal processing workloads.
|
||||
\subsubsection{Hardware overview}
|
||||
The \ac{ARM} core serves as the primary control unit of the system. It is responsible for high-level application logic, system configuration, peripheral management, and scheduling. Due to its general-purpose instruction set and extensive software ecosystem, the \ac{ARM} core is well suited for handling communication protocols, system state management, and interaction with external interfaces. Time-critical numerical processing is intentionally offloaded to the \ac{DSP} core in order to reduce computational load and power consumption on the control processor.\\ \\
|
||||
The \ac{DSP} used for the implementation is a 32-bit fixed-point processor primarily designed for audio signal-processing applications in low-power embedded systems. It is developed using a retargetable processor design methodology and is typically programmed in C. The used compiler is highly efficient and generates optimized assembler code, which is then translated in machine code to execute the \ac{ANR} algorithm on incoming samples.\\ \\
|
||||
The processor is equipped with load/store architecture, meaning that, initially all operands need to be moved from the memory to the registers, before any operation can be performed. After this task is performed, the execution units (\ac{ALU} and multiplier) can perform their oeprations on the data and write back the results into the registers. Finally, the results need to be explicitly moved back to the memory.\\ \\
|
||||
The \ac{DSP} includes a three stage pipeline consisting of fetch, decode, and execute stages, aloowing for overlapping instruction execution and improved throughput. The architecture is optimized for high cycle efficiency when executing computationally intensive signal-processing workloads. It features a dual Harvard load store architecture and two seperate \ac{ALU}s, which enables the execution of two \ac{MAC} operations, two memory operations (load/store) and two pointer updates in a single prcoessor cycle.\\ \\
|
||||
The \ac{ARM} core serves as the primary control unit of the system. It is responsible for high-level application logic, system configuration, peripheral management, and scheduling. Due to its general-purpose instruction set and extensive software ecosystem, the \ac{ARM} core is well suited for handling general tasks and the interaction with the \ac{CI} system. Time-critical numerical processing is intentionally offloaded to the \ac{DSP} core in order to reduce computational load and power consumption on the control processor.\\ \\
|
||||
The \ac{DSP} used for the implementation is a 32-bit fixed-point processor primarily designed for audio signal-processing applications in low-power embedded systems. It is developed using a retargetable processor design methodology and is typically programmed in the C language. The used compiler is highly efficient and generates optimized assembler code, which is then translated in machine code to execute the \ac{ANR} algorithm on incoming samples.\\ \\
|
||||
The processor is equipped with load/store architecture, meaning that, initially all operands need to be moved from the memory to the registers, before any operation can be performed. After this task is performed, the execution units (\ac{ALU} and multiplier) can perform their operations on the data and write back the results into the registers. Finally, the results need to be explicitly moved back to the memory.\\ \\
|
||||
The \ac{DSP} includes a three stage pipeline consisting of fetch, decode, and execute stages, allowing for overlapping instruction execution and improved throughput. The architecture is optimized for high cycle efficiency when executing computationally intensive signal-processing workloads. It features a dual Harvard load store architecture and two separate \ac{ALU}s, which enables the execution of two \ac{MAC} operations, two memory operations (load/store) and two pointer updates in a single processor cycle.\\ \\
|
||||
The \ac{DSP} includes a set of registers, including
|
||||
\subsubsection{Communication between the ARM core and the DSP}
|
||||
Communication between the \ac{ARM} core and the \ac{DSP} is realized through a shared memory region accessible by both processing units. This shared memory enables the exchange of data without the need for seperate communication protocols. Synchronization between the cores is achieved using interrupt-based signaling: the \ac{ARM} core initiates processing requests by triggering an interrupt on the \ac{DSP}, while the \ac{DSP} notifies the \ac{ARM} core upon completion of a task via a dedicated signaling mechanism. This approach ensures efficient coordination while minimizing active waiting and unnecessary power consumption.
|
||||
Communication between the \ac{ARM} core and the \ac{DSP} is realized through a shared memory region accessible by both processing units. This shared memory enables the exchange of data without the need for separate communication protocols. Synchronization between the cores is achieved using interrupt-based signaling: the \ac{ARM} core initiates processing requests by triggering an interrupt on the \ac{DSP}, while the \ac{DSP} notifies the \ac{ARM} core upon completion of a task via a dedicated signaling mechanism. This approach ensures efficient coordination while minimizing active waiting and unnecessary power consumption.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_dsp_setup.jpg}
|
||||
\caption{Simplified visualization of the communication between the \ac{ARM} core and the \ac{DSP} core}
|
||||
\label{fig:fig_dsp_setup.jpg}
|
||||
\end{figure}
|
||||
\noindent The \ac{ARM} Core recieves the audio data from the CI system via a PCM interface, which offers one input and one output register. An interrupt trigger the integrated DMA controller, which transfers the audio data from the PCM interface to buffer in a predefined memory location. Once the buffer is filled with enough samples, another interrupt is triggered, notifying the \ac{DSP} core to start processing the audio data. The \ac{DSP} core then reads the audio samples from the shared memory, processes them using the implemented \ac{ANR} algorithm, and writes the processed samples back to an output buffer, also located in the shared memory. Finally, the \ac{ARM} core is notified via an interrupt from the \ac{DSP} core, that the processing is complete - the DMA controller then transfers the processed audio samples from the output buffer back to the PCM interface for playback.\\ \\
|
||||
\noindent The \ac{ARM} Core receives the audio data from the CI system via a \ac{PCM} interface, which offers one input and one output register. An interrupt trigger the integrated \ac{DMA} controller, which transfers the audio data from the \ac{PCM} interface to buffer in a predefined memory location. Once the buffer is filled with enough samples, another interrupt is triggered, notifying the \ac{DSP} core to start processing the audio data. The \ac{DSP} core then reads the audio samples from the shared memory, processes them using the implemented \ac{ANR} algorithm, and writes the processed samples back to an output buffer, also located in the shared memory. Finally, the \ac{ARM} core is notified via an interrupt from the \ac{DSP} core, that the processing is complete - the \ac{DMA} controller then transfers the processed audio samples from the output buffer back to the \ac{PCM} interface for playback.\\ \\
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\linewidth]{Bilder/fig_dsp_interrupt.jpg}
|
||||
\caption{Simpliefied flowchart of the sample processing between the \ac{ARM} core and the \ac{DSP} core via interrupts and shared memory. For simplification, the registers of the \ac{DSP} core are not visualized.}
|
||||
\caption{Simplified flowchart of the sample processing between the \ac{ARM} core and the \ac{DSP} core via interrupts and shared memory. For simplification, the registers of the \ac{DSP} core are not visualized.}
|
||||
\label{fig:fig_dsp_interrupt.jpg}
|
||||
\end{figure}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user