Skip to content

Commit

Permalink
Laborator 1 și Tutorial Docker Windows (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
sdcioc authored Oct 6, 2024
1 parent 8b05490 commit 4da755e
Show file tree
Hide file tree
Showing 61 changed files with 464 additions and 124 deletions.
11 changes: 6 additions & 5 deletions chapters/grading/grading.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,27 @@
- 10p Tema (bonus)

### Promovare:
- minim 25p laborator
- minim 25p examen final
- Minim 25p Laborator
- Minim 50p Total

### Test circuite combinaționale
- Materia necesară: laborataorele 1,2 și 3
- Materia necesară: laboratoarele 1,2 și 3
- Durată: 60 de minute
- Când: la începutul laboratorului 4
- Strcutură: 3 exerciții practice de implementat în verilog
- Locație: sala de laborator
- Platformă: Calculator Laborator - Safe Exam Browser - Moodle - VPL

### Test circuite secvențiale
- Materia necesară: laborataorele 4,5 și 6
- Materia necesară: laboratoarele 4,5 și 6
- Durată: 60 de minute
- Când: la începutul laboratorului 7
- Strcutură: 3 exerciții practice de implementat în verilog
- Locație: sala de laborator
- Platformă: Calculator Laborator - Safe Exam Browser - Moodle - VPL

### Colocviu final calculator didactic
- Materia necesară: toate laborataorele
- Materia necesară: toate laboratoarele
- Durată: 120 de minute
- Când: la ultimul laborator
- Strcutură:
Expand All @@ -41,6 +41,7 @@
- Durată: Întreg semestrul cu termen limită începutul ultimii săptămâni de laborator
- Platformă: Moodle - VPL
- Punctaj: Se va adăuga punctajului de laborator (nu se ia în considerare la punctajul minim)
- Punctaj: Punctajul total de laborator se trunchează la 50 de puncte.

### Examen Final (AB)
- Platformă: Moodle - VPL/Quiz
Expand Down
33 changes: 33 additions & 0 deletions chapters/guides/docker/linux/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Utilizare imagine docker Linux

## Cerințe necesare

## Rulare

### Opțiunea 1 din Visual Studio Code

1. Deschideți directorul repo-ului în Visual Studio Code.
```bash
code computer-architecture
```

2. Instalați extensia [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).

3. După veți avea opțiunea "Dev Containers: Reopen in container" (`CTRL+SHIFT+P`).

### Opțiunea 2 prin docker

1. Descărcați imaginea cu docker
```bash
docker pull gitlab.cs.pub.ro:5050/ac/ac-public/vivado-slim:1.0.0
```

2. Rulați un container cu imaginea
```bash
docker run --rm -it -v /dev:/dev gitlab.cs.pub.ro:5050/ac/ac-public/vivado-slim:1.0.0 /bin/bash
```

3. Rulați vivado din imagine
```bash
vivado
```
Binary file added chapters/guides/docker/media/installxlaunch1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/installxlaunch2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/installxlaunch3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/installxlaunch5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/installxlaunch6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/installxlaunch7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/installxlaunch8.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/runxlaunch1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/runxlaunch2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/runxlaunch3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/guides/docker/media/runxlaunch4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
116 changes: 116 additions & 0 deletions chapters/guides/docker/windows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# Utilizare imagine docker Windows

## Cerințe necesare

### WSL

1. Deschideți meniul Start și tastați "Windows features" în bara de căutare și faceți clic pe "Turn Windows Features On or Off".

2. Bifați casetele "Windows Subsystem for Linux" și "Virtual Machine Platform" și apăsați butonul "OK".

3. Când operațiunea este completă, vi se va cere să reporniți computerul.

4. Instalați distribuția dorită din command prompt:
```bash
wsl --install -d Ubuntu-22.04
```

Alt tutorial [Ubuntu](https://linuxconfig.org/ubuntu-22-04-on-wsl-windows-subsystem-for-linux)

### Docker Desktop

Instalare [Docker Desktop](https://www.docker.com/products/docker-desktop/).

### Instalre XLaunch

1. Descărcați [Xming X Server](http://www.straightrunning.com/XmingNotes/) - Public Domain Releases

![installxlaunch1](../media/installxlaunch1.png)

2. Deschideți installer-ul și apăsați butonul "Next".

![installxlaunch2](../media/installxlaunch2.png)

3. Apăsați butonul "Next".

![installxlaunch3](../media/installxlaunch3.png)

4. Apăsați butonul "Next".

![installxlaunch4](../media/installxlaunch4.png)

5. Apăsați butonul "Next".

![installxlaunch5](../media/installxlaunch5.png)

6. Selectați "Create a desktop icon for XLaunch" și apăsați butonul "Next".

![installxlaunch6](../media/installxlaunch6.png)

7. Apăsați butonul "Install".

![installxlaunch7](../media/installxlaunch7.png)

8. Apăsați butonul "Finish".

![installxlaunch8](../media/installxlaunch8.png)

### Visual Studio Code

Descărcați și instalați [Visual Studio Code](https://code.visualstudio.com/download)

### Clonați repo-ul materiei

```bash
git clone https://github.com/cs-pub-ro/computer-architecture.git
```

## Rulare

### Porniți XLaunch
1. Deschideți XLaunch (Desktop sau Start Menu)

2. Selectați opțiunile pentru Disaply și apăsați butonul "Next".

![runxlaunch1](../media/runxlaunch1.png)

3. Selectați "Start no client" și apăsați butonul "Next".

![runxlaunch2](../media/runxlaunch2.png)

4. Selectați "No access control" și apăsați butonul "Next".

![runxlaunch3](../media/runxlaunch3.png)

5. Apăsați butonul "Finish".

![runxlaunch4](../media/runxlaunch4.png)


### Opțiunea 1 din Visual Studio Code

1. Deschideți directorul repo-ului în Visual Studio Code.
```bash
code computer-architecture
```

2. Instalați extensia [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).

3. După veți avea opțiunea "Dev Containers: Reopen in container" (`CTRL+SHIFT+P`).

### Opțiunea 2 prin docker

1. Descărcați imaginea cu docker
```bash
docker pull gitlab.cs.pub.ro:5050/ac/ac-public/vivado-slim:1.0.0
```

2. Rulați un container cu imaginea
```bash
docker run --rm -it -v /dev:/dev gitlab.cs.pub.ro:5050/ac/ac-public/vivado-slim:1.0.0 /bin/bash
```

3. Rulați vivado din imagine
```bash
vivado
```
Empty file added chapters/intro/.gitignore
Empty file.
4 changes: 4 additions & 0 deletions chapters/intro/soc/media/app-os-cpu-interaction.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added chapters/intro/soc/media/cpu-internals.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions chapters/intro/soc/reading/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Template Chapter

This is an instance of a lab placeholder.
This will be used to showcase the different highlights of the syntax.

This is another sentence

In order to use links to to outside resources, you can add them as [such](http://example.com).

This is a list of all the best cuisines in the world
- Indian
- Italian
- French

In order to make emphasize keywords, you can use **bold** words.
To suggest a more metaphorical and less literal meaning of a phrase, you can use _italic_ words.

## Section the first

For each skill learned in the lab, you will use a subsection which will touch up on new concepts.

For integrating figures, you will use `![Example SVG](../media/app-os-cpu-interaction.svg)`.

![Example SVG](../media/app-os-cpu-interaction.svg)
3 changes: 3 additions & 0 deletions chapters/intro/soc/slides/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/slides.md
/_site/
/media/
35 changes: 35 additions & 0 deletions chapters/intro/soc/slides/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
RVMD = reveal-md
MDPP = markdown-pp
FFMPEG = ffmpeg

SLIDES ?= slides.mdpp
SLIDES_OUT ?= slides.md
MEDIA_DIR ?= ../media
SITE ?= _site
OPEN ?= xdg-open

.PHONY: all html clean videos

all: videos html

html: $(SITE)

$(SITE): $(SLIDES)
$(MDPP) $< -o $(SLIDES_OUT)
$(RVMD) $(SLIDES_OUT) --static $@

videos:
test -z $(TARGETS) || for TARGET in $(TARGETS); do \
$(FFMPEG) -framerate 0.5 -f image2 -y \
-i "$(MEDIA_DIR)/$$TARGET/$$TARGET-%d.svg" -vf format=yuv420p $(MEDIA_DIR)/$$TARGET-generated.gif; \
done

open: $(SITE)
$(OPEN) $</index.html

clean:
-rm -f $(MEDIA_DIR)/*-generated.gif
-rm -fr media/
-rm -fr $(SITE)
-rm -f $(SLIDES_OUT)
-rm -f *~
28 changes: 28 additions & 0 deletions chapters/intro/soc/slides/content.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

#### Structură Calculator Numeric

![Model general calculator numeric](media/mgcn.png)

----

![Model structural calculator numeric](media/mscn.png)

----

![Structură calculator numeric](media/scn.png)

----

![Structură bloc calculator numeric](media/sbcn.png)

---

#### Transfer memorie

- Programat
- Prin access direct la memorie
- Prin canal I/E

---

#### Modelul funcțional al unui Calcualtor Numeric
41 changes: 41 additions & 0 deletions chapters/intro/soc/slides/intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
## Arhitectura Calculatoarelor (seria AB)

### Ștefan Dan Ciocîrlan

---

<!-- ### Biografie
- Licență: UPB-ACS/IPP-ENSTA "Interacțiunea om-robot într-un context de asistență socială"
- Disertație: UPB-ACS/IPP-ENSTA "Social engineering attack using humanoid robots"
- Doctorat: UPB-ACS/NUS "Number representation systems in computer engineering"
- Post-Doctorat: NUS "Singapore Blockchain Innovation Programme"
- Proiecte: CuEVM, NRSL/HNRSL, ENRICHME
--- -->

### Cuprins materie

0. Introducere
1. Structură Calculator Numeric
2. Reprezentarea și prelucrarea informației
3. Memorii
4. UAL
5. Arhitectura Calculatorului Didactic
6. Limbaje de asamblare
7. Subsistem intrare/ieșire
8. Întreruperi
9. Microprogramare

---

### Obiectivele materiei

- Cultură generală despre arhitectura calculatoarelor
- Reprezentarea informației
- Memorii
- Seturi de instrucțiuni
- Codificare instrucțiuni
- Limbaj de asamblare
- Întreruperi de procesor
- Descriere hardware a unui procesor prin limbajul Verilog
15 changes: 15 additions & 0 deletions chapters/intro/soc/slides/slides.mdpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
title: "Computer Architecture: 0 Introduction"
revealOptions:
background-color: 'white'
transition: 'none'
slideNumber: true
autoAnimateDuration: 0.0
---

!INCLUDE "intro.md"

---

!INCLUDE "content.md"

39 changes: 34 additions & 5 deletions chapters/verilog/basic/drills/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Practice: Basic structural
- Simulați un **sumator elementar complet**, utilizând sumatoare elementare parțiale.
- Simulați un **sumator pe 4 biți**, cu două intrări și două ieșiri. Verificați corectitudinea sumatorului vizualizând semnalele în baza 10.
- Simulați un **sumator pe 6 biți**, cu două intrări și o ieșire.
- Simulați un **comparator** pe un bit. Acesta are două intrări și 3 ieșiri (pentru mai mic, egal și mai mare).
# Practică:

## 1. **Sumator elementar complet**, utilizând sumatoare elementare parțiale.
Soluția se află în repo-ul materiei [GitHub](https://github.com/cs-pub-ro/computer-architecture/tree/main/chapters/verilog/basic/drills/tasks/fulladder). Implementarea unui sumatoar elementar parțial se poate găsi în fișierul `halfadder.v`, iar sumator elementar complet în `fulladder.v`. Observați modul în care sunt declarate sumatoarele elementare partțiale.
```verilog
halfadder l_m_halfadder_0( .o_w_s(l_w_s0), .o_w_cout(l_w_c0), .i_w_a(i_w_a), .i_w_b(i_w_b) );
halfadder l_m_halfadder_1( .o_w_s(o_w_s), .o_w_cout(l_w_c1), .i_w_a(i_w_cin), .i_w_b(l_w_s0) );
```
Pentru a crea proiectul putem folosi comanda ```make build```. Pentru simulare ```make simluation``` și pentru a deschide întreg proiectul în vivado și a avea posibilitatea de a încărca pe FPGA ```make vivado```.

## 2. **Sumator pe 4 biți**, cu două intrări și două ieșiri.
Soluția se află în repo-ul materiei [GitHub](https://github.com/cs-pub-ro/computer-architecture/tree/main/chapters/verilog/basic/drills/tasks/adder_4bits). Rulați simulare (```make simluation```) și verificați corectitudinea sumatorului vizualizând semnalele în baza 10.

## 3. **Sumator pe 6 biți**, cu două intrări și o ieșire.
Soluția se află în repo-ul materiei [GitHub](https://github.com/cs-pub-ro/computer-architecture/tree/main/chapters/verilog/basic/drills/tasks/adder_6bits). Încărcați programul pe FPGA (```make vivado```), urmărind ghidul.

## 4. **Comparator** pe un bit.
Acesta are două intrări și 3 ieșiri (pentru mai mic, egal și mai mare). Soluția se află în repo-ul materiei [GitHub](https://github.com/cs-pub-ro/computer-architecture/tree/main/chapters/verilog/basic/drills/tasks/comparator). Simulați și încărcați pe FPGA.

## Test
Aveți următorul tabel de adevăr:

| a | b | c | f |
| - | - | - | - |
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 0 |

Intrările sun `a`, `b`, `c` iar ieșirea este `f`. Implementați modulul verilog este definit de acest tabel de adevăr.
Loading

0 comments on commit 4da755e

Please sign in to comment.