Вы можете легко обнаружить некоторые простые сигналы, обнаружив боковые стороны сигнала. Квадрат имеет быстро поднимающиеся и опускающиеся стороны, пилообразный имеет только быстро растущие или быстро падающие стороны, в зависимости от сигнала.
Таким образом, вы проверяете наличие поднимающихся и опускающихся флангов: если вы обнаруживаете оба, это квадрат. Если вы обнаружите только один тип, это треугольник, если вы уверены, что только эти сигналы будут вводиться.
Попробуйте использовать схему дифференциатора, что легко сделать с помощью операционного усилителя. Смотрите здесь: http://www.physics.iitm.ac.in/courses_files/courses/eleclab03_odd/matumatic_operations.htm
Крутизна фланга представлена на выходе дифференциатора.
Подайте этот сигнал и его инверсию в триггеры Шмитта и / или перестраиваемые монофлопы, и вы получите представление логического уровня RisingFlank и FallingFlank, которое, в свою очередь, вы можете использовать для дальнейших вычислений или отображения.