Skip to content

Commit

Permalink
Lab 6 alu (#37)
Browse files Browse the repository at this point in the history
* fix: Lab6 change p_data_width in README to match .v code

* Explained carry/overflow flags for shift ops
  • Loading branch information
VictorCaproiu authored Nov 12, 2024
1 parent c1b9ae4 commit 1c86d0c
Showing 1 changed file with 13 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Vom completa conținutul **modulului alu**, folosind intrările și ieșirile pr

```verilog
module alu #(
parameter p_data_width = 6, // 6 for FPGA testing, 16 for Simulation and inside the CPU
parameter p_data_width = 5, // 5 for FPGA testing, 16 for Simulation and inside the CPU
parameter p_flags_width = 5
)(
output wire [(p_data_width-1):0] o_w_out,
Expand Down Expand Up @@ -69,6 +69,18 @@ Se observă că operațiile logice nu activează semnalele _carry_ și _overflow

De asemenea operația `SAL` lipsește întrucât e identică cu `SHL`.

Operatiile de shift la stanga verifica **MSB**-ul operandului pentru activarea flag-ului _carry_, iar operatiile de shift la dreapta verifica **LSB**-ul.

```verilog
// SHL/SAL
l_r_carry = i_w_op1[p_data_width-1] | i_w_op2[p_data_width - 1];
// SHR/SAR
l_r_carry = i_w_op1[0] | i_w_op2[0];
```

Pentru activarea flagului _overflow_ operatiile de shift verifica schimbarea **MSB**-ului deoarece acesta este _bitul de semn_.

### Zero (Z), Sign (S), Parity (P)

Aceste semnale au aceleași condiții de activare indiferent de operația efectuată. De asemenea paritatea este verificată prin operatorul de reducere _XNOR_.
Expand Down

0 comments on commit 1c86d0c

Please sign in to comment.