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