--- title: Lab4 --- <div style="height: 1000px; padding-top: 200px"> <center><p style="font-size: 40px; font-weight: 600">Laboratorieøving 4</p></center> <center><p style="font-size: 30px">Realisering av enkel digital elektronikk vhja. verktøyet Systemgenerator.</p></center> <center><p style="font-size: 20px">Gruppe: SA</p></center> <center><p style="font-size: 20px">Erik Martin (250660)</p></center> <center><p style="font-size: 20px">Tormod Kvam (250612)</p></center> </div> # Laboratorieøving 4 ## Innholdsliste [TOC] ## Fase 1: Oppstart **Deloppgåvenr:** 6.1 **Dato:** 16.10.2022 **Navn:** Oppstart / Oppsett av et enkelt bryter eksempel **Funksjon:** Kontroll av lysdiode ved hjelp av bryter på zedboard **Framgangsmåte for utføring:** 1. Opprett prosjektmappe 2. Start ogg *System Generator 19.1* 3. Opprett mappen `led_strying_SA` 4. Legg inn *System Generator* blokken og konfigurer den 5. Legg til og konfigurer standard inn- og utblokker 6. Generer VHDL koden 7. Åpne filen i *Vivado* 8. Bygg og last opp koden til *ZedBoard*-et 9. Sjekk om det virker **Resultat:** * SSG-skjema * ![](https://i.imgur.com/eZaTR1J.png) > * Filinnhold i led_styring_SA_clock.xdc * ``` set_property PACKAGE_PIN F22 [get_ports sw0[0]] set_property IOSTANDARD LVCMOS33 [get_ports sw0[0]] set_property PACKAGE_PIN U14 [get_ports ld7[0]] set_property IOSTANDARD LVCMOS33 [get_ports ld7[0]] ``` > Innholdet i fila led_styring_SA_clock.xdc * Vivado-skjemaet * ![](https://i.imgur.com/uGXZrrH.png) > Skjemaet generert av *Vivado* fra VHDL koden gitt av *System Generator* * Bufferet på inngangssiden kan regulere ned styrken på strømmen fra utgangssiden. * Bufferet på utgangen er for å regulere kapasiteten etter det har gått igjennom en logikkblokk. * Når bryteren er mot kanten, vil nivået være høyt (Fordi da er lysdioden av). ## Del B: Realisering av bildørlogikken basert på logisk skjema **Deloppgåvenr:** 6.2 **Dato:** 16.10.2022 **Navn:** Realisering av bildørlogikken basert på logisk skjema **Funksjon:** Simulere bildørlogikk vhja. *ZedBoard* **Framgangsmåte for utføring:** 1. Opprett prosjektmappe 2. Start opp *System Generator 19.1* 3. Opprett mappen `bildoerlogikk_skjema_SA` 4. Legg inn *System Generator* blokken og konfigurer den 5. Legg til og konfigurer standard inn- og utblokker 6. Generer VHDL koden 7. Åpne filen i *Vivado* 8. Bygg og last opp koden til *ZedBoard*-et 9. Sjekk om det virker **Resultat:** * SSG-skjema * ![](https://i.imgur.com/SSExcOt.png) > Oppsettet av bildør logikken i simulink. > Her er det koblet til 3 brytere (inngangssignaler) til en *NAND*-blokk med 3 inngangsporter. Dette er deretter koblet til en utgangsport som går til en lysdiode. * Vivado-skjemaet * ![](https://i.imgur.com/4vtMqrY.png) > Skjemaet generert av *Vivado* fra VHDL koden gitt av *System Generator* * | $S1$ | $S2$ | $S3$ | $L1$ | $\overline{L1}$ | |:----:| ---- | ---- | ---- | --------------- | | 0 | 0 | 0 | 1 | 0 | | 0 | 0 | 1 | 1 | 0 | | 0 | 1 | 0 | 1 | 0 | | 0 | 1 | 1 | 1 | 0 | | 1 | 0 | 0 | 1 | 0 | | 1 | 0 | 1 | 1 | 0 | | 1 | 1 | 0 | 1 | 0 | | 1 | 1 | 1 | 0 | 1 | > L1: 0 betyr lyset er *av*, 1 betyr lyset er *på* > SX: 0 betyr døren er *åpen*, 1 betyr døren er *lukket* * ``` set_property PACKAGE_PIN F22 [get_ports sw0[0]] set_property IOSTANDARD LVCMOS33 [get_ports sw0[0]] set_property PACKAGE_PIN G22 [get_ports sw1[0]] set_property IOSTANDARD LVCMOS33 [get_ports sw1[0]] set_property PACKAGE_PIN H22 [get_ports sw2[0]] set_property IOSTANDARD LVCMOS33 [get_ports sw2[0]] set_property PACKAGE_PIN U14 [get_ports ld7[0]] set_property IOSTANDARD LVCMOS33 [get_ports ld7[0]] ``` > Innholdet i fila bildoerlogikk_skjema_SA_clock.xdc **Analyse og konklusjon** Simulink ga muligheten til å lage en nand blokk med flere innganger. Dette ga enklere logikk enn å koble sammen flere to-inngangs nand-blokker. ## Del C: Realisering av bildørlogikken basert på VHDL-kode **Deloppgåvenr:** 6.3 **Dato:** 16.10.2022 **Navn:** Oppstart / Oppsett av et bryter eksempel ved hjelp av kode. **Funksjon:** Kontroll av lysdiode ved hjelp av brytere på zedboard **Framgangsmåte for utføring:** 1. Opprett prosjektmappe 2. Start ogg *System Generator 19.1* 3. Opprett mappen `bildoerlogikk_vhdl_SA` 4. Legg inn *System Generator* blokken og konfigurer den 5. Legg til og konfigurer standard inn- og utblokker 6. Generer VHDL koden 7. Åpne filen i *Vivado* 8. Bygg og last opp koden til *ZedBoard*-et 9. Sjekk om det virker **Resultat:** * ``` -- Først deklarasjon av bibliotek library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Portdeklarasjon entity NOG is -- Oppsett av inngangar og utgang port (S1, S2, S3: in std_logic; L1 : out std_logic); end NOG; -- Deklarasjon av funksjon/oppførsel til porten architecture behavioral of NOG is begin L1 <= not (S1 and S2 and S3); end behavioral; ``` > Logisk funksjon fra funksjonstabellen gitt i **Del B** over er: $\overline{L1} = S1\cdot S2\cdot S3 \Longrightarrow \overline{\overline{L1}} = \overline{S1}\cdot \overline{S2}\cdot \overline{S3} \Longrightarrow L1 = \overline{S1}\cdot \overline{S2}\cdot \overline{S3} = \overline{S1\cdot S2\cdot S3} \Longrightarrow$ `not (S1 and S2 and S3)` * SSG-skjema * ![](https://i.imgur.com/8e3F0A2.png) > Her er det koblet til 3 brytere (inngangssignaler) til en *NAND*-blokk, generert fra VHDL kode. Denne har 3 inngangsporter og en utgangsport som går til en lysdiode. * Vivado-skjemaet * ![](https://i.imgur.com/EjcwO8j.png) > Skjemaet generert av *Vivado* fra VHDL koden gitt av *System Generator* * ``` set_property PACKAGE_PIN F22 [get_ports sw0[0]] set_property IOSTANDARD LVCMOS33 [get_ports sw0[0]] set_property PACKAGE_PIN G22 [get_ports sw1[0]] set_property IOSTANDARD LVCMOS33 [get_ports sw1[0]] set_property PACKAGE_PIN H22 [get_ports sw2[0]] set_property IOSTANDARD LVCMOS33 [get_ports sw2[0]] set_property PACKAGE_PIN U14 [get_ports ld7[0]] set_property IOSTANDARD LVCMOS33 [get_ports ld7[0]] ``` > Innholdet i fila bildoerlogikk_vhdl_SA_clock.xdc **Analyse og konklusjon** I stedet for å bruke nand-blokk, kunne vi bruke en black-box blokk som er en generisk logikkblokk som vi har programmert med vhdl.