159 lines
6.3 KiB
TeX
159 lines
6.3 KiB
TeX
\subsection{Parallel bus}
|
|
|
|
The core part of the hardware is the interface between the microprocessor and
|
|
the hardware peripherals. This bus is delivering data in parallel and is
|
|
therefore named the ``parallel bus``. This bus has 3 different sub-parts:
|
|
|
|
\begin{enumerate}
|
|
\item{The address bus}
|
|
\item{The data bus}
|
|
\item{The control bus}
|
|
\end{enumerate}
|
|
|
|
This split is common in many computer architectures and bus systems used by
|
|
various microprocessor manufacturers. In figure \ref{fig:atari_pbi} the
|
|
layout of the Atari Parallel Bus Interface is shown as used on the Atari 800XL.
|
|
|
|
\begin{figure}[H]
|
|
\includegraphics[width=\textwidth, angle=0]{pics/atari_pbi}
|
|
\caption{Atari PBI Pinout;Source: \url{https://www.atarimagazines.com}}
|
|
\label{fig:atari_pbi}
|
|
\end{figure}
|
|
|
|
\paragraph{System Bus}
|
|
|
|
In some architectures the backbone parallel bus consisting of data- address- and
|
|
control bus is called the system bus. The system bus even has its own wikipedia
|
|
article \footnote{\url{https://en.wikipedia.org/wiki/System_bus}} and the
|
|
picture seen in
|
|
figure \ref{fig:sysbus}, which has been taken from this wikipedia article, even
|
|
shows the exact same parts. However the origin of this term could not be
|
|
determined and its use was the most common when describing the interface between
|
|
the fabric of the CPU with external parts via this interface on a motherboard,
|
|
which ran on system clock speed and was synchronized with the processor.
|
|
The term parallel bus was chosen for this thesis because the bus runs on an
|
|
independant clock speed and only interacts with the processor asynchronous to
|
|
its clock. The term front side bus would be more fitting but not used because of
|
|
its affiliation with intel products.
|
|
|
|
\begin{figure}[H]
|
|
\includesvg[width=\textwidth, angle=0]{pics/sysbus}
|
|
\caption{System bus structural diagram; Source: \url{https://en.wikipedia.org/}}
|
|
\label{fig:sysbus}
|
|
\end{figure}
|
|
|
|
|
|
\subsubsection{Address Bus}
|
|
|
|
The address bus contains the nescessary data lines for addressing the individual
|
|
registers of the Serial connection and the UART. On any modern system this bus
|
|
is from 16 to 64 bits wide. For our implementation the bus size was chosen to
|
|
be 8 bit, which is multiple times the amount of needed address space, but
|
|
is the smallest addressable unit on most microcontroller architectures and
|
|
therefore easy to program with. The address bus is unidirectional.
|
|
|
|
\subsubsection{Data Bus}
|
|
|
|
The data bus contains the actual data to be stored to and read from registers.
|
|
The data bus is as well on most systems a multiple of 16 bits wide, but for the
|
|
same reasons as the data bus is shrunk down in our case to 8 bits. The data
|
|
bus is bidirectional.
|
|
|
|
\subsubsection{Control Bus}
|
|
|
|
Control bus is a term which referes to any control lines (such as read and write
|
|
lines or clock lines) which are neither address nor data bus. The control bus
|
|
in our case is 5 bits wide and consists of:
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\begin{tabular}{| c | r |}
|
|
\hline
|
|
\textbf{Signal} & \textbf{Description}\\
|
|
\hline
|
|
\hline
|
|
$MR$ & Master Reset \\
|
|
\hline
|
|
$\lnot WR$ & Write Not\\
|
|
\hline
|
|
$\lnot RD$ & Read Not \\
|
|
\hline
|
|
$\lnot MS1$ & Module Select 1 Not \\
|
|
\hline
|
|
$\lnot MS2$ & Module Select2 Not\\
|
|
\hline
|
|
\end{tabular}
|
|
\caption{Signals on the control bus}
|
|
\label{tab:ctrl_bus}
|
|
\end{table}
|
|
|
|
|
|
\paragraph{Master Reset}
|
|
|
|
A high level on the $MR$ lane signals to the peripherals, that a reset of all
|
|
registers and states should occure. This is needed for the serial console and
|
|
the DAC.
|
|
|
|
\paragraph{Write Not}
|
|
A low level on the $\lnot WR$ lane signals the corresponding modules, that the
|
|
data on
|
|
the data bus should be written to the register on the address specified from the
|
|
address bus.
|
|
|
|
\paragraph{Read Not}
|
|
A low level on the $\lnot RD$ lane signals the corresponding modules, that the
|
|
data
|
|
from the register specified by the address on the address bus should be written
|
|
to the data bus.
|
|
|
|
\paragraph{Module Select 1 and 2 Not}
|
|
|
|
A low level on one of these lines signals the corresponding module, that the
|
|
data on address data and the control lines is meant for it.
|
|
|
|
\paragraph{Sepearation of $\lnot RD$/$\lnot WR$ and$\lnot MS1$/$\lnot MS2$}
|
|
|
|
The Read Not and Write Not lines could be combined into one line $\lnot RD/WR$.
|
|
The same can be done for the Module Select lanes. In both cases this would
|
|
have made wiring inside the finished modules more difficult and if both were
|
|
combined the bus would not be able to not perform an action at any given
|
|
point in time. Therefore these signals have not been combined.
|
|
|
|
\subsection{Von Neumann Archtiecture}
|
|
|
|
The term ``von Neumann architecture`` refers to a type of computer architecture
|
|
which referres to almost any modern computer system. It describes the in this
|
|
thesis used Human input and output parts and the general workings of modern
|
|
processors with the ALU\footnote{ALU...arithmetic logic unit} or the CA
|
|
\footnote{CA...Central Arithmetic Part} as well as means to interface with its
|
|
operator\cite{neumann}.
|
|
|
|
In his thesis ``First Draft of a Report on the EDVAC`` he writes about human
|
|
input:
|
|
|
|
\vspace{1cm}
|
|
|
|
``Once these instructions are given to the device, it must be able to carry them out completely and
|
|
without any need for further intelligent human intervention. At the end of the required operations
|
|
the device must record the results again in one of the forms referred to above.``\cite[p.7]{neumann}
|
|
|
|
\vspace{1cm}
|
|
|
|
This can be applied to the hardware implemented in this thesis, as well as
|
|
other general computing systems. The EDVAC, which his thesis referres to, was a
|
|
computer developed for military purposes. Much like the EDVAC, the CPU in this
|
|
thesis is responsible for arithemtic operations and code interpetation. The
|
|
peripherals are what is referred to as the input and output devices in his
|
|
report. Though the for examples used ATMega2650 utilizes a harvard architecture
|
|
``In order to maximize performance and parallellism``\cite[p.11]{atmega2560} the
|
|
more general descriptions of computational operations still apply to this
|
|
thesis. The differences between a harvard architecture and a von neumann
|
|
architecture are shown in figure \ref{fig:harvard_neumann}
|
|
|
|
\begin{figure}[H]
|
|
\includesvg[width=.5\textwidth, angle=0]{pics/harvard}
|
|
\includesvg[width=.5\textwidth, angle=0]{pics/neumann}
|
|
\caption{Harvard(left) vs Von-Neumann architecture(right);\\
|
|
Source: \url{https://en.wikipedia.org/}}
|
|
\label{fig:harvard_neumann}
|
|
\end{figure}
|