synthesized and tested on FPGA