160 likes | 312 Views
Quick and Easy Binary to dB Conversion. George Weistroffer, Jeremy Cooper, and Jerry Tucker Electrical and Computer Engineering Virginia Commonwealth University Richmond, VA. New algorithm for converting binary integers to decibels (dB). Advantages over known alternative methods Faster
E N D
Quick and Easy Binary to dB Conversion George Weistroffer, Jeremy Cooper, and Jerry Tucker Electrical and Computer Engineering Virginia Commonwealth University Richmond, VA.
New algorithm for converting binary integers to decibels (dB) • Advantages over known alternative methods • Faster • No real-time floating point operations • Only real-time arithmetic is one integer subtraction • Requires fewer resources (i.e. less memory) • Simple to implement • Limitations • Reduced precision • High precision is not typically needed for dB’s • Precision can be increased at the cost of more memory.
Motivation Binary output samples of analog input voltages. Level detector V1 Analog Mux n-bit ADC w, n-bit word Level detector V2 Level detector dB Vk V1,V2,…Vk
The problem Consider an unsigned binary integer w expressed as • Typically w is the output of an n-bit ADC and is changing in real-time. Let G be the comparison in dB of w to the maximum value of w. Then G Changes in real time Fixed – depends only on number of bits in w.
For any particular value of n, the Gc term is a constant and does not have to be computed in real time.
Computing 20log10(w) • The difficulty is the evaluation of the 20log10(w) term. • The input w changes for each sample. • 20log10(w) must continually be recalculated. • A fast method is needed for this calculation. • Such a method can be developed by taking advantage of the fact that dB values typically do not need to be represented with high precision. • Therefore, it is possible to use an approximation for w.
The approximation of w • Then assuming w≠ 0, w can be expressed as where bit m with m < n is the left-most (most significant) “1” of w. • To approximate w, use only the first r-bits to the right of the most significant “1” of w. • Let wmin = (1wm-1wm-2…wm-r0…0)2 and wmax = (1wm-1wm-2…wm-r 1…1)2 • Then wmin≤ w ≤ wmax Note that when m ≤ r then wmin = w =wmax. • w wmin= (1wm-1wm-2…wm-r0…0)2 Bit m r-bits
The approximation of G Recall that G = 20log10(w)-20log10(2n-1) Therefore, Gmin = 20log10(wmin)-20log10(2n-1) Using G Gmin and letting R = (wm-1wm-2…wm-r)2 it is easy to show that G can be approximated using three terms. where Depends only on m Depends only on R A constant
The approximation error The worst case error occurs when m=n-1. Using The error will never exceed this worst case error.
Refinements to the algorithm • Combine the Gc value with each term in the Gm table. • This is slightly more efficient than subtracting the Gc value each time a dB value is computed. • Scale table values to avoid fractional values. • Let k be the scale factor. • If resolution is ½ dB let k = 2, if resolution is ¼ dB let k = 4, etc. • Represent the negation of G as an unsigned integer. • G is always negative. Therefore, evaluate –kG k(GC – Gm) - kGR
Example: Let w = (1 0101 01011000011)2 m = 15, R = (0101)2 = 5, 2(Gc – Gm(15)) = 12, 2GR(5) = 5 -2G 12 – 5 = 7, G -3.5 dB, Actual value G = -3.517 dB
Conclusion • A technique that is fast, easy to implement, and memory efficient has been developed for converting a binary integer to dB’s. • It takes advantage of the fact that in practice decibels do not need to be calculate to high precision. • It uses two small lookup tables to find the dB values. • The method has been illustrated for the specific case where w is a 16-bit unsigned integer, and where four bits following the most significant “1” of w are used to approximate w. • Requires two 16 byte tables. • The dB value obtained is always within ½ dB of the actual value. • The algorithm has been implemented and verified using both 8051 assembly language and VHDL.