Если реализовывать в ПЛИСе, то можно попробовать сделать, что то типа цифрового ФАПЧа. Продискретизировать сигнал высокой частотой (х10 или выше), кратной исходной и интегрировать исходный сигнал в зонах перепадов 1-0, 0-1, с последующей подстройкой фазы на один такт высокой частоты, пока интегральное значение не станет нулевым (число продискретизованных единиц станет равно числу продискретизованных нулей). И далее постоянно таким образом подстраиваться по фазе.