This paper considers a multi-cell multiple antenna system with precoding used at the base stations for downlink transmission. To enable precoding, channel state information (CSI) at the base stations is essential. A popular technique for obtaining this CSI in time division duplex (TDD) systems is uplink training by utilizing the reciprocity of the wireless medium. This paper mathematically characterizes the impact that uplink training has on the performance of multi-cell multiple antenna systems that use precoding at the base stations. When non-orthogonal training sequences are used for uplink training, it is shown that the precoding matrix used by the base station in one cell becomes corrupted by the channel between that base station and the users in other cells. This problem of {\em pilot contamination} is analyzed in this paper. A multi-cell MMSE-based precoding is proposed that is dependent on the set of training sequences used by the users. Numerical examples are provided for comparison of this method with zero-forcing precoding applied to users in every cell.