---
# System prepended metadata

title: Lab4

---

---
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.