This commit is contained in:
Patrick Hangl
2026-01-14 15:54:29 +01:00
parent 8ad14d2268
commit 49dd3b0af3
4 changed files with 164 additions and 81 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

@@ -88,7 +88,7 @@
\acronymused{DSP}
\newlabel{fig:fig_dsp_comm.jpg}{{33}{43}{}{}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Implementation of the ANR algorithm on the DSP}{43}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}High-level description of the ANR algorithm implementation}{43}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}Description of the ANR algorithm implementation}{43}{}\protected@file@percent }
\acronymused{ANR}
\acronymused{DSP}
\acronymused{DSP}
@@ -118,7 +118,7 @@
\acronymused{ARM}
\acronymused{DSP}
\acronymused{DMA}
\@writefile{lof}{\contentsline {figure}{\numberline {34}{\ignorespaces Visualization of the \ac {DMA} operations between the PCM interface to the shared memory section. When the memory buffer is filled by 50\%, an interrupt is triggerd, either to the \ac {DSP} core or to the \ac {ARM} core, depending on the input or output direction.}}{45}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {34}{\ignorespaces Detailed visualization of the \ac {DMA} operations between the PCM interface to the shared memory section. When the memory buffer occupied, an interrupt is triggerd, either to the \ac {DSP} core or to the \ac {ARM} core, depending on the input or output direction.}}{45}{}\protected@file@percent }
\acronymused{DMA}
\acronymused{DSP}
\acronymused{ARM}
@@ -133,11 +133,29 @@
\acronymused{ANR}
\acronymused{DSP}
\acronymused{ARM}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}Code implementation of the ANR algorithm implementation}{46}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}First optimization approach: algorithm implementation}{46}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Second optimization approach: hybrid ANR algorithm}{46}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}Code implementation of the ANR algorithm on the DSP}{46}{}\protected@file@percent }
\acronymused{ANR}
\acronymused{DSP}
\@writefile{toc}{\contentsline {paragraph}{Memory initialization and mapping}{46}{}\protected@file@percent }
\acronymused{DSP}
\acronymused{PCM}
\acronymused{DSP}
\newlabel{fig:fig_dps_code_memory}{{4.2.2}{46}{}{}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {35}{\ignorespaces Low-level implementation: Memory initialization and mapping}}{46}{}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Main loop and interrupt handling}{46}{}\protected@file@percent }
\acronymused{DSP}
\acronymused{ANR}
\acronymused{ARM}
\acronymused{ARM}
\acronymused{DSP}
\acronymused{ARM}
\newlabel{fig:fig_dps_code_mainloop}{{4.2.2}{47}{}{}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {36}{\ignorespaces Low-level implementation: Main loop and interrupt handling}}{47}{}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{ANR function}{47}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}First optimization approach: algorithm implementation}{47}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Second optimization approach: hybrid ANR algorithm}{47}{}\protected@file@percent }
\@setckpt{chapter_04}{
\setcounter{page}{47}
\setcounter{page}{48}
\setcounter{equation}{21}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -151,7 +169,7 @@
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{34}
\setcounter{figure}{36}
\setcounter{table}{0}
\setcounter{float@type}{16}
\setcounter{tabx@nest}{0}
@@ -269,10 +287,10 @@
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{parentequation}{0}
\setcounter{lstnumber}{21}
\setcounter{lstnumber}{18}
\setcounter{FancyVerbLine}{0}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{46}
\setcounter{LN@truepage}{47}
\setcounter{FancyVerbWriteLine}{0}
\setcounter{FancyVerbBufferLine}{0}
\setcounter{FV@TrueTabGroupLevel}{0}

View File

@@ -17,14 +17,14 @@ When the \ac{DSP} is not required to process audio data, it can be paused by pau
The processing unit of the \ac{DSP} 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.\\ \\
Processor-wise, 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. The featured dual Harvard, dual \ac{MAC} architecture (two separate \ac{ALU}s) enables the execution of two \ac{MAC} operations, two memory operations (load/store) and two pointer updates in a single processor cycle.
\subsubsection{Communication between the ARM core and the DSP}
In order to ensure a smooth, but power-efficient, operation together with the \ac{CI} system, a interrupt-driven communication between the \ac{ARM} core and the \ac{DSP} core is crucial. Center of communication between the the cores is the already mentioned shared memory region accessible by both processing units. This shared memory enables the exchange of data without the need for separate communication protocols or input/output interfaces (refer to Figure \ref{fig:fig_dsp_setup.jpg}). 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 also by rasing an inerrupt. This approach ensures efficient coordination while minimizing active waiting (polling) and therefore unnecessary power consumption.
In order to ensure a smooth, but power-efficient, operation together with the \ac{CI} system, a interrupt-driven communication between the \ac{ARM} core and the \ac{DSP} core is crucial. Center of communication between the the cores is the already mentioned shared memory region accessible by both processing units. This shared memory enables the exchange of data without the need for separate communication protocols or input/output interfaces (refer to Figure \ref{fig:fig_dsp_setup.jpg}). Synchronization between the cores is achieved using interrupt-based signaling: the \ac{ARM} core initiates processing requests by triggering waking up the \ac{DSP} and triggering an interrupt which sets an action flag, while the \ac{DSP} notifies the \ac{ARM} core upon completion of a task also by changing an interrupt register. This approach ensures efficient coordination while minimizing active waiting (polling) and therefore unnecessary power consumption.
\begin{figure}[H]
\centering
\includegraphics[width=1.0\linewidth]{Bilder/fig_dsp_setup.jpg}
\caption{Simplified visualization of the interaction between the \ac{ARM} core and the \ac{DSP} core}
\label{fig:fig_dsp_setup.jpg}
\end{figure}
\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 by the DMA controller itself, 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 (refer to Figure \ref{fig:fig_dsp_comm.jpg}).\\ \\
\noindent The \ac{ARM} Core receives the 16-bit audio data (the corrupted signal and the reference noise signal via two channels) from the CI system via a \ac{PCM} interface, which offers one 32-bit input and one 32-bit output register. An interrupt triggers the integrated \ac{DMA} controller when the input register is occupied, which transfers the audio data from the \ac{PCM} interface to buffer in a predefined memory location. Once completed, the \ac{DSP} core is requested 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 a 32-bit processed sample (shifted from 16 bit) 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 (refer to Figure \ref{fig:fig_dsp_comm.jpg}).\\ \\
\begin{figure}[H]
\centering
\includegraphics[width=0.9\linewidth]{Bilder/fig_dsp_comm.jpg}
@@ -33,7 +33,7 @@ In order to ensure a smooth, but power-efficient, operation together with the \a
\end{figure}
\subsection{Implementation of the ANR algorithm on the DSP}
\subsubsection{High-level description of the ANR algorithm implementation}
\subsubsection{Description of the ANR algorithm implementation}
In contrary, to the high-level simulation environment written in Python from the previous chapter, the implementation of the \ac{ANR} algorithm on the \ac{DSP} requires a low-level programming approach, as which takes into account the specific architecture and capabilities of the processor and its environment. This includes considerations such as memory management, data types, and optimization techniques specific to the \ac{DSP} architecture. The implementation is required to be done in the C programming language, which is a standard for embedded systems, as it allows low-level hardware implementation.\\ \\
The implementation of the \ac{ANR} algorithm on the \ac{DSP} follows the same overall structure as the high-level variant, but now the focus lies on memory management, interrupt-handling and communication between the two cores. The \ac{ARM} operates in a continious loop, structured into several states:
\begin{itemize}
@@ -44,24 +44,71 @@ The implementation of the \ac{ANR} algorithm on the \ac{DSP} follows the same ov
\end{itemize}
On the contrary, the \ac{DSP} core operates in an interrupt-driven manner:
\begin{itemize}
\item \textbf{Idle:} The \ac{DSP} core remains in a halted state, waiting for an interrupt from the \ac{ARM} core to start processing.
\item \textbf{Work:} Upon receiving the interrupt, the \ac{DSP} core reads the audio samples from the input buffer located in the shared memory, processes them using the implemented \ac{ANR} algorithm, and writes the processed samples back to the output buffer in the shared memory.
\item \textbf{Done/Idle:} After completing the processing, the \ac{DSP} core triggers an interrupt on the \ac{ARM} core to notify that the processing is complete. The \ac{DSP} core then returns to the idle state, waiting for the next processing request.
\item \textbf{Idle:} The \ac{DSP} core remains in a halted state, waiting to be activated by the \ac{ARM} core to start processing.
\item \textbf{Work:} Once activated, the \ac{DSP} core reads the audio samples from the input buffer located in the shared memory, processes them using the implemented \ac{ANR} algorithm, and writes the processed samples back to the output buffer in the shared memory.
\item \textbf{Done/Idle:} After completing the processing, the \ac{DSP} core triggers an interrupt on the \ac{ARM} core to notify that the processing is complete. The \ac{DSP} core then returns to its sleeping state, waiting for the next processing request.
\end{itemize}
\noindent The \ac{DMA} controller plays a crucial role in this architecture by handling the data transfers between the \ac{PCM} interface and the shared memory buffers. It operates independently of both the \ac{ARM} core and the \ac{DSP} core, allowing for efficient data movement without burdening the processing units. The \ac{DMA} controller is configured to transfer audio samples in blocks, triggering interrupts to notify the respective cores when new data is available or when processing is complete.
\begin{figure}[H]
\centering
\includegraphics[width=1.0\linewidth]{Bilder/fig_dsp_dma.jpg}
\caption{Visualization of the \ac{DMA} operations between the PCM interface to the shared memory section. When the memory buffer is filled by 50\%, an interrupt is triggerd, either to the \ac{DSP} core or to the \ac{ARM} core, depending on the input or output direction.}
\caption{Detailed visualization of the \ac{DMA} operations between the PCM interface to the shared memory section. When the memory buffer occupied, an interrupt is triggerd, either to the \ac{DSP} core or to the \ac{ARM} core, depending on the input or output direction.}
\label{fig:fig_dsp_dma.jpg}
\end{figure}
\noindent Figure \ref{fig:fig_dsp_dma.jpg} visualizes the concrete operation of the \ac{DMA} controller during the audio sample processing. The \ac{DMA} controller is configured to samplewise transfer the audio samples from the \ac{PCM} interface into a defined memory location of the shared memory (input buffer). When the input buffer is half full, an interrupt is triggered to the \ac{DSP} core, notifying it to start processing the available samples. After processing, the results are written to another designated section of the memory (output buffer). When the output buffer is filled is half full, another interrupt is triggered to the \ac{DMA} controller, indicating that the processed samples are ready to be transferred back to the \ac{PCM} interface for playback. \\ \\
\noindent Figure \ref{fig:fig_dsp_dma.jpg} visualizes the concrete operation of the \ac{DMA} controller during the audio sample processing. The \ac{DMA} controller is configured to samplewise transfer the audio samples from the \ac{PCM} interface into a defined memory location of the shared memory (input buffer). When the input buffer is filled with one sample of both channels, an interrupt is triggered to the \ac{DSP} core, notifying it to start processing the available samples. After processing, the results are written to another designated section of the memory (output buffer). When the output buffer recieves the result, another interrupt is triggered to the \ac{DMA} controller, indicating that the processed samples are ready to be transferred back to the \ac{PCM} interface for playback. \\ \\
As the \ac{ARM} operation is not the main focus of this thesis, the following section will focus on implementation of the \ac{ANR} algorithm on the \ac{DSP} core itself. As the behavior of the \ac{ARM} core is already sufficiently described, furhter implementaion details will be omitted in the following.
\subsubsection{Code implementation of the ANR algorithm implementation}
- Definition Speicherbereiche und Konstanten
- Main loop
- Initialisierung der Signale
- Calc Funktion
\subsubsection{Code implementation of the ANR algorithm on the DSP}
The implementation of the \ac{ANR} algorithm on the \ac{DSP} core is structured into several key sections, each responsible for specific aspects of the algorithm's functionality. The following paragraphs outline the main components of the code implementation:
\paragraph{Memory initialization and mapping}
The memory initialization section starts with the definition of the interrupt register (0xC00004) and the corresponding bit masks used to control the interrupt behavior of the \ac{DSP} core. Afterwards, a section in the shared memory is defined for the storage of input and output audio samples after/before the transport to/from the \ac{PCM} interface. The output section is initialized with an offset of 16 bytes from the input section (0x800000), resulting in a storage capability of 4 32-bit double-words for each of the two memory sections - this is more than needed, but prevents future memory relocation, if the necessety for more space would arise. After this initialization, the interrupt register and the memory sections are declared as volatile variables, telling the compiler, that these variables can be changed outside the normal program flow (e.g., by hardware interrupts), preventing certain optimizations. The storage capability of 4 16-bit words shows itself in the declaration of the input and output arrays, consisting of 4 elements each. Finally, a variable is declared to signal the \ac{DSP} core, an interrupt has occured, which changes the state of the interrupt register and signals a processing request.
\begin{figure}[H]
\centering
\begin{lstlisting}[language=C]
#define CSS_CMD 0xC00004
#define CSS_CMD_0 (1<<0)
#define CSS_CMD_1 (1<<1)
#define INPUT_PORT0_ADD 0x800000
#define OUTPUT_PORT_ADD (INPUT_PORT0_ADD + 16)
volatile static unsigned char set_storage(DMIO:CSS_CMD) css_cmd_flag;
static volatile int16_t set_storage(DMB:INPUT_PORT0_ADD) input_port[4];
static volatile int16_t set_storage(DMB:OUTPUT_PORT_ADD) output_port[4];
static volatile int action_required;
\end{lstlisting}
\label{fig:fig_dps_code_memory}
\caption{Low-level implementation: Memory initialization and mapping}
\end{figure}
\paragraph{Main loop and interrupt handling}
The main loop of the \ac{DSP} core is quite compact, as it mainly focuses on handling interrupts and delegating the sample processing to the \ac{ANR} function. The loop starts by enabling interrupts with a compiler-specific function and setting up pointers for the output buffer and the sample variable. After setting the action flag to zero, the main function enters an infinite loop, signaling the \ac{ARM} core it´s halted state by setting the interrupt register to 1 and halting the core.\\ \\
If the \ac{ARM} core requests a sample to be processed, a interrupt is triggered, which activates the \ac{DSP} core and sets the action flag to 1. The main loop then checks the action flag, and sets the interrupt register back to 0, indicating the \ac{ARM} core it is now processing the sample. After resetting the action flag, the output pointer is updated to point to the next position in the output buffer using a cyclic addition function. Before triggering the calc()-function the calculated sample from the previous cycle is moved from its temporary memory location to the current position in the output buffer. Afterwards, the calc()-function is triggered for the current cycle, and the loop ends.
\begin{figure}[H]
\centering
\begin{lstlisting}[language=C]
int main(void) {
enable_interrupts();
output_pointer = &output_port[1];
sample_pointer = &sample;
action_required = 0;
while (1){
css_cmd_flag = CSS_CMD_1;
core_halt();
if (action_required == 1) {
css_cmd_flag = CSS_CMD_0;
action_required = 0;
out_pointer = cyclic_add(output_pointer, 2, output_port, 4);
*output_pointer = *sample_pointer;
calc(&corrupted_signal, &reference_noise_signal, mode, &input_port[1], &input_port[0], sample_pointer);
}
}
}
\end{lstlisting}
\label{fig:fig_dps_code_mainloop}
\caption{Low-level implementation: Main loop and interrupt handling}
\end{figure}
\paragraph{ANR function}
\subsection{First optimization approach: algorithm implementation}
\subsection{Second optimization approach: hybrid ANR algorithm}

View File

@@ -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/143.0.0.0 Safari/537.36" version="29.2.10">
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" version="29.3.0">
<diagram name="Page-1" id="biPyHR2u_nhwJtU07GTZ">
<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">
<mxGraphModel dx="133" dy="512" 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" />
@@ -43,29 +43,17 @@
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-21" parent="1" style="text;whiteSpace=wrap;html=1;fontSize=12;" value="&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;&quot;&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;Input Data&lt;/font&gt;&lt;/span&gt;" vertex="1">
<mxGeometry height="40" width="110" x="880" y="150" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x800004" vertex="1">
<mxCell id="Uk31TYlx7ywhMvou_2Fj-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x800002" vertex="1">
<mxGeometry height="30" width="160" x="1220" y="270" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x800008" vertex="1">
<mxCell id="Uk31TYlx7ywhMvou_2Fj-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x800004" vertex="1">
<mxGeometry height="30" width="160" x="1220" y="220" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x80000B" vertex="1">
<mxCell id="Uk31TYlx7ywhMvou_2Fj-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x800006" vertex="1">
<mxGeometry height="30" width="160" x="1220" y="170" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-5" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=12;" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Raise Interrupt&lt;br&gt;on DSP Core&lt;/font&gt;" vertex="1">
<mxGeometry height="40" width="110" x="1450" y="240" as="geometry" />
</mxCell>
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-20" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-9" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="Uk31TYlx7ywhMvou_2Fj-4" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1487" y="420" as="sourcePoint" />
<mxPoint x="1390" y="420.6399999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-6" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-9" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="Uk31TYlx7ywhMvou_2Fj-3" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1290" y="400" as="sourcePoint" />
<mxPoint x="1340" y="400" as="targetPoint" />
</mxGeometry>
<mxGeometry height="40" width="110" x="1450" y="285" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-7" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-9" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="Uk31TYlx7ywhMvou_2Fj-2" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
@@ -80,19 +68,19 @@
</mxGeometry>
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-9" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=10;" value="&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;font style=&quot;font-size: 12px;&quot;&gt;20 kHz&lt;br&gt;DMA Operation&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="40" width="130" x="1114" y="120" as="geometry" />
<mxGeometry height="40" width="130" x="1115" y="110" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-29" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1290" y="200" as="geometry" />
<mxCell id="Uk31TYlx7ywhMvou_2Fj-29" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;16 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1230" y="225" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-35" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1285" y="150" as="geometry" />
<mxCell id="Uk31TYlx7ywhMvou_2Fj-35" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;16 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1230" y="175" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-36" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1290" y="250" as="geometry" />
<mxCell id="Uk31TYlx7ywhMvou_2Fj-36" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;16 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1230" y="275" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-37" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1290" y="300" as="geometry" />
<mxCell id="Uk31TYlx7ywhMvou_2Fj-37" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;16 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1230" y="325" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-38" parent="1" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=default;fillColor=#fff2cc;strokeColor=#d6b656;" value="" vertex="1">
<mxGeometry height="280" width="480" x="960" y="420" as="geometry" />
@@ -121,26 +109,26 @@
<mxCell id="Uk31TYlx7ywhMvou_2Fj-45" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 14px;&quot;&gt;&lt;b&gt;Shared Memory&lt;br&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 14px;&quot;&gt;&lt;b&gt;ARM/DSP&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="40" width="130" x="1240" y="430" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-46" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="Uk31TYlx7ywhMvou_2Fj-48" value="">
<mxCell id="Uk31TYlx7ywhMvou_2Fj-46" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1560" y="605" as="sourcePoint" />
<mxPoint x="1540" y="605" as="targetPoint" />
<mxPoint x="1560" y="654" as="sourcePoint" />
<mxPoint x="1380" y="653.75" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-47" parent="1" style="text;whiteSpace=wrap;html=1;fontSize=12;" value="&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;&quot;&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;Output Data&lt;/font&gt;&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="80" x="880" y="470" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-48" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x80004F" vertex="1">
<mxCell id="Uk31TYlx7ywhMvou_2Fj-48" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x80002F" vertex="1">
<mxGeometry height="30" width="160" x="1220" y="590" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-49" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x80008F" vertex="1">
<mxCell id="Uk31TYlx7ywhMvou_2Fj-49" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x80004F" vertex="1">
<mxGeometry height="30" width="160" x="1220" y="540" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-50" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x8000BF" vertex="1">
<mxCell id="Uk31TYlx7ywhMvou_2Fj-50" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x80006F" vertex="1">
<mxGeometry height="30" width="160" x="1220" y="490" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-51" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=12;" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Raise Interrupt&lt;br&gt;on ARM Core&lt;/font&gt;" vertex="1">
<mxGeometry height="40" width="110" x="1450" y="560" as="geometry" />
<mxGeometry height="40" width="110" x="1450" y="650" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-52" edge="1" parent="1" source="Uk31TYlx7ywhMvou_2Fj-40" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="Uk31TYlx7ywhMvou_2Fj-39" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
@@ -151,38 +139,14 @@
<mxCell id="Uk31TYlx7ywhMvou_2Fj-56" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=10;" value="&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;font style=&quot;font-size: 12px;&quot;&gt;20 kHz&lt;br&gt;DMA Operation&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="40" width="130" x="1114" y="440" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-57" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1290" y="520" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-58" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1285" y="470" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-59" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1290" y="570" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-60" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1290" y="620" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-61" edge="1" parent="1" source="Uk31TYlx7ywhMvou_2Fj-48" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="Uk31TYlx7ywhMvou_2Fj-39" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1610" y="640" as="sourcePoint" />
<mxPoint x="1530" y="490" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-62" edge="1" parent="1" source="Uk31TYlx7ywhMvou_2Fj-49" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="Uk31TYlx7ywhMvou_2Fj-39" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1580" y="620" as="sourcePoint" />
<mxPoint x="1500" y="470" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-63" edge="1" parent="1" source="Uk31TYlx7ywhMvou_2Fj-50" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="Uk31TYlx7ywhMvou_2Fj-39" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1640" y="590" as="sourcePoint" />
<mxPoint x="1560" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-64" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1045" y="150" as="geometry" />
<mxGeometry height="20" width="30" x="990" y="175" as="geometry" />
</mxCell>
<mxCell id="Uk31TYlx7ywhMvou_2Fj-65" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1050" y="470" as="geometry" />
@@ -190,6 +154,60 @@
<mxCell id="9jqM_zlcDrX7iHHAm0HB-1" parent="1" style="text;whiteSpace=wrap;html=1;" value="&lt;b style=&quot;forced-color-adjust: none; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;DMA Output Operation&lt;/b&gt;" vertex="1">
<mxGeometry height="40" width="160" x="1120" y="390" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-1" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=left;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;First 16 Bit:Corrupted Signal&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;Second 16 Bit: Reference Noise Signal&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="40" width="180" x="980" y="200" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-2" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;Corrupted Signal&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="80" x="1261" y="347" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-3" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;Reference Noise Signal&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="120" x="1245" y="296" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-4" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;Not used&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="80" x="1272.5" y="245" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-5" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;Not used&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="80" x="1275" y="200" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-6" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;16 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1230" y="645" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-7" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;16 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1230" y="595" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-8" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;16 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1230" y="545" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-9" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;16 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="1230" y="495" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-10" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;32 Bit&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="30" x="990" y="495" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-11" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;Not used&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="80" x="1272.5" y="565" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-12" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;Not used&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="80" x="1272.5" y="515" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-14" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;Filter Output&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="65" x="1268.5" y="620" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-15" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1560" y="604" as="sourcePoint" />
<mxPoint x="1380" y="603.75" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-16" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=12;" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Raise Interrupt&lt;br&gt;on ARM Core&lt;/font&gt;" vertex="1">
<mxGeometry height="40" width="110" x="1450" y="600" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-17" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;Filter Output&lt;/span&gt;" vertex="1">
<mxGeometry height="20" width="65" x="1268.5" y="670" as="geometry" />
</mxCell>
<mxCell id="tJJhXIVE2DswCfvtTWS9-18" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=left;" value="&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;Filter Output&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;shifted to 32 Bit&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;" vertex="1">
<mxGeometry height="35" width="90" x="980" y="520" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>