CAPH: A Language for Implementing Stream-Processing Applications on FPGAs

  • Jocelyn SérotEmail author
  • François Berry
  • Sameer Ahmed


We introduce CAPH, a new domain-specific language (DSL) suited to the implementation of stream-processing applications on field programmable gate arrays (FPGA). CAPH relies upon the actor/dataflow model of computation. Applications are described as networks of purely dataflow actors exchanging tokens through unidirectional channels. The behavior of each actor is defined as a set of transition rules using pattern matching. The CAPH suite of tools currently comprises a reference interpreter and a compiler producing both SystemC and synthetizable VHDL code. We describe the implementation, with a preliminary version of the compiler, of a simple real-time motion detection application on an FPGA-based smart camera platform. The language reference manual and a prototype compiler are available from


Field Programmable Gate Array Input Stream Graph Visualizer Intermediate Representation Output Stream 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Chalimbaud P, Berry F (2007) Embedded active vision system based on an FPGA architecture. EURASIP J Embedded Syst 2007:26–26. URL
  2. 2.
    Dahlin A, Ersfolk J, Yang G, Habli H, Lilius J (2009) The Canals language and its compiler. In: Proceedings of th 12th international workshop on software and compilers for embedded systems, SCOPES ’09, pp 43–52. ACM, New York, NY, USA. URL
  3. 3.
    Frigo J, Gokhale M, Lavenier D (2001) Evaluation of the Streams-C C-to-FPGA compiler: an applications perspective. In: Proceedings of the 2001 ACM/SIGDA ninth international symposium on Field programmable gate arrays, FPGA ’01, pp 134–140. ACM, New York, NY, USA. URL
  4. 4.
    Graph visualisation software. URL
  5. 5.
    Grov G, Michaelson G (2010) Hume box calculus: robust system development through software transformation. High Order Symbol Comput 23:191–226. URL
  6. 6.
    Gupta S, Dutt N, Gupta R, Nicolau A (2003) Spark: A high-level synthesis framework for applying parallelizing compiler transformations. In: In international conference on VLSI design, pp 461–466Google Scholar
  7. 7.
    Hammond K, Michaelson G (2003) Hume: a domain-specific language for real-time embedded systems. In: Proceedings of the 2nd international conference on Generative programming and component engineering, GPCE ’03, pp 37–56. Springer, New York, Inc., New York, NY, USA. URL
  8. 8.
  9. 9.
    Impulse accelerated technologies. URL
  10. 10.
    Koren I, Mendelsom B, Peled I, Silberman GM (1988) A data-driven vlsi array for arbitrary algorithms. Computer 21:30–43. DOI 10.1109/2.7055. URL Google Scholar
  11. 11.
    Lee E, Messerschmitt D (1987) Synchronous data flow. Proc IEEE 75(9):1235–1245CrossRefGoogle Scholar
  12. 12.
    Lucarz C, Mattavelli M, Wipliez M, Roquier G, Raulet M, Janneck J, Miller I, Parlour D (2008) Dataflow/Actor-Oriented language for the design of complex signal processing systems. In: Proceedings of the 2008 conference on design and architectures for signal and image processing, DASIP 2008, pp 168–175Google Scholar
  13. 13.
    Mandel L, Plateau F, Pouzet M (2010) Lucy-n: a n-synchronous extension of Lustre. In: Tenth International conference on mathematics of program construction (MPC 2010). Québec, Canada. URL MandelPlateauPouzet-MPC-2010.pdf
  14. 14.
    Najjar WA, Boehm W, Draper BA, Hammes J, Rinker R, Beveridge JR, Chawathe M, Ross C (2003) High-level language abstraction for reconfigurable computing. Computer 36:63–69. DOI Google Scholar
  15. 15.
    Sérot J Caph language reference manual. URL
  16. 16.
    Sérot J (2008) The semantics of a purely functional graph notation system. In: Trends in functional programming. Madrid, Spain. URL
  17. 17.
    Sérot J, Quénot GM, Zavidovique B (1993) Functional programming on a data-flow architecture: Applications in real time image processing. Int J Mach Vision Appl 7(1):44–56CrossRefGoogle Scholar
  18. 18.
    Sérot J, Quénot GM, Zavidovique B (1995) A visual dataflow programming environment for a real-time parallel vision machine. J Vis Lang Comput 6:327–347CrossRefGoogle Scholar
  19. 19.
    Vasell J, Vasell J (1992) The function processor: a data-driven processor array for irregular computations. Future Gener Comput Syst 8, 321–335. DOI 10.1016/0167-739X(92)90066-K. URL
  20. 20.
    Yankova YD, Bertels K, Vassiliadis S, Kuzmanov G, Chaves R (2006) HLL-to-HDL generation: Results and challenges. In: Proceeding of ProRisc 2006Google Scholar
  21. 21.
    Yankova YD, Kuzmanov G, Bertels K, Gaydadjiev GN, Lu Y, Vassiliadis S (2007) Dwarv: Delftworkbench automated reconfigurable vhdl generator. In: Proceedings of the 17th International conference on field programmable logic and applications (FPL07), pp 697–701Google Scholar

Copyright information

© Springer Science+Business Media, LLC 2013

Authors and Affiliations

  1. 1.Universite Blaise Pascal, Institut Pascal, UMR 6602 CNRS/UBPAUBIERE cedex 1France

Personalised recommendations