\documentclass[12pt,fleqn]{article}
   \usepackage{epsfig}
   \pagestyle{plain}
   \usepackage[italian]{babel}
\textwidth=15cm
\textheight=25cm
\oddsidemargin=-0.2in
\evensidemargin=-0.2in
\topmargin=-1.6cm
\bibliographystyle{unsrt}
\begin{document}
%
% Look in the 'Windows' menu for the pictures window
% It's like the Scrapbook -- cut and paste pictures
%
\renewcommand{\arraystretch}{1.2}
\title{\bf Esperimentazioni di Fisica III}
\author{\small }
\author{}
\date{}
 
\maketitle


\section{Applicazioni delle FPGA: realizzazione di una ALU}




Relazione Gruppo ..........




\vspace{1 cm}
\emph{Attenzione:  Alimentare la FPGA a circa 8 Volt, facendo uso dell'alimentazione della basetta}

%\begin{figure}[h]
%  \begin{center}\mbox{\epsfig{file=fpga_pic.eps,width=14.0 cm,
%height=12 cm}}\end{center}
%\caption{}
%\protect\label{fpga_pic}
%\end{figure}

\begin{figure}[h]
  \begin{center}\mbox{\epsfig{file=fpga_pic_total.eps,width=14.0 cm,
height=12 cm}}\end{center}
\caption{}
\protect\label{fpga_pic_total}
\end{figure}

\subsection{Realizzazione di una unit\'a logico-aritmetica} 

Si monti il circuito indicato in figura~\ref{alu_complete}. Questo pu\'o effettuare
le operazioni di somma e prodotto, nonch\'e le operazioni logiche OR ed AND
su due numeri interi a 4 bit. Per la realizzazione delle operazioni indicate, si faccia
uso del \emph{Mega Wizard Plug-In Manager} (menu \emph{File}). Scegliere \emph{Arithmetic Mega Functions}
per il prodotto e la somma, e \emph{Gates} per l'AND e l'OR (sempre a 4 bit). Seguire poi
le istruzioni fornite dallo stesso programma per definire il numero di bits in ingresso ed in uscita.

\begin{figure}[h]
  \begin{center}\mbox{\epsfig{file=alu_complete.eps,width=14.0 cm,
height=12 cm}}\end{center}
\caption{}
\protect\label{alu_complete}
\end{figure}

Si faccia uso di due dei tre interruttori (da 4 elementi ciascuno) forniti per realizzare
gli input dei numeri su cui operare. Si faccia uso di due elementi del terzo interruttore per specificare (con 2 bit) l'operazione da effettuare, come mostrato in tabella~\ref{tab1}.

\begin{table}[h!]
	\begin{center}
		\begin{tabular}{| c c | r |}
\hline
0 & 0 & OR \\
0 & 1 & AND \\
1 & 0 & + \\
1 & 1 & x \\
\hline
		\end{tabular}
\caption{}
\protect\label{tab1}
	\end{center}

\end{table}
 
 
Ciascun commutatore dovr\'a esser montato in modo tale che, con il commutatore in una delle due 
posizioni il relativo ingresso venga ad esser collegato a massa, mentre con il commutatore
nella seconda posizione l'ingresso venga ad esser collegato a +5~V, attraverso una resistenza (di \emph{pull-up})
da circa 1~k. Ci\'o va ripetuto per ciascuno dei bit in ingresso dei numeri a e b, nonch\'e
per i bit che specificano l'operazione da effettuare. Si faccia molta attenzione alle tensioni
applicate e ad evitare eventuali ''corti''.
 
I numeri su cui operare sono indicati dai simboli a[3..0] e b[3..0]. Il numero risultante \'e
indicato con res[7..0]. La variabile (a due bit) adoperata per specificare l'operazione da effettuare
\'e indicata con sel[1..0]. 

Si proceda all'assegnazione degli ingressi e delle uscite come indicato
in tabella~\ref{tab2}, dove i valori indicati (37, 38, etc.) si riferiscono alla numerazione
indicata sul circuito per le linee di I/O.

\begin{table}[h!]
	\begin{center}
		\begin{tabular}{| c c c c c c c c |}
		\hline
a(3)  & a(2) & a(1) & a(0) & b(3) & b(2) & b(1) & b(0) \\ 
\hline
37 & 38 & 39 & 41 & 46 & 47 & 48 & 49 \\
\hline
\hline
res(7) & res(6) & res(5) & res(4) & res(3) & res(2) & res(1) & res(0) \\
\hline
99 & 100 & 101 & 102 & 117 & 118 & 119 & 120 \\
\hline
\hline
$sel(0)$ & $sel(1)$ & Parity & & & &  \\
\hline
79 & 78 & 130 & & & & & \\
\hline
		\end{tabular}
\caption{}
\protect\label{tab2}
	\end{center}

\end{table}
 
Dopo aver disegnato il circuito, si compili, si effettui il download (opzione PROGRAMMER
in FILE) e si effettui le seguenti operazioni elementari:

\[
Hex(A) \times Hex(B) =
\]
\[
Hex(7)\; + \;Hex(C) =
\]
\[
Hex(3)\;OR \;Hex(E) =
\]
\[
Hex(B)\;AND\;Hex(3) =
\]


Si effettui poi la simulazione e si verifichi il funzionamento anche in questo caso. 

\vspace{5 cm}

Si valuti poi il ritardo tra i segnali in ingresso e
quelli in uscita, per ciascuna delle quattro operazioni effettuate.

Nota: il ritardo pu\'o esser valutato (facendo uso della simulazione) in due modi:
\begin{itemize}
\item[(a)]{facendo uso del sottomenu \emph{waveform editor} (nel menu \emph{Max+PLus II} esaminando i tempi relativi dei vari segnali}
\item[(b)]{facendo uso della utility \emph{analyse timing} (menu \emph{utilities})}
\end{itemize}

Si riporti nella tabella~\ref{tab3} il ritardo osservato in ciascuno dei quattro casi.


\begin{table}[h!]
	\begin{center}
		\begin{tabular}{| c | c |}
\hline
$operazione$ & $\;\;ritardo (ns)\;\;$ \\
\hline
SOMMA &   \\
\hline
PRODOTTO &  \\
\hline
OR &  \\
\hline
AND & \\
\hline			
		\end{tabular}
\caption{}
\protect\label{tab3}
	\end{center}

\end{table}

Si acclude in figura~\ref{alu_complete_waves} un esempio di forme d'onda.  

\begin{figure}[h]
  \begin{center}\mbox{\epsfig{file=alu_complete_waves.eps,width=13.0 cm,
height=7 cm}}\end{center}
\caption{}
\protect\label{alu_complete_waves}
\end{figure}


Si apporti ora le necessarie modifiche al circuito in modo che esso fornisca anche la parit\'a
della parola in uscita ed accenda il LED collegato alla linea 130 se la parit\'a \'e dispari.

Suggerimento: la parit\'a \'e ottenibile dall'XOR delle uscite, anch'esso implementabile attraverso
il \emph{Mega Wizard Plug-In Manager}.


Si accluda alla relazione una stampa del circuito disegnato ed una delle forme d'onda
in uscita ottenute dalla simulazione.


\end{document}


