de24d1.v
1.16 KB
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
module de24d1 (z0n, z1n, z2n, z3n, a0, a1, en);
input a0, a1, en;
output z0n, z1n, z2n, z3n;
`ifdef SYNTH
reg z0nt, z1nt, z2nt, z3nt;
buf b1(z3n, z3nt),
b2(z2n, z2nt),
b3(z1n, z1nt),
b4(z0n, z0nt);
always @(a0 or a1 or en)
begin
if (en==1)
{z0nt, z1nt, z2nt, z3nt} = 4'b1111;
else
begin
case({a0, a1})
2'b00: {z0nt, z1nt, z2nt, z3nt} = 4'b0111;
2'b10: {z0nt, z1nt, z2nt, z3nt} = 4'b1011;
2'b01: {z0nt, z1nt, z2nt, z3nt} = 4'b1101;
2'b11: {z0nt, z1nt, z2nt, z3nt} = 4'b1110;
endcase
end
end
`else
or G2(z2n, N3, en),
G3(N3, N4, a0);
not G4(N4, a1);
or G5(z3n, N6, en),
G6(N6, N7, N8);
not G7(N7, a1),
G8(N8, a0);
or G9(z0n, N10, en),
G10(N10, a1, a0),
G11(z1n, N12, en),
G12(N12, a1, N14);
not G14(N14, a0);
`endif
endmodule