From c761e6964f39ddd5f37063ea288fc04e5e361d61 Mon Sep 17 00:00:00 2001 From: Matthias Biermann Date: Sat, 15 Feb 2025 13:35:57 +0100 Subject: [PATCH] Bericht: Konzept und Umsetzung --- .../axi_crc_dma_syn_default_view.png | Bin 53050 -> 50070 bytes Projektbericht/content.tex | 89 ++++++++++++++++-- 2 files changed, 81 insertions(+), 8 deletions(-) diff --git a/Projektbericht/Bilder/Blockschaltbilder/axi_crc_dma_syn_default_view.png b/Projektbericht/Bilder/Blockschaltbilder/axi_crc_dma_syn_default_view.png index 570ca25ca8c9908a4e26ea82a497de1ee041b170..6a94cd0b22b82f754261648406555212bc98881a 100644 GIT binary patch literal 50070 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 z%0D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

G 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 BE>{2m diff --git a/Projektbericht/content.tex b/Projektbericht/content.tex index 8ec0748..49c7fef 100644 --- a/Projektbericht/content.tex +++ b/Projektbericht/content.tex @@ -8,7 +8,7 @@ Der Speicherzugriff erfolgt über eine AXI-Master-Schnittstelle. Nach Implementierung der Hardware erfolgt die Erstellung von Software, welche die Konfiguration und Steuerung des IP-Cores übernimmt. Der Softwarepart dieser Arbeit besteht aus zwei Programmen. -Beim ersten handelt es sich um ein C-Programm, welches "bare metal" auf dem Mikroprozessor des hier verwendeten Entwicklungsboards \cite{ZyboBoard} ausgeführt wird. +Beim ersten handelt es sich um ein C-Programm, welches ohne Betriebssystem auf dem Mikroprozessor des hier verwendeten Entwicklungsboards \cite{ZyboBoard} ausgeführt wird. Das zweite Programm wird im Kontext eines Linux Betriebssystems ausgeführt und beinhaltet die Implementierung eines ausführlichen Testprogramms, welches die Funktionalität des IP-Cores überprüft. \subsection{Anforderungen} @@ -27,7 +27,7 @@ Die Anforderungen an das Projekt und an das zu erstellende IP umfassen folgende \item Möglichst hoher \textbf{Datendurchsatz} bei einer Frequenz von \qty{100}{\MHz} \end{itemize} -\subsection{CRC- Theoretische Grundlagen} +\subsection{CRC - Theoretische Grundlagen} Der Cyclic Redundancy Check (CRC) ist ein Verfahren zur Fehlererkennung, welches in der Regel in digitalen Kommunikationssystemen eingesetzt wird. @@ -52,7 +52,7 @@ Alle im Folgenden dargestellten Blockschaltbilder und VHDL-Quelldateien befinden In Abbildung~\ref{fig:CRC_DMA_IP_Entity} ist die Entity des IPs \texttt{axi\_crc\_dma\_ip} dargestellt. -Die AXI Master Schnittstelle \emph{M\_AXI} dient zum Lesen und Schreiben der Daten aus dem Speicher. +Die AXI-Master Schnittstelle \emph{M\_AXI} dient zum Lesen und Schreiben der Daten aus dem Speicher. Über die \emph{S\_AXIL} Schnittstelle kann das IP gesteuert und konfiguriert werden. In Tabelle~\ref{tab:crc_dma_registers} sind die dafür zur Verfügung stehenden Register aufgelistet. @@ -123,11 +123,12 @@ Die Register \texttt{Read Address} und \texttt{Write Address} dienen zur Konfigu Die Register \texttt{Packet Size} und \texttt{Number Packets} dienen zur Konfiguration der Paketgröße und der Anzahl der zu verarbeitenden Pakete. Das IP arbeitet wort-weise. Es können keine einzelnen Bytes adressiert werden. -Das heißt, das die konfigurierten Adressen word-aligned sein müssen und die Paketgröße und -anzahl in Worten angegeben werden müssen. +Das heißt, dass die konfigurierten Adressen word-aligned sein müssen und die Paketgröße und -anzahl in Worten angegeben werden müssen. Die Register \texttt{Polynomial}, \texttt{Initial Value}, \texttt{Final XOR} und \texttt{InOutReflected} dienen zur Konfiguration der CRC-Berechnung. +Während eine CRC-Berechnung aktiv ist, dürfen diese Register nicht geändert werden, da es sich direkt auf die CRC-Berechnung auswirkt. -Mit dem Register \texttt{AxCache} können die Werte für die \emph{ARCache} und \emph{AWCache} Signale der AXI Master Schnittstelle konfiguriert werden. +Mit dem Register \texttt{AxCache} können die Werte für die \emph{ARCache} und \emph{AWCache} Signale der AXI-Master Schnittstelle konfiguriert werden. Das Verändern dieses Registers ist nicht notwendig, da der Standartwert bereits eine korrekte Funktionalität des IPs gewährleistet. Es kann im Folgenden vernachlässigt werden. @@ -141,6 +142,7 @@ Es kann im Folgenden vernachlässigt werden. \end{figure} In Abbildung~\ref{fig:CRC_DMA_IP_ArchitectureInterfaces} ist der grundlegende Aufbau des IPs \texttt{axi\_crc\_dma\_ip} dargestellt. +Es ist als Block-Design in Vivado unter der Bezeichnung \emph{axi\_crc\_dma\_ip} zu finden. Das IP besteht aus insgesamt vier Komponenten, die untereinander über AXI-Stream Schnittstellen kommunizieren und Daten weitergeben. In den folgenden Abschnitten werden die einzelnen Komponenten genauer beschrieben. @@ -149,7 +151,7 @@ In den folgenden Abschnitten werden die einzelnen Komponenten genauer beschriebe \begin{figure}[H] \centering \includegraphics[width=0.5\textwidth]{Blockschaltbilder/axis_dma_entity.png} - \caption{Entity des der Komponente \texttt{axis\_dma}} + \caption{Entity der Komponente \texttt{axis\_dma}} \label{fig:AxisDMA_entity} \end{figure} @@ -166,8 +168,45 @@ Die FIFO-Speicher haben eine Tiefe von 256 Worten, um ausreichend Daten puffern Die Eingänge \emph{S\_AXIS\_NUM\_AVIL} und \emph{M\_AXIS\_NUM\_FREE} dienen zur Überwachung der Füllstände der FIFO-Speicher. Abhängig davon, ob genug Daten zum Schreiben oder genug freier Speicher zu Verfügung steht, werden die \emph{M\_AXI} Zugriffe gestartet. +Beim Ausgeben des Datenstroms über die \emph{M\_AXIS} Schnittstelle markiert das \emph{M\_AXIS\_TLAST} Signal das letzte Datenwort eines Pakets. + Die Komponente ist bei Schreib- und Lesebursts in der Lage, 4kB-Adressgrenzen zu erkennen und passt entsprechend die Burstlängen und die Adressen des nächsten Zugriffs an. +Die Schreib- und Leseburst sind in zwei separaten Prozessen bzw. endlichen Automaten aufgeteilt, die weitgehend unabhängig voneinander arbeiten. +Daher kann die Komponente parallel Daten lesen und schreiben. + +Des Weiteren hält diese Komponente alle AXIL-Register des IPs, wofür sie eine \emph{S\_AXIL} Schnittstelle besitzt. +Die Register, welche zur Konfiguration der CRC-Berechnung dienen, sind als Ausgänge nach Außen geführt. + +\subsubsection{CRC-Berechnungskomponente - axis\_crc} + +\begin{figure}[H] + \centering + \includegraphics[width=0.5\textwidth]{Blockschaltbilder/axis_crc_entity.png} + \caption{Entity der Komponente \texttt{axis\_crc}} + \label{fig:AxisCRC_entity} +\end{figure} + +In Abbildung ist die Entity der Komponente \texttt{axis\_crc} dargestellt. +Die Eingänge \emph{initialValue}, \emph{polynomial}, \emph{finalXOR} und \emph{inOutReflected} dienen zur Konfiguration der CRC-Berechnung. +Sie fließen in die Kombinatoriken der CRC-Berechnung ein. + +Die Berechnung der CRC-Prüfsumme erfolgt wort-weise. +Der Datenstrom von 32-Bit Worten wird über die \emph{S\_AXIS} Schnittstelle eingelesen und wieder über die \emph{M\_AXIS} Schnittstelle ausgegeben. +Dabei kann maximal alle 3 Takte ein Wort eingelesen werden, welches in die Berechnung der CRC-Prüfsumme einfließt. +Das Ende eines Datenpaketes wird durch das \emph{S\_AXIS\_TLAST} Signal markiert. +Wenn die Komponente dieses Signal erhält, beendet sie die CRC-Berechnung und gibt das berechnete CRC-Wort über die \emph{M\_AXIS} Schnittstelle aus. +Die CRC-Prüfsumme wird dadurch an den Datenstrom des ursprünglichen Datenpakets angehängt. +Das \emph{LAST}-Signal wird nicht mehr beim letzten Wort des Datenpakets, sondern bei der CRC-Prüfsumme gesetzt. + +Nachdem die CRC-Prüfsumme ausgegeben wurde, wird intern das CRC-Register wieder mit dem Initialwert initialisiert. +Die Komponente ist dann wieder bereit, eine neue CRC-Prüfsumme zu berechnen. + +Intern efolgt die Berechnung der CRC-Prüfsumme mithilfe eines endlichen Automaten. +Um keine Timingprobleme zu verursachen, wurde so die Berechnung der CRC-Prüfsumme auf drei Takte aufgeteilt. + +\subsection{AXI-CRC-DMA-IP} + \begin{figure}[H] \centering \includegraphics[width=1.0\textwidth]{Blockschaltbilder/axi_crc_dma_ip_default_view.png} @@ -175,12 +214,37 @@ Die Komponente ist bei Schreib- und Lesebursts in der Lage, 4kB-Adressgrenzen zu \label{fig:CRC_DMA_IP_Architecture} \end{figure} -\subsubsection{CRC-Berechnung} +In Abbildung~\ref{fig:CRC_DMA_IP_Architecture} ist die Gesamtarchitektur des IPs \texttt{axi\_crc\_dma\_ip} im Detail dargestellt. +Da die Bestandteile des IPs in den vorherigen Abschnitten beschrieben wurden, erfolgt hier noch eine kurze Erläuterung der Gesamtarchitektur des CRC-DMA-IPs. + +Die Komponente \texttt{axis\_dma} ist für das Lesen und Schreiben der Daten aus dem Speicher zuständig. +Sie liest so viele Daten, wie zuvor über die AXIL-Register \texttt{Packet Size} und \texttt{Number Packets} konfiguriert wurde. +Die Daten, die aus dem Speicher gelesen werden, werden als AXI-Stream-Datenstrom an das erste FIFO weitergegeben. +Dieses puffert den Datenstrom und gibt ihn an die CRC-Berechnungskomponente \texttt{axis\_crc} weiter, wo aus dem Datenstrom eine bzw. mehrere CRC-Prüfsummen berechnet werden. +Die CRC-Prüfsumme wird an den Datenstrom angehängt und über das zweite FIFO an die DMA-Komponente \emph{axis\_dma} zurückgegeben, um sie zurück in den Speicher zu schreiben. + +Sobald alle Datenpakete verarbeitet und wieder in den Speicher geschrieben wurden, wird ein Interrupt ausgelöst, um die CPU zu informieren, dass die CRC-Berechnung abgeschlossen ist. +\subsection{Einbindung in das Gesamtsystem} \label{sec:Einbindung} -\subsection{Einbindung in ein Gesamtsystem} \label{sec:Einbindung} +\begin{figure}[H] + \centering + \includegraphics[width=1.0\textwidth]{Blockschaltbilder/axi_crc_dma_syn_default_view.png} + \caption{Block-Design des Gesamtsystems: \emph{axi\_crc\_dma\_syn\_1}} + \label{fig:GesamtsystemDefaultView} +\end{figure} +Um das CRC-DMA-IP in ein Gesamtsystem einzubinden, müssen die AXI-Lite und Full-AXI Schnittstellen mit dem Processing System (PS) des Zynq-SoC verbunden werden. +Im hier erstellten Gesamtsystem wurde die Full-AXI-Master Schnittstelle mit der ACP-Schnittstelle verbunden. +Da Speicherzugriffe auf das SDRAM mit der ACP-Schnittstelle über den Cache erfolgen, sind die Daten so stets mit der CPU snychronisiert. + +Die GP-Master-AXI Schnittstelle ist mit der AXIL-Slave Schnittstelle des IPs verbunden. +Damit ist die CPU in der Lage, die Konfigurationsregister des IPs zu schreiben und das IP zu starten. + +Die Interuptleitung des IPs ist mit dem Interrupt-Controller des Zynq-SoC verbunden. + +Dieses Gesamtsystem kann nun synthetisiert und implementiert werden. \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -194,6 +258,15 @@ Die Komponente ist bei Schreib- und Lesebursts in der Lage, 4kB-Adressgrenzen zu \section{Testkonzept und Ergebnisse} +Das komplette Testkonzept dieser Arbeit kann in drei Teile unterteilt werden. + +\subsection{Verifikation der CRC-Berechungskomponente} + +Essentiell + +\subsection{Verifikation des CRC-DMA-IPs} + +\subsection{Verifikation des Gesamtsystems} \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%