1. A method of performing block matching with a systolic array comprising: selecting an N×N target pixel block; selecting an N×N reference block from a starting point of an N×M reference block search space; propagating the target and reference blocks through N cycles to completely load the target and reference blocks into an array of systolic cells; computing a sum of absolute difference (SOAD) between a pixel of the target block and the reference block for each N rows of the array; saving the SOAD for the current reference block; incrementing to the next reference block of the N×M reference block search space and selecting a new N×N reference block; repeating the propagating, computing, saving and incrementing steps until all blocks in the reference search space have been tested; and selecting the block from the reference search space having the lowest SOAD as a motion vector for the target block.