Barcelona and Real Madrid have been kept apart in the Champions League semi-finals, with both Spanish sides being drawn against German opposition.