Reply by Jerry Avins December 4, 20092009-12-04
Al Clark wrote:
> "akeane01" <akeane01@harris.com> wrote in > news:3MmdnetxcK1u7ovWnZ2dnUVZ_jadnZ2d@giganews.com: > >>> Jerry Avins <jya@ieee.org> wrote in >> news:3N%Qm.35013$cd7.16736@newsfe04.iad: >>>> akeane01 wrote: >>>>> Hi, >>>>> >>>>> >>>>> below is a sample of the filter to process de-emphasis on audio >> signals on >>>>> a receiver card with a ADSP2101. When i run the code without this >> filter >>>>> the linearity of the audio signals is good down to 80dB below full >> scale >>>>> which is around -60dBm. So -10dBm input equals -10dBm output for good >>>>> linearity and so on. What i notice is that when i add this filter to >>>>> compensate from the pre-emphasized signal from the transmitter, my >> low >>>>> level linearity response is starts dropping off at -50dBm input. If I >> add >>>>> gain before the filter then the better the low level signal response >> but i >>>>> lose that range on the high level signals. Is there anything that can >> be >>>>> done to this 1.15 fractional mode filter for low level signals? >>>> Double precision. >>>> >>>> Jerry >>> Jerry is right that double precision will take care of the noise issue. >>> >>> Why are you using a ADSP-2101? I have used ADI DSPs almost exclusively >> since >>> the early 1990s and I have never used a 2101 (although I did use a lot of >> the >>> $9.90 ADSP-2105 in the 1990s). >>> >>> There are many choices today that would work much better. An easy >> solution >>> would be a SHARC. In fixed point, you have 1.31 fractional math. You also >>> have floating point as an option. >>> >>> Assuming you need more that a few, I would be glad to work with you on a >> more >>> modern design. >>> >>> Al Clark >>> www.danvillesignal.com >>> >> Al, >> >> This is an old legacy design so I cannot change it. I was trying to learn >> something about the filter,how it works and what i could do if anything >> with improving the linearity by 10dB. I have been trying to read up on >> double precision but not sure how that helps with low level signals when > it >> appears i am at the bottom of the usable range of the signals. Its even >> more fun since the code loads multiple boot pages, which prevents me from >> any effective use of an emulator. Any help would be appreciated.. >> >> > > I think we are all looking at this problem wthout seeing enough details. > The assumption is that the precision of the filter is causing the noise > floor to increase. This is likely given the dynamic range and 16 bit math. > > Double precision is possible with the 2101. There is an ADI book, Using the > ADSP-2100 Family Volume 1 & 2, that might help you with this. It is > available as a download at http://www.analog.com/en/embedded-processing- > dsp/ADSP-21xx/processors/manuals/resources/index.html.
Here is the reconstructed URL: http://www.analog.com/en/embedded-processing-dsp/ADSP-21xx/processors/manuals/resources/index.html
> The 2101 has limited memory. It has 8 possible boot pages. If they used > multiple pages it might be difficult to add a lot of code. That said, > Vladimir pointed out the the original code was not well written (and he was > correct). > > This suggests that the originator probably did not understand DSP very well > or the assembly langauge of the part. You can probably find ways to rewrite > the code more efficently and include a double precision filter. > > The never was an emulator for the 2101, regardless of boot pages.
Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Reply by Al Clark December 4, 20092009-12-04
"akeane01" <akeane01@harris.com> wrote in 
news:3MmdnetxcK1u7ovWnZ2dnUVZ_jadnZ2d@giganews.com:

