4.3
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@@ -1,11 +1,11 @@
|
||||
\relax
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Hardware implementation and optimization of the ANR algorithm}{40}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Hardware implementation and optimization of the ANR Algorithm on a low-power system}{40}{}\protected@file@percent }
|
||||
\acronymused{ANR}
|
||||
\acronymused{CI}
|
||||
\acronymused{ANR}
|
||||
\acronymused{ANR}
|
||||
\acronymused{ANR}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Description of the low-power DSP and its environment}{40}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Low-power system architecture and integration}{40}{}\protected@file@percent }
|
||||
\AC@undonewlabel{acro:SOC}
|
||||
\newlabel{acro:SOC}{{4.1}{40}{}{}{}}
|
||||
\acronymused{SOC}
|
||||
@@ -15,7 +15,7 @@
|
||||
\acronymused{DSP}
|
||||
\acronymused{ARM}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}Hardware overview}{40}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}ARM and DSP hardware architecture overview}{40}{}\protected@file@percent }
|
||||
\acronymused{ARM}
|
||||
\acronymused{ARM}
|
||||
\acronymused{CI}
|
||||
@@ -57,7 +57,7 @@
|
||||
\acronymused{MAC}
|
||||
\acronymused{ALU}
|
||||
\acronymused{MAC}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Communication between the ARM core and the DSP core}{41}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Inter-core communication mechanisms}{41}{}\protected@file@percent }
|
||||
\acronymused{CI}
|
||||
\acronymused{ARM}
|
||||
\acronymused{DSP}
|
||||
@@ -65,9 +65,11 @@
|
||||
\acronymused{DSP}
|
||||
\acronymused{DSP}
|
||||
\acronymused{ARM}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {32}{\ignorespaces Simplified visualization of the interaction between the \ac {ARM} core and the \ac {DSP} core}}{42}{}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {32}{\ignorespaces Simplified visualization of the interaction between the \ac {CI}-System, the \ac {ARM} core and the \ac {DSP} core, making use of the \ac {PCM} interface and shared memory for audio data exchange.}}{42}{}\protected@file@percent }
|
||||
\acronymused{CI}
|
||||
\acronymused{ARM}
|
||||
\acronymused{DSP}
|
||||
\acronymused{PCM}
|
||||
\newlabel{fig:fig_dsp_setup.jpg}{{32}{42}{}{}{}}
|
||||
\acronymused{ARM}
|
||||
\acronymused{PCM}
|
||||
@@ -84,8 +86,8 @@
|
||||
\acronymused{ARM}
|
||||
\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}Description of the ANR algorithm implementation}{43}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Software architecture and execution flow}{43}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}ARM–DSP communication and data exchange details}{43}{}\protected@file@percent }
|
||||
\acronymused{ANR}
|
||||
\acronymused{DSP}
|
||||
\acronymused{DSP}
|
||||
@@ -115,7 +117,7 @@
|
||||
\acronymused{PCM}
|
||||
\acronymused{ARM}
|
||||
\acronymused{DSP}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {34}{\ignorespaces Detailed visualization of the \ac {DMA} operations between the PCM interface to the shared memory section. When the memory buffer occupied, an interrupt is 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 if triggered during a Read- or Write-operation.}}{45}{}\protected@file@percent }
|
||||
\acronymused{DMA}
|
||||
\acronymused{DSP}
|
||||
\acronymused{ARM}
|
||||
@@ -129,18 +131,18 @@
|
||||
\acronymused{ARM}
|
||||
\acronymused{ANR}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}Code implementation of the ANR algorithm on the DSP}{46}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}System control flow and main processing loop}{45}{}\protected@file@percent }
|
||||
\acronymused{ANR}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {paragraph}{Memory initialization and mapping}{46}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Memory initialization and mapping}{45}{}\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{lof}{\contentsline {figure}{\numberline {36}{\ignorespaces Exemplary memory map of the 4-element input buffer array. As it is initialized as a 16 bit integer array, each element occupies 2 bytes of memory, resulting in a total size of 8 bytes for the entire array.}}{47}{}\protected@file@percent }
|
||||
\newlabel{fig:fig_compiler.jpg}{{36}{47}{}{}{}}
|
||||
\@writefile{toc}{\contentsline {paragraph}{Main loop and interrupt handling}{47}{}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {36}{\ignorespaces Exemplary memory map of the 4-element input buffer array. As it is initialized as a 16 bit integer array, each element occupies 2 bytes of memory, resulting in a total size of 8 bytes for the entire array. As the DSP architecture works in 32-bit double-words, the bytewise adressing is a result of the compiler abstraction.}}{46}{}\protected@file@percent }
|
||||
\newlabel{fig:fig_compiler.jpg}{{36}{46}{}{}{}}
|
||||
\@writefile{toc}{\contentsline {paragraph}{Main loop and interrupt handling}{46}{}\protected@file@percent }
|
||||
\acronymused{DSP}
|
||||
\acronymused{ANR}
|
||||
\acronymused{ARM}
|
||||
@@ -153,10 +155,22 @@
|
||||
\@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}{ANR function}{48}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Calc()-function}{48}{}\protected@file@percent }
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Hardware simulation of previous examples}{49}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Optimization approach: hybrid ANR algorithm}{49}{}\protected@file@percent }
|
||||
\acronymused{ANR}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}DSP-level implementation of the ANR algorithm}{49}{}\protected@file@percent }
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.1}DSP-specific optimizations for real-time processing}{49}{}\protected@file@percent }
|
||||
\acronymused{ANR}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {paragraph}{Cyclic array iteration}{49}{}\protected@file@percent }
|
||||
\acronymused{ANR}
|
||||
\newlabel{fig:fig_dps_code_cyclic_add}{{4.3.1}{49}{}{}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {39}{\ignorespaces Manual implementation of a cyclic array iteration function in C.}}{49}{}\protected@file@percent }
|
||||
\acronymused{DSP}
|
||||
\acronymused{DSP}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.2}Performance evaluation and quantization of the DSP implementation}{49}{}\protected@file@percent }
|
||||
\@setckpt{chapter_04}{
|
||||
\setcounter{page}{50}
|
||||
\setcounter{equation}{21}
|
||||
@@ -168,11 +182,11 @@
|
||||
\setcounter{mpfootnote}{0}
|
||||
\setcounter{part}{0}
|
||||
\setcounter{section}{4}
|
||||
\setcounter{subsection}{4}
|
||||
\setcounter{subsubsection}{0}
|
||||
\setcounter{subsection}{3}
|
||||
\setcounter{subsubsection}{2}
|
||||
\setcounter{paragraph}{0}
|
||||
\setcounter{subparagraph}{0}
|
||||
\setcounter{figure}{38}
|
||||
\setcounter{figure}{39}
|
||||
\setcounter{table}{0}
|
||||
\setcounter{float@type}{16}
|
||||
\setcounter{tabx@nest}{0}
|
||||
@@ -290,7 +304,7 @@
|
||||
\setcounter{bbx:relatedcount}{0}
|
||||
\setcounter{bbx:relatedtotal}{0}
|
||||
\setcounter{parentequation}{0}
|
||||
\setcounter{lstnumber}{18}
|
||||
\setcounter{lstnumber}{11}
|
||||
\setcounter{FancyVerbLine}{0}
|
||||
\setcounter{linenumber}{1}
|
||||
\setcounter{LN@truepage}{49}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
\section{Hardware implementation and optimization of the ANR algorithm}
|
||||
\section{Hardware implementation and optimization of the ANR Algorithm on a low-power system}
|
||||
This section can be considered as the heart of this thesis. The first subchapter describes the hardware, on which the \ac{ANR} algorithm is implemented, including its environment, which serves as a link to the \ac{CI} system itself. The following subchapter continues with the basic implementation of the \ac{ANR} algorithm on the hardware itself and shall provide the reader with a basic understanding of its challenges, possibilities and limitations. This basic implementation is then low-level simulated with some of the previuous use cases to get some idea of the general performance.\\
|
||||
The last subchapter picks the final optimizations of the \ac{ANR} algorithm itself as a central theme, especially with respect to the capabilities of a hybrid \ac{ANR} approach.
|
||||
\subsection{Description of the low-power DSP and its environment}
|
||||
\subsection{Low-power system architecture and integration}
|
||||
This thesis considers a low-power \ac{SOC} architecture that integrates a general-purpose \ac{ARM} core with a dedicated \ac{DSP} core. The system combines the flexibility of an \ac{ARM}-based control processor with the computational efficiency of a specialized \ac{DSP}, splitting general computing tasks from real-time signal processing workloads.
|
||||
\subsubsection{Hardware overview}
|
||||
\subsubsection{ARM and DSP hardware architecture overview}
|
||||
A 32-bit \ac{ARM} core serves as the primary control unit of the system. It is responsible for high-level application logic, system configuration, peripheral management as also scheduling and serves as a general-purpose processing unit. Due to its universal instruction set and extensive input/output interface, the \ac{ARM} core is well suited for handling general tasks and the interaction with the \ac{CI} system. Time-critical numerical processing is intentionally offloaded to the \ac{DSP} core in order to reduce computational load and power consumption on the control processor.\\ \\
|
||||
The \ac{DSP} used for the implementation features a 32-bit dual Harvard, dual \ac{MAC} architecture primarily designed for audio signal-processing applications in low-power embedded systems. It doesn´t feature a designated boot ROM, as it is initialized and managed by the \ac{ARM} core. The firmware executing the \ac{ANR} algorithm is developed and programmed in the C programming language. The used propretiery compiler is highly efficient and generates optimized assembler code, which is then translated in machine code to execute the \ac{ANR} algorithm on incoming samples.\\ \\
|
||||
All memory instances and registers of the \ac{SOC} are directly addressable by the \ac{ARM} through the standard busses, also enabling a simplified control of the \ac{DSP} through a shared memory section. The memory consists mainly out of the two followng parts:
|
||||
@@ -15,12 +15,12 @@ The data memory is supported by an integrated \ac{DMA} controller, which allows
|
||||
When the \ac{DSP} is not required to process audio data, it can be paused by pausing the clock provided to the \ac{DSP} core. When paused, the \ac{DSP} core enters a low-power state, still allowing the \ac{ARM} core to access its shared memory and wake up the \ac{DSP} core when needed. This mechanism helps to reduce overall power consumption, which is crucial for battery-operated devices like cochlear implants.\\ \\
|
||||
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 core}
|
||||
\subsubsection{Inter-core communication mechanisms}
|
||||
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 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 (for simplicity reasons, this behaviour will be just called ``interrupts'' in the remaining thesis). 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}
|
||||
\caption{Simplified visualization of the interaction between the \ac{CI}-System, the \ac{ARM} core and the \ac{DSP} core, making use of the \ac{PCM} interface and shared memory for audio data exchange.}
|
||||
\label{fig:fig_dsp_setup.jpg}
|
||||
\end{figure}
|
||||
\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 the input buffer in a predefined memory location (now in two 16-bit samples again). 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 16-bit processed sample 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}).\\ \\
|
||||
@@ -31,8 +31,8 @@ In order to ensure a smooth, but power-efficient, operation together with the \a
|
||||
\label{fig:fig_dsp_comm.jpg}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Implementation of the ANR algorithm on the DSP}
|
||||
\subsubsection{Description of the ANR algorithm implementation}
|
||||
\subsection{Software architecture and execution flow}
|
||||
\subsubsection{ARM–DSP communication and data exchange details}
|
||||
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}
|
||||
@@ -51,12 +51,12 @@ On the contrary, the \ac{DSP} core operates in an interrupt-driven manner:
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_dsp_dma.jpg}
|
||||
\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.}
|
||||
\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 if triggered during a Read- or Write-operation.}
|
||||
\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 to the input buffer of the shared memory. 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 into the output buffer in the shared memory. Once the output buffer is occupied, 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 and its behavior is already sufficiently described, further implementaion details will be omitted in the following while the focus will be put on implementation of the \ac{ANR} algorithm on the \ac{DSP} core itself.
|
||||
\subsubsection{Code implementation of the ANR algorithm on the DSP}
|
||||
\subsubsection{System control flow and main processing loop}
|
||||
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:
|
||||
\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 final input/output buffers are then declared in form of two 16-bit 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.
|
||||
@@ -84,7 +84,7 @@ Figure \ref{fig:fig_compiler.jpg} shows an exemplary memory map of the input buf
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_compiler.jpg}
|
||||
\caption{Exemplary memory map of the 4-element input buffer array. As it is initialized as a 16 bit integer array, each element occupies 2 bytes of memory, resulting in a total size of 8 bytes for the entire array.}
|
||||
\caption{Exemplary memory map of the 4-element input buffer array. As it is initialized as a 16 bit integer array, each element occupies 2 bytes of memory, resulting in a total size of 8 bytes for the entire array. As the DSP architecture works in 32-bit double-words, the bytewise adressing is a result of the compiler abstraction.}
|
||||
\label{fig:fig_compiler.jpg}
|
||||
\end{figure}
|
||||
\paragraph{Main loop and interrupt handling}
|
||||
@@ -120,8 +120,35 @@ 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{ANR function}
|
||||
The ANR algorithm implemented on the \ac{DSP} core follows the same structure as the high-level implementation described in the previous chapter, and will therefore not be described in detail. However, the hardware-specific optimizations, responsible for a real-time capable implementation, shall be outlined in a more detailed manner.\\ \\
|
||||
\subsection{Hardware simulation of previous examples}
|
||||
\subsection{Optimization approach: hybrid ANR algorithm}
|
||||
\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.\\ \\
|
||||
|
||||
\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.
|
||||
\subsubsection{DSP-specific optimizations for real-time processing}
|
||||
Two important examples of optimization possibilities shall be outlined in the following, before the entire \ac{ANR} implementation on the \ac{DSP} is analyzed in regard of its performance.
|
||||
\paragraph{Cyclic array iteration}
|
||||
Basically every part of the \ac{ANR} algorithm relies on iterating through memory sections in a cyclic manner. In C, this is usually implemented by defining an array, containing the data, and a pointer, which is incremented after each access. When the pointer reaches the end of the array, it is reset to the beginning of the array again. This approach requires several different operations, such as pointer incrementation, if-clauses and for loops.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{lstlisting}[language=C]
|
||||
int* cyclic array iteration(int *pointer, int increment, int *pointer_start, int buffer_length){
|
||||
int *new_pointer=pointer;
|
||||
for (int i=0; i < abs(increment); i+=1){
|
||||
new_pointer ++;
|
||||
if (new_pointer >= pointer_start + buffer_length){
|
||||
new_pointer=pointer_start;
|
||||
}
|
||||
}
|
||||
return new_pointer;
|
||||
}
|
||||
\end{lstlisting}
|
||||
\label{fig:fig_dps_code_cyclic_add}
|
||||
\caption{Manual implementation of a cyclic array iteration function in C.}
|
||||
\end{figure}
|
||||
\noindent Figure \ref{fig:fig_dps_code_cyclic_add} shows a simple implementation of such a cyclic array iteration function in C, which updates the pointer to a new address. This implementation takes the \ac{DSP} 20 cycles to execute, while the already implemented compiler-optimized version only takes one cycle, making use of the specific architecture of the \ac{DSP} to perform the cyclic addition in a single operation.
|
||||
\subsubsection{Performance evaluation and quantization of the DSP implementation}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
<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">
|
||||
<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">
|
||||
<diagram name="Page-1" id="biPyHR2u_nhwJtU07GTZ">
|
||||
<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">
|
||||
<mxGraphModel dx="338" dy="619" 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="IjZ5u4x7_LR3Ume5GlYs-10" parent="1" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=default;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="" vertex="1">
|
||||
<mxGeometry height="280" width="480" x="960" y="100" as="geometry" />
|
||||
<mxGeometry height="190" width="480" x="960" y="100" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-9" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" value="RX Register" vertex="1">
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-9" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="980" y="170" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-39" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x800000" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="1220" y="320" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-42" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="1120" y="220.0000000000001" as="sourcePoint" />
|
||||
@@ -25,188 +22,179 @@
|
||||
<mxPoint x="1050.72" y="75" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-11" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<b style="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-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;">PCM Interface<br>ARM</b>" vertex="1">
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-11" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<b style="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-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;">PCM Interface<br></b>" vertex="1">
|
||||
<mxGeometry height="40" width="130" x="1000" y="110" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-12" parent="1" style="text;whiteSpace=wrap;html=1;" value="<b style="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;">DMA Input Operation</b>" vertex="1">
|
||||
<mxGeometry height="40" width="145" x="1127.5" y="70" as="geometry" />
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-12" parent="1" style="text;whiteSpace=wrap;html=1;" value="<b style="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;">ARM READ Operation</b>" vertex="1">
|
||||
<mxGeometry height="40" width="166.25" x="1116.88" y="70" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-13" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<div style=""><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 14px;"><b>Shared Memory<br></b></span></div><div style=""><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 14px;"><b>ARM/DSP</b></span></div>" vertex="1">
|
||||
<mxGeometry height="40" width="130" x="1240" y="110" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-19" edge="1" parent="1" source="Uk31TYlx7ywhMvou_2Fj-2" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" value="">
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-19" edge="1" parent="1" source="7i-UjXDKGL79YsJQG97L-6" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1380" y="264.65999999999997" as="sourcePoint" />
|
||||
<mxPoint x="1560" y="285" as="targetPoint" />
|
||||
<mxPoint x="1390" y="285" as="sourcePoint" />
|
||||
<mxPoint x="1560" y="238" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-21" parent="1" style="text;whiteSpace=wrap;html=1;fontSize=12;" value="<span style="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;"><font style="font-size: 14px;">Input Data</font></span>" 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="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="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="0x800006" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="1220" y="170" as="geometry" />
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1230" y="172.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-5" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=12;" value="<font style="font-size: 14px;">Raise Interrupt<br>on DSP Core</font>" vertex="1">
|
||||
<mxGeometry height="40" width="110" x="1450" y="285" as="geometry" />
|
||||
<mxGeometry height="40" width="110" x="1440" y="240" 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="">
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-7" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-9" 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="7i-UjXDKGL79YsJQG97L-5" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1360" y="120" as="sourcePoint" />
|
||||
<mxPoint x="1410" y="120" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-8" 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="H6R4VGwbr_i7cj5zOMue-39" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1510" y="90" as="sourcePoint" />
|
||||
<mxPoint x="1560" y="90" as="targetPoint" />
|
||||
<mxPoint x="1220" y="285" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-9" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=10;" value="<div><span><b><font style="font-size: 12px;">20 kHz<br>DMA Operation</font></b></span></div>" vertex="1">
|
||||
<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="<span style="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;">16 Bit</span>" 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="<span style="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;">16 Bit</span>" 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="<span style="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;">16 Bit</span>" 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="<span style="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;">16 Bit</span>" vertex="1">
|
||||
<mxGeometry height="20" width="30" x="1230" y="325" as="geometry" />
|
||||
<mxGeometry height="40" width="130" x="1122.51" y="130" 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" />
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-39" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" value="TX Register" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="980" y="490" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-40" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="0x80000F" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="1220" y="640" as="geometry" />
|
||||
<mxGeometry height="190" width="480" x="960" y="330" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-41" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="1120" y="540.0000000000001" as="sourcePoint" />
|
||||
<mxPoint x="1120" y="540.0000000000001" as="targetPoint" />
|
||||
<mxPoint x="1120" y="452.5000000000001" as="sourcePoint" />
|
||||
<mxPoint x="1120" y="452.5000000000001" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-42" edge="1" parent="1" source="Uk31TYlx7ywhMvou_2Fj-39" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" value="">
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-42" edge="1" parent="1" source="7i-UjXDKGL79YsJQG97L-31" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="880" y="505" as="sourcePoint" />
|
||||
<mxPoint x="880" y="505" as="targetPoint" />
|
||||
<mxPoint x="980" y="417.5" as="sourcePoint" />
|
||||
<mxPoint x="880" y="417.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-43" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<b style="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-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;">PCM Interface<br>ARM</b>" vertex="1">
|
||||
<mxGeometry height="40" width="130" x="1000" y="430" as="geometry" />
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-43" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<b style="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-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;">PCM Interface<br></b>" vertex="1">
|
||||
<mxGeometry height="40" width="130" x="1000" y="342.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-45" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<div style=""><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 14px;"><b>Shared Memory<br></b></span></div><div style=""><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 14px;"><b>ARM/DSP</b></span></div>" vertex="1">
|
||||
<mxGeometry height="40" width="130" x="1240" y="430" as="geometry" />
|
||||
<mxGeometry height="40" width="130" x="1240" y="342.5" 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;" 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;" target="7i-UjXDKGL79YsJQG97L-24" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1560" y="654" as="sourcePoint" />
|
||||
<mxPoint x="1380" y="653.75" as="targetPoint" />
|
||||
<mxPoint x="1570" y="468.5" as="sourcePoint" />
|
||||
<mxPoint x="1390" y="468.25" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-47" parent="1" style="text;whiteSpace=wrap;html=1;fontSize=12;" value="<span style="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;"><font style="font-size: 14px;">Output Data</font></span>" 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="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="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="0x80006F" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="1220" y="490" as="geometry" />
|
||||
<mxGeometry height="20" width="80" x="880" y="382.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-51" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=12;" value="<font style="font-size: 14px;">Raise Interrupt<br>on ARM Core</font>" vertex="1">
|
||||
<mxGeometry height="40" width="110" x="1450" y="650" as="geometry" />
|
||||
<mxGeometry height="40" width="110" x="1460" y="464.5" 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="">
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-52" edge="1" parent="1" source="7i-UjXDKGL79YsJQG97L-23" 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="7i-UjXDKGL79YsJQG97L-31" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1487" y="740" as="sourcePoint" />
|
||||
<mxPoint x="1390" y="740.6399999999999" as="targetPoint" />
|
||||
<mxPoint x="1220" y="467.5" as="sourcePoint" />
|
||||
<mxPoint x="1140" y="417.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-56" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=10;" value="<div><span><b><font style="font-size: 12px;">20 kHz<br>DMA Operation</font></b></span></div>" vertex="1">
|
||||
<mxGeometry height="40" width="130" x="1114" y="440" as="geometry" />
|
||||
<mxGeometry height="40" width="130" x="1122.51" y="362.5" 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="">
|
||||
<mxCell id="Uk31TYlx7ywhMvou_2Fj-61" edge="1" parent="1" source="7i-UjXDKGL79YsJQG97L-20" 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="7i-UjXDKGL79YsJQG97L-31" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1610" y="640" as="sourcePoint" />
|
||||
<mxPoint x="1530" y="490" as="targetPoint" />
|
||||
<mxPoint x="1220" y="417.5" as="sourcePoint" />
|
||||
<mxPoint x="1140" y="417.5" 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="<span style="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;">32 Bit</span>" vertex="1">
|
||||
<mxGeometry height="20" width="30" x="990" y="175" as="geometry" />
|
||||
<mxCell id="9jqM_zlcDrX7iHHAm0HB-1" parent="1" style="text;whiteSpace=wrap;html=1;" value="<b style="background-color: transparent; color: rgb(0, 0, 0); font-size: 14px; text-align: center;">ARM WRITE Operation</b>" vertex="1">
|
||||
<mxGeometry height="40" width="155" x="1116.8799999999999" y="300" 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="<span style="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;">32 Bit</span>" vertex="1">
|
||||
<mxGeometry height="20" width="30" x="1050" y="470" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="9jqM_zlcDrX7iHHAm0HB-1" parent="1" style="text;whiteSpace=wrap;html=1;" value="<b style="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;">DMA Output Operation</b>" 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="<span style="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;">First 16 Bit:Corrupted Signal</span><div><span style="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;"><div style=""><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Second 16 Bit: Reference Noise Signal</span></div></span></div>" vertex="1">
|
||||
<mxCell id="tJJhXIVE2DswCfvtTWS9-1" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=left;" value="<span style="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;">First 16 Bit:&nbsp; &nbsp; &nbsp; &nbsp;Corrupted Signal</span><div><span style="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;"><div style=""><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Second 16 Bit:&nbsp; Reference Noise Signal</span></div></span></div>" 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="<span style="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;">Corrupted Signal</span>" vertex="1">
|
||||
<mxGeometry height="20" width="80" x="1261" y="347" as="geometry" />
|
||||
<mxCell id="tJJhXIVE2DswCfvtTWS9-3" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="<div style="text-align: center;">not used</div>" vertex="1">
|
||||
<mxGeometry height="20" width="49.5" x="1250" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="tJJhXIVE2DswCfvtTWS9-3" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="<span style="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;">Reference Noise Signal</span>" 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="<span style="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;">Not used</span>" 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="<span style="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;">Not used</span>" 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="<span style="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;">16 Bit</span>" 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="<span style="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;">16 Bit</span>" 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="<span style="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;">16 Bit</span>" 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="<span style="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;">16 Bit</span>" 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="<span style="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;">32 Bit</span>" 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="<span style="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;">Not used</span>" 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="<span style="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;">Not used</span>" 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="<span style="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;">Filter Output</span>" 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="">
|
||||
<mxCell id="tJJhXIVE2DswCfvtTWS9-15" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="7i-UjXDKGL79YsJQG97L-22" 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" />
|
||||
<mxPoint x="1570" y="418.5" as="sourcePoint" />
|
||||
<mxPoint x="1390" y="418.25" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="tJJhXIVE2DswCfvtTWS9-16" parent="1" style="text;whiteSpace=wrap;html=1;align=center;fontSize=12;" value="<font style="font-size: 14px;">Raise Interrupt<br>on ARM Core</font>" vertex="1">
|
||||
<mxGeometry height="40" width="110" x="1450" y="600" as="geometry" />
|
||||
<mxGeometry height="40" width="110" x="1460" y="414.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="tJJhXIVE2DswCfvtTWS9-17" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="<span style="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;">Filter Output</span>" vertex="1">
|
||||
<mxGeometry height="20" width="65" x="1268.5" y="670" as="geometry" />
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1310" y="172.5" 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="<div style=""><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Filter Output</span></div><span style="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;"><div style=""><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">shifted to 32 Bit</span></div></span>" vertex="1">
|
||||
<mxGeometry height="35" width="90" x="980" y="520" as="geometry" />
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-5" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1230" y="222.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-6" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1310" y="222.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-7" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">16 Bit</span><div><span style="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;">0x800004</span></div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1240" y="170" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-8" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">16 Bit</span><div><span style="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;">0x800006</span></div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1320" y="170" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-9" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">16 Bit</span><div><span style="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;">0x800000</span></div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1240" y="220" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-10" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">16 Bit</span><div><span style="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;">0x800002</span></div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1320" y="220" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-17" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">32 Bit</span><div>RX Register</div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1035" y="167.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-18" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="Corrupted Signal" vertex="1">
|
||||
<mxGeometry height="40" width="55" x="1248" y="250" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-19" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 10px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; 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; float: none; display: inline !important;">Reference Noise <br>Signal</span>" vertex="1">
|
||||
<mxGeometry height="40" width="80" x="1310" y="248" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-20" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1230" y="403" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-22" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1310" y="403" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-23" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1230" y="453" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-24" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1310" y="453" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-25" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">16 Bit</span><div><span style="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;">0x80008F</span></div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1240" y="400.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-26" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">16 Bit</span><div><span style="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;">0x8000AF</span></div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1320" y="400.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-27" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">16 Bit</span><div><span style="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;">0x80004F</span></div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1240" y="450.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-28" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">16 Bit</span><div><span style="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;">0x80006F</span></div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1320" y="450.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-29" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="Filter Output" vertex="1">
|
||||
<mxGeometry height="24" width="63" x="1240" y="480.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-31" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" value="" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="980" y="403" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-32" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="<span style="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;">32 Bit</span><div>TX Register</div>" vertex="1">
|
||||
<mxGeometry height="35" width="60" x="1035" y="400.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-33" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="<div style="text-align: center;">not used</div>" vertex="1">
|
||||
<mxGeometry height="20" width="49.5" x="1325.25" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-34" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="<div style="text-align: center;">not used</div>" vertex="1">
|
||||
<mxGeometry height="20" width="49.5" x="1325.25" y="480.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-36" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;" value="<div style="text-align: center;">not used</div>" vertex="1">
|
||||
<mxGeometry height="20" width="49.5" x="1325.25" y="430.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7i-UjXDKGL79YsJQG97L-37" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontStyle=0;fontSize=10;align=center;" value="Filter Output" vertex="1">
|
||||
<mxGeometry height="24" width="63" x="1243.25" y="430.5" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
|
||||
@@ -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.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.1">
|
||||
<diagram name="Page-1" id="biPyHR2u_nhwJtU07GTZ">
|
||||
<mxGraphModel dx="338" dy="619" 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="-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">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
@@ -45,14 +45,18 @@
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-3" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-41" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1410" y="170" />
|
||||
<mxPoint x="1410" y="250" />
|
||||
</Array>
|
||||
<mxPoint x="1270" y="250" as="sourcePoint" />
|
||||
<mxPoint x="1450" y="170" as="targetPoint" />
|
||||
<mxPoint x="1430" y="250" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-4" edge="1" parent="1" source="yYsWn2o99izGpPgvcdo1-2" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="yYsWn2o99izGpPgvcdo1-33" value="">
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-4" edge="1" parent="1" source="yYsWn2o99izGpPgvcdo1-2" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1270" y="250" as="sourcePoint" />
|
||||
<mxPoint x="1140" y="230" as="targetPoint" />
|
||||
<mxPoint x="1170" y="230" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-5" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="<span style="font-size: 14px;"><b>Set Action Flag<br></b>action_required = 0<br></span>" vertex="1">
|
||||
@@ -127,7 +131,7 @@
|
||||
<mxPoint x="1280" y="470" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-24" connectable="0" parent="yYsWn2o99izGpPgvcdo1-23" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<font style="font-size: 13px;">Increase Output Pointer</font><div><font style="font-size: 13px;">by 2 Byte</font></div>" vertex="1">
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-24" connectable="0" parent="yYsWn2o99izGpPgvcdo1-23" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<font style="font-size: 13px;">Increase Output Pointer</font><div><font style="font-size: 13px;">by 32 Bit</font></div>" vertex="1">
|
||||
<mxGeometry relative="1" x="0.1619" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
@@ -135,17 +139,11 @@
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-27" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="<font style="font-size: 14px;"><b>Move Result to Output Buffer</b></font>" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="1200" y="790" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-29" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="16 Bit" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="1465" y="195" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-30" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="16 Bit&nbsp;" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="1465" y="235" as="geometry" />
|
||||
<mxGeometry height="30" width="80" x="1465" y="235" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-33" parent="1" style="whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" value="" vertex="1">
|
||||
<mxGeometry height="80" width="190" x="960" y="190" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-34" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="16 Bit" vertex="1">
|
||||
<mxGeometry height="30" width="160" x="975" y="230" as="geometry" />
|
||||
<mxGeometry height="80" width="190" x="960" y="175" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-36" edge="1" parent="1" source="yYsWn2o99izGpPgvcdo1-27" style="endArrow=classic;html=1;rounded=0;entryX=0.085;entryY=1.017;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="yYsWn2o99izGpPgvcdo1-33" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
@@ -198,14 +196,14 @@
|
||||
<mxPoint x="1020" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-46" edge="1" parent="1" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" target="yYsWn2o99izGpPgvcdo1-29" value="">
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-46" edge="1" parent="1" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1660" y="245" />
|
||||
<mxPoint x="1660" y="215" />
|
||||
</Array>
|
||||
<mxPoint x="1625" y="245" as="sourcePoint" />
|
||||
<mxPoint x="1675" y="195" as="targetPoint" />
|
||||
<mxPoint x="1625" y="210" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-47" edge="1" parent="1" source="yYsWn2o99izGpPgvcdo1-44" 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;" target="H6R4VGwbr_i7cj5zOMue-25" value="">
|
||||
@@ -224,11 +222,44 @@
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-48" parent="1" style="text;whiteSpace=wrap;html=1;" value="<b style="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;">Sample Buffer</b>" vertex="1">
|
||||
<mxGeometry height="40" width="100" x="1010" y="190" as="geometry" />
|
||||
<mxGeometry height="40" width="100" x="1010" y="175" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-49" parent="1" style="text;whiteSpace=wrap;html=1;" value="<b style="forced-color-adjust: none; color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); 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; font-size: 14px; text-align: center;">Output Buffer</b>" vertex="1">
|
||||
<mxGeometry height="40" width="105" x="1495" y="160" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-51" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" target="yYsWn2o99izGpPgvcdo1-30" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1430" y="250" as="sourcePoint" />
|
||||
<mxPoint x="1530" y="370" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-52" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1430" y="210" as="sourcePoint" />
|
||||
<mxPoint x="1465" y="210" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="yYsWn2o99izGpPgvcdo1-53" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1170" y="230" as="sourcePoint" />
|
||||
<mxPoint x="1135" y="230" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="IEH7jIHVpd4rr3pPkoJF-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="16 Bit&nbsp;" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1545" y="235" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IEH7jIHVpd4rr3pPkoJF-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="16 Bit&nbsp;" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1465" y="195" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IEH7jIHVpd4rr3pPkoJF-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="16 Bit&nbsp;" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1545" y="195" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IEH7jIHVpd4rr3pPkoJF-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="16 Bit&nbsp;" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="975" y="215" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IEH7jIHVpd4rr3pPkoJF-5" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="16 Bit&nbsp;" vertex="1">
|
||||
<mxGeometry height="30" width="80" x="1055" y="215" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
<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/144.0.0.0 Safari/537.36" version="29.3.1">
|
||||
<diagram name="Page-1" id="biPyHR2u_nhwJtU07GTZ">
|
||||
<mxGraphModel dx="1426" 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="1188" dy="619" 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="IjZ5u4x7_LR3Ume5GlYs-10" parent="1" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=default;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="" vertex="1">
|
||||
<mxGeometry height="240" width="410" x="1000" y="100" as="geometry" />
|
||||
<mxGeometry height="50" width="360" x="1040" y="65" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-9" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" value="" vertex="1">
|
||||
<mxGeometry height="190" width="160" x="1040" y="130" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-39" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
|
||||
<mxGeometry height="190" width="160" x="1220" y="130" as="geometry" />
|
||||
<mxGeometry height="190" width="160" x="1240" y="130" as="geometry" />
|
||||
</mxCell>
|
||||
<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="IjZ5u4x7_LR3Ume5GlYs-1" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-24" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.994;exitY=0.376;exitDx=0;exitDy=0;exitPerimeter=0;" target="H6R4VGwbr_i7cj5zOMue-41" value="">
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-1" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-24" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.997;exitY=0.374;exitDx=0;exitDy=0;exitPerimeter=0;" target="H6R4VGwbr_i7cj5zOMue-41" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="920" y="190" as="sourcePoint" />
|
||||
<mxPoint x="1060" y="170" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-3" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" value="<span style="font-size: 14px;"><b>DSP Core</b></span>" vertex="1">
|
||||
<mxGeometry height="240" width="120" x="1460" y="100" as="geometry" />
|
||||
<mxGeometry height="240" width="120" x="1480" y="100" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="H6R4VGwbr_i7cj5zOMue-41" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="<font style="font-size: 14px;">Input Register</font>" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="1060" y="160" as="geometry" />
|
||||
@@ -31,7 +31,7 @@
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-7" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="<font style="font-size: 14px;">Output Register</font>" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="1060" y="230" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-8" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-7" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.987;entryY=0.666;entryDx=0;entryDy=0;entryPerimeter=0;" target="IjZ5u4x7_LR3Ume5GlYs-24" value="">
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-8" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-7" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1.004;entryY=0.668;entryDx=0;entryDy=0;entryPerimeter=0;" target="IjZ5u4x7_LR3Ume5GlYs-24" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1030" y="340" as="sourcePoint" />
|
||||
<mxPoint x="920" y="260" as="targetPoint" />
|
||||
@@ -41,16 +41,16 @@
|
||||
<mxGeometry height="40" width="130" x="1070" y="130" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-12" parent="1" style="text;whiteSpace=wrap;html=1;" value="<b style="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;">ARM Core</b>" vertex="1">
|
||||
<mxGeometry height="40" width="130" x="1170" y="100" as="geometry" />
|
||||
<mxGeometry height="25" width="70" x="1185" y="77.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-13" parent="1" style="text;whiteSpace=wrap;html=1;" value="<div style="text-align: center;"><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 14px;"><b>Shared Memory</b></span></div>" vertex="1">
|
||||
<mxGeometry height="30" width="120" x="1245" y="130" as="geometry" />
|
||||
<mxGeometry height="30" width="120" x="1260" y="130" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-14" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="<font style="font-size: 14px;">Input Buffer</font>" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="1240" y="160" as="geometry" />
|
||||
<mxGeometry height="60" width="120" x="1260" y="160" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-16" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="<font style="font-size: 14px;">Output Buffer</font>" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="1240" y="230" as="geometry" />
|
||||
<mxGeometry height="60" width="120" x="1260" y="230" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-17" edge="1" parent="1" source="H6R4VGwbr_i7cj5zOMue-41" 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="IjZ5u4x7_LR3Ume5GlYs-14" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
@@ -77,13 +77,25 @@
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-21" parent="1" style="text;whiteSpace=wrap;html=1;" value="<span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; 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;">Input Data</span>" vertex="1">
|
||||
<mxGeometry height="40" width="110" x="920" y="160" as="geometry" />
|
||||
<mxGeometry height="40" width="110" x="950" y="160" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-23" parent="1" style="text;whiteSpace=wrap;html=1;" value="<span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; 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;">Output Data</span>" vertex="1">
|
||||
<mxGeometry height="40" width="110" x="920" y="230" as="geometry" />
|
||||
<mxGeometry height="40" width="110" x="950" y="230" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="IjZ5u4x7_LR3Ume5GlYs-24" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" value="<span style="font-size: 14px;"><b>CI System</b></span>" vertex="1">
|
||||
<mxGeometry height="240" width="120" x="790" y="100" as="geometry" />
|
||||
<mxGeometry height="240" width="120" x="820" y="100" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7_mR2JsB_NV06wDIgMaP-1" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-13" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.777;entryY=1.009;entryDx=0;entryDy=0;entryPerimeter=0;" target="IjZ5u4x7_LR3Ume5GlYs-10" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1270" y="140" as="sourcePoint" />
|
||||
<mxPoint x="1320" y="90" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7_mR2JsB_NV06wDIgMaP-2" edge="1" parent="1" source="IjZ5u4x7_LR3Ume5GlYs-10" style="endArrow=none;html=1;rounded=0;exitX=0.223;exitY=1.007;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.387;entryY=0.008;entryDx=0;entryDy=0;entryPerimeter=0;" target="IjZ5u4x7_LR3Ume5GlYs-11" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="1170" y="120" as="sourcePoint" />
|
||||
<mxPoint x="1220" y="70" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
|
||||