Research Article

Experiencing a Problem-Based Learning Approach for Teaching Reconfigurable Architecture Design

Algorithm 2

Typical code example for a compute node (terminal macro procedure): in a clock cycle, in parallel, inputs are received, result is computed, and output is sent.
macro proc computeUnit
(functionChan, inChan, outChan)
variables
signed 13 vIn [ ]; inputs
signed 14 result; output
unsigned char functionSymbol;
receiving the function symbol
functionChan ? functionSymbol;
initialization of the pipeline
not shown here (just comments)
receiving first input value set
then, in parallel :
receiving second input value set
computing first result
infinite loop
While (1)
par
doing in parallel in one clock cycle
receiving input values
par( =0; 2 ++)
inChan[ ] ? vIn[ ];
computing result
switch(functionSymbol)
    ADD case :
result = vIn[ ]+vIn[ ];
break;
    MIN case :
result =
vIn[ ] vIn[ ] ? vIn[ ] : vIn[ ];
break;
    MAX case :
result =
vIn[ ] vIn[ ] ? vIn[ ]:vIn[ ];
break;
default : delay; break;
sending result
outChan ! result;