This shows you the differences between two versions of the page.
ac-is:teme:tema2 [2022/12/09 21:09] ionut.pascal [Observații] |
ac-is:teme:tema2 [2022/12/23 16:50] (current) ionut.pascal [Tema 2 - Hiding secrets] |
||
---|---|---|---|
Line 3: | Line 3: | ||
* Responsabili: Ionut P, Ovidiu M (checker) | * Responsabili: Ionut P, Ovidiu M (checker) | ||
- | * Deadline soft (fără penalizări): **23.12.2021**, ora **23:59** | + | * Deadline soft (fără penalizări):<del> **23.12.2022**</del> **26.12.2022**, ora **23:59** |
- | * Deadline hard (cu penalizări): **28.12.2021**, ora **23:59** | + | * Deadline hard (cu penalizări): <del>**27.12.2022**</del> **30.12.2022**, ora **23:59** |
* Data publicării: **09.12.2022** | * Data publicării: **09.12.2022** | ||
- | * Data ultimei actualizări: **09.12.2022, 22:00** | + | * Data ultimei actualizări: **23.12.2022, 13:13** |
* Istoric modificări: | * Istoric modificări: | ||
* 09.12.2022 | * 09.12.2022 | ||
* publicare enunț temă | * publicare enunț temă | ||
+ | * 11.12.2022 | ||
+ | * ''[23:0] array [15:0][15:0]'' -> ''[23:0] array [3:0][3:0]'', pentru a reduce riscul de confuzie | ||
+ | * 13.12.2022 | ||
+ | * adăugare checker offline | ||
+ | * modificare punctaj task2 (3.5 -> 3.6) și task3 (2.0 -> 1.9) | ||
+ | * 17.12.2022 | ||
+ | * **Versiune nouă checker offline/online - UPDATE your offline checker** - rezolvă problema semnalată [[https://curs.upb.ro/2022/mod/forum/discuss.php?d=2825 | Aici]] referitoare la parcurgerea șirului de caractere | ||
+ | * 23.12.2022 | ||
+ | * Prelungire deadline soft și deadline hard | ||
===== Obiectiv ===== | ===== Obiectiv ===== | ||
Line 15: | Line 24: | ||
Tema are ca scop exersarea noțiunilor Verilog folosite pentru implementarea circuitelor secvențiale complexe, prin: | Tema are ca scop exersarea noțiunilor Verilog folosite pentru implementarea circuitelor secvențiale complexe, prin: | ||
- | * implementarea unui automat finit complex, pornind de la un algorim dat; | + | * implementarea unui automat finit complex, pornind de la un algoritm dat; |
* interacțiunea cu o memorie exernă, prin operații de citire/scriere; | * interacțiunea cu o memorie exernă, prin operații de citire/scriere; | ||
* interacțiunea cu alte circuite secvențiale, prin folosirea semnalelor de control. | * interacțiunea cu alte circuite secvențiale, prin folosirea semnalelor de control. | ||
Line 36: | Line 45: | ||
- Se calculează media aritmetică $AVG$ $$ AVG = \frac{\sum_{i=1}^{M \cdot M}\mu_i}{M\cdot M} $$ | - Se calculează media aritmetică $AVG$ $$ AVG = \frac{\sum_{i=1}^{M \cdot M}\mu_i}{M\cdot M} $$ | ||
- Se calculează deviația standard $var$ $$ var = \frac{\sum_{i=1}^{M\cdot M}|\mu_i-AVG|}{M\cdot M} $$ | - Se calculează deviația standard $var$ $$ var = \frac{\sum_{i=1}^{M\cdot M}|\mu_i-AVG|}{M\cdot M} $$ | ||
- | - Se construiește un hartă (bitmap 4x4) //aux// după următoarele două reguli: | + | - Se construiește o hartă (bitmap 4x4) //aux// după următoarele două reguli: |
* dacă valoarea pixelului $μ_i < AVG$ atunci $0$ | * dacă valoarea pixelului $μ_i < AVG$ atunci $0$ | ||
* altfel $1$ | * altfel $1$ | ||
Line 50: | Line 59: | ||
<spoiler **Detalierea metodei de integrare a mesajului **> | <spoiler **Detalierea metodei de integrare a mesajului **> | ||
Mesajul ce trebuie secretizat este constituit dintr-un șir de caractere ASCII. Fiecare caracter este codat pe 8 biți. Astfel, în fiecare bloc putem încapsula doar 2 caractere. | Mesajul ce trebuie secretizat este constituit dintr-un șir de caractere ASCII. Fiecare caracter este codat pe 8 biți. Astfel, în fiecare bloc putem încapsula doar 2 caractere. | ||
- | Inițial șirul de biți se va transforma din baza 2 în baza 3. Fiecare valoare $S_j$ va fi integrată în pixelii blocului, exeptând prima valoare $L_m$ și $H_m$. Procedura va fi executată după următorul algoritm: | + | Inițial șirul de biți se va transforma din baza 2 în baza 3. Fiecare valoare $S_j$ va fi integrată în pixelii blocului, exceptând prima valoare $L_m$ și $H_m$. Procedura va fi executată după următorul algoritm: |
<code c> | <code c> | ||
pentru fiecare pixel compresat p[j] din blocul b[i] | pentru fiecare pixel compresat p[j] din blocul b[i] | ||
Line 94: | Line 103: | ||
* ''row'' - selectează un rând din imagine; | * ''row'' - selectează un rând din imagine; | ||
* ''col'' - selectează o coloană din imagine; | * ''col'' - selectează o coloană din imagine; | ||
- | * ''we'' - write enable - activează scrierea în imagine la rândul și coloana date); | + | * ''we'' - write enable - activează scrierea în imagine la rândul și coloana date; |
* ''in'' - valoarea pixelului care va fi scris pe poziția dată; | * ''in'' - valoarea pixelului care va fi scris pe poziția dată; | ||
* ''out'' - valoarea pixelului care va fi citit de pe pozitia dată. | * ''out'' - valoarea pixelului care va fi citit de pe pozitia dată. | ||
Line 140: | Line 149: | ||
==== base2_to_base3 ==== | ==== base2_to_base3 ==== | ||
- | Modul deja implementat, responsabil cu executarea algoritmul de transformare din baza 2 în baza 3. | + | Modul deja implementat, responsabil cu executarea algoritmului de transformare din baza 2 în baza 3. |
Modulul are următoarea interfață: | Modulul are următoarea interfață: | ||
Line 166: | Line 175: | ||
===== Observații ===== | ===== Observații ===== | ||
- | * Operația de citite este asincronă, operația de scriere este sincronă; nu se poate executa mai mult de o operație într-un ciclu de ceas. | + | * Operația de citire este asincronă, operația de scriere este sincronă; nu se poate executa mai mult de o operație într-un ciclu de ceas. |
- | * Nu este permisă cache-uirea întregii imagini (citirea și salvarea acesteia în cadrul modulului pentru procesare ulterioară). Pentru procesare sunt permise **maxim** 3 blocuri de tip ''[23:0] array [15:0][15:0]'', dacă considerați necesar; motivați folosirea lor. | + | * Nu este permisă cache-uirea întregii imagini (citirea și salvarea acesteia în cadrul modulului pentru procesare ulterioară). Pentru procesare sunt permise **maxim** 3 blocuri de tip ''[23:0] array [3:0][3:0]'', dacă considerați necesar; motivați folosirea lor. |
* Semnalele ''gray_done'', ''compress_done'' și ''encode_done'' trebuie să mențină valoarea HIGH timp de **un ciclu de ceas** pentru a putea fi luate în considerare de tester. În acest ciclu de ceas nu veți face alte procesări și nu veți începe rezolvarea următorului task. | * Semnalele ''gray_done'', ''compress_done'' și ''encode_done'' trebuie să mențină valoarea HIGH timp de **un ciclu de ceas** pentru a putea fi luate în considerare de tester. În acest ciclu de ceas nu veți face alte procesări și nu veți începe rezolvarea următorului task. | ||
Line 175: | Line 184: | ||
* În [[ac-is:teme:tema2#Resurse|resursele]] temei există scheletul ce conține toate modulele necesare; | * În [[ac-is:teme:tema2#Resurse|resursele]] temei există scheletul ce conține toate modulele necesare; | ||
* Arhiva temei (de tip **zip**) trebuie să cuprindă în rădăcina sa (//fără alte directoare//) **doar**: | * Arhiva temei (de tip **zip**) trebuie să cuprindă în rădăcina sa (//fără alte directoare//) **doar**: | ||
- | * fișierul sursă process.v (prezent în schelet); | + | * fișierul sursă **process.v** (prezent în schelet); |
* alte fișiere sursă adiționale (*.v) definite de utilizator; | * alte fișiere sursă adiționale (*.v) definite de utilizator; | ||
* fișierul README. | * fișierul README. | ||
- | * Arhiva __**nu**__ trebuie să conțină fișierele sursă (*.v) din schelet (ele sunt deja integrate în tester), fișiere de test, fișiere specifice proiectelor etc. | + | * Arhiva __**nu**__ trebuie să conțină fișierele sursă implmenentate (*.v) din schelet (ele sunt deja integrate în tester), fișiere de test, fișiere specifice proiectelor etc. |
* Fișierului README va conține minim: | * Fișierului README va conține minim: | ||
* numele și grupa; | * numele și grupa; | ||
Line 192: | Line 201: | ||
* +10 pct: implementarea corectă | * +10 pct: implementarea corectă | ||
* 4.5 pct: implementarea transformării grayscale | * 4.5 pct: implementarea transformării grayscale | ||
- | * 3.5 pct: implementarea AMBTC | + | * 3.6 pct: implementarea AMBTC |
- | * 2.0 pct: implementarea codării mesajului | + | * 1.9 pct: implementarea codării mesajului |
* +1 pct: fiecare bug găsit în implementarea de referință - cea din tester - (se acordă primei persoane care-l semnalează); | * +1 pct: fiecare bug găsit în implementarea de referință - cea din tester - (se acordă primei persoane care-l semnalează); | ||
* **-1.5pct: folosirea intregii imagini cache-uite pentru fiecare subpunct. (max -4pct dacă imaginea este cache-uită pentru toate subpunctele);** | * **-1.5pct: folosirea intregii imagini cache-uite pentru fiecare subpunct. (max -4pct dacă imaginea este cache-uită pentru toate subpunctele);** | ||
Line 212: | Line 221: | ||
===== Resurse ===== | ===== Resurse ===== | ||
* **Schelet** - {{:ac-is:teme:tema2:tema2_skel.zip| skel}} | * **Schelet** - {{:ac-is:teme:tema2:tema2_skel.zip| skel}} | ||
- | * **Tester** - {{:ac-is:teme:tema2:tester_tema2.zip| Tester offline}} | + | * **Tester** - {{:ac-is:teme:tema2:tester_tema2.zip| Tester offline - updated 17.12.2022}} |
* **Articol** - {{:ac-is:teme:tema2:articol.pdf|An AMBTC compression based data hiding scheme using pixel value adjusting strategy}} | * **Articol** - {{:ac-is:teme:tema2:articol.pdf|An AMBTC compression based data hiding scheme using pixel value adjusting strategy}} | ||
| |