Plots upgedatet, hybirder Ansatz raus
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 2.8 MiB After Width: | Height: | Size: 3.2 MiB |
|
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 2.8 MiB |
|
Before Width: | Height: | Size: 2.9 MiB After Width: | Height: | Size: 2.5 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 960 KiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 954 KiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 990 KiB |
|
Before Width: | Height: | Size: 685 KiB After Width: | Height: | Size: 600 KiB |
|
Before Width: | Height: | Size: 652 KiB After Width: | Height: | Size: 608 KiB |
|
Before Width: | Height: | Size: 956 KiB After Width: | Height: | Size: 966 KiB |
@@ -17,6 +17,7 @@
|
||||
\newacro{ARM}[\AC@hyperlink{ARM}{ARM}]{Advanced RISC Machine}
|
||||
\newacro{RISC}[\AC@hyperlink{RISC}{RISC}]{Reduced Instruction Set Computer}
|
||||
\newacro{SOC}[\AC@hyperlink{SOC}{SOC}]{System-on-Chip}
|
||||
\newacro{SNR}[\AC@hyperlink{SNR}{SNR}]{Signal-to-Noise Ratio}
|
||||
\@setckpt{acronyms}{
|
||||
\setcounter{page}{5}
|
||||
\setcounter{equation}{0}
|
||||
|
||||
@@ -18,4 +18,5 @@
|
||||
\acro{ARM}{Advanced RISC Machine}
|
||||
\acro{RISC}{Reduced Instruction Set Computer}
|
||||
\acro{SOC}{System-on-Chip}
|
||||
\acro{SNR}{Signal-to-Noise Ratio}
|
||||
\end{acronym}
|
||||
@@ -132,7 +132,6 @@ To reduce the required computing power, a hybrid static/adaptive filter design c
|
||||
\caption{Hybrid adaptive filter design for noise reduction with a static part and an adaptive part.}
|
||||
\label{fig:fig_anr_hybrid}
|
||||
\end{figure}
|
||||
\noindent Different approaches of the hybrid static/adaptive filter design will be evaluated and compared in regard of their required computing power in a later chapter of this thesis.
|
||||
\subsection{Adaptive optimization strategies}
|
||||
In the description of the concept of adaptive filtering above, the adaption of filter coefficients due to an error metric was mentioned but not further explained. The following subchapters shall cover the most important aspects of filter optimization in regard of adaptive noise reduction.
|
||||
\subsubsection{Filter optimization and error metrics}
|
||||
@@ -277,7 +276,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 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.\\ \\
|
||||
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.\\ \\
|
||||
\begin{equation}
|
||||
\label{equation_dn}
|
||||
d[n] = s[n] + n[n] = t[n] * (C_nA) + v[n] * (D_nA)
|
||||
|
||||
@@ -44,11 +44,18 @@ The flow diagram in Figure \ref{fig:fig_anr_logic} illustrates the logical flow
|
||||
\caption{High-level implementation of the \ac{ANR} algorithm in Python}
|
||||
\label{fig:fig_anr_code}
|
||||
\end{figure}
|
||||
\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.
|
||||
\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 based on the \ac{SNR}-Gain in dB and also visually by the amplitude of the error signal (difference between the desired signal and the filter output). The error signal and the \ac{SNR}-Gain are calculated as follows:
|
||||
\begin{gather}
|
||||
\label{equation_snr_gain_error}
|
||||
P_{Error-signal} = P_{Desired-signal} - P_{Filter-output} \\
|
||||
\label{equation_snr_gain}
|
||||
SNR\text{-}Gain = 10 \cdot \log_{10}\frac{P_{Desired-signal}}{P_{Noise-signal}} - 10 \cdot \log_{10}\frac{P_{Desired-signal}}{P_{Error-signal}}
|
||||
\end{gather}
|
||||
with $P_{Desired-signal}$ being the power of the desired signal, $P_{Noise-signal}$ being the power of the noise signal and $P_{Error-signal}$ being the power of the error signal, which is the difference between the desired signal and the filter output. A positive \ac{SNR}-Gain indicates an improvement in signal quality, while a negative \ac{SNR}-Gain indicates a degradation in signal quality after applying the \ac{ANR} algorithm.
|
||||
\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.
|
||||
\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 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]
|
||||
@@ -57,7 +64,7 @@ In the first use case, a sine wave with a frequency of 2000 Hz, which lies outsi
|
||||
\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.
|
||||
\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 500 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}
|
||||
@@ -87,7 +94,7 @@ The last on of our three simplified use cases involves the use of a Gaussian whi
|
||||
\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 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.
|
||||
\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. Also the \ac{SNR}-Gain of this use case is significantly lower compared to the previous use cases, which can be explained by the fact that the noise signal contains a broad spectrum of frequencies, making it more difficult for the \ac{ANR} algorithm to effectively isolate and reduce the noise from the desired signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_noise.png}
|
||||
@@ -109,10 +116,9 @@ After the general functionality of the \ac{ANR} algorithm has been verified with
|
||||
\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 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.
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav.png} confirms the function of the algorithm and shows maxima corresponding to the maxima 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 maxima 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. The \ac{SNR}-Gain of 6.51 dB also indicates a significant improvement in signal quality and can be compared againtst the complex use case in the next subchapter, where the same audio tracks are used, but now with different transfer functions applied to them.
|
||||
\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 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
|
||||
@@ -134,7 +140,7 @@ Therefore, the audio tracks from the previous example are now convolved with dif
|
||||
\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 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.
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav_complex.png} shows, as expected, a slightly wore performance to the previous intermediate use case, indicating that the \ac{ANR} algorithm is confronted by a more challening task. The performance decrease 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 harder 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. Still, the \ac{SNR}-Gain of 6.15 dB still indicates a quite sucessful noise reduction, even in this more complex scenario.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_wav_complex.png}
|
||||
|
||||
@@ -210,18 +210,23 @@
|
||||
\@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}{}{}{}}
|
||||
\@writefile{toc}{\contentsline {paragraph}{write\_output}{54}{}\protected@file@percent }
|
||||
\newlabel{equation_computing}{{22}{54}{}{}{}}
|
||||
\newlabel{equation_c_1}{{23}{54}{}{}{}}
|
||||
\newlabel{equation_c_2}{{24}{54}{}{}{}}
|
||||
\newlabel{equation_c_3}{{25}{54}{}{}{}}
|
||||
\newlabel{equation_c_4}{{26}{54}{}{}{}}
|
||||
\newlabel{equation_c_5}{{28}{54}{}{}{}}
|
||||
\newlabel{equation_computing_final}{{29}{55}{}{}{}}
|
||||
\newlabel{equation_computing}{{24}{54}{}{}{}}
|
||||
\newlabel{equation_c_1}{{25}{54}{}{}{}}
|
||||
\newlabel{equation_c_2}{{26}{54}{}{}{}}
|
||||
\newlabel{equation_c_3}{{27}{54}{}{}{}}
|
||||
\newlabel{equation_c_4}{{28}{54}{}{}{}}
|
||||
\newlabel{equation_c_5}{{30}{54}{}{}{}}
|
||||
\newlabel{equation_computing_final}{{31}{55}{}{}{}}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.3}Performance evaluation of different implementation variants}{55}{}\protected@file@percent }
|
||||
\acronymused{DSP}
|
||||
\acronymused{ANR}
|
||||
\acronymused{FIR}
|
||||
\acronymused{ANR}
|
||||
\acronymused{SNR}
|
||||
\@setckpt{chapter_04}{
|
||||
\setcounter{page}{56}
|
||||
\setcounter{equation}{29}
|
||||
\setcounter{equation}{31}
|
||||
\setcounter{enumi}{0}
|
||||
\setcounter{enumii}{0}
|
||||
\setcounter{enumiii}{0}
|
||||
|
||||
@@ -263,6 +263,7 @@ C_{write\_output} = 5 \\
|
||||
\end{equation}
|
||||
Equation \ref{equation_computing_final} now provides an estimation of the necessary computing effort for one output sample in relation to the filter length $N$ and the update rate of the filter coefficients $1/U$. This formula can now be used to estimate the needed computing power (and therefore the power consumption) of the \ac{DSP} core for different parameter settings, alowing to find an optimal parameter configuration in regard of the quality of the noise reduction and the power consumption of the system.
|
||||
\subsubsection{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 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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36" version="29.3.4">
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36" version="29.3.8">
|
||||
<diagram name="Seite-1" id="BWOSVWQKrhK0Pcg9Olm2">
|
||||
<mxGraphModel dx="1426" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="qO-CM7M714h87kHfMT8G-5" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="" vertex="1">
|
||||
<mxGeometry height="480" width="520" x="510" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-12" edge="1" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-9" style="endArrow=classic;html=1;rounded=0;exitX=0.13;exitY=-0.031;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="650" y="460" as="sourcePoint" />
|
||||
<mxPoint x="770" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
<mxGeometry height="460" width="520" x="510" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-1" parent="1" style="ellipse;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="80" width="80" x="690" y="230" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-12" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;exitX=0.13;exitY=-0.031;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="674.9999999999999" y="530.0000000000001" as="sourcePoint" />
|
||||
<mxPoint x="785" y="391.86" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="670" y="480" as="geometry" />
|
||||
<mxGeometry height="60" width="120" x="670" y="430" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-4" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
@@ -25,20 +25,11 @@
|
||||
<mxPoint x="1130" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-3" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="<b>W<sub>2</sub></b>" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="710" y="490" as="geometry" />
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-3" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="<b>W</b>" vertex="1">
|
||||
<mxGeometry height="30" width="40" x="710" y="445" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qO-CM7M714h87kHfMT8G-4" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#36393d;" value="" vertex="1">
|
||||
<mxGeometry height="480" width="240" x="270" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-6" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="8LSkbo7Ni411-_OUStLd-2" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="620" y="510" />
|
||||
</Array>
|
||||
<mxPoint x="620" y="460" as="sourcePoint" />
|
||||
<mxPoint x="1040" y="370" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
<mxGeometry height="460" width="240" x="270" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-7" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="330" y="240" as="geometry" />
|
||||
@@ -52,14 +43,13 @@
|
||||
<mxPoint x="392.5" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-10" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-8" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="ngw2JN3qWJ9t0b-mEEB_-14" value="">
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-10" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-8" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="8LSkbo7Ni411-_OUStLd-2" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="620" y="460" />
|
||||
<mxPoint x="620" y="420" />
|
||||
</Array>
|
||||
<mxPoint x="510" y="460" as="sourcePoint" />
|
||||
<mxPoint x="410" y="460" as="targetPoint" />
|
||||
<mxPoint x="670" y="420" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-11" edge="1" parent="1" source="uwalZ4GZDBHuo1GNIbxM-2" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;" value="">
|
||||
@@ -102,41 +92,24 @@
|
||||
<mxGeometry height="40" width="190" x="780" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-9" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=2;" value="<span style="font-size: 15px;">LMS</span>" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="670" y="580" as="geometry" />
|
||||
<mxGeometry height="60" width="120" x="670" y="530" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-10" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="ngw2JN3qWJ9t0b-mEEB_-9" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="980" y="610" />
|
||||
<mxPoint x="980" y="560" />
|
||||
</Array>
|
||||
<mxPoint x="980" y="270" as="sourcePoint" />
|
||||
<mxPoint x="940" y="369" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-14" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="670" y="390" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-15" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="<b>W<sub>1</sub></b>" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="710" y="400" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-17" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;strokeWidth=2;" value="">
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-17" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-2" style="endArrow=none;html=1;rounded=0;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="840" y="420" />
|
||||
</Array>
|
||||
<Array as="points" />
|
||||
<mxPoint x="790" y="420" as="sourcePoint" />
|
||||
<mxPoint x="840" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-18" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-2" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="840" y="510" />
|
||||
</Array>
|
||||
<mxPoint x="830" y="510" as="sourcePoint" />
|
||||
<mxPoint x="840" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-19" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" target="8LSkbo7Ni411-_OUStLd-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
@@ -160,9 +133,9 @@
|
||||
<mxCell id="qO-CM7M714h87kHfMT8G-12" parent="1" style="text;whiteSpace=wrap;html=1;" value="<div style="text-align: center;"><span style="font-size: 20px;">Digital Signal Processor</span></div>" vertex="1">
|
||||
<mxGeometry height="85" width="222.5" x="658.75" y="142.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qO-CM7M714h87kHfMT8G-15" edge="1" parent="1" source="qO-CM7M714h87kHfMT8G-4" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;exitX=0;exitY=0.543;exitDx=0;exitDy=0;exitPerimeter=0;" target="8LSkbo7Ni411-_OUStLd-8" value="">
|
||||
<mxCell id="qO-CM7M714h87kHfMT8G-15" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="8LSkbo7Ni411-_OUStLd-8" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="270" y="330" as="sourcePoint" />
|
||||
<mxPoint x="270" y="460" as="sourcePoint" />
|
||||
<mxPoint x="430" y="390" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
@@ -190,9 +163,9 @@
|
||||
<mxPoint x="450" y="252.07999999999998" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sM4xvtsetW-iOXl8wo82-3" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0.001;entryY=0.621;entryDx=0;entryDy=0;entryPerimeter=0;" target="8LSkbo7Ni411-_OUStLd-7" value="">
|
||||
<mxCell id="sM4xvtsetW-iOXl8wo82-3" edge="1" parent="1" source="qO-CM7M714h87kHfMT8G-4" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=-0.001;entryY=0.562;entryDx=0;entryDy=0;entryPerimeter=0;exitX=-0.001;exitY=0.161;exitDx=0;exitDy=0;exitPerimeter=0;" target="8LSkbo7Ni411-_OUStLd-7" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="270" y="277.58" as="sourcePoint" />
|
||||
<mxPoint x="270" y="278" as="sourcePoint" />
|
||||
<mxPoint x="335" y="277.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
|
||||