Faster impl., 306MHz when syntesized in ISE