From 2def49254ba52a21cb45038a9ebd2f0733779ddb Mon Sep 17 00:00:00 2001 From: Patrick Hangl Date: Thu, 18 Dec 2025 15:07:42 +0100 Subject: [PATCH] 4.0 --- Bilder/fig_dsp_interrupt.jpg | Bin 0 -> 60196 bytes Bilder/fig_dsp_setup.jpg | Bin 0 -> 30412 bytes acronyms.aux | 4 + acronyms.tex | 4 + chapter_04.aux | 52 +++++-- chapter_04.tex | 31 +++-- drawio/fig_dsp_interrupt.drawio | 237 ++++++++++++++++++++++++++++++++ drawio/fig_dsp_setup.drawio | 91 ++++++++++++ 8 files changed, 401 insertions(+), 18 deletions(-) create mode 100644 Bilder/fig_dsp_interrupt.jpg create mode 100644 Bilder/fig_dsp_setup.jpg create mode 100644 drawio/fig_dsp_interrupt.drawio create mode 100644 drawio/fig_dsp_setup.drawio diff --git a/Bilder/fig_dsp_interrupt.jpg b/Bilder/fig_dsp_interrupt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8ff7b6b50bacb902fd5f1cdf715a7084a6e8e2b GIT binary patch literal 60196 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 literal 0 HcmV?d00001 diff --git a/acronyms.aux b/acronyms.aux index 237a34c..273b186 100644 --- a/acronyms.aux +++ b/acronyms.aux @@ -12,6 +12,10 @@ \newacro{NLMS}[\AC@hyperlink{NLMS}{NLMS}]{Normalized Least Mean Squares} \newacro{RLS}[\AC@hyperlink{RLS}{RLS}]{Recursive Least Squares} \newacro{MAC}[\AC@hyperlink{MAC}{MAC}]{multiply-accumulate} +\newacro{DMA}[\AC@hyperlink{DMA}{DMA}]{Direct Memory Access} +\newacro{PCM}[\AC@hyperlink{PCM}{PCM}]{Pulse Code Modulation} +\newacro{ARM}[\AC@hyperlink{ARM}{ARM}]{Advanced RISC Machine} +\newacro{RISC}[\AC@hyperlink{RISC}{RISC}]{Reduced Instruction Set Computer} \@setckpt{acronyms}{ \setcounter{page}{5} \setcounter{equation}{0} diff --git a/acronyms.tex b/acronyms.tex index ecc236b..f8748f8 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -13,4 +13,8 @@ \acro{NLMS}{Normalized Least Mean Squares} \acro{RLS}{Recursive Least Squares} \acro{MAC}{multiply-accumulate} + \acro{DMA}{Direct Memory Access} + \acro{PCM}{Pulse Code Modulation} + \acro{ARM}{Advanced RISC Machine} + \acro{RISC}{Reduced Instruction Set Computer} \end{acronym} \ No newline at end of file diff --git a/chapter_04.aux b/chapter_04.aux index b5eea11..1f278ff 100644 --- a/chapter_04.aux +++ b/chapter_04.aux @@ -1,27 +1,59 @@ \relax -\@writefile{toc}{\contentsline {section}{\numberline {4}Hardware setup and low level simulations}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}DSP implementation and optimization of the ANR algorithm}{40}{}\protected@file@percent } \acronymused{ANR} \acronymused{ANR} \acronymused{DSP} \acronymused{ANR} \acronymused{ANR} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Description of the low-power DSP}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Description of the low-power DSP and it´s environment}{40}{}\protected@file@percent } +\AC@undonewlabel{acro:ARM} +\newlabel{acro:ARM}{{4.1}{40}{}{}{}} +\acronymused{ARM} \acronymused{DSP} +\acronymused{ARM} +\acronymused{DSP} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}Hardware overview}{40}{}\protected@file@percent } +\acronymused{ARM} +\acronymused{ARM} +\acronymused{DSP} +\acronymused{DSP} +\acronymused{ANR} \AC@undonewlabel{acro:ALU} -\newlabel{acro:ALU}{{4.1}{40}{}{}{}} +\newlabel{acro:ALU}{{4.1.1}{40}{}{}{}} \acronymused{ALU} \acronymused{DSP} \acronymused{ALU} \AC@undonewlabel{acro:MAC} -\newlabel{acro:MAC}{{4.1}{40}{}{}{}} +\newlabel{acro:MAC}{{4.1.1}{41}{}{}{}} \acronymused{MAC} \acronymused{DSP} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Communication between the ARM core and the DSP}{41}{}\protected@file@percent } +\acronymused{ARM} \acronymused{DSP} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Implementation of the ANR algorithm on the DSP}{41}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}First optimization approach: algorithm implementation}{41}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Second optimization approach: hybrid ANR algorithm}{41}{}\protected@file@percent } +\acronymused{ARM} +\acronymused{DSP} +\acronymused{DSP} +\acronymused{ARM} +\@writefile{lof}{\contentsline {figure}{\numberline {32}{\ignorespaces Simplified visualization of the communication between the \ac {ARM} core and the \ac {DSP} core}}{41}{}\protected@file@percent } +\acronymused{ARM} +\acronymused{DSP} +\newlabel{fig:fig_dsp_setup.jpg}{{32}{41}{}{}{}} +\acronymused{ARM} +\acronymused{DSP} +\acronymused{DSP} +\acronymused{ANR} +\acronymused{ARM} +\acronymused{DSP} +\@writefile{lof}{\contentsline {figure}{\numberline {33}{\ignorespaces Simpliefied flowchart of the sample processing between the \ac {ARM} core and the \ac {DSP} core via interrupts and shared memory. For simplification, the registers of the \ac {DSP} core are not visualized.}}{42}{}\protected@file@percent } +\acronymused{ARM} +\acronymused{DSP} +\acronymused{DSP} +\newlabel{fig:fig_dsp_interrupt.jpg}{{33}{42}{}{}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Implementation of the ANR algorithm on the DSP}{42}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}First optimization approach: algorithm implementation}{42}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Second optimization approach: hybrid ANR algorithm}{42}{}\protected@file@percent } \@setckpt{chapter_04}{ -\setcounter{page}{42} +\setcounter{page}{43} \setcounter{equation}{21} \setcounter{enumi}{0} \setcounter{enumii}{0} @@ -35,7 +67,7 @@ \setcounter{subsubsection}{0} \setcounter{paragraph}{0} \setcounter{subparagraph}{0} -\setcounter{figure}{31} +\setcounter{figure}{33} \setcounter{table}{0} \setcounter{float@type}{16} \setcounter{tabx@nest}{0} @@ -156,7 +188,7 @@ \setcounter{lstnumber}{21} \setcounter{FancyVerbLine}{0} \setcounter{linenumber}{1} -\setcounter{LN@truepage}{41} +\setcounter{LN@truepage}{42} \setcounter{FancyVerbWriteLine}{0} \setcounter{FancyVerbBufferLine}{0} \setcounter{FV@TrueTabGroupLevel}{0} diff --git a/chapter_04.tex b/chapter_04.tex index 6ad7415..4ae24b6 100644 --- a/chapter_04.tex +++ b/chapter_04.tex @@ -1,15 +1,30 @@ -\section{Hardware setup and low level simulations} -This section aims to be the main part of this thesis. The first subchapters describes the hardware, on which the \ac{ANR} algorithm is implemented. The following subchapter describes the basic implementation of the \ac{ANR} algorithm on the hardware itself and shall provide the reader with a basic understanding of its efficiency, which shall serve as a baseline for the following optimiziations.\\ +\section{DSP implementation and optimization of the ANR algorithm} +This section aims to be the main part of this thesis. The first subchapter describes the hardware, on which the \ac{ANR} algorithm is implemented, including it´s envornment, which serves as a link to the CI system itself. The following subchapter continues with the basic implementation of the \ac{ANR} algorithm on the hardware itself and shall provide the reader with a basic understanding of its efficiency, which shall serve as a baseline for the following optimiziations.\\ During the third chapter, this initial implementation is further optimized in order to achieve an improved real-time performance on the \ac{DSP}. The last subchapter picks the final optimizations of the \ac{ANR} algorithm itself as a central theme, especially with respect to the capabilites of a hybrid \ac{ANR} approach. -\subsection{Description of the low-power DSP} -The \ac{DSP} used for the implementation is a 32-bit fixed-point processor primarily designed for audio signal-processing applications in low-power embedded systems. It is developed using a retargetable processor design methodology and is typically programmed in C. Its highly efficient C compiler produces optimized assembly code that is comparable in performance and quality to hand-written assembly.\\ \\ +\subsection{Description of the low-power DSP and it´s environment} +This thesis considers a low-power system-on-chip architecture that integrates a general-purpose \ac{ARM} core with a dedicated \ac{DSP} core. The system combines the flexibility of an \ac{ARM}-based control processor with the computational efficiency of a specialized \ac{DSP}, splitting general computing tasks from real-time signal processing workloads. +\subsubsection{Hardware overview} +The \ac{ARM} core serves as the primary control unit of the system. It is responsible for high-level application logic, system configuration, peripheral management, and scheduling. Due to its general-purpose instruction set and extensive software ecosystem, the \ac{ARM} core is well suited for handling communication protocols, system state management, and interaction with external interfaces. Time-critical numerical processing is intentionally offloaded to the \ac{DSP} core in order to reduce computational load and power consumption on the control processor.\\ \\ +The \ac{DSP} used for the implementation is a 32-bit fixed-point processor primarily designed for audio signal-processing applications in low-power embedded systems. It is developed using a retargetable processor design methodology and is typically programmed in C. The used compiler is highly efficient and generates optimized assembler code, which is then translated in machine code to execute the \ac{ANR} algorithm on incoming samples.\\ \\ The processor is equipped with load/store architecture, meaning that, initially all operands need to be moved from the memory to the registers, before any operation can be performed. After this task is performed, the execution units (\ac{ALU} and multiplier) can perform their oeprations on the data and write back the results into the registers. Finally, the results need to be explicitly moved back to the memory.\\ \\ -The \ac{DSP} includes a three stage pipeline consisting of fetch, decode, and execute stages, aloowing for overlapping instruction execution and improved throughput. -The architecture is optimized for high cycle efficiency when executing computationally intensive signal-processing workloads. It features a dual Harvard load store architecture and two seperate \ac{ALU}s, which enables the execution of two \ac{MAC} operations, two memory operations (load/store) and two pointer updates in a single prcoessor cycle.\\ \\ +The \ac{DSP} includes a three stage pipeline consisting of fetch, decode, and execute stages, aloowing for overlapping instruction execution and improved throughput. The architecture is optimized for high cycle efficiency when executing computationally intensive signal-processing workloads. It features a dual Harvard load store architecture and two seperate \ac{ALU}s, which enables the execution of two \ac{MAC} operations, two memory operations (load/store) and two pointer updates in a single prcoessor cycle.\\ \\ The \ac{DSP} includes a set of registers, including +\subsubsection{Communication between the ARM core and the DSP} +Communication between the \ac{ARM} core and the \ac{DSP} is realized through a shared memory region accessible by both processing units. This shared memory enables the exchange of data without the need for seperate communication protocols. Synchronization between the cores is achieved using interrupt-based signaling: the \ac{ARM} core initiates processing requests by triggering an interrupt on the \ac{DSP}, while the \ac{DSP} notifies the \ac{ARM} core upon completion of a task via a dedicated signaling mechanism. This approach ensures efficient coordination while minimizing active waiting and unnecessary power consumption. +\begin{figure}[H] + \centering + \includegraphics[width=1.0\linewidth]{Bilder/fig_dsp_setup.jpg} + \caption{Simplified visualization of the communication between the \ac{ARM} core and the \ac{DSP} core} + \label{fig:fig_dsp_setup.jpg} +\end{figure} +\noindent The \ac{ARM} Core recieves the audio data from the CI system via a PCM interface, which offers one input and one output register. An interrupt trigger the integrated DMA controller, which transfers the audio data from the PCM interface to buffer in a predefined memory location. Once the buffer is filled with enough samples, another interrupt is triggered, notifying the \ac{DSP} core to start processing the audio data. The \ac{DSP} core then reads the audio samples from the shared memory, processes them using the implemented \ac{ANR} algorithm, and writes the processed samples back to an output buffer, also located in the shared memory. Finally, the \ac{ARM} core is notified via an interrupt from the \ac{DSP} core, that the processing is complete - the DMA controller then transfers the processed audio samples from the output buffer back to the PCM interface for playback.\\ \\ +\begin{figure}[H] + \centering + \includegraphics[width=0.9\linewidth]{Bilder/fig_dsp_interrupt.jpg} + \caption{Simpliefied flowchart of the sample processing between the \ac{ARM} core and the \ac{DSP} core via interrupts and shared memory. For simplification, the registers of the \ac{DSP} core are not visualized.} + \label{fig:fig_dsp_interrupt.jpg} +\end{figure} - -Advanced addressing modes — such as cyclic and bit-reversed addressing — facilitate efficient implementation of common \ac{DSP} algorithms. Additional architectural features include hardware-supported zero-overhead looping, nested loop structures, interrupt handling, power-management mechanisms, and on-chip debugging capabilities such as JTAG, breakpoints, and watchpoints. Overall, the architecture is designed to support both control-flow operations and high-throughput signal-processing tasks within low-power embedded environments. \subsection{Implementation of the ANR algorithm on the DSP} \subsection{First optimization approach: algorithm implementation} \subsection{Second optimization approach: hybrid ANR algorithm} diff --git a/drawio/fig_dsp_interrupt.drawio b/drawio/fig_dsp_interrupt.drawio new file mode 100644 index 0000000..eead72b --- /dev/null +++ b/drawio/fig_dsp_interrupt.drawio @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/drawio/fig_dsp_setup.drawio b/drawio/fig_dsp_setup.drawio new file mode 100644 index 0000000..7ded0f9 --- /dev/null +++ b/drawio/fig_dsp_setup.drawio @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +