Advertisement
kekellner

ALU.v

Nov 16th, 2024
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module ALU (
  2.     input [7:0] Rd,
  3.     input [7:0] RrK,
  4.     input [2:0] F,
  5.     output [7:0] Y,
  6.     output Z,
  7.     output C
  8. );
  9.     reg _Z, _C;
  10.     reg [8:0] _Y;
  11.  
  12.     parameter _pasaRrk = 3'b000;
  13.     parameter _suma = 3'b001;
  14.     parameter _and = 3'b010;
  15.     parameter _resta = 3'b011;
  16.     parameter _xor = 3'b100;
  17.     parameter _pasaRd = 3'b101;
  18.     parameter _or = 3'b110;
  19.  
  20.     always @(Rd, RrK, F) begin
  21.         case (F)
  22.             // Dejar pasar
  23.             _pasaRrk: _Y = RrK;
  24.             _suma:    _Y = Rd + RrK;
  25.             _and:     _Y = Rd & RrK;
  26.             _resta:   _Y = Rd - RrK;
  27.             _xor:     _Y = Rd ^ Rd;
  28.             _pasaRd:  _Y = Rd;
  29.             _or:      _Y = Rd | RrK;
  30.             default:  _Y = 8'b0;
  31.         endcase
  32.     end
  33.  
  34.     assign Y = _Y;
  35.     assign Z = ~_Y[7] & ~_Y[6] & ~_Y[5] & ~_Y[4] & ~_Y[3] & ~_Y[2] & ~_Y[1] & ~_Y[0];
  36.     assign C = _Y[8];
  37. endmodule
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement