Using Functional Programming to Generate an LDPC Forward Error Corrector

FPGAs as commodities offer a resource for high-performance computation that is unmatched in flexibility and price/performance. As a lab, we are interested in high-level descriptions of computation and data, and how they may be customized to map effectively on FPGA fabrics. This paper describes our tool-chain, approach and methodology to FPGA utilization. We give a case study of the generation of a low density parity checking forward error correction algorithm, and discuss the specific challenges we faced with using FPGAs as our target.

[1]  Tristan Bull,et al.  Types and Type Families for Hardware Simulation and Synthesis - The Internals and Externals of Kansas Lava , 2010, Trends in Functional Programming.

[2]  T. Moon Error Correction Coding: Mathematical Methods and Algorithms , 2005 .

[3]  Mary Sheeran,et al.  Lava: hardware design in Haskell , 1998, ICFP '98.

[4]  Axel Jantsch,et al.  Models of computation and languages for embedded system design , 2005 .

[5]  Satnam Singh Designing reconfigurable systems in Lava , 2004, 17th International Conference on VLSI Design. Proceedings..

[6]  Mary Sheeran Hardware Design and Functional Programming: a Perfect Match , 2005, J. Univers. Comput. Sci..

[7]  Garrin Kimmell,et al.  What's the Matter with Kansas Lava? , 2010, Trends in Functional Programming.

[8]  Dariush Divsalar,et al.  The Development of Turbo and LDPC Codes for Deep-Space Applications , 2007, Proceedings of the IEEE.

[9]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[10]  Robert G. Gallager,et al.  Low-density parity-check codes , 1962, IRE Trans. Inf. Theory.

[11]  Koen Claessen Embedded Languages for Describing and Verifying Hardware , 2001 .

[12]  Gérard Berry,et al.  The constructive semantics of pure esterel , 1996 .

[13]  Maarten M. Fokkinga,et al.  Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire , 1991, FPCA.

[14]  Ingo Sander,et al.  System Modeling and Design Refinement in ForSyDe , 2003 .

[15]  John O'Donnell,et al.  Overview of hydra: a concurrent language for synchronous digital circuit design , 2002, Proceedings 16th International Parallel and Distributed Processing Symposium.

[16]  Andy Gill,et al.  Type-safe observable sharing in Haskell , 2009, Haskell.

[17]  Simon L. Peyton Jones,et al.  Associated type synonyms , 2005, ICFP '05.

[18]  Brad L. Hutchings,et al.  JHDL-an HDL for reconfigurable systems , 1998, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (Cat. No.98TB100251).

[19]  Mary Sheeran,et al.  muFP, a language for VLSI design , 1984, LFP '84.