![]() ![]() ![]() |
// ************************************************************************** // // // // eses eses // // eses eses // // eses eseses esesese eses Embedded Systems Group // // ese ese ese ese ese // // ese eseseses eseseses ese Department of Computer Science // // eses eses ese eses // // eses eseses eseseses eses University of Kaiserslautern // // eses eses // // // // ************************************************************************** // // The following module implements a full adder for radix-B numbers. The full // // adder is the basic module for radix-B arithmetic. // // To see that cout is of type nat{2}, note that 0 <= x+y+cin <= 1*B+(B-1), // // which also proves that sm is of type nat{2*B}. // // ************************************************************************** // macro B = 4; // base of the radix numbers module FullAdd(nat{B} ?x,?y,nat{2} ?cin,!cout,nat{B} !s) { event nat{2*B} sm; sm = x + y + cin; cout = sm / B; s = sm % B; }

|