This invention is used for converting Analog signal to Digital (ADC). A cache scheme is used to store previously converted values of full blown conversions. Those Cache entries are used for future conversions. If there is a cache miss for an analog signal, a fresh full blown conversion is initiated. Upon eviction of one of the previous cache entries, new fresh value is loaded back onto cache structure.
Analog to digital converters are implemented using highly mathematical analysis and design typically. There is a basic full conversion ADC, which is named as backend ADC, in this solution also. By simply focusing on this relatively smaller, one can achieve faster response time. In the future inventions, the backend ADC is shared between multiple ADC channels, because this backend ADC is idle most of the time due to more cache hits (signal does not change that abruptly in some scientific and engineering problems) and lesser cache misses. Only during cache misses the backend ADC is engaged. ADCS are used fundamental in everyday signal processing applications. The natural signal is analog and it needs to be converted to digital for advanced processing using computer and other digital realms.
A new analog to digital converter is designed using Cache principles of digital computing. This new approach allowed to drastically reducing backend ADC, which is rarely used for full conversions. Number of cache entries need to be less to offset power consumption in Cache area. Average number of comparators engaged is also less per conversion. If there are more cache entries, power consumption is more. So there must be a balance between Cache, backend ADC, and speed of conversion. So this ADC design used only 4 cache entries. One with better design tools can accurately balance number of cache entries and estimate speed versus power! Optimization. Since cache structure is in the upfront signal path, cache entries are looked first for cache hit (Signal match). It is obvious that Cache lookup is parallel and it consumes more power, but that power is less than the power that is consumed in backend ADC of full initiated conversions. Further optimization is naturally achieved due to the fact that cache behavior reuses previous values that are converted once already. Once a cache miss occurs, full conversion is initiated. LTI (Linear time invariance) is critical in some applications and one can simply calculate worst case time (backend ADC time) as response time for strict LTI. Since backend ADC is logically smaller, more silicon can be added to it, which allows better LTI to be achieved.
As shown in
Whenever there is cache, there must be a corresponding policy of CACHE EVICTION.
As shown in
Cache based Analog to Digital converter has been designed. Its eviction is based on least count, which reflects LRU CACHE scheme.
Upper DAC (300) and lower DAC (400) load the previously matched value into the basic cache ADC cell. It is designed as 8 bit ADC with two stages. 4 cache MSB bits are shown in the example. Value 0715 is loaded into upper DAC (100) inputs. Lower DAC (200) inputs are loaded with value 0700. So if the next I/P signal falls between these two values, CACHE ST/4MISS signal goes high (active). OP-SUB (1000) subtracts 0700 from I/P signal, whose output is the remainder analog signal, which is fed into next ADC stage.
Cache size is 4 in the example. HIT_COUNT is incremented for cache hits and is decremented for cache misses. HIT_COUNT will never increment or decrement and force a carry (overflow). Inc/Dec control logic implementation is shown in
STATE MACHINE takes these 4 cache HIT-COUNTS and finds best possible cache entry that needs to be evicted. Entry with the lowest HIT_COUNT gets evicted.
once the data is ready at backend ADC, that data is loaded as fresh cache hit and state machine routes these fresh digital bits into the evicted slot. Tri-state control is used when moving data into cache and HIT-COUNT is reset.
State table for finding a cache entry to be evicted is shown in
State transitions are described as follows. State SEvict (000) is the starting (reset) state. Upon reset, state machine enters into state SAB with Ex value don't care. State SAB transitions to state SBC if HIT-COUNT of B is less than HIT-COUNT of A where Ex is logic one, otherwise it transitions to state SAC where Ex is logic zero. State SBC transitions to state SCD when HIT-COUNT of C is less than HIT-COUNT of B with Ex value logic one, otherwise it transition to SBD with Ex value logic zero. State SAC transitions to state SCD when HIT-COUNT of C is less than HIT-COUNT of A with Ex value logic one, otherwise it transitions to SAD with Ex logic zero. State SCD is one of terminating state, but Ex will be logic one, if HIT-COUNT of C is less than that of D implying that HIT-COUNT C is less that of all other HIT-COUNTS, otherwise with Ex logic value zero implying HIT-COUNT D is less that of all other HIT-COUNTS. Similarly there are two other terminating states SBD and SAD.
State machine outputs are described as follows. State SEVICT is a reset state in which DAC-U is loaded with HIT-COUNT B by using tri-state control signal UB, and DAC-L is loaded with HIT-COUNT A by using tri-state control signal LA. State machine always loads assumed lower value DAC-L, and assumed higher value to DAC-U. If DAC-L is lower than DAC-U, Ex is logic zero, otherwise Ex is logic one. Mark signals are generated as follows. When HIT-COUNT B is less than HIT-COUNT A, it generates MB logic one and Ex logic zero, and if that is not true, it generates Ex logic one and MA logic one. State machine does assume in the beginning HIT-COUNT B is lesser than all others and generates MB signal marking B for eviction. But it does not generate final EVICT E signals until all other HIT-COUNTS are evaluated.
EVICT-READY signal is generated, when state machine evaluates all HIT-COUNTS, whose Boolean evaluation is shown in
DIGITAL-READY signal gets generated from a smaller backend ADC, which converts Analog signal to DIGITAL BITS, only when there is no corresponding entry in the upfront cache (CACHE MISS). When DIGITAL-READY signal is generated and EVICT-READY is also generated, only then Mark signal gets converted to Evict signals E as shown in
When FRESH DIGITAL BITS are available; it is a simple matter of loading into Cache using EVICT E tri-state signals as control. It is shown in FRESH-CACHE-LOAD