Advanced Hardware Design for Error Correcting Codes