Nice video! I agree that given the target users of the board, it would have probably been better if they had put on the pull-up resistors and the filter circuit. It's also not surprising that a microcontroller will not reach the kind of speeds that a dedicated hardware decoder can reach.
Thanks! Yes, the freesoc works great with it, but I'm still irked about the lack of pullup resistors or a filter. I really wanted to run 4 of these into 2 daisy-chained parallel load shift registers, like the HC165, and use some verilog code in the freesoc to quickly shift the data in to the quadrature decoder components, so I could use 4 rotary encoders, with LED rings, and only need 6 I/O pins. Now that I know I need a filter, I'm probably just going to roll my own board for these.
What was a little surprising to me was that the actual period of the quadrature data was pretty long, on the order of a millisecond, even for fast turns. Makes me wonder how many you could chain together with parallel load shift registers and still have decent update rates.
However, at the fast rotations speeds you were doing, you're probably exceeding the physical limits of the encoder itself already. On the datasheet you show, you can see that it gives the maximum operational RPM as 60, so no more than 1 full rotation every second. That's a fairly typical figure for this type of encoder, and probably also the reason why potentiometers are still used more often as input devices when you need to be able to change parameters quickly (optical encoders being the other option).
I didn't think about this actually, and it would've been a good addition to the video. I think I will do a followup video on this in the next month or two where I compare some optical encoders to a mechanical encoder like I used in the video. Just need to find some optical encoders that are suitable for the kind of knob-twiddling I want to do.