Patent ID: 8171069

Claim:
A method of filtering a digital data stream, comprising: providing a digital data processing circuit comprising a data processing unit, a pointer processing unit and control logic, said data processing unit and said pointer processing units connected to said control logic, said pointer processing unit consisting of n serially connected pointer processing stages from a first pointer processing stage to a last pointer processing stage, all pointer processing stages of said pointer processing unit including a pointer register, second to next to last pointer processing stages of said pointer processing unit including a multiplexer, wherein n is a positive integer greater than 2, said data processing unit consisting of n serially connected data processing stages from a first data processing stage to a last data processing stage, each data processing stage of said data processing unit including a multiplexer, a data register and a comparator, and providing one or more filter output stages connected to said data processing unit; and performing: (a) initializing and storing in said data registers a set of m data elements of pre-selected values and initializing and storing in said pointer registers, from a pointer register of said first stage of said pointer processing unit to a pointer register of said last stage of said pointer processing unit, a set of m pointer data from 1 to m in ascending sequence, each stored data element associated with a respective pointer datum, where m is a positive integer greater than 2 and less than or equal to n; (b) receiving in real time a first or next data element of a digital data stream of sequential data elements; (c) simultaneously with (b), replacing a stored data element associated with the pointer datum having a value of m with said received data element thereby storing said received data element in a data register of said data unit, changing pointer datum m to 1, and incrementing the value of all other pointer data by 1, said pointer data indicating the relative sequence in which data elements are received; (d) simultaneously with (b) sorting in order from a lowest data element value to highest data element value all stored data elements and storing said stored data elements in sequence from a lowest value to a highest value in said data registers; (e) simultaneously with (b), maintaining the association of each pointer datum to its respective data element by shifting pointer data between pointer registers; (f) simultaneously with (b), filtering all stored data elements; and (g) repeating (b) through (f) multiple times.