267259983d507eeefd7efd979ab0adc8fb857a8f
[dide_16.git] / bsp2 / Protokolle / chapter2.tex
1 \chapter{Design-Flow}
2
3 \section{Frequenzanpassung}
4 Die Aufgabenstellung die Frequenz f\"ur das blickende Objekt
5 zu modifizieren, in unserem Fall auf eine Frequenz von 
6 $\frac{1}{0.12}s = 8.333 Hz$ einzustellen.
7
8 Dazu mussten wir uns vorerst mit dem gegebenen Sourcecode 
9 vertraut machen. Schlie\ss{}lich stellten wir fest, dass der
10 Code in der Datei \emph{vga\_control\_arc.vhd} daf\"ur ist,
11 genauer gesagt die Konstante \emph{HALFPERIOD}.
12
13 Dabei bestimmt \emph{HALFPERIOD} die halbe Periode. Um also auf
14 unsere gew\"unschte Periodendauer von $0.12s$ kommen muss diese
15 Konstante $0.06s$ ausdr\"ucken. Aber welche Einheit beschreibt
16 \emph{HALFPERIOD}? Auf folgenden Wert ist \emph{HALFPERIOD}
17 in der Angabe konfiguriert:
18 \begin{lstlisting}
19 constant HALFPERIOD   : std_logic_vector(TOG_CNT_WIDTH-1 downto 0) := "1100000000010001111011000";
20 \end{lstlisting}
21
22 wobei ${1100000000010001111011000}_2 = (25175000)_{10} = (18023D8)_{16}$ entspricht.
23
24 Weiter unten im Code entdeckt man folgenden Block:
25 \begin{lstlisting}
26   BLINKER_syn: process(clk, reset)
27   begin
28     if (reset = RES_ACT) then                       -- asyn reset
29       toggle_counter_sig  <= (others => '0');
30       toggle_sig  <= COLR_OFF;
31     elsif(clk'event and clk = '1') then             -- synchronous capture
32       toggle_counter_sig <= toggle_counter_next;
33       toggle_sig  <= toggle_next;
34     end if;
35   end process;
36
37
38   BLINKER_next : process(toggle_counter_sig, toggle_sig)
39   begin
40     if toggle_counter_sig >= HALFPERIOD then           -- after half period ...
41       toggle_counter_next <= (others => '0');          -- ... clear counter
42       toggle_next  <= not(toggle_sig);                 -- ... and toggle colour.
43     else                                               -- before half period ...
44       toggle_counter_next <= toggle_counter_sig + '1'; -- ... increment counter
45       toggle_next  <= toggle_sig;                      -- ... and hold colour
46     end if;
47   end process;
48 \end{lstlisting}
49 Wir sehen: bei jedem CLK-Signal ein Counter erh\"oht
50 wird -- jener Counter der mit \emph{HALFPERIOD} verglichen wird.
51 Daraus k\"onnen wir schliessen, dass \emph{HALFPERIOD} also von
52 der eingestellten Taktung abh\"angt. Diese betr\"agt 25.175MHz.
53
54 F\"ur unseren gew\"unschten Wert von $0.12s$ muss also folgender
55 Wert verwendet werden:
56
57 $\frac{25175000Hz}{\frac{1}{0.12s/2}} = \frac{25175000Hz}{16.66667Hz} = 1510500$ Takte.
58
59 Bedauerlicherweise mussten wir beim Verfassen dieses Protokolls
60 feststellen, dass wir anscheinend von einer Frequenz von 25MHz
61 -- warum auch immer -- ausgegangen sind und daher genau
62 $1500000$ Takte als Ergebnis bekamen.
63
64 Solche Fehler sollten ja \emph{eigentlich} bei der Simulation auffallen.
65 Da es sich aber offensichtlich um einen kleinen Fehler handelt
66 (10500 Takte entsprechen $417.08\mu s$)
67 ist uns das bei der Simulation nicht aufgefallen (vgl. Screenshots).
68
69
70 Wie auch immer, fuhren wir mit dem falschen Wert fort. 
71 Dieser entspricht einen Bin\"arwert von: $(101101110001101100000)_2$. Diese Wert \"ubernahmen wir:
72 \begin{lstlisting}
73 constant HALFPERIOD   : std_logic_vector(TOG_CNT_WIDTH-1 downto 0) := "0000101101110001101100000";
74 \end{lstlisting}
75
76
77
78 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
79 \section{Design-Flow}
80
81 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
82 \subsection{Behavioral Simulation}
83 Gl\"ucklicherweise ist unsere Periodendauer f\"ur die Simulation kurz genug und m\"uessen daher unseren Wert nicht skalieren.
84 %1behsim.png
85 \begin{center}
86 \includegraphics[width=\textwidth]{pics/1behsim.png}
87 \end{center}
88
89
90 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
91 \subsection{Synthese}
92
93
94 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
95 \subsection{Pre-Layout Simulation}
96 %3prelayoutsim.png
97 \begin{center}
98 \includegraphics[width=\textwidth]{pics/3prelayoutsim.png}
99 \end{center}
100
101
102 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
103 \subsection{PPR}
104 %4ppr_auslastung.png
105 \begin{center}
106 \includegraphics[width=\textwidth]{pics/4ppr_auslastung.png}
107 \end{center}
108
109
110 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
111 \subsection{Post-Layout Simulation}
112 %5postlayout_sim.png
113 \begin{center}
114 \includegraphics[width=\textwidth]{pics/5postlayout_sim.png}
115 \end{center}
116 %5postlayout_vgaunit.png
117 \begin{center}
118 \includegraphics[width=\textwidth]{pics/5postlayout_vgaunit.png}
119 \end{center}
120
121
122 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
123 \subsection{PPR mit PLL}
124 %6pll_auslastung.png
125 \begin{center}
126 \includegraphics[width=\textwidth]{pics/6pll_auslastung.png}
127 \end{center}
128
129
130 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
131 \section{Logikanalysator}
132 %7logikwave.jpg
133 \begin{center}
134 \includegraphics[width=\textwidth]{pics/7logikwave.jpg}
135 \end{center}
136
137 %7trigger.jpg
138 \begin{center}
139 \includegraphics[width=\textwidth]{pics/7trigger.jpg}
140 \end{center}
141
142
143 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
144 \section{Ergebnisse}
145 \begin{itemize}
146 \item Blinkfrequenz = $\frac{1}{0.12}s = 8.33333$ Hz
147 \end{itemize}
148
149 \begin{center}
150 \includegraphics[width=\textwidth]{pics/fertig.jpg}
151 \end{center}
152