4.3
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 82 KiB |
@@ -155,7 +155,7 @@
|
||||
\@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 }
|
||||
\acronymused{DSP}
|
||||
\newlabel{fig:fig_dsp_logic.jpg}{{38}{48}{}{}{}}
|
||||
\@writefile{toc}{\contentsline {paragraph}{Calc()-function}{48}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{calculate\_output()-function}{48}{}\protected@file@percent }
|
||||
\acronymused{DSP}
|
||||
\acronymused{ANR}
|
||||
\acronymused{DSP}
|
||||
@@ -180,9 +180,13 @@
|
||||
\acronymused{MAC}
|
||||
\acronymused{ALU}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.2}Performance evaluation and quantization of the DSP implementation}{50}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.2}Performance quantization of the ANR calculation}{50}{}\protected@file@percent }
|
||||
\acronymused{ANR}
|
||||
\@writefile{toc}{\contentsline {paragraph}{write\_buffer}{51}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{apply\_fir\_filter}{51}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.3}Performance evaluation of different implementation variants}{51}{}\protected@file@percent }
|
||||
\@setckpt{chapter_04}{
|
||||
\setcounter{page}{51}
|
||||
\setcounter{page}{52}
|
||||
\setcounter{equation}{21}
|
||||
\setcounter{enumi}{0}
|
||||
\setcounter{enumii}{0}
|
||||
@@ -193,7 +197,7 @@
|
||||
\setcounter{part}{0}
|
||||
\setcounter{section}{4}
|
||||
\setcounter{subsection}{3}
|
||||
\setcounter{subsubsection}{2}
|
||||
\setcounter{subsubsection}{3}
|
||||
\setcounter{paragraph}{0}
|
||||
\setcounter{subparagraph}{0}
|
||||
\setcounter{figure}{40}
|
||||
@@ -317,7 +321,7 @@
|
||||
\setcounter{lstnumber}{11}
|
||||
\setcounter{FancyVerbLine}{0}
|
||||
\setcounter{linenumber}{1}
|
||||
\setcounter{LN@truepage}{50}
|
||||
\setcounter{LN@truepage}{51}
|
||||
\setcounter{FancyVerbWriteLine}{0}
|
||||
\setcounter{FancyVerbBufferLine}{0}
|
||||
\setcounter{FV@TrueTabGroupLevel}{0}
|
||||
|
||||
@@ -120,8 +120,8 @@ If the \ac{ARM} core requests a sample to be processed, it activates the \ac{DSP
|
||||
\caption{Flow diagram of the code implementation of the main loop and interrupt handling on the \ac{DSP} core.}
|
||||
\label{fig:fig_dsp_logic.jpg}
|
||||
\end{figure}
|
||||
\paragraph{Calc()-function}
|
||||
The calc()-function at the very end of the main process loop represents the heart of the \ac{DSP}code, as it is responsible for applying the \ac{ANR} algorithm on the two input samples. As it follows the same structure as the high-level implementation described in the previous chapter, the general functionality will not be described in detail again. The technical implementation on the \ac{DSP} however will be outlined in detail in the following subchapter, as the hardware-specific optimizations, responsible for a real-time capable implementation, are a key element for the estimation of the expectable power consumption of the system.\\ \\
|
||||
\paragraph{calculate\_output()-function}
|
||||
The calculate\_output()-function at the very end of the main process loop represents the heart of the \ac{DSP} code, as it is responsible for applying the \ac{ANR} algorithm on the two input samples. As it follows the same structure as the high-level implementation described in the previous chapter, the general functionality will not be described in detail again. Yet, the technical implementation on the \ac{DSP} however will be outlined in detail in the following subchapter, as the hardware-specific optimizations are key elements for the estimation of the expectable power consumption of the system.\\ \\
|
||||
|
||||
\subsection{DSP-level implementation of the ANR algorithm}
|
||||
The ability to process audio samples in real-time on the \ac{DSP} core is strongly dependent on compiler-specific optimizations and hardware-specific implementation techniques, which allow a far more efficient execution of the algorithm compared to a native C implementation.
|
||||
@@ -165,8 +165,20 @@ As already mentioned during the beginning of the current chapter, the used \ac{D
|
||||
To tackle this issues, the \ac{DSP} compiler provides intrinsic functions for fractional fixed-point arithmetic, such as a fractional multiplication function, which takes two 32-bit integers as input and return an already bit-shifted 64-bit output, representing the fractional multiplication result. This approach prevents the need for manual bit-shifting operations after each multiplication.\\ \\
|
||||
To support such operations, a 72-bit accumulator is provided, allowing to store intermediate 64-bit results of 32-bit multiplications without losing precision - the remaining 8 bit serve as an overflow space. If needed, a saturation function is also provided, to round the 64-bit result back to a 32-bit value.
|
||||
|
||||
\subsubsection{Performance evaluation and quantization of the DSP implementation}
|
||||
|
||||
\subsubsection{Performance quantization of the ANR calculation}
|
||||
As mentioned in the previous subchapter, the \ac{ANR} calucation for every sample is executed in the calculate\_output()-function. The general scheme of the calculation was already visualized in \ref{fig:fig_anr_logic} and did not change for the implemenation in C. The main focus lies now on the computational efficiency of the different parts of the function, finally resulting in the generation of a formula, able to calculate the needed cycles in dependecy of various parameters.\\ \\
|
||||
The calculate\_output() functions consists out of the following four main parts, described in detail afterwards:
|
||||
\begin{itemize}
|
||||
\item write\_buffer
|
||||
\item apply\_fir\_filter
|
||||
\item update\_output
|
||||
\item update\_filter\_coefficients
|
||||
\end{itemize}
|
||||
Some of the sub-functions feature dsp-specific operations, resulting in a minimum count of processor cycles per input samples, depending on parameters like filter length and adaption pauses.
|
||||
\paragraph{write\_buffer}
|
||||
\paragraph{apply\_fir\_filter}
|
||||
|
||||
\subsubsection{Performance evaluation of different implementation variants}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,159 +1,159 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="29.0.3">
|
||||
<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">
|
||||
<diagram name="Page-1" id="biPyHR2u_nhwJtU07GTZ">
|
||||
<mxGraphModel dx="-280" dy="297" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<mxGraphModel dx="576" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-17" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.462;exitY=1.333;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-17" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;exitX=0.462;exitY=1.333;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1299.58" y="80" as="sourcePoint" />
|
||||
<mxPoint x="1300" y="120" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-19" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.462;exitY=1.333;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-19" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;exitX=0.462;exitY=1.333;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1299.58" y="160" as="sourcePoint" />
|
||||
<mxPoint x="1300" y="200" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-21" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-21" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1300" y="240" as="sourcePoint" />
|
||||
<mxPoint x="1300" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-23" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.462;exitY=1.333;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-23" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;exitX=0.462;exitY=1.333;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1299.58" y="310" as="sourcePoint" />
|
||||
<mxPoint x="1300" y="350" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-25" value="<div><font style="font-size: 14px;">Accumulator +=&nbsp;</font></div><div><font style="font-size: 14px;">Noise<sub>[</sub><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><sub>j+i]</sub> * Filter<sub>[i]</sub></span></font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
||||
<mxGeometry x="1200" y="350" width="200" height="60" as="geometry" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-25" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="<div><font style="font-size: 14px;">Accumulator +=&nbsp;</font></div><div><font style="font-size: 14px;">Noise<sub>[</sub><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><sub>j+i]</sub> * Filter<sub>[i]</sub></span></font></div>" vertex="1">
|
||||
<mxGeometry height="60" width="200" x="1200" y="350" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-27" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="H6R4VGwbr_i7cj5zOMue-25" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1490" y="350" as="sourcePoint" />
|
||||
<mxPoint x="1340" y="290" as="targetPoint" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-27" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-25" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1440" y="380" />
|
||||
<mxPoint x="1440" y="290" />
|
||||
</Array>
|
||||
<mxPoint x="1490" y="350" as="sourcePoint" />
|
||||
<mxPoint x="1340" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-28" value="i++" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" parent="H6R4VGwbr_i7cj5zOMue-27" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.2439" y="3" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-28" connectable="0" parent="H6R4VGwbr_i7cj5zOMue-27" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" value="i++" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.2439" y="3" as="geometry">
|
||||
<mxPoint y="3" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-30" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="H6R4VGwbr_i7cj5zOMue-25" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-30" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="H6R4VGwbr_i7cj5zOMue-25" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1160" y="379.9999999999999" as="sourcePoint" />
|
||||
<mxPoint x="1130.42" y="500" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-31" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="H6R4VGwbr_i7cj5zOMue-25" target="H6R4VGwbr_i7cj5zOMue-32" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-31" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-25" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="H6R4VGwbr_i7cj5zOMue-32" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1410" y="420" as="sourcePoint" />
|
||||
<mxPoint x="1410.42" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-32" value="<div><font style="font-size: 14px;">Output<sub>[j]</sub> = <br>Input<sub>[j]</sub> - Accumulator</font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
||||
<mxGeometry x="1200" y="450" width="200" height="60" as="geometry" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-32" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="<div><font style="font-size: 14px;">Output<sub>[j]</sub> = <br>Input<sub>[j]</sub> - Accumulator</font></div>" vertex="1">
|
||||
<mxGeometry height="60" width="200" x="1200" y="450" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-34" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="JXUbh7mfEI0vDSi9tXp8-2" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-34" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="JXUbh7mfEI0vDSi9tXp8-2" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1299.8600000000001" y="510" as="sourcePoint" />
|
||||
<mxPoint x="1299.8600000000001" y="560" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-35" value="<div><font style="font-size: 14px;">Correction =&nbsp;</font></div><div><font style="font-size: 14px;"><span style="color: rgb(32, 33, 34); font-family: sans-serif; text-align: start;"><i style=""><font>µ</font></i></span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">&nbsp;*&nbsp;</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Output<sub>[j]</sub></span></font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
||||
<mxGeometry x="1200" y="630" width="210" height="60" as="geometry" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-35" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="<div><font style="font-size: 14px;">Correction =&nbsp;</font></div><div><font style="font-size: 14px;"><span style="color: rgb(32, 33, 34); font-family: sans-serif; text-align: start;"><i style=""><font>µ</font></i></span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">&nbsp;*&nbsp;</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Output<sub>[j]</sub></span></font></div>" vertex="1">
|
||||
<mxGeometry height="60" width="210" x="1200" y="630" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-38" value="<div><font style="font-size: 14px;">Filter<sub>[k]</sub> =&nbsp;</font></div><div><font style="font-size: 14px;">Correction * Noise<sub>[j+k]</sub></font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
||||
<mxGeometry x="1490" y="350" width="170" height="60" as="geometry" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-38" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="<div><font style="font-size: 14px;">Filter<sub>[k]</sub>&nbsp;+=&nbsp;</font></div><div><font style="font-size: 14px;">Correction * Noise<sub>[j+k]</sub></font></div>" vertex="1">
|
||||
<mxGeometry height="60" width="170" x="1490" y="350" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-39" value="<font><font style="font-size: 14px;"><b style="">Input</b></font></font><div><font style="font-size: 14px;"><font style="">[d<sub style="">1</sub>, d</font><sub style="">2</sub>, ... ,&nbsp;dM-N]</font></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
|
||||
<mxGeometry x="1200" y="40" width="200" height="40" as="geometry" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-39" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="<font><font style="font-size: 14px;"><b style="">Input</b></font></font><div><font style="font-size: 14px;"><font style="">[d<sub style="">1</sub>, d</font><sub style="">2</sub>, ... ,&nbsp;dM-N]</font></div>" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="1200" y="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-41" value="<font style="font-size: 14px;">j = 0</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
|
||||
<mxGeometry x="1260" y="120" width="80" height="40" as="geometry" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-41" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="<font style="font-size: 14px;">j = 0</font>" vertex="1">
|
||||
<mxGeometry height="40" width="80" x="1260" y="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="H6R4VGwbr_i7cj5zOMue-41" target="H6R4VGwbr_i7cj5zOMue-41" edge="1">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-42" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="H6R4VGwbr_i7cj5zOMue-41">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-43" value="<font style="font-size: 14px;">i = 0</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
|
||||
<mxGeometry x="1265" y="270" width="80" height="40" as="geometry" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-43" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="<font style="font-size: 14px;">i = 0</font>" vertex="1">
|
||||
<mxGeometry height="40" width="80" x="1265" y="270" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-44" value="<font><font style="font-size: 14px;"><b style="">Filter</b>&nbsp;</font></font><div><font style="font-size: 14px;"><font style="">[w<sub style="">1</sub>, w</font><sub style="">2</sub>, ... , w<sub>M-N</sub>]</font></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
|
||||
<mxGeometry x="1200" y="200" width="200" height="40" as="geometry" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-44" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="<font><font style="font-size: 14px;"><b style="">Filter</b>&nbsp;</font></font><div><font style="font-size: 14px;"><font style="">[w<sub style="">1</sub>, w</font><sub style="">2</sub>, ... , w<sub>M-N</sub>]</font></div>" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="1200" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-45" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="H6R4VGwbr_i7cj5zOMue-35" target="H6R4VGwbr_i7cj5zOMue-41" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1440" y="610" as="sourcePoint" />
|
||||
<mxPoint x="1475" y="340" as="targetPoint" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-45" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-35" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="H6R4VGwbr_i7cj5zOMue-41" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1305" y="720" />
|
||||
<mxPoint x="950" y="720" />
|
||||
<mxPoint x="950" y="140" />
|
||||
</Array>
|
||||
<mxPoint x="1440" y="610" as="sourcePoint" />
|
||||
<mxPoint x="1475" y="340" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-46" value="j++" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" parent="H6R4VGwbr_i7cj5zOMue-45" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.2417" y="1" relative="1" as="geometry">
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-46" connectable="0" parent="H6R4VGwbr_i7cj5zOMue-45" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" value="j++" vertex="1">
|
||||
<mxGeometry relative="1" x="0.2417" y="1" as="geometry">
|
||||
<mxPoint y="67" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-48" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="H6R4VGwbr_i7cj5zOMue-38" target="H6R4VGwbr_i7cj5zOMue-44" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1290" y="390" as="sourcePoint" />
|
||||
<mxPoint x="1340" y="340" as="targetPoint" />
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-48" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-38" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="H6R4VGwbr_i7cj5zOMue-44" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1575" y="220" />
|
||||
</Array>
|
||||
<mxPoint x="1290" y="390" as="sourcePoint" />
|
||||
<mxPoint x="1340" y="340" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-1" value="<font style="font-size: 14px;">k = 0</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
|
||||
<mxGeometry x="1535" y="460" width="80" height="40" as="geometry" />
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="<font style="font-size: 14px;">k = 0</font>" vertex="1">
|
||||
<mxGeometry height="40" width="80" x="1535" y="460" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-2" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="H6R4VGwbr_i7cj5zOMue-35" target="n1TZPSIdfv_mN465yjPh-1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1450" y="580" as="sourcePoint" />
|
||||
<mxPoint x="1460" y="530" as="targetPoint" />
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-2" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-35" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="n1TZPSIdfv_mN465yjPh-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1575" y="660" />
|
||||
</Array>
|
||||
<mxPoint x="1450" y="580" as="sourcePoint" />
|
||||
<mxPoint x="1460" y="530" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-3" value="<font><font style="font-size: 14px;"><b style="">Noise</b>&nbsp;</font></font><div><font style="font-size: 14px;"><font style="">[x<sub style="">1</sub>, x</font><sub style="">2</sub>, ... , x<sub>M-N</sub>]</font></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
|
||||
<mxGeometry x="970" y="360" width="190" height="40" as="geometry" />
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-3" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="<font><font style="font-size: 14px;"><b style="">Noise</b>&nbsp;</font></font><div><font style="font-size: 14px;"><font style="">[x<sub style="">1</sub>, x</font><sub style="">2</sub>, ... , x<sub>M-N</sub>]</font></div>" vertex="1">
|
||||
<mxGeometry height="40" width="190" x="970" y="360" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-4" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="n1TZPSIdfv_mN465yjPh-1" target="H6R4VGwbr_i7cj5zOMue-38" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-4" edge="1" parent="1" source="n1TZPSIdfv_mN465yjPh-1" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="H6R4VGwbr_i7cj5zOMue-38" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1580" y="470" as="sourcePoint" />
|
||||
<mxPoint x="1630" y="420" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-5" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="H6R4VGwbr_i7cj5zOMue-38" target="n1TZPSIdfv_mN465yjPh-1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1460" y="380" as="sourcePoint" />
|
||||
<mxPoint x="1510" y="330" as="targetPoint" />
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-5" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-38" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="n1TZPSIdfv_mN465yjPh-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1460" y="380" />
|
||||
<mxPoint x="1460" y="480" />
|
||||
</Array>
|
||||
<mxPoint x="1460" y="380" as="sourcePoint" />
|
||||
<mxPoint x="1510" y="330" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-6" value="k++" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" parent="n1TZPSIdfv_mN465yjPh-5" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.2231" y="1" relative="1" as="geometry">
|
||||
<mxCell id="n1TZPSIdfv_mN465yjPh-6" connectable="0" parent="n1TZPSIdfv_mN465yjPh-5" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" value="k++" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.2231" y="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="JXUbh7mfEI0vDSi9tXp8-2" value="<font><font style="font-size: 14px;"><b style="">Output</b>&nbsp;</font></font><div><font style="font-size: 14px;"><font style="">[o<sub style="">1</sub>, o</font><sub style="">2</sub>, ... , o<sub>M-N</sub>]</font></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
|
||||
<mxGeometry x="1200" y="550" width="200" height="40" as="geometry" />
|
||||
<mxCell id="JXUbh7mfEI0vDSi9tXp8-2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="<font><font style="font-size: 14px;"><b style="">Output</b>&nbsp;</font></font><div><font style="font-size: 14px;"><font style="">[o<sub style="">1</sub>, o</font><sub style="">2</sub>, ... , o<sub>M-N</sub>]</font></div>" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="1200" y="550" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="JXUbh7mfEI0vDSi9tXp8-4" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.462;exitY=1.333;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="JXUbh7mfEI0vDSi9tXp8-4" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;exitX=0.462;exitY=1.333;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1304.58" y="590" as="sourcePoint" />
|
||||
<mxPoint x="1305" y="630" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<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.1">
|
||||
<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">
|
||||
<diagram name="Page-1" id="biPyHR2u_nhwJtU07GTZ">
|
||||
<mxGraphModel dx="-171" dy="354" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<mxGraphModel dx="576" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
@@ -184,7 +184,7 @@
|
||||
<mxPoint x="1320" y="860" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-44" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" value="<div><span style="font-size: 14px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><b>Calculate next Sample<br></b>calc()</span></div>" vertex="1">
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-44" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" value="<div><span style="font-size: 14px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><b>Calculate next Sample<br></b>calculate_output()</span></div>" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="1200" y="850" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-45" edge="1" parent="1" source="yYsWn2o99izGpPgvcdo1-44" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.344;entryY=1.013;entryDx=0;entryDy=0;entryPerimeter=0;" target="yYsWn2o99izGpPgvcdo1-33" value="<font style="font-size: 13px;">Write Sample</font>">
|
||||
|
||||
Reference in New Issue
Block a user