>>Jerry Avins <jya@ieee.org> wrote in > news:3N%Qm.35013$cd7.16736@newsfe04.iad: >> >>> akeane01 wrote: >>>> Hi, >>>> >>>> >>>> below is a sample of the filter to process de-emphasis on audio > signals on >>>> a receiver card with a ADSP2101. When i run the code without this > filter >>>> the linearity of the audio signals is good down to 80dB below full > scale >>>> which is around -60dBm. So -10dBm input equals -10dBm output for good >>>> linearity and so on. What i notice is that when i add this filter to >>>> compensate from the pre-emphasized signal from the transmitter, my > low >>>> level linearity response is starts dropping off at -50dBm input. If I > add >>>> gain before the filter then the better the low level signal response > but i >>>> lose that range on the high level signals. Is there anything that can > be >>>> done to this 1.15 fractional mode filter for low level signals? >>> >>> Double precision. >>> >>> Jerry >> >>Jerry is right that double precision will take care of the noise issue. >> >>Why are you using a ADSP-2101? I have used ADI DSPs almost exclusively > since >>the early 1990s and I have never used a 2101 (although I did use a lot of > the >>$9.90 ADSP-2105 in the 1990s). >> >>There are many choices today that would work much better. An easy > solution >>would be a SHARC. In fixed point, you have 1.31 fractional math. You also > >>have floating point as an option. >> >>Assuming you need more that a few, I would be glad to work with you on a > more >>modern design. >> >>Al Clark >>www.danvillesignal.com >> > Al, > > This is an old legacy design so I cannot change it. I was trying to learn > something about the filter,how it works and what i could do if anything > with improving the linearity by 10dB. I have been trying to read up on > double precision but not sure how that helps with low level signals when
it
> appears i am at the bottom of the usable range of the signals. Its even > more fun since the code loads multiple boot pages, which prevents me from > any effective use of an emulator. Any help would be appreciated.. > >
I think we are all looking at this problem wthout seeing enough details. The assumption is that the precision of the filter is causing the noise floor to increase. This is likely given the dynamic range and 16 bit math. Double precision is possible with the 2101. There is an ADI book, Using the ADSP-2100 Family Volume 1 & 2, that might help you with this. It is available as a download at http://www.analog.com/en/embedded-processing- dsp/ADSP-21xx/processors/manuals/resources/index.html. The 2101 has limited memory. It has 8 possible boot pages. If they used multiple pages it might be difficult to add a lot of code. That said, Vladimir pointed out the the original code was not well written (and he was correct). This suggests that the originator probably did not understand DSP very well or the assembly langauge of the part. You can probably find ways to rewrite the code more efficently and include a double precision filter. The never was an emulator for the 2101, regardless of boot pages. Al Clark
Reply by Jerry Avins December 2, 20092009-12-02
akeane01 wrote:

