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