Sugeriría un enfoque más general (sin contadores) que necesita algunas puertas más, pero es mucho más fácil de entender y de depurar, y se puede adaptar para patrones más complejos.
Dibujado como puertas lógicas clásicas :
LaimplementacióndeVHDLesmuysencilla:
- implementarunregistrodedesplazamientode32bits
- compruebesielvectordesalidaesigualalvectordereferencia
EDIT1:
Siabsolutamentequieres(tienes)usarcontadores:
- uncontadorqueaumentaconcada0enlaentrada.
- otrocontadorqueseincrementaconcada1enlaentrada.
- evitaelajustedeamboscontadores,porejemplo,desactivandosialcanzanunrecuentoporencimadelvalorrequerido(15+1y17+1).
- reinicieamboscontadoressia1lesigueun0enlaentrada
- comparelassalidasdeambosconteossimuestranlosvaloresrequeridos
EDIT2
Porcierto:tambiénlasoluciónderegistrodecambiospodríapasarcomosoluciónutilizando"dos contadores": un registro de cambios puede verse como un unary mostrador. La parte con los inversores es un contador unario que cuenta los 0s. La parte sin los inversores es un contador único que cuenta los 1s.