Übungsaufgabe 
In dieser Übung wird die Unterteilung in mehrere Komponenten gezeigt.
Vorbereitung 
- Projektordner herunterladen und entpacken
- Projekt
structural.xiseöffnen
Aufgabe 1 - Zeichne eine Schaltung für display.vhd 
In der Datei display.vhd werden die vier 7-Segment Anzeigen angesteuert. Dazu wird das Display mittels "Multiplex" angesteuert, sprich jede einzelne 7-Segment Anzeige ist nur abwechselnd kurze Zeit aktiv. Durch den schnellen Wechsel bekommt das träge Auge des Menschen eine scheinbar "stehende" Anzeige zu sehen.
Aufgabe 2 - CLK_DIVIDER 
CLK_DIVIDER ist ein Generic mit dem eine Komponente parametrisiert werden kann. Erweitere die Einbindung vom display in structural.vhd wie folgt:
display_component: entity work.display generic map ( CLK_DIVIDER => 50000 ) port map ( digit0_i => "0011", digit1_i => "0010", digit2_i => "0001", digit3_i => "0000", clk => clk, segments_o => segments_o, an_o => an_o );
Damit ist die Geschwindigkeit, in der die Anzeigen gemultiplext werden parametrisierbar. Was passiert, wenn CLK_DIVIDER die Werte 50 oder 1 zugewiesen wird? Was bei den Werten eine Million oder 50 Millionen?
Aufgabe 3 - Implementierung eines 16 Bit Zählers 
In der Datei structural.vhd soll ein 16 Bit Zähler implementiert werden, der mit 100 Hertz zählt.
Nutze dazu die signals pre_counter_reg als Vorteiler und counter_reg als 16 Bit Zähler. Die beiden Zähler können mittels zwei process Anweisungen implementiert werden oder auch beide gemeinsam in einer process Anweisung. Im folgenden Beispiel wird auch die Aufteilung des 16 Bit Zählregisters auf die jeweils 4 Bit Eingänge digit0_i bis digit3_i gezeigt.
architecture behave of structural is signal pre_counter_reg : integer range 0 to 500000 := 0; -- 50Mhz/500.000=100Hz signal counter_reg : unsigned(15 downto 0) := (others => '0'); begin -- -- Hier: Implementierung der Zähler -- display_component: entity work.display port map ( digit0_i => std_ulogic_vector(counter_reg(3 downto 0)), digit1_i => std_ulogic_vector(counter_reg(7 downto 4)), digit2_i => std_ulogic_vector(counter_reg(11 downto 8)), digit3_i => std_ulogic_vector(counter_reg(15 downto 12)), clk => clk, segments_o => segments_o, an_o => an_o ); end architecture;
Aufgabe 4 - Rücksetzen des Zählers mittels button_i 
In der Toplevel-Entity ist ein Eingang button_i vorgesehen, der noch nicht verwendet wurde. Beim Drücken des Buttons soll der 16 Bit Zähler zurückgesetzt werden.