prot2: erste worte und bilder eingefuegt
authorBernhard Urban <lewurm@gmx.net>
Fri, 6 Nov 2009 18:23:36 +0000 (19:23 +0100)
committerBernhard Urban <lewurm@gmx.net>
Fri, 6 Nov 2009 18:23:36 +0000 (19:23 +0100)
bsp2/Protokolle/chapter2.tex
bsp2/Protokolle/prot_2.txt

index a8ddc1adbd69bc9c723d5b39df56ef1bd6c223d8..267259983d507eeefd7efd979ab0adc8fb857a8f 100644 (file)
@@ -1,6 +1,152 @@
 \chapter{Design-Flow}
 
+\section{Frequenzanpassung}
+Die Aufgabenstellung die Frequenz f\"ur das blickende Objekt
+zu modifizieren, in unserem Fall auf eine Frequenz von 
+$\frac{1}{0.12}s = 8.333 Hz$ einzustellen.
+
+Dazu mussten wir uns vorerst mit dem gegebenen Sourcecode 
+vertraut machen. Schlie\ss{}lich stellten wir fest, dass der
+Code in der Datei \emph{vga\_control\_arc.vhd} daf\"ur ist,
+genauer gesagt die Konstante \emph{HALFPERIOD}.
+
+Dabei bestimmt \emph{HALFPERIOD} die halbe Periode. Um also auf
+unsere gew\"unschte Periodendauer von $0.12s$ kommen muss diese
+Konstante $0.06s$ ausdr\"ucken. Aber welche Einheit beschreibt
+\emph{HALFPERIOD}? Auf folgenden Wert ist \emph{HALFPERIOD}
+in der Angabe konfiguriert:
+\begin{lstlisting}
+constant HALFPERIOD   : std_logic_vector(TOG_CNT_WIDTH-1 downto 0) := "1100000000010001111011000";
+\end{lstlisting}
+
+wobei ${1100000000010001111011000}_2 = (25175000)_{10} = (18023D8)_{16}$ entspricht.
+
+Weiter unten im Code entdeckt man folgenden Block:
+\begin{lstlisting}
+  BLINKER_syn: process(clk, reset)
+  begin
+    if (reset = RES_ACT) then                       -- asyn reset
+      toggle_counter_sig  <= (others => '0');
+      toggle_sig  <= COLR_OFF;
+    elsif(clk'event and clk = '1') then             -- synchronous capture
+      toggle_counter_sig <= toggle_counter_next;
+      toggle_sig  <= toggle_next;
+    end if;
+  end process;
+
+
+  BLINKER_next : process(toggle_counter_sig, toggle_sig)
+  begin
+    if toggle_counter_sig >= HALFPERIOD then           -- after half period ...
+      toggle_counter_next <= (others => '0');          -- ... clear counter
+      toggle_next  <= not(toggle_sig);                 -- ... and toggle colour.
+    else                                               -- before half period ...
+      toggle_counter_next <= toggle_counter_sig + '1'; -- ... increment counter
+      toggle_next  <= toggle_sig;                      -- ... and hold colour
+    end if;
+  end process;
+\end{lstlisting}
+Wir sehen: bei jedem CLK-Signal ein Counter erh\"oht
+wird -- jener Counter der mit \emph{HALFPERIOD} verglichen wird.
+Daraus k\"onnen wir schliessen, dass \emph{HALFPERIOD} also von
+der eingestellten Taktung abh\"angt. Diese betr\"agt 25.175MHz.
+
+F\"ur unseren gew\"unschten Wert von $0.12s$ muss also folgender
+Wert verwendet werden:
+
+$\frac{25175000Hz}{\frac{1}{0.12s/2}} = \frac{25175000Hz}{16.66667Hz} = 1510500$ Takte.
+
+Bedauerlicherweise mussten wir beim Verfassen dieses Protokolls
+feststellen, dass wir anscheinend von einer Frequenz von 25MHz
+-- warum auch immer -- ausgegangen sind und daher genau
+$1500000$ Takte als Ergebnis bekamen.
+
+Solche Fehler sollten ja \emph{eigentlich} bei der Simulation auffallen.
+Da es sich aber offensichtlich um einen kleinen Fehler handelt
+(10500 Takte entsprechen $417.08\mu s$)
+ist uns das bei der Simulation nicht aufgefallen (vgl. Screenshots).
+
+
+Wie auch immer, fuhren wir mit dem falschen Wert fort. 
+Dieser entspricht einen Bin\"arwert von: $(101101110001101100000)_2$. Diese Wert \"ubernahmen wir:
+\begin{lstlisting}
+constant HALFPERIOD   : std_logic_vector(TOG_CNT_WIDTH-1 downto 0) := "0000101101110001101100000";
+\end{lstlisting}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Design-Flow}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Behavioral Simulation}
+Gl\"ucklicherweise ist unsere Periodendauer f\"ur die Simulation kurz genug und m\"uessen daher unseren Wert nicht skalieren.
+%1behsim.png
+\begin{center}
+\includegraphics[width=\textwidth]{pics/1behsim.png}
+\end{center}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Synthese}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Pre-Layout Simulation}
+%3prelayoutsim.png
+\begin{center}
+\includegraphics[width=\textwidth]{pics/3prelayoutsim.png}
+\end{center}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{PPR}
+%4ppr_auslastung.png
+\begin{center}
+\includegraphics[width=\textwidth]{pics/4ppr_auslastung.png}
+\end{center}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Post-Layout Simulation}
+%5postlayout_sim.png
+\begin{center}
+\includegraphics[width=\textwidth]{pics/5postlayout_sim.png}
+\end{center}
+%5postlayout_vgaunit.png
+\begin{center}
+\includegraphics[width=\textwidth]{pics/5postlayout_vgaunit.png}
+\end{center}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{PPR mit PLL}
+%6pll_auslastung.png
+\begin{center}
+\includegraphics[width=\textwidth]{pics/6pll_auslastung.png}
+\end{center}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Logikanalysator}
+%7logikwave.jpg
+\begin{center}
+\includegraphics[width=\textwidth]{pics/7logikwave.jpg}
+\end{center}
+
+%7trigger.jpg
+\begin{center}
+\includegraphics[width=\textwidth]{pics/7trigger.jpg}
+\end{center}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Ergebnisse}
 \begin{itemize}
-\item Blinkfrequenz =  Hz
+\item Blinkfrequenz = $\frac{1}{0.12}s = 8.33333$ Hz
 \end{itemize}
 
+\begin{center}
+\includegraphics[width=\textwidth]{pics/fertig.jpg}
+\end{center}
+
index da24c18ea44262d3ea51e0d3f15321019a4183a2..314c9d0df6cba5e8bd27378e52f5cb6363b79769 100644 (file)
@@ -1 +1 @@
-blinker_max = ___ ___
+blinker_max = ___8,33___