1. A circuit for estimating a latency through a FIFO buffer, comprising:
a first detector for detecting a first plurality of instances of a pattern in first data values serially written to a write port of the FIFO buffer;
a second detector for detecting a second plurality of instances of the pattern in second data values serially read from a read port of the FIFO buffer, wherein the second data values are the first data values delayed by the latency through the FIFO buffer;
a counter coupled to the first and second detectors and counting a count of active transitions of a sample clock signal, the counter started in response to each detected instance of the first plurality of instances and stopped in response to each detected instance of the second plurality of instances, wherein the count provides an estimate of the latency of the FIFO buffer; and
a data generator coupled to the first detector and the write port of the FIFO buffer:
wherein:
the data generator generates the first data values and serially writes the first data values to the write port of the FIFO buffer;
the first data values repeat the first plurality of instances of the pattern;
the pattern includes a first block of zero values followed by a second block of one values;
the first block of zero values has a first duration and the second block of one values has a second duration; and
a sum of the first and second durations is greater than an upper limit on the latency.
2. The circuit of claim 1, wherein the first and second durations are equal, and the first and second durations are each greater than a sampling period between the active transitions of the sample clock signal.
3. The circuit of claim 1, wherein the write port of the FIFO buffer writes an input data word having a number of bits and the read port reads an output data word having the number of bits, the first data values are serially written to one of the bits of the input data word of the write port, and the second data values are serially read from a corresponding one of the bits of the output data word of the read port.
4. The circuit of claim 3, wherein:
the FIFO buffer writes the input data word at the write port in response to a write clock signal;
the FIFO buffer updates the output data word provided at the read port in response to a read clock signal;
the write clock signal and the read clock signal have a nominally shared period and a varying phase relationship that is a varying multiple of the nominally shared period plus a varying fraction of the nominally shared period;
the latency of the FIFO buffer is a varying multiple of the nominally shared period plus the varying fraction of the nominally shared period; and
the sample clock signal is synchronous with at least one of the write clock signal and the read clock signal, a phase of the sample clock signal being rotated following each count for the first and second pluralities of instances of the pattern.
5. The circuit of claim 3, wherein:
the FIFO buffer writes the input data word at the write port in response to a write clock signal;
the FIFO buffer updates the output data word provided at the read port in response to a read clock signal;
the write clock signal and the read clock signal have a nominally shared period and a varying phase relationship that is a varying multiple of the nominally shared period plus a varying fraction of the nominally shared period
the latency of the FIFO buffer is the varying multiple of the nominally shared period plus the varying fraction of the nominally shared period; and
the sample clock signal is asynchronous with both the write clock signal and the read clock signal.
6. The circuit of claim 5, further comprising an averaging circuit coupled to the counter, wherein the averaging circuit continuously provides the estimate that includes integer and fractional values with the estimate of the latency being the integer value times a sampling period between the active transitions of the sample clock signal plus the factional value of the sampling period.
7. The circuit of claim 6, wherein:
the first detector includes:
a first register for sampling the first data values at the active transitions of the sample clock signal and for synchronizing between the sample clock signal and the write clock signal; and
a second register for starting the counter upon detecting a first data transition from a zero value to a one value at an output of the first register; and
the second detector includes:
a third register for sampling the second data values at the active transitions of the sample clock signal and for synchronizing between the sample clock signal and the read clock signal; and
a fourth register for stopping the counter upon detecting a second data transition from a zero value to a one value at an output of the third register.
8. The circuit of claim 7, wherein:
the averaging circuit provides the estimate that is updated for each first data transition to be a first fraction of a preceding value of the estimate plus a second fraction of a terminal value of the count output from the counter for the first data transition; and
a sum of the first and second fractions is unity.
9. The circuit of claim 8, wherein a first number of the zero values in the first block of each first instance of the pattern equals a second number of the one values in the second block of each first instance of the pattern, and the first and second numbers equal a number of the nominally shared period sufficient to exceed the sampling period.
10. The circuit of claim 1, wherein
the first and second durations are equal, and the first and second durations are greater than a period between the active transitions of the sample clock signal.
11. The circuit of claim 1, wherein:
the FIFO buffer has the write port for writing an input data word having a number of bits in response to a write clock signal and the read port for reading an output data word having the number of bits in response to a read clock signal;
the first data values are serially written to one of the bits of the input data word of the write port and the second data values are serially read from one of the bits of the output data word of the read port;
the write clock signal and the read clock signal have a nominally shared period and an indeterminately varying phase relationship that is a varying multiple of the nominally shared period plus a varying fraction of the nominally shared period;
the latency of the FIFO buffer is the varying multiple of the nominally shared period plus the varying fraction of the nominally shared period; and
the sample clock signal is synchronous with at least one of the write clock signal and the read clock signal, and a phase of the sample clock signal is rotated following each count for the first and second pluralities of instances of the pattern.
12. The circuit of claim 1, wherein:
the write port of the FIFO buffer writes an input data word having a number of bits in response to a write clock signal;
the read port of the FIFO buffer reads an output data word having the number of bits in response to a read clock signal;
the first data values are serially written to one of the bits of the input data word of the write port and the second data values are serially read from one of the bits of the output data word of the read port;
the write clock signal and the read clock signal have a nominally shared period and an indeterminately varying phase relationship that is a varying multiple of the nominally shared period plus a varying fraction of the nominally shared period;
the latency of the FIFO buffer is the varying multiple of the nominally shared period plus the varying fraction of the nominally shared period; and
the sample clock signal is asynchronous with both the write clock signal and the read clock signal.
13. The circuit of claim 1, further comprising an averaging circuit coupled to the counter, wherein the averaging circuit continuously provides the estimate that varies and includes integer and fractional values, and the estimate is the integer value times a period plus the factional value of the period.
14. The circuit of claim 1, wherein:
the first detector includes:
a first register for sampling the first data values at the active transitions of the sample clock signal and for synchronizing between the sample clock signal and a write clock signal for serially writing the first data values into the FIFO buffer; and
a second register for starting the counter upon detecting a transition from a zero value to a one value at an output of the first register; and
the second detector includes:
a third register for sampling the second data values at the active transitions of the sample clock signal and for synchronizing between the sample clock signal and a read clock signal for serially reading the second data values from the FIFO buffer; and
a fourth register for stopping the counter upon detecting a transition from a zero value to a one value at an output of the third register.
15. The circuit of claim 1, wherein an averaging circuit provides the estimate that is updated for each count for the first and second pluralities of instances of the pattern to be a first fraction of a preceding value of the estimate plus a second fraction of the count, a sum of the first and second fractions being unity.
16. A circuit arrangement, comprising:
a FIFO buffer having a write port and a read port;
a first detector coupled to the write port of the FIFO buffer and configured to detect a first plurality of instances of a pattern in first data values serially written to the write port;
a second detector coupled to the read port of the FIFO buffer and configured to detect a second plurality of instances of the pattern in second data values serially read from the read port, wherein the second data values are the first data values delayed by a latency through the FIFO buffer;
a counter coupled to outputs of the first and second detectors, the counter configured to count active transitions of a sample clock signal, wherein the counter is started in response to each detected instance of the first plurality of instances and stopped in response to each detected instance of the second plurality of instances, and the count provides an estimate of the latency of the FIFO buffer; and
a data generator having an output coupled to an input of the first detector and to the write port of the FIFO buffer;
wherein:
the data generator generates the first data values and serially writes the first data values to the write port of the FIFO buffer;
the first data values repeat the first plurality of instances of the pattern;
the pattern includes a first block of zero values followed by a second block of one values;
the first block of zero values has a first duration and the second block of one values has a second duration; and
a sum of the first and second durations is greater than an upper limit on the latency.
17. The circuit arrangement of claim 16, wherein the first and second durations are equal, and the first and second durations are each greater than a sampling period between the active transitions of the sample clock signal.
18. A method for estimating a latency through a FIFO buffer, comprising:
detecting a first plurality of instances of a pattern in first data values serially written to a write port of the FIFO buffer;
detecting a second plurality of instances of the pattern in second data values serially read from a read port of the FIFO buffer, wherein the second data values are the first data values delayed by the latency through the FIFO buffer;
counting a count of active transitions of a sample clock signal, wherein the counting is started in response to each detected instance of the first plurality of instances and the counting is stopped in response to each detected instance of the second plurality of instances, and the count provides an estimate of the latency of the FIFO buffer;
generating the first data values; and
serially writing the first data values to the write port of the FIFO buffer;
wherein:
the first data values repeat the first plurality of instances of the pattern,
the pattern includes a first block of zero values followed by a second block of one values,
the first block of zero values has a first duration and the second block of one values has a second duration, and
a sum of the first and second durations is greater than an upper limit on the latency.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A system for automating securities order execution, comprising:
a memory:
a processor disposed in communication with the memory and configured to issue processing instructions stored in the memory to:
receive order information from a client;
apply at least one filtering rule to determine whether the order can be automatically executed or whether to the order needs to be manually processed by a trader within a brokerage;
determine, based on the application of the at least one filtering rule, an order destination;
route the order to the order destination;
execute the order when the order is determined to be automatically executable; and
report the result of the order execution to the client.
2. The system of claim 1 wherein the at least one filtering rule includes at least one broker filter configured to determine if the identified client meets requirements to make the requested trade.
3. The system of claim 2 wherein the order is passed to the trader within the brokerage when the identified client does not clear any of the at least one broker filters.
4. The system of claim 1 wherein the at least one filtering rule includes at least one trader filter.
5. The system of claim 4 wherein the order is passed to the trader within the brokerage when the order does not clear any of the at least one trade filters.
6. The system of claim 1 wherein the at least one filtering rule includes at least one compliance filter configured to determine if the order follows governing market rules.
7. The system of claim 6 wherein the order is passed to the trader within the brokerage when the order does not clear any of the at least one compliance filters.
8. The system of claim 1, wherein the order information is tagged with a client identifier.
9. The system of claim 1, wherein the at least one filtering rule includes at least one broker filter, at least one trade filter and at least one compliance filter.
10. A processor-implemented method for automating securities order execution, comprising:
receiving, via a processor, order information from a client;
applying at least one filtering rule to determine whether the order can be automatically executed or whether to the order needs to be manually processed by a trader within a brokerage;
determining, based on the application of the at least one filtering rule, an order destination;
routing the order to the order destination;
executing the order when the order is determined to be automatically executable; and
reporting the result of the order execution to the client.
11. The method of claim 10 wherein the at least one filtering rule includes at least one broker filter configured to determine if the identified client meets requirements to make the requested trade.
12. The method of claim 11 wherein the order is passed to the trader within the brokerage when the identified client does not clear any of the at least one broker filters.
13. The method of claim 10 wherein the at least one filtering rule includes at least one trader filter.
14. The method of claim 13 wherein the order is passed to the trader within the brokerage when the order does not clear any of the at least one trade filters.
15. The method of claim 10 wherein the at least one filtering rule includes at least one compliance filter configured to determine if the order follows governing market rules.
16. The method of claim 15 wherein the order is passed to the trader within the brokerage when the order does not clear any of the at least one compliance filters.
17. The method of claim 10, wherein the order information is tagged with a client identifier.
18. The method of claim 10, wherein the at least one filtering rule includes at least one broker filter, at least one trade filter and at least one compliance filter.
19. A processor-accessible non-transitory medium storing processor-issuable instructions to:
receive order information from a client;
apply at least one filtering rule to determine whether the order can be automatically executed or whether to the order needs to be manually processed by a trader within a brokerage;
determine, based on the application of the at least one filtering rule, an order destination;
route the order to the order destination;
execute the order when the order is determined to be automatically executable; and;
report the result of the order execution to the client.