Darmstadt University of Technology Computer Architecture Group
Implementing Cellular Automata in FPGA Logic Mathias Halbach, Rolf Hoffmann 1. Introduction 2. Implementing Cellular Automata in Software (C) 3. Hardware Prototype Implementation 4. Comparison Hardware vs. Software 5. Conclusion 1
Darmstadt University of Technology Computer Architecture Group
1. Introduction Cellular Automata – Pioneers
2
z
John von Neumann (1903-1957)
z
Konrad Zuse (1910-1995) with "Rechnender Raum" (computing space)
Darmstadt University of Technology Computer Architecture Group
Cellular Automata (CA)
3
optimal model for applications with inherent local neighborhood physical fields, lattice-gas models, models of growth, moving particles, fluid flow, logic simulation, numerical algorithms, routing problems, picture processing, genetic algorithms, cellular neural networks.
Hardware Platform CEPRA and CDL
Darmstadt University of Technology Computer Architecture Group
z
4
CEPRA: Cellular Processing Architecture – – – – – –
z
CEPRA-S, 2001 CEPRA-3D, 1997 CEPRA-1D, 1996 CEPRA-1X, 1996 CEPRA-8D, 1995 CEPRA-8L, 1994
(see next slide) (2 FPGAs, 3 dimensional) (1 FPGA) (1 FPGA) (8 DSPs) (8 FPGAs)
CDL: Cellular Description Language
CEPRA-S
Darmstadt University of Technology Computer Architecture Group
2 FPGAs
5
8 Data Memories 1 Program Memory 1 Special Memory
Prototyping Platform z
Altera Flex 10k Evaluation Board
Darmstadt University of Technology Computer Architecture Group
–
6
z
FPGA: Flex EPF10K70RC240-4 with 3756 logic cells
MAX+plus II Tools –
AHDL, VERILOG Æ FPGA-Logic
Darmstadt University of Technology Computer Architecture Group
Question
7
If Cellular Automata are implemented in FPGA-Logic: How high is the speed-up in comparison to a software implementation on a PC?
CA Rules used for Comparison z
1. Rule: Belousov-Zhabotinsky Reaction
Darmstadt University of Technology Computer Architecture Group
–
8
–
describes an oscillating chemical process This rule is neither very simple nor very complex
function fBZR(Cell, North, East, South, West); const n=127, g=11; begin b := (North=n) + (East=n) + (South=n) + (West=n); a := (0