Select Git revision
rtech-2023ss-p1.tex 12.38 KiB
% rtech-2023ss-p1.pdf - Labor Notes on Fundamentals in Computer Architecture
% Copyright (C) 2023 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Versuch 1: Addierer aus Relais
\documentclass[a4paper]{article}
\usepackage{pgscript}
\usepackage{multicol}
\usepackage{amsmath}
%\usepackage{sfmath}
\usepackage{tikz}
\usetikzlibrary{circuits.ee.IEC}
\usetikzlibrary{arrows.meta}
\sloppy
\raggedcolumns
\pagestyle{empty}
\addtolength{\textheight}{1cm}
\newcommand{\sep}{~$\cdot$~}
\newcommand{\mylicense}{CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)}
\begin{document}
\makebox(0,0.005)[tl]{\includegraphics[scale=0.72]{logo-hochschule-bochum-cvh-text-v2.pdf}}\hfill
\makebox(0,0)[tr]{\includegraphics[scale=0.5]{logo-hochschule-bochum.pdf}}
\par\bigskip\bigskip
\begin{center}
\Large\textbf{Praktikumsversuch 1: Addierer aus Relais}
\par\medskip
\normalsize Hardwarenahe Programmierung\sep
Sommersemester 2023\sep
Prof.~Dr.~Peter Gerwinski
\end{center}
Aufgabe: Selbstbau eines binären Addierers auf Grundlage von Relais
\begin{figure}[b]
\begin{minipage}{7.3cm}
\includegraphics[width=8cm]{400_points_breadboard.jpg}
\vspace*{-1cm}
\caption{Steckplatine}
\label{Steckplatine}
\vspace*{1cm}
\end{minipage}%
\begin{minipage}{9cm}
\small\raggedright
\vspace*{1cm}
Bildquelle:
\href{https://commons.wikimedia.org/wiki/File:400_points_breadboard.jpg}%
{\nolinkurl{https://commons.wikimedia.org/}\\
\nolinkurl{wiki/File:400_points_breadboard.jpg}}\\
Autor: \url{https://www.flickr.com/people/33504192@N00}\\
Lizenz: CC-BY-SA 2.0 Generic
\end{minipage}
\end{figure}
\begin{multicols}{2}
Der Versuch besteht aus mehreren Teilen, die aufeinander aufbauen.
Die ersten dienen dazu, sich mit dem Material
-- 1 Steckbrett, 2 LEDs, 2 Widerstände, 2 Relais, 1 zweipoliger DIP-Schalter --
vertraut zu machen.
Danach erfolgt der eigentliche Bau des Addierers.
\begin{enumerate}
\item
Bringen Sie eine LED zum Leuchten.
\textbf{Achtung:} Eine LED ist keine Glühlampe!
Sie wird nicht "`einfach so"' an die Spannungsquelle angeschlossen,
sondern in Reihe mit einem Schutz"-widerstand.
(Wir verwenden $1\,{\rm k}\Omega$, Farbcode: Braun, Schwarz, Rot, Gold.)
\begin{center}
\begin{tikzpicture}[circuit ee IEC,
set diode graphic=var diode IEC graphic,
small circuit symbols,
every info/.style={font=\footnotesize}]
\draw (-0.1,0.85)--(0,1)--(0.1,0.85);
\draw [line width=1pt] (3.8,0) to (4.2,0);
\draw (0,1)
to (0,0.5)
to [diode={light emitting}] (2,0.5)
to [resistor={ohm=1k}] (4,0.5)
to (4,0);
\node at (-0.4,1) {\footnotesize $+6\rm V$};
\end{tikzpicture}
\end{center}
Auch müssen Sie die Polarität beachten.
Der Pluspol der LED (Anode) ist an einem längeren Anschlußbeinchen zu erkennen.
Am Minuspol (Kathode) ist zusätzlich das Gehäuse der Diode abgeflacht.
(Eselsbrücke: \emph{Ka}\kern0.5ptnte = \emph{Ka}\kern0.8ptthode.)
% Sofern Sie nicht bereits mit LEDs vertraut sind,
% informieren Sie sich bitte \emph{vor\/} Beginn des Praktikumsversuchs darüber.
Die Verdrahtung erfolgt auf Steckplatinen -- siehe
Abb.~\ref{Steckplatine}.
Die mit roten und blauen Streifen markierten Lochreihen sind
in Längsrichtung elektrisch verbunden, alle anderen in
Querrichtung mit einer Trennung in der Mitte. Üblicherweise
verwendet man die Längsrichtung für die Stromversorgung:
Rot = Versorgungsspannung (Pluspol, $6\rm V$), Blau = $0\rm V$ (Minuspol).
\textbf{Bevor Sie die Spannung einschalten,
lassen Sie den Versuchsaufbau durch einen Betreuer überprüfen!}
\item
Schalten Sie eine LED über\\einen DIP-Schalter.
\item
Schalten Sie ein Relais über\\einen DIP-Schalter.
\textbf{Achtung:} Die Anschlußbeinchen der Relais können
beim Einstecken in die Steckplatine leicht verbiegen.
Bitte achten Sie darauf, daß dies nicht geschieht!
\item
Schalten Sie eine LED über\\einen Arbeitskontakt eines Relais.
\item
Bauen Sie aus den Relais\\einen Und-Schaltkreis.
Schalten Sie die beiden Eingänge des Und-Schaltkreises über die DIP-Schalter.
Schließen Sie an seinen Ausgang eine LED an.
\item
Bauen Sie aus den Relais\\einen Exklusiv-Oder-Schaltkreis.
\item
Bauen Sie aus den Relais\\einen Halbaddierer.
\item
Überlegen Sie sich, was für den Bau eines Voll"-addierers benötigt wird,
und führen Sie dieses Projekt durch.
\item
Überlegen Sie sich, welche maximale Registerbreite Sie mit dem vorhandenen Material
für einen Mehr-Bit-Addierer erreichen können,
und bauen Sie diesen Addierer.
\item
Schreiben Sie einen kurzen Praktikumsbericht über den Bau des Addierers.
\end{enumerate}
Mit dem Praktikumsbericht üben Sie das Schreiben wissenschaftlicher Texte.
Ziel des Berichts soll es sein, Ihr neues Wissen
einer interessierten Leserschaft zu vermitteln.
Dazu gehört:
\begin{itemize}
\item
Stellen Sie eine gemeinsame Wissensgrundlage mit Ihrer Leserschaft her.
\item
Dokumentieren Sie Ihre neuen Erkenntnisse auf solche Weise,
daß man diese nach dem Lesen reproduzieren kann.
\item
Wenn Sie im Laufe Ihrer wissenschaftlichen Arbeit (= des Versuchs)
auf Dinge gestoßen sind, die man unbedingt beachten sollte,
um unnötige Arbeit und/oder Gefahr für Mensch und Material zu vermeiden,
dann weisen Sie in Ihrer Dokumentation darauf hin.
\end{itemize}
Vergessen Sie auch nicht, was sonst noch zu einer wissenschaftlichen Arbeit gehört:
\begin{itemize}
\item
Eine kurze Zusammenfassung ("`Abstract"') am Anfang ermöglicht
z.\,B.\ bei einer Web-Suche, zu entscheiden, ob diese Dokumentation das ist,
wonach man gesucht hat.
\item
Eine Zusammenfassung der Ergebnisse am Ende erhöht den praktischen Nutzen Ihrer Arbeit.
\item
Wenn Ihre Arbeiten auf den Erkenntnissen Dritter aufbauen,
müssen Sie diese korrekt zitieren.
\end{itemize}
Weitere Hinweise zu diesem Thema:\\
\url{https://gitlab.cvh-server.de/jweber/latex-template-cvh}\\
\url{https://gitlab.cvh-server.de/pgerwinski/dfi}
\bigskip
\qquad\qquad\emph{Viel Erfolg!}
\end{multicols}
\vfill
\begingroup
\small
\setlength{\leftskip}{3cm}
Stand: 28.\ März 2023
% Soweit nicht anders angegeben:\\
Copyright \copyright\ 2023\quad Peter Gerwinski\\
Lizenz: \mylicense
Sie können diese Praktikumsunterlagen einschließlich Quelltext
% und Beispielprogramme\\
herunterladen unter:\\
\url{https://gitlab.cvh-server.de/pgerwinski/rtech}
\endgroup
\iffalse
Aufgabe: Programmieren Sie einen Mikrocontroller so,
daß er eine Druckknopfampel steuern kann.
\begin{multicols}{2}
\begin{itemize}
\item
Normalerweise zeigt eine Druckknopfampel rotes Licht für die
Fußgänger und grünes Licht für die Straße.
\item
Nach Knopfdruck wechselt die Straße über Gelb nach Rot.
Danach bekommen die Fußgänger Grün.
Nach einer gewissen Zeit bekommen die Fußgänger wieder Rot,
und die Straße wechselt über Rot-Gelb wieder zu Grün.
\medskip
\item
Als Mikrocontroller-Entwicklungsplattform stellen wir Ihnen
einen \emph{Arduino Uno\/} zur Verfügung.
\item
Software-Entwiklung für den Arduino geschieht üblicherweise
mit Hilfe der Entwicklungswerkzeuge \emph{GCC, binutils und
glibc für AVR} sowie \emph{avrdude\/} für das Herunterladen
des geschriebenen Programms vom PC auf den Mikrocontroller.
Die Arduino-Entwicklungsumgebung (siehe z.\,B.\
\url{https://www.arduino.cc/en/Main/Software}) integriert
alle diese Komponenten.
\item
Wir schreiben unser Programm in C und nicht in der INO-Sprache.
Wenn die Quelltext-Dateien in der Arduino-Entwicklungsumgebung
die Endung \file{.ino} haben, ist das kein Problem,
sofern der Inhalt der Datei in C geschrieben ist.
\item
Den Schaltplan des Arduino Uno sowie das Datenblatt des
ATmega328p finden Sie per Web-Recherche.
\columnbreak
\item
Sie können Ihr Programm direkt aus der Arduino-Entwicklungsumgebung heraus
compilieren und auf den Mikrocontroller herunterladen.
Wenn Sie dies von der Kommandozeile aus machen möchten,
geht dies folgendermaßen:
\lstinline[style=cmd]{avr-gcc -Wall -Os -mmcu=atmega328p \}\\
\lstinline[style=cmd]{dateiname.c -o dateiname.elf}
\lstinline[style=cmd]{avr-objcopy -O ihex \}\\
\lstinline[style=cmd]{dateiname-4.elf dateiname-4.hex}
\lstinline[style=cmd]{avrdude -P /dev/ttyACM0 -c arduino \}\\
\lstinline[style=cmd]{-p m328p -U flash:w:dateiname.hex}
Notfalls: \lstinline[style=cmd]{sudo chmod 666 /dev/ttyACM0}
\medskip
\item
Die Verdrahtung erfolgt auf Steckplatinen -- siehe
Abb.~\ref{Steckplatine}.
Die mit roten und blauen Streifen markierten Lochreihen sind
in Längsrichtung elektrisch verbunden, alle anderen in
Querrichtung mit einer Trennung in der Mitte. Üblicherweise
verwendet man die Längsrichtung für die Stromversorgung: Rot
= Versorgungsspannung, Blau = 0\,V.
\item
LEDs sind keine Glühlampen! Sie haben einen Pluspol (länger)
und einen Minuspol (kürzer, Gehäuse abgeflacht), und sie dürfen
\textbf{nur mit Vorwiderstand} betrieben werden,
andernfalls besteht die Gefahr einer Zerstörung der LED
und/oder des Arduino.
\item
Anstelle eines Drucktasters verwenden wir ein Stück Draht.
\item
Bevor Sie Ihre Schaltung unter Strom setzen, lassen Sie
diese \textbf{durch einen Betreuer prüfen}.
\end{itemize}
\vspace*{-\medskipamount}
\strut\hfill\emph{Viel Erfolg!}\\[-3.5cm]
\end{multicols}
\vspace*{-1.5\bigskipamount}
\begin{figure}[h]
\begin{minipage}{7.3cm}
\includegraphics[width=8cm]{400_points_breadboard.jpg}
\vspace*{-1cm}
\caption{Steckplatine\label{Steckplatine}}
\vspace*{1cm}
\end{minipage}%
\begin{minipage}{9cm}
\small\raggedright
\vspace*{1cm}
Bildquelle:
\href{https://commons.wikimedia.org/wiki/File:400_points_breadboard.jpg}%
{\nolinkurl{https://commons.wikimedia.org/}\\
\nolinkurl{wiki/File:400_points_breadboard.jpg}}\\
Autor: \url{https://www.flickr.com/people/33504192@N00}\\
Lizenz: CC-BY-SA 2.0 Generic
\end{minipage}
\end{figure}
\vspace*{-1.5\bigskipamount}
\vfill
\begingroup
\small
\setlength{\leftskip}{3cm}
Stand: 31.\ Oktober 2022
% Soweit nicht anders angegeben:\\
Copyright \copyright\ 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022\quad Peter Gerwinski\\
Lizenz: \mylicense
Sie können diese Praktikumsunterlagen einschließlich \LaTeX-Quelltext
% und Beispielprogramme\\
herunterladen unter:\\
\url{https://gitlab.cvh-server.de/pgerwinski/hp}
\endgroup
\fi
\end{document}