summaryrefslogtreecommitdiffstats
path: root/doc/report
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2017-09-10 17:33:35 +0200
committerNao Pross <naopross@thearcway.org>2017-09-10 17:33:35 +0200
commit1841ec774e65c03d437df838198c0264a1de7801 (patch)
tree869510bbeaae2b0211ac95f156ac65f3e76a4809 /doc/report
parentz80_test cleanup and makefile corrections (diff)
downloadz80uPC-1841ec774e65c03d437df838198c0264a1de7801.tar.gz
z80uPC-1841ec774e65c03d437df838198c0264a1de7801.zip
new documentation with no styling
the old documentation was written more like a journal than a proper paper, so I am rewriting in a separate document. Once the new doc will be completed, the content of the old one will be discarted.
Diffstat (limited to 'doc/report')
-rw-r--r--doc/report/build/notes.pdfbin47404 -> 47404 bytes
-rw-r--r--doc/report/build/z80uPC.pdfbin971046 -> 971051 bytes
-rw-r--r--doc/report/build/z80uPC_nostyle.pdfbin0 -> 141261 bytes
-rw-r--r--doc/report/makefile2
-rw-r--r--doc/report/res/addrspace.pdfbin7208 -> 7210 bytes
-rw-r--r--doc/report/res/block_diagram.pdfbin23233 -> 23235 bytes
-rw-r--r--doc/report/res/iospace.pdfbin6118 -> 6120 bytes
-rw-r--r--doc/report/res/kernel_mem_base.pdfbin17254 -> 17257 bytes
-rw-r--r--doc/report/res/mem_kern_alloc.pdfbin8130 -> 8132 bytes
-rw-r--r--doc/report/z80uPC.tex2
-rw-r--r--doc/report/z80uPC_nostyle.tex163
11 files changed, 165 insertions, 2 deletions
diff --git a/doc/report/build/notes.pdf b/doc/report/build/notes.pdf
index 1281c1f..56e2cd1 100644
--- a/doc/report/build/notes.pdf
+++ b/doc/report/build/notes.pdf
Binary files differ
diff --git a/doc/report/build/z80uPC.pdf b/doc/report/build/z80uPC.pdf
index 729a9e8..df353cb 100644
--- a/doc/report/build/z80uPC.pdf
+++ b/doc/report/build/z80uPC.pdf
Binary files differ
diff --git a/doc/report/build/z80uPC_nostyle.pdf b/doc/report/build/z80uPC_nostyle.pdf
new file mode 100644
index 0000000..87cdd60
--- /dev/null
+++ b/doc/report/build/z80uPC_nostyle.pdf
Binary files differ
diff --git a/doc/report/makefile b/doc/report/makefile
index e10c0b9..d88b1bb 100644
--- a/doc/report/makefile
+++ b/doc/report/makefile
@@ -2,7 +2,7 @@
BUILD_DIR := build
RES_DIR := res
-SOURCES := z80uPC.tex notes.tex
+SOURCES := z80uPC.tex z80uPC_nostyle.tex notes.tex
DOCUMENTS := $(patsubst %.tex,$(BUILD_DIR)/%.pdf,$(SOURCES))
RES_SRC := $(wildcard $(RES_DIR)/*.svg)
diff --git a/doc/report/res/addrspace.pdf b/doc/report/res/addrspace.pdf
index 96ac657..abf9fed 100644
--- a/doc/report/res/addrspace.pdf
+++ b/doc/report/res/addrspace.pdf
Binary files differ
diff --git a/doc/report/res/block_diagram.pdf b/doc/report/res/block_diagram.pdf
index 204a22e..57b42d6 100644
--- a/doc/report/res/block_diagram.pdf
+++ b/doc/report/res/block_diagram.pdf
Binary files differ
diff --git a/doc/report/res/iospace.pdf b/doc/report/res/iospace.pdf
index c1773fd..ba36d9d 100644
--- a/doc/report/res/iospace.pdf
+++ b/doc/report/res/iospace.pdf
Binary files differ
diff --git a/doc/report/res/kernel_mem_base.pdf b/doc/report/res/kernel_mem_base.pdf
index 1a6a84c..7d2a257 100644
--- a/doc/report/res/kernel_mem_base.pdf
+++ b/doc/report/res/kernel_mem_base.pdf
Binary files differ
diff --git a/doc/report/res/mem_kern_alloc.pdf b/doc/report/res/mem_kern_alloc.pdf
index 4a21f11..fd02dfd 100644
--- a/doc/report/res/mem_kern_alloc.pdf
+++ b/doc/report/res/mem_kern_alloc.pdf
Binary files differ
diff --git a/doc/report/z80uPC.tex b/doc/report/z80uPC.tex
index 993be83..50034ec 100644
--- a/doc/report/z80uPC.tex
+++ b/doc/report/z80uPC.tex
@@ -61,7 +61,7 @@
interfacce seriali e altri circuiti di supporto. Successivamente per
l'aspetto software il progetto deve implementare i drivers per ogni
circuito presente sulla scheda in modo da semplificare la programmazione.
- L'obiettivo secondario del progetto, una volta terminata la costruzione
+ L'obiettivo opzionale del progetto, una volta terminata la costruzione
hardware, \`e di realizzare una kernel monolitica che offre funzioni
minimali simili ad un sistema UNIX, quali processi, filesystem, memory
management e drivers.
diff --git a/doc/report/z80uPC_nostyle.tex b/doc/report/z80uPC_nostyle.tex
new file mode 100644
index 0000000..a3421ef
--- /dev/null
+++ b/doc/report/z80uPC_nostyle.tex
@@ -0,0 +1,163 @@
+\documentclass[a4paper, 11pt]{article}
+
+\usepackage{array}
+\usepackage{float}
+\usepackage{wrapfig}
+\usepackage{textgreek}
+\usepackage{graphicx}
+
+% source code
+\usepackage{listings}
+
+% set correct hypenation
+\usepackage[italian]{babel}
+
+% to fix macros
+\usepackage{xspace}
+% commands
+% macro for project name
+\newcommand{\prj}{Z80\textmu PC\xspace}
+
+% invert signal (not, active low)
+\newcommand{\inv}[1]{$\overline{\mbox{#1}}$}
+
+% metadata
+\title{\prj Single Board \\ Computer Development }
+\author{Naoki Pross}
+
+% document
+\begin{document}
+
+\maketitle
+\begin{abstract}
+
+ Lo Zilog Z80 \`e un processore a 8 bit che fu introdotto nel 1976 che ebbe
+ un grandissimo successo nel mondo dell'elettronica e dell'informatica
+ nella fine del 20esimo secolo. In memoria di questo pioniere
+ dell'industria dei sistemi informatici questo progetto documenta la
+ realizzazione di un microcomputer a scopo generico a base di esso.
+ L'obiettivo primario dunque \`e di realizzare una scheda simile ad una
+ motherboard dei computers venduti all'epoca completa di RAM, ROMs,
+ interfacce seriali e altri circuiti di supporto. Successivamente per
+ l'aspetto software il progetto deve implementare i drivers per ogni
+ circuito presente sulla scheda in modo da semplificare la programmazione.
+ L'obiettivo opzionale del progetto, una volta terminata la costruzione
+ hardware, \`e di realizzare una kernel monolitica che offre funzioni
+ minimali simili ad un sistema UNIX, quali processi, filesystem, memory
+ management e drivers.
+
+\end{abstract}
+
+\section{Hardware}
+
+\subsection{Specifiche tecniche dello Z80}
+
+Lo Z80 \`e un processore molto minimalistico se paragonato a ci\`o che si
+trova oggi sul mercato dei microcontrollori. Per il progetto \prj la CPU in
+uso \`e il modello originale \texttt{Zilog Z8400} che non dispone di moduli
+aggiuntivi integrati come i modelli SoC odierni. La scelta di una CPU tanto
+semplice \`e la conseguenza del design didattico del progetto, inoltre senza
+alcun dispositivo interno lo \texttt{Z8400} si presenta con un address space
+completamente vuoto, ad eccezzione del punto d'inizio e i vettori di reset.
+
+Lo Z80 utilizza I/O paralleli sia per la lina a 16 degli indizzi che per la
+linea dati a 8 bit e dispone di 6 registri 8 bit ad utilizzo generico
+combinabili in coppie per ottenere un valore a 16 bit. Per il controllo dei
+dispositivi esterni, come lettura e scrittura esso possiede delle linee di
+controllo dedicate come {\tt\inv{RD}}, {\tt\inv{WR}}, {\tt\inv{MREQ}}, ecc. In
+quanto instruction set, lo Z80 ha 158 istruzioni possibili di cui 78 sono un
+sottoinsieme dello 8080A, architettate per poter mantere una
+retrocompatiblit\`a.
+
+\begin{table}[ht]\centering
+\caption{Riassunto delle specifiche}
+
+\begin{tabular}{ l l }
+ \\ \hline
+ Dimensione Indirizzi & 16 bit \\
+ Dimensione Dati (word) & 8 bit \\
+ Spazio Indirizzabile & 64 KB \\
+ Registri Generici 8 bit & 6 ({\tt A..F}) \\
+ Registri 16 bit & 2 ({\tt SP, PC}) \\
+ Clock speed & 8 MHz, 6MHz, 4MHz, 2.5MHz \\
+ \hline
+\end{tabular}
+\end{table}
+
+\subsection{Componenti e modello di design}
+
+Il minimo necessario per far funzionare uno Z80 sono una {\tt RAM} ed una {\tt
+ROM}, ma avendo a disposizione altri dispositivi I/O lo \prj dispone anche di
+una porta seriale, di una porta parallela e di un counter timer; Hardware che
+si presenta normalmente all'interno di microcontrollori odierni.
+
+\begin{table}[hb]\centering
+\caption{Lista dei componenti}
+\begin{tabular}{ >{\tt}l >{\tt\bfseries}l >{\footnotesize}p{.7\linewidth} }
+ \\ \hline
+ ROM & M28C64 & EEPROM da 8KB x 8 bit (64K) per il BIOS / Bootloader /
+ OS installata doppia per avere 16KB \\
+ RAM & HM62256B & SRAM da 32KB x 8bit (256K) \\
+ CTC & Z8430 & Counter timer circuit ufficiale di Zilog a 4 canali
+ programmabili \\
+ PIO & Z8420 & Parallel input/output controller di Zilog per avere un
+ intefaccia digitale con due porte da 8 bit \\
+ MMU & M4-32/32-15JC & CPLD programmabile che implementa una memory
+ management unit semplificata in grado di gestire i 5
+ bit pi\`u significativi della linea di indirizzi \\
+ USART & TL16C550C & Interfaccia USART per poter comunicare utilizzando il
+ protocollo RS232 \\
+ \hline
+\end{tabular}
+\end{table}
+
+Il design dello \prj \`e costruito sulla falsa riga di un Arduino o di un
+EasyPIC con l'aggiunta di funzionalit\`a a scopo didattico quali; la
+possiblit\`a di cambiare la velocit\`a di clock tra 4MHz, 200Hz o manuale
+(mediante un bottone sulla scheda) e una serie di display a 7 segmenti per
+vedere in tempo reale i valori sui bus degli indirizzi e dei dati.
+\begin{center}
+\begin{tabular}{ >{\bfseries}r p{.8\linewidth} }
+ 0Hz & Il clock manuale \`e un bottone che permette di creare
+ le pulsazioni, per poter analizzare ogni istruzione \\
+ 200Hz & Mediante un classico circuito con un LM555 si ha un clock
+ per eseguire i programmi a velocit\`a rallentata \\
+ 4MHz & Clock per esecuzione a velocit\`a piena (normale)
+\end{tabular}
+\end{center}
+
+\subsection{Memory management unit}
+
+Alcuni modelli sucessori dello Z8400 implementavano ina MMU (Memory Management
+Unit) SoC che permetteva di ampliare la dimensione dell'address space,
+permettendo quindi di mappare pi\`u memorie o dispositivi separati negli
+stessi indirizzi. Ci\`o \`e un sistema \`e comune nei sistemi a base di
+microcontrollers per ovviare al problema dello spazio. Lo \prj per\`o ha un
+architettura pi\`u simile ad un computer X86 in cui la MMU viene utilizzata
+per la gestione delle \emph{pagine} di memoria.
+
+Il concetto di pagine (pages in inglese) \`e necessario per sistemi con un
+supporto per il multitasking o per poter ampliare la memoria dinamica.
+
+\section*{Glossario Tecnico}
+
+\begin{tabular}{ >{\bfseries}p{.3\linewidth} p{.7\linewidth} }
+
+ Address Space & In informatica l'\emph{address space} \`e un intervallo di
+ indirizzi che possono corrispondere a indirizzi in rete, regioni di un
+ dispositivo, di una memoria o di un qualsiasi altro dispositivo fisico o
+ logico. Per questo progetto \emph{address space} si riferisce
+ all'intervallo indirizzabile dal processore, ovvero $2^{16}$ locazioni
+ siccome il sistema dispone di un bus a 16 bit. \\
+
+ Registro & Un registro \`e un dispositivo di memoria in cui \`e possibile
+ pu\`o leggere e/o scrivere un certo valore. Normalmente in un computer /
+ microcontrollore la dimensione della memoria \`e data dall'architettura,
+ dunque 8, 16, 32 o 64 bits. In questo documento viene viene comunemente
+ utilizzato per riferirsi ad una memoria di un dispositivo fisico come la
+ CPU o un IC seriale. \\
+
+
+\end{tabular}
+
+\end{document}