Precoding and equalization for MIMO broadcast channels with applications in spread spectrum systems