-- FILE: accum.adb -- DATE: 7/98 -- AUTHOR: Sy Wong -- AIM: implementation of accumulator design --pragma suppress(range_check); package body ACCUM is -- .log procedure update (d: in out device) is carry_in: HDL.input:= FALSE; carry_out: HDL.output:= FALSE; slave: HDL.bus(0..n-1); begin if d.add and then not d.state.add then carry_in:= d.carry_in; for i in 0..n-1 loop slave(i) := d.data_in(i) xor d.accumulator (i) xor carry_in; carry_out:= ((d.data_in(i) or d.accumulator(i)) and carry_in) or (d.data_in(i) and d.accumulator(i)); carry_in:= carry_out; end loop; d.accumulator:= slave; d.carry_out:= carry_out; end if; d.state.add:= d.add; end update; end ACCUM;