Имеется исходный сигнал с трёхканального датчика вращения на оптических прерывателях:
Задача:
- схему сделать на обычной логике, TTL или CMOS,
- определить направление вращения по каждому следующему фронту (+/-) с каждого датчика,
- выделить импульсы с каждого фронта, положительного и отрицательного, для их подсчёта в прямом и обратном направлении.
Логика с датчиков переключений такая:
000
001
011
111
110
100
Три дня ломал голову, пришёл к такому решению:
После датчиков дешифратор состояний с шестью выходами (сколько состояний, столько и выходов).
С каждого фронта (любой полярности) любого из датчиков формируется короткий тактовый импульс с заданной длительностью (CLK).
С дешифратора состояний данные записываются в сдвиговый регистр (одна единица с одного из выходов дешифратора).
С поступлением CLK регистр сдвигает данные (единицу смещает по циклу) и если эта единица совпадает с состоянием дешифратора формируется сигнал "совпадение", т.е. счёт в плюс.
Если совпадения нет, - счёт в минус.
Далее по спаду CLK в регистр записывается текущее состояние дешифратора и цикл повторяется.
Что-то мне это решение не кажется очень изящным.
Может у кого будут замечания, или кто уже сталкивался с таким и есть решения попроще, буду благодарен за подзатыльники и подсказки.




