2014-01-02 12:01:07 +00:00
|
|
|
|
%*******************************************************************************
|
|
|
|
|
% * Copyright (c) 2006-2013
|
|
|
|
|
% * Institute of Automation, Dresden University of Technology
|
|
|
|
|
% *
|
|
|
|
|
% * All rights reserved. This program and the accompanying materials
|
|
|
|
|
% * are made available under the terms of the Eclipse Public License v1.0
|
|
|
|
|
% * which accompanies this distribution, and is available at
|
|
|
|
|
% * http://www.eclipse.org/legal/epl-v10.html
|
|
|
|
|
% *
|
|
|
|
|
% * Contributors:
|
|
|
|
|
% * Institute of Automation - TU Dresden, Germany
|
|
|
|
|
% * - initial API and implementation
|
|
|
|
|
% ******************************************************************************/
|
2013-12-11 12:57:26 +00:00
|
|
|
|
|
2014-01-02 12:01:07 +00:00
|
|
|
|
\documentclass[
|
|
|
|
|
print, % print optimized version of the thesis, standard option
|
|
|
|
|
% alternative:
|
|
|
|
|
% screen, % makes the thesis better readable on screens (onesided, coloured links)
|
|
|
|
|
% use only 'print' OR 'screen'
|
|
|
|
|
% ATTENTION: 'screen' changes size of text area slightly. Always optimize document WITH
|
|
|
|
|
% 'print' option first for printing (size of graphics etc.) and convert afterwards
|
|
|
|
|
% in screen optimized version!
|
|
|
|
|
listoffigures, % includes list of figures
|
|
|
|
|
listoftables, % includes list of tables
|
|
|
|
|
listoflistings, % includes list of listings
|
|
|
|
|
abbrevations, % includes index of symbols and abbrevations
|
2014-01-13 08:08:21 +00:00
|
|
|
|
bibNumeric, % citation style (IfA standard), alternatives: bibNumeric, bibHarvard
|
2014-01-02 12:01:07 +00:00
|
|
|
|
langDE % define the language (default: langDE)
|
|
|
|
|
]{ifathesis}
|
|
|
|
|
\ifaThesis{Belegarbeit}
|
|
|
|
|
\ifaAuthor{Jörg Thalheim}
|
|
|
|
|
\ifaAuthorBirthday{03.01.1992}
|
|
|
|
|
\ifaAuthorBirthplace{Großröhrsdorf}
|
|
|
|
|
\ifaAuthorCourse{Informationssystemtechnik}
|
|
|
|
|
\ifaAuthorYearOfMatriculation{2011}
|
|
|
|
|
\ifaKeywords{Praktikum, Schaltungsentwurf, Verilog} % Keywords included in pdf-file. Could be found e.g. by Windows file search.
|
|
|
|
|
\ifaTitleDE{Schaltkreis- und Systementwurf}
|
|
|
|
|
\ifaTitleEN{}
|
2014-01-13 08:08:21 +00:00
|
|
|
|
\bibliography{bibliography}
|
2014-01-02 12:01:07 +00:00
|
|
|
|
|
|
|
|
|
\ifaSupervisorA{Jens-Uwe Schlüßler}
|
|
|
|
|
\ifaProfessor{Prof. Dr.-Ing. habil. René Schüffny}
|
|
|
|
|
\ifaDayOfSubmission{\today}
|
|
|
|
|
\ifaTopicDescriptionPDF{parts/00_Aufgabenstellung.pdf}
|
|
|
|
|
\ifaAppendix{example_files/appendix}
|
|
|
|
|
\ifaAbstractDE{example_files/00_abstract_de__invalid}
|
|
|
|
|
\ifaAbstractEN{example_files/00_abstract_en__invalid}
|
2013-12-11 12:57:26 +00:00
|
|
|
|
\usepackage{tabularx}
|
|
|
|
|
\usepackage{graphicx}
|
2014-01-13 08:08:21 +00:00
|
|
|
|
|
|
|
|
|
% Keine Kapitelnummerierung
|
|
|
|
|
\makeatletter
|
|
|
|
|
\renewcommand{\thesection}{
|
|
|
|
|
\ifnum\c@chapter<1 \@arabic\c@section
|
|
|
|
|
\else \thechapter.\@arabic\c@section
|
|
|
|
|
\fi
|
2013-12-11 12:57:26 +00:00
|
|
|
|
}
|
2014-01-13 08:08:21 +00:00
|
|
|
|
\makeatother
|
2013-12-11 12:57:26 +00:00
|
|
|
|
|
|
|
|
|
\begin{document}
|
|
|
|
|
|
2014-01-13 08:08:21 +00:00
|
|
|
|
\section{Einleitung}
|
|
|
|
|
Aufgabe des Praktikums \emph{Schaltkreis- und Systementwurf} ist es einen integrierten Schaltkreis (ASIC) für
|
|
|
|
|
einen numerischen Algorithmus zu entwickeln. Der Schaltkreis ist mit der
|
|
|
|
|
Enwicklungsumgebung \emph{Cadence} zu erstellen. Dabei ist den Arbeitsschritten der Aufgabenstellung
|
|
|
|
|
\cite{aufgabenstellung} zu folgen. Die Schaltung ist durch Simulation zu verifizieren.
|
|
|
|
|
Der folgende Bericht enthält die geforderte Dokumentation nach Kapitel 5.1
|
|
|
|
|
\cite{dokumentation} der Aufgabenstellung.
|
|
|
|
|
|
|
|
|
|
\section{Beschreibung des Algorithmus}
|
|
|
|
|
Der hier selbst gewählte Algorithmus ist Ziehen der Quadratwurzel mithilfe des
|
|
|
|
|
Heron’sche Näherungsverfahren (auch Babylonverfahren genannt). Es ist benannt
|
|
|
|
|
nach dem Altgriechen Heron von Alexandria, der es zum 1. Mal beschrieb. Es ist
|
|
|
|
|
vermutlich das älteste Nährungsverfahren für die Quadratwurzel. Wegen seines
|
|
|
|
|
einfachen Aufbaus, war es ein beliebter Algorithmus für die Implementierung in
|
|
|
|
|
Software bevor Hardwareimplementierung sich verbreitet haben.
|
|
|
|
|
|
|
|
|
|
Die Iterationsvorschrift des Verfahren lautet:
|
|
|
|
|
|
|
|
|
|
\begin{align}
|
|
|
|
|
x_{n+1} & =\frac{x_n + \frac{a}{x_n}}{2} \\
|
|
|
|
|
lim_{n \rightarrow \infty} x_n & = \sqrt{a}
|
|
|
|
|
\end{align}
|
|
|
|
|
|
|
|
|
|
wobei $a$ der Ausgangswert ist, aus welchem die Wurzel berechnet werden soll und
|
|
|
|
|
$x_n$ der sich von Iterations zu Iterations an die Quadratwurzel annähernde
|
|
|
|
|
Wert.
|
2014-01-02 12:01:07 +00:00
|
|
|
|
|
2014-01-13 08:08:21 +00:00
|
|
|
|
Herleiten lässt sich die Folge aus dem Newton-Verfahren zur Bestimmung der
|
|
|
|
|
Nullstellen ($x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$):
|
2013-12-11 12:57:26 +00:00
|
|
|
|
|
|
|
|
|
\begin{align}
|
2014-01-13 08:08:21 +00:00
|
|
|
|
x^2 &= a \\
|
|
|
|
|
f(x) &= x^2 - a \\
|
|
|
|
|
f'(x) &= 2x \\
|
|
|
|
|
x_{n + 1} &= x_n - \frac{f(x_n)}{f'(x_n)} \\
|
|
|
|
|
&= x_n - \frac{x_n^2 - a}{2x_n} \\
|
|
|
|
|
&= x_n - \frac{x_n - a/x_n}{2} \\
|
|
|
|
|
&= \frac{x_n + a/x_n}{2}
|
2013-12-11 12:57:26 +00:00
|
|
|
|
\end{align}
|
|
|
|
|
|
2014-01-13 08:08:21 +00:00
|
|
|
|
Wobei in diesem Praktikum die Quadratwurzel von mehreren hintereinander im
|
|
|
|
|
Speicher abgelegten Zahlen berechnet wird.
|
|
|
|
|
|
2014-01-02 12:01:07 +00:00
|
|
|
|
\section{Implementierung in C}
|
2014-01-13 08:08:21 +00:00
|
|
|
|
Der Prototyp des Algorithmus erfolgte in der Programmiersprache C nach dem
|
|
|
|
|
C99-Standard.
|
|
|
|
|
|
|
|
|
|
\ifalisting{Implementierung in C}{lst:implementierung}{c}{code/sqrt.c}{true}
|
|
|
|
|
|
|
|
|
|
Wie auch in der zu realisierenden Schaltung erwartet die Funktion im
|
|
|
|
|
Speicherfeld die Operanden für die Quadratwurzel-Berechnung. Wobei das 1. Feld
|
|
|
|
|
die Anzahl der Operanden angibt (siehe Speicherbelegung \ref{tbl:speicherbelegung}).
|
|
|
|
|
|
|
|
|
|
\subsection{Speicherbelegung und Zahlenformat}
|
2013-12-11 12:57:26 +00:00
|
|
|
|
|
|
|
|
|
Es wird angenommen, das jeder Speicherplatz 32 Bit breit ist.
|
|
|
|
|
Jedes Datenfeld wird als vorzeichenlose Festkommazahl interpretiert.
|
2014-01-13 08:08:21 +00:00
|
|
|
|
Die Anzahl der Nachkommastellen lässt sich sowohl in der Schaltung
|
|
|
|
|
(heron\_comma\_fix) als auch in
|
|
|
|
|
der C-Implementierung (siehe Zeile \ref{comma}) leicht anpassen, wobei
|
|
|
|
|
vorrausgesetzt wird, dass die Anzahl durch 2 teilbar sein muss. Für die
|
|
|
|
|
Verifikation wurden 8. Kommastellen festgesetzt.
|
2013-12-11 12:57:26 +00:00
|
|
|
|
|
2014-01-13 08:08:21 +00:00
|
|
|
|
\begin{table}
|
2013-12-11 12:57:26 +00:00
|
|
|
|
\begin{tabularx}{\textwidth}{X|X}
|
|
|
|
|
Speicherplatz & Beschreibung \\\hline
|
2014-01-13 08:08:21 +00:00
|
|
|
|
MEM[0] & Anzahl der Operanden (N) \\
|
2013-12-11 12:57:26 +00:00
|
|
|
|
MEM[1] & 1. Operand \\
|
|
|
|
|
MEM[2] & 2. Operand \\
|
|
|
|
|
$\ldots$ & $\dots$ \\
|
|
|
|
|
MEM[N] & N. Operand
|
|
|
|
|
\end{tabularx}
|
2014-01-13 08:08:21 +00:00
|
|
|
|
\caption{Speicherbelegung}
|
|
|
|
|
\label{tbl:speicherbelegung}
|
|
|
|
|
\end{table}
|
2013-12-11 12:57:26 +00:00
|
|
|
|
|
|
|
|
|
\subsection{Datenflussgraph}
|
|
|
|
|
\begin{figure}[ht]
|
|
|
|
|
\centering
|
2014-01-13 08:08:21 +00:00
|
|
|
|
\includegraphics[width=0.6\textwidth]{graph.pdf}
|
2013-12-11 12:57:26 +00:00
|
|
|
|
\label{fig1}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
\subsection{Datenpfad}
|
|
|
|
|
|
|
|
|
|
\end{document}
|
2014-01-13 08:08:21 +00:00
|
|
|
|
|
|
|
|
|
% vim:spelllang=de
|