VLSI Architectures for Modern Error-Correcting Codes