Модуль получает компоненту цвета, от 0 до 63 и выдает либо 0, либо 1 - ближайший цвет.
1module dither
2(
3    input  wire [5:0] I, // 0..63
4    output wire       R  // 0 или 1
5);
6
7assign R = (I + P >= 32);
8
9wire [ 5:0] G = {Y[2:0], X[2:0]};
10wire [ 5:0] P =
11    G == 8'h00 ? 0  : G == 8'h01 ? 32 : G == 8'h02 ?  8 : G == 8'h03 ? 40 :
12    G == 8'h04 ?  2 : G == 8'h05 ? 34 : G == 8'h06 ? 10 : G == 8'h07 ? 42 :
13    G == 8'h08 ? 48 : G == 8'h09 ? 16 : G == 8'h0A ? 56 : G == 8'h0B ? 24 :
14    G == 8'h0C ? 50 : G == 8'h0D ? 18 : G == 8'h0E ? 58 : G == 8'h0F ? 26 :
15    G == 8'h10 ? 12 : G == 8'h11 ? 44 : G == 8'h12 ? 4  : G == 8'h13 ? 36 :
16    G == 8'h14 ? 14 : G == 8'h15 ? 46 : G == 8'h16 ? 6  : G == 8'h17 ? 38 :
17    G == 8'h18 ? 60 : G == 8'h19 ? 28 : G == 8'h1A ? 52 : G == 8'h1B ? 20 :
18    G == 8'h1C ? 62 : G == 8'h1D ? 30 : G == 8'h1E ? 54 : G == 8'h1F ? 22 :
19    G == 8'h20 ? 3  : G == 8'h21 ? 35 : G == 8'h22 ? 11 : G == 8'h23 ? 43 :
20    G == 8'h24 ? 1  : G == 8'h25 ? 33 : G == 8'h26 ? 9  : G == 8'h27 ? 41 :
21    G == 8'h28 ? 51 : G == 8'h29 ? 19 : G == 8'h2A ? 59 : G == 8'h2B ? 27 :
22    G == 8'h2C ? 49 : G == 8'h2D ? 17 : G == 8'h2E ? 57 : G == 8'h2F ? 25 :
23    G == 8'h30 ? 15 : G == 8'h31 ? 47 : G == 8'h32 ? 7  : G == 8'h33 ? 39 :
24    G == 8'h34 ? 13 : G == 8'h35 ? 45 : G == 8'h36 ? 5  : G == 8'h37 ? 37 :
25    G == 8'h38 ? 63 : G == 8'h39 ? 31 : G == 8'h3A ? 55 : G == 8'h3B ? 23 :
26    G == 8'h3C ? 61 : G == 8'h3D ? 29 : G == 8'h3E ? 53 : 21;
27
28end