> ... I have been trying to read up on > double precision but not sure how that helps with low level signals when it > appears i am at the bottom of the usable range of the signals. Its even > more fun since the code loads multiple boot pages, which prevents me from > any effective use of an emulator. Any help would be appreciated..
You wrote that gain could fix low amplitudes, but then you had trouble with high amplitude. Double precision will increase "headroom" at the top. It the entire signal fits into the range of your A-to-D converter with enough resolution at the low end, careful analysis of what you need may avoid the need for extending the precision (but maybe not). Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Reply by akeane01 December 2, 20092009-12-02
>Jerry Avins <jya@ieee.org> wrote in
news:3N%Qm.35013$cd7.16736@newsfe04.iad:
> >> akeane01 wrote: >>> Hi, >>> >>> >>> below is a sample of the filter to process de-emphasis on audio
signals on
>>> a receiver card with a ADSP2101. When i run the code without this
filter
>>> the linearity of the audio signals is good down to 80dB below full
scale
>>> which is around -60dBm. So -10dBm input equals -10dBm output for good >>> linearity and so on. What i notice is that when i add this filter to >>> compensate from the pre-emphasized signal from the transmitter, my
low
>>> level linearity response is starts dropping off at -50dBm input. If I
add
>>> gain before the filter then the better the low level signal response
but i
>>> lose that range on the high level signals. Is there anything that can
be
>>> done to this 1.15 fractional mode filter for low level signals? >> >> Double precision. >> >> Jerry > >Jerry is right that double precision will take care of the noise issue. > >Why are you using a ADSP-2101? I have used ADI DSPs almost exclusively
since
>the early 1990s and I have never used a 2101 (although I did use a lot of
the
>$9.90 ADSP-2105 in the 1990s). > >There are many choices today that would work much better. An easy
solution
>would be a SHARC. In fixed point, you have 1.31 fractional math. You also
>have floating point as an option. > >Assuming you need more that a few, I would be glad to work with you on a
more
>modern design. > >Al Clark >www.danvillesignal.com >
Al, This is an old legacy design so I cannot change it. I was trying to learn something about the filter,how it works and what i could do if anything with improving the linearity by 10dB. I have been trying to read up on double precision but not sure how that helps with low level signals when it appears i am at the bottom of the usable range of the signals. Its even more fun since the code loads multiple boot pages, which prevents me from any effective use of an emulator. Any help would be appreciated..
Reply by Jerry Avins December 1, 20092009-12-01
Jerry Avins wrote:
> akeane01 wrote: >> Hi, >> >> >> below is a sample of the filter to process de-emphasis on audio >> signals on >> a receiver card with a ADSP2101. When i run the code without this filter >> the linearity of the audio signals is good down to 80dB below full scale >> which is around -60dBm. So -10dBm input equals -10dBm output for good >> linearity and so on. What i notice is that when i add this filter to >> compensate from the pre-emphasized signal from the transmitter, my low >> level linearity response is starts dropping off at -50dBm input. If I add >> gain before the filter then the better the low level signal response >> but i >> lose that range on the high level signals. Is there anything that can be >> done to this 1.15 fractional mode filter for low level signals? > > Double precision.
akeane01@harris.com wrote: > alan keane visited DSPRelated.com and clicked on your name from this page: > http://www.dsprelated.com/showmessage/121010.php > to contact you. His message follows: > > Jerry, > > you mention using double precision to help solve my problem. Is there an example of how to do this. I am not that familiar with it.. > > thanks > Alan Keane Technical questions belong in the newsgroup, where many can respond and where others can be correct my mistakes. The exact details of implementing double precision depend on the resources provided bu the processor. Addition is fairly easy, but multiplication is a bit messy. Double precision uses twice as many bits to represent a number, It is divided into high and low parts, To add two numbers a and b, Perform a_low + b_low = sum_low, then a_high + b_high (with the carry from the first addition) = sum_high. Multiplication is done similarly, accounting for the cross terms, and produces a quad-precision result. Typically, the low bits will be discarded and therefor needn't be computed in detail, but carries resulting from them need to be accounted for. This is basic assembly programming. AD's web site may have a tutorial. Jerry -- "The rights of the best of men are secured only as the rights of the vilest and most abhorrent are protected." - Chief Justice Charles Evans Hughes, 1927 &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295; -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Reply by Al Clark December 1, 20092009-12-01
Jerry Avins <jya@ieee.org> wrote in news:3N%Qm.35013$cd7.16736@newsfe04.iad:

> akeane01 wrote: >> Hi, >> >> >> below is a sample of the filter to process de-emphasis on audio signals on >> a receiver card with a ADSP2101. When i run the code without this filter >> the linearity of the audio signals is good down to 80dB below full scale >> which is around -60dBm. So -10dBm input equals -10dBm output for good >> linearity and so on. What i notice is that when i add this filter to >> compensate from the pre-emphasized signal from the transmitter, my low >> level linearity response is starts dropping off at -50dBm input. If I add >> gain before the filter then the better the low level signal response but i >> lose that range on the high level signals. Is there anything that can be >> done to this 1.15 fractional mode filter for low level signals? > > Double precision. > > Jerry
Jerry is right that double precision will take care of the noise issue. Why are you using a ADSP-2101? I have used ADI DSPs almost exclusively since the early 1990s and I have never used a 2101 (although I did use a lot of the $9.90 ADSP-2105 in the 1990s). There are many choices today that would work much better. An easy solution would be a SHARC. In fixed point, you have 1.31 fractional math. You also have floating point as an option. Assuming you need more that a few, I would be glad to work with you on a more modern design. Al Clark www.danvillesignal.com
Reply by Vladimir Vassilevsky December 1, 20092009-12-01

akeane01 wrote:

> Hi, > > > below is a sample of the filter to process de-emphasis on audio signals on > a receiver card with a ADSP2101. When i run the code without this filter > the linearity of the audio signals is good down to 80dB below full scale > which is around -60dBm. So -10dBm input equals -10dBm output for good > linearity and so on. What i notice is that when i add this filter to > compensate from the pre-emphasized signal from the transmitter, my low > level linearity response is starts dropping off at -50dBm input. If I add > gain before the filter then the better the low level signal response but i > lose that range on the high level signals. Is there anything that can be > done to this 1.15 fractional mode filter for low level signals? > > > > > > /* load loop count and coefficents */ > > /* setup pointers to buffer */ > > > DIS M_MODE; > > > startDemph: > > CNTR = ar; /* load counter */ > > DO to_lrs UNTIL CE; /* loop until count expires, end > of buffer */ > > > SR0 = dm(I7,M6); /* load sample from buffer */ > MX1 = dm(l_last_in); /* previous samples */ > AR = dm(l_last_out); > MY0 = dm(de_a0); /* load 1st coefficient */ > MR = MX0 * MY0 (SS); > MY0 = dm(de_a1); /* load 2nd coefficient */ > MR = MR + MX1 * MY0 (SS); > MY0 = dm(de_b1); /* load 3rd coefficient */ > MR = MR + AR * MY0 (SS); > MR = MR (RND); > IF MV SAT MR; > dm(l_last_out) = MR1; > dm(l_last_in) = MX0; > dm(I7,M7) = MR1; /* store new filtered sample > */ > > to_lrs:
^^^^^^^^^^^^^^^^^^^^^^^^^^ What a lousy code. Here is how to do this filter, plus the noise shaping: do loop until ce; mr = mr + mx0*my0(ss), mx0 = dm(i0,m1) , my0 = pm(i4,m4); mr = mr + mx0*my0(ss), mx0 = dm(i0,m2) , my0 = pm(i4,m4); mr = mr + mx1*mf(ss); if mv sat mr; dm(i7,m7) = mr1, mf = pass mr1; loop: mr1 = 0; Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Reply by Jerry Avins November 30, 20092009-11-30
akeane01 wrote:
> Hi, > > > below is a sample of the filter to process de-emphasis on audio signals on > a receiver card with a ADSP2101. When i run the code without this filter > the linearity of the audio signals is good down to 80dB below full scale > which is around -60dBm. So -10dBm input equals -10dBm output for good > linearity and so on. What i notice is that when i add this filter to > compensate from the pre-emphasized signal from the transmitter, my low > level linearity response is starts dropping off at -50dBm input. If I add > gain before the filter then the better the low level signal response but i > lose that range on the high level signals. Is there anything that can be > done to this 1.15 fractional mode filter for low level signals?
Double precision. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Reply by akeane01 November 30, 20092009-11-30
Hi,

 
below is a sample of the filter to process de-emphasis on audio signals on
a receiver card with a ADSP2101. When i run the code without this filter
the linearity of the audio signals is good down to 80dB below full scale
which is around -60dBm. So -10dBm input equals -10dBm output for good
linearity and so on. What i notice is that when i add this filter to
compensate from the pre-emphasized signal from the transmitter, my low
level linearity response is starts dropping off at -50dBm input. If I add
gain before the filter then the better the low level signal response but i
lose that range on the high level signals. Is there anything that can be
done to this 1.15 fractional mode filter for low level signals?

 
 
 
 
/* load loop count and coefficents     */

/* setup pointers to buffer  */

 
DIS M_MODE;

        
startDemph:      

CNTR = ar;           /* load counter */

DO to_lrs UNTIL CE;                      /* loop  until count expires, end
of buffer  */

         
   SR0 = dm(I7,M6);                      /* load sample from buffer */
   MX1 = dm(l_last_in);                  /* previous samples     */
   AR  = dm(l_last_out);
   MY0 = dm(de_a0);                    /* load 1st coefficient  */
   MR  = MX0 * MY0 (SS);
   MY0 = dm(de_a1);                    /* load 2nd coefficient  */
   MR  = MR + MX1 * MY0 (SS);
   MY0 = dm(de_b1);                    /* load 3rd coefficient  */
   MR  = MR + AR  * MY0 (SS);
   MR  = MR (RND);
   IF MV SAT MR;
   dm(l_last_out) = MR1;
   dm(l_last_in)  = MX0;
   dm(I7,M7) = MR1;                     /* store new filtered sample    
*/

to_lrs: