Skip to content

Commit

Permalink
fix: Lab3 led7 (#26)
Browse files Browse the repository at this point in the history
* fix: lab naming of the tasks and xdc files

* fix: lab 3 led7
  • Loading branch information
sdcioc authored Oct 23, 2024
1 parent 1ba660e commit 23c93c8
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 26 deletions.
2 changes: 1 addition & 1 deletion chapters/verilog/behavioral/assigments/led7/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
Implmentați modulul verilog pentru afisarea 7-led-segment dat prin iesirile o_w_ca, o_w_cb, o_w_cc, o_w_cd, o_w_ce, o_w_cf, o_w_cg pentru 4 cifre ce vor fi selectate in functie de i_w_in.
Implmentați modulul verilog pentru afisarea 7-led-segment dat prin iesirile o_w_ca, o_w_cb, o_w_cc, o_w_cd, o_w_ce, o_w_cf, o_w_cg pentru 4 cifre ce vor fi selectate in functie de i_w_in. Linile cx sunt active pe valoarea 0.
Pentru numarul XYZT, pentru i_w_in=0 se va afisa cifra T, pentru i_w_in=1 cifra Z, pentru i_w_in=2 cifra Y, pentru i_w_in=3 cifra X. apasati run din VPL pentru a afla numarul vostru.
20 changes: 10 additions & 10 deletions chapters/verilog/behavioral/assigments/led7/led7conv.v
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ module led7conv (

always @(*) begin
case (i_w_value)
4'd0: l_r_led7 = 7'b011_1111;
4'd1: l_r_led7 = 7'b000_0110;
4'd2: l_r_led7 = 7'b101_1011;
4'd3: l_r_led7 = 7'b100_1111;
4'd4: l_r_led7 = 7'b110_0110;
4'd5: l_r_led7 = 7'b110_1101;
4'd6: l_r_led7 = 7'b111_1101;
4'd7: l_r_led7 = 7'b000_0111;
4'd8: l_r_led7 = 7'b111_1111;
4'd9: l_r_led7 = 7'b110_0111;
4'd0: l_r_led7 = 7'b100_0000;
4'd1: l_r_led7 = 7'b111_1001;
4'd2: l_r_led7 = 7'b010_0100;
4'd3: l_r_led7 = 7'b011_0000;
4'd4: l_r_led7 = 7'b001_1001;
4'd5: l_r_led7 = 7'b001_0010;
4'd6: l_r_led7 = 7'b000_0010;
4'd7: l_r_led7 = 7'b111_1000;
4'd8: l_r_led7 = 7'b000_0000;
4'd9: l_r_led7 = 7'b001_1000;
default: l_r_led7 = 7'b111_1111;
endcase
end
Expand Down
17 changes: 12 additions & 5 deletions chapters/verilog/behavioral/drills/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,21 @@ Pentru mai multe detalii asupra acestui tip de modul, consultați pagina de [Wik
Soluția se află în repo-ul materiei [GitHub](https://github.com/cs-pub-ro/computer-architecture/tree/main/chapters/verilog/behavioral/drills/tasks).


- Implementați și simulați un **multiplicator pe 4 biți** fără a folosi operatorul * (înmulțire).
1. Implementați și simulați un **multiplicator pe 4 biți** fără a folosi operatorul * (înmulțire).
- _Hint_: Folosiți convenția Verilog pentru interfața modulului. Câți biți are ieșirea?
- _Hint_: Înmulțiți pe hârtie, în baza 2, numerele 1001 și 1011. Transpuneți în limbajul Verilog algoritmul folosit.
- Implementați și simulați un modul de **afișaj cu 7 segmente** pentru numere în baza 10.
2. Implementați și simulați un modul de **afișaj cu 7 segmente** pentru numere în baza 10.
- _Hint_: Există o ieșire validă pentru fiecare intrare? Nu uitați de cazul ''default''.
- _Hint_: Se vor testa doar cifrele de la 0 la 9.
- Implementați o **unitate aritmetico-logică** simplă (UAL), pe **4** biți, cu 2 operații: adunare și înmulțire. Folosiți o intrare de selecție de 1 bit pentru a alege între cele două operații astfel: 0 - adunare, 1 - înmulțire.
3. Implementați o **unitate aritmetico-logică** simplă (UAL), pe **4** biți, cu 2 operații: adunare și înmulțire. Folosiți o intrare de selecție de 1 bit pentru a alege între cele două operații astfel: 0 - adunare, 1 - înmulțire.
- _Hint_: Câți biți au ieșirea sumatorului și a multiplicatorului? Dar a UAL-ului?
- _Hint_: Pentru selecția dintre ieșirea sumatorului și cea a multiplicatorului se poate folosi atribuirea continuă sau se poate implementa un modul multiplexor 2:1
- Pentru o utilizare mai generală, implementați un UAL cu operatori cu dimensiune variabilă.
- _Hint_: Pentru a-l implementa, este necesară implementarea unui multiplicator parametrizat - atenție la dimensiunea semnalelor!
- Pentru o utilizare mai generală, implementați un UAL cu operatori cu dimensiune variabilă.
- _Hint_: Pentru a-l implementa, este necesară implementarea unui multiplicator parametrizat - atenție la dimensiunea semnalelor!

## TEST

1. Implmentați modulul verilog pentru afisarea 7-led-segment dat prin iesirile o_w_ca, o_w_cb, o_w_cc, o_w_cd, o_w_ce, o_w_cf, o_w_cg pentru 4 cifre ce vor fi selectate in functie de i_w_in.
Pentru numarul XYZT, pentru i_w_in=0 se va afisa cifra T, pentru i_w_in=1 cifra Z, pentru i_w_in=2 cifra Y, pentru i_w_in=3 cifra X.

2. Implmentați modulul verilog pentru un ALU (arithmetic logic unit) cu 2 operanzi i_w_op1 și i_w_op2 pe 4 biți fiecare, cu rezultatul pe 4 biți o_w_out și o linie de selecție pe 2 biți a operație i_w_sel.
20 changes: 10 additions & 10 deletions chapters/verilog/behavioral/drills/tasks/led7/led7.v
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ module led7(

always@(*) begin
case(i_w_in)
'd0: l_r_7seg = 7'b011_1111;
'd1: l_r_7seg = 7'b000_0110;
'd2: l_r_7seg = 7'b101_1011;
'd3: l_r_7seg = 7'b100_1111;
'd4: l_r_7seg = 7'b110_0110;
'd5: l_r_7seg = 7'b110_1101;
'd6: l_r_7seg = 7'b111_1101;
'd7: l_r_7seg = 7'b000_0111;
'd8: l_r_7seg = 7'b111_1111;
'd9: l_r_7seg = 7'b110_0111;
4'd0: l_r_7seg = 7'b100_0000;
4'd1: l_r_7seg = 7'b111_1001;
4'd2: l_r_7seg = 7'b010_0100;
4'd3: l_r_7seg = 7'b011_0000;
4'd4: l_r_7seg = 7'b001_1001;
4'd5: l_r_7seg = 7'b001_0010;
4'd6: l_r_7seg = 7'b000_0010;
4'd7: l_r_7seg = 7'b111_1000;
4'd8: l_r_7seg = 7'b000_0000;
4'd9: l_r_7seg = 7'b001_1000;
default: l_r_7seg = 7'b100_0000; //default case -> place "-"
endcase
end
Expand Down

0 comments on commit 23c93c8

Please sign in to comment.