Diseñar un contador de código gris de dos bits con chanclas D es fácil. Simplemente alimente la salida inversora del flop # 1 a la entrada del flop # 2, y haga que la salida no inversora del flop # 2 alimente la entrada del flop # 1.
Una forma interesante de ir más allá de dos bits es diseñar un circuito asíncrono que tome una entrada en cuadratura y produzca una salida de código gris; esa salida cambiará cada vez que uno de los bits en la entrada de cuadratura cambie. El otro bit se puede alimentar a la salida junto con la salida de la parte superior.
Este enfoque es interesante tanto desde el punto de vista de que requiere solo dos pestillos activados por el borde para una longitud de contador arbitraria, como desde el punto de vista de poder tener un contador de longitud arbitraria cuya frecuencia depende solo de la capacidad De la etapa inicial para manejarlo. Si uno necesita por ej. un contador de 32 bits, uno podría conectar en cascada un contador de dos bits a un contador de dos bits (produciendo 3 bits, el superior de los cuales cambiará a 1/8 de la frecuencia de entrada) y luego lo alimentará a un bit de 6 bits contador (con un total de 8 bits, el superior de los cuales cambiará a 1/1024 de la frecuencia de entrada), y luego lo introducirá en dos contadores de 13 bits en cascada (para el resultado de 32 bits). A diferencia de un contador de ondulación convencional que solo se puede muestrear de manera significativa cuando no está contando, el contador de código gris en cascada se puede muestrear en cualquier momento, incluso si el retraso en las etapas superiores excede el período de la señal de entrada, siempre que uno muestre las entradas y salidas de cada etapa y hace un poco de "post-procesamiento" de la señal muestreada. Si bien no se pudo probar la lógica del contador utilizando enfoques de lógica de prueba basada en el registro de desplazamiento, se podría tener un registro de "prueba" que cambiaría los muxiplexores de modo que las secciones de los contadores superiores avanzaran a la misma velocidad que las inferiores.
Si desea que todos los bits del contador funcionen sincrónicamente, debe calcular que el bit inferior debería cambiar siempre que no coincida con el xor de todos los otros bits, y de lo contrario, cada bit debería cambiar si el bit anterior es establecer y todos los demás bits antes de que estén claros.