Reliability Techniques for Data Communication and Storage in FPGA-Based Circuits