Модуль получает компоненту цвета, от 0 до 63 и выдает либо 0, либо 1 - ближайший цвет.
1module dither
2(
3 input wire [5:0] orgclr,
4 output wire result
5);
6
7assign result = (orgclr + color[5:0] >= 32);
8
9reg [ 5:0] color;
10
11always @(*) begin
12case ({Ya[3:1], Xa[3:1]})
13
14
15 6'b000_000: color = 0;
16 6'b000_001: color = 32;
17 6'b000_010: color = 8;
18 6'b000_011: color = 40;
19 6'b000_100: color = 2;
20 6'b000_101: color = 34;
21 6'b000_110: color = 10;
22 6'b000_111: color = 42;
23
24 6'b001_000: color = 48;
25 6'b001_001: color = 16;
26 6'b001_010: color = 56;
27 6'b001_011: color = 24;
28 6'b001_100: color = 50;
29 6'b001_101: color = 18;
30 6'b001_110: color = 58;
31 6'b001_111: color = 26;
32
33 6'b010_000: color = 12;
34 6'b010_001: color = 44;
35 6'b010_010: color = 4;
36 6'b010_011: color = 36;
37 6'b010_100: color = 14;
38 6'b010_101: color = 46;
39 6'b010_110: color = 6;
40 6'b010_111: color = 38;
41
42 6'b011_000: color = 60;
43 6'b011_001: color = 28;
44 6'b011_010: color = 52;
45 6'b011_011: color = 20;
46 6'b011_100: color = 62;
47 6'b011_101: color = 30;
48 6'b011_110: color = 54;
49 6'b011_111: color = 22;
50
51 6'b100_000: color = 3;
52 6'b100_001: color = 35;
53 6'b100_010: color = 11;
54 6'b100_011: color = 43;
55 6'b100_100: color = 1;
56 6'b100_101: color = 33;
57 6'b100_110: color = 9;
58 6'b100_111: color = 41;
59
60 6'b101_000: color = 51;
61 6'b101_001: color = 19;
62 6'b101_010: color = 59;
63 6'b101_011: color = 27;
64 6'b101_100: color = 49;
65 6'b101_101: color = 17;
66 6'b101_110: color = 57;
67 6'b101_111: color = 25;
68
69 6'b110_000: color = 15;
70 6'b110_001: color = 47;
71 6'b110_010: color = 7;
72 6'b110_011: color = 39;
73 6'b110_100: color = 13;
74 6'b110_101: color = 45;
75 6'b110_110: color = 5;
76 6'b110_111: color = 37;
77
78 6'b111_000: color = 63;
79 6'b111_001: color = 31;
80 6'b111_010: color = 55;
81 6'b111_011: color = 23;
82 6'b111_100: color = 61;
83 6'b111_101: color = 29;
84 6'b111_110: color = 53;
85 6'b111_111: color = 21;
86
87endcase
88end