There are three processes to produce a variable crossing pulse in hardware for Triac phase control for controlling a motor. I will talk about the 1st two.
1. Zero crossing of voltage , ZVC (both directions converted to unipolar pulse)
2. variable dwell or pulse width modulation up to 100%
3. Zero crossing of current switch , ZCS, which will lead voltage for an inductive load , but determines when precise firing of Triac may begin for 100% switching for next cycle, as Triacs turn off at zero crossing of current and turn on with a pulse or >2V applied to input. The pulse method is most accurate.
One is to use a "limiter" or "slicer" on a sine wave to make a perfect square wave then the fast edge may be delayed with a gate or RC delay and compared with a 2 input XOR gate to produce a narrow pulse. this can be done just as easily in firmware.
The second method has to slice the rectified AC near the minimum voltage when the diode bridge goes into high impedance mode and the transistor or comparator is very sensitive to noise pulses or ripple near the zero crossing point. This method works in theory, but is very open to false triggers near the zero crossing point.
The real problem is noise immunity and how to reject false triggers.
One method is PLL with narrow tracking filter, (best) another a gated window to disable more pulses until after 95% window delay to allow for 5% frequency increase ( works but still prone to jitter) and then simple transistor amplifier on rectified AC which is prone to gain error from voltage divider and offset error of transistor Vbe threshold, which leads to a pulse that starts before and ends after the true zero crossing, and due low SNR, the ripple may produce extra pulses.
Once you understand this analog concept and how to best detect frequency and phase in the presence of noise, you will appreciate that using a the diode bridge is a crude method, not reliable without special filters since the ideal rectified signals spans many harmonics.
Using a pure sine wave a filtered input or a simple PLL, with a slow tracking filter gives one the perfect noise immunity so you can then have a cleaner pulse to determine variable dwell for phase control.
Implementation is meaningless, until you understand the quality factors of false detection, false switching with leading current and radiated and conducted false triggering of Triacs. We are not talking about a controlled lab signal with a resistive load, but a dirty noise environment with fast rising Triac load switching and motor surge currents.
OK? Which way do you prefer cheap and dirty? Or clean and reliable but more complex.