blob: 1048f378e2a092c8c5de0659d2a80079f15ae4fe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// nandgame ALU
`timescale 1us/1us
`include "nandgame_types.v"
`include "arith_unit.sv"
`include "logic_unit.sv"
module alu #(
parameter DATA_WIDTH = 16
) (
input [(DATA_WIDTH-1):0] X,
input [(DATA_WIDTH-1):0] Y,
input logic u,
input logic [1:0] opcode,
input logic zx,
input logic sw,
output logic [(DATA_WIDTH-1):0] RES
);
logic [(DATA_WIDTH-1):0] MyX = zx ? 0 : sw ? Y : X;
logic [(DATA_WIDTH-1):0] MyY = sw ? X : Y;
logic [(DATA_WIDTH-1):0] MyResA;
logic [(DATA_WIDTH-1):0] MyResL;
arith_unit au (
.X(MyX),
.Y(MyY),
.RES(MyResA),
.operation(opcode)
);
logic_unit lu (
.X(MyX),
.Y(MyY),
.RES(MyResL),
.operation(opcode)
);
assign RES = u ? MyResA : MyResL;
endmodule
|