A feedback-based weight programming method for a high-density crossbar without the use of any transistor or diode isolation is presented. A series of reads is applied to the crossbar before each write that is able to determine the resistance of each memristor in the crossbar despite the many parallel resistance paths. This is essential because the variation observed in memristor crossbars makes programming very difficult when using just a single write pulse and no error checking. A neuromorphic circuit is programmed using this method. Results show successful ex-situ training of a high-density crossbar with significant area savings when compared with a one transistor one memristor design.Introduction: Memristor crossbars [1-3] can perform many tasks including multi-bit storage, logic function programming and neuromorphic learning. Crossbars provide low energy, high throughput (parallel computations) and a low area compute structure. It has previously been shown that memristor crossbars can be more than 300 000 times more energy efficient than a commercial Xeon processor when processing large neural network applications [4].For the crossbar to perform a specific function, the resistance level of the individual memristor needs to be set to specific values. In many cases this will require fine tuning across a large range of resistance values. Memristor crossbars are prone to device variations [3], and when a voltage pulse is applied to a memristor the amount of resistance change that occurs is somewhat stochastic. Therefore, this fine tuning would likely be a feedback process where each resistance is repetitively sensed and updated until the desired resistance is obtained [5]. Owing to the parallel nature of the memristor crossbar, a single read pulse cannot be used to determine a single memristor resistance state. However, this Letter shows how N read pulses can be used to determine all memristor resistances within a crossbar containing N × M memristors.This Letter presents an approach to update the states without having isolation devices in the crossbar. This will enable lower area, more compact crossbars. Alternatively, a transistor can be added at each crosspoint to allow reading each individual device. However, a memristor crossbar is able to represent synaptic weights with a greater density than that of the brain tissue [1], and decreasing this density by adding extra transistors should be avoided. As another alternative, virtual ground opamps could be placed on each crossbar column [6], but this is an expensive approach in terms of area and energy [2].Given the complexity of this programming method, it will be most beneficial for systems where fewer writes are performed such as readonly memory, programmable logic and especially the ex-situ training of neuromorphic circuits. Training a large crossbar using a neuromorphic learning algorithm can be very time consuming. Determining the desired set of resistance values externally would be beneficial so that each individual crossbar will not require a lengthy in-sit...