[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bluetooth] Re: Clock Recovery in BT



Hi,

Yes I can draw a specification for the correlator block and clock
recovery block.. What I can do is try and get these spec.'ed for you
and I can e-mail them to yourself for review, then you can make any
suggestions or comments to me if you like... I have had a brief look
throught your bluetooth spec, but I will want to have a more in-depth
look through it before I write up these specs just to make sure I don't
make any stupid mistakes. :-)

I will most probably be away over the next week, but I will be taking
my laptop with me, so I will be able to work on them then.

Regards
Rob

 --- Jamil Khatib <j-khatib@palnet.com> wrote: > 
> Hi,
> Thanks for your information.
> Please check my answers and comments below within your email
> 
> robertopenshaw@hotmail.com_NO_SPAM wrote:
> 
> > Why not seperate out the function of locking onto the incomming
> data 
> > stream and looking for an access code match? In my experience these
> 
> > are two very very different tasks. Also the preamble can't be
> relied on 
> > to provide the 1010 pattern. I have personally seen these preambles
> 
> > missing, and in fact even sometimes some missing access code, in
> some 
> > packets on a particular radio chip!
> 
> 
> I agree with you I should update this to the next release of the
> design document.
> 
> > 
> > The first problem you have about the incoming data stream may be
> that 
> > it's coming from a totally different clock, even if it is 1Mhz it
> does have 
> > a certain accuracy and our clock also must be within this accuracy.
> But 
> > you can no garuntee the relasionship between them! Correct? I
> beleive 
> > the 1Mhz clock accuracy requirement is spec'ed in the bluetooth 1.1
> 
> > spec. This accuracy ensures that over the time taken for 1 maximum 
> > sized bluetooth data packet, that any two 1Mhz clocks will not
> drift far 
> > enough appart as to cause setup/hold violations. But that is
> assuming 
> > your clocks are aligned at the start of the packet!
> > 
> > So somehow you need to prevent this drifting of clocks resulting in
> us 
> > either dropping a bit, where our clock is slightly slower, or
> gaining an 
> > extra bit, where our clock is slightly faster.
> > 
> > So how are you going to lock onto an asynchronouse data stream? 
> > Perhaps have a small block running much quicker that 'oversamples'
> the 
> > incomming data stream? We can then track when the transitions in
> the 
> > incomming data stream occurs in relation to our clock. So we can 
> > predict if we are going to drop or gain a bit. If we then run our
> design at 
> > say 2Mhz with the logic enabled every other cycle then we are 
> > effectively running at 1Mhz. But now we can recover this 'dropped
> bit' 
> > by leaving the enable high for 2 2Mhz cycles, and we can make up
> for 
> > this gained, or phantom bit, by leaving the enable low for an extra
> clock 
> > cycle! I feel this can then result in a reasonably safe tracking of
> the 
> > incomming data stream.
> 
> 
> In fact I had a suggestion about such block in hte design document in
> the past but I dropped it but I think I should consider it again.
> 
> > 
> > Now the detection of the correct transition in the incomming data 
> > stream is a different matter. I have seen a 1Mhz data stream from a
> 
> > particular manufacturers bluetooth radio chip that has noise at a
> higher 
> > frequency overlaid on the data. Especially near the beginning of
> the 
> > packet when it is trying to lock onto the incomming data stream. I
> have 
> > seen a radio chip, from an alternative manufacturer, that prevents
> this 
> > happeneing and has a nice clean 1Mhz signal. So now we need to
> filter 
> > out spuriouse transitions. This all gets pretty messy but I have an
> idea 
> > for a solution.
> > 
> > Now onto the correlator. You are not looking for the preamble
> anymore! 
> > Shift the incomming data into a 68 bit shift register, compare on
> every 
> > clock cycle the contets of this shift register with our access
> code. As 
> > soon as they match we have a correlation! If the correlator is run
> at the 
> > incoming data stream speed we can provide a correlate signal 
> > combinatorially in time for the next clock cycle.
> > 
> > A quick question. Why are you passing the incoming data stream 
> > THROUGH the correlator to the FEC? Why not bypass the correlator,
> this 
> > will reduce latency (68 clock cycles) on the incoming data path! If
> the 
> > correlator merely monitors the incommind data and provides a
> correlate 
> > signal (combinatorially) then the next clock cycle will be the
> first data 
> > bit after the access code! (Most probably the first bit of the
> trailer, 
> > depending on the packet type!) So we could pass the data straight
> from 
> > the 're-sync' block mentioned above to the FEC which merely ignores
> all 
> > data until the correlate signal goes high.
> 
> 
> I thought I put it in the design document but it seems I forgot it.
> Anyhow all datapath blocks (including the correlator) should have
> pass signal to by pass the block 
> 
> 
> > 
> > Could this 68 clock cycle latency could be an issue in us hitting
> our next 
> > transmit time slot? It is easliy avoided using the method mentioned
> 
> > above! Also the correlator can be run slow, so as to reduce power 
> > consumtion..... (At the speed of the incomming data stream!)
> > 
> > I feel that a programmable threshold is important. I have seen 
> > successfull corellations with 0 errors, I have also seen access
> codes 
> > with 3 errors in it! We really still want to detect these packets
> with say 
> > 3 errors! Say make the threshold programmable from 0 to say 15
> errors 
> > (just picking numbers from thin air!) I can see situations where we
> could 
> > have bit errors in the access code! (noisey enviroment! While
> popping 
> > pop corn in the microwave????) But we want to reduce the chances of
> 
> > correlating on incorrect access codes! Now I know this is unlikely.
> The 
> > access codes are calculated in such a way as to ensure a high
> hamming 
> > distance between any two valid access codes! But It's better to be
> safe 
> > than sorry. The software could 'tune' this threshold accordign tot
> he 
> > signal quality if an error count is fed abck from the correlator.
> This could 
> > tell the software how many errors are actually occuring in the
> access 
> > codes!!!
> 
> 
> Programable threshold is on my todo list.
> 
> 
> > 
> > Thats about it for my first installment... I could knock up a spec
> for a 
> > correlator explaining the reasoning behind features if you woudl
> like... 
> > Not necessarily as a part of your bluetooth spec, but merely to try
> and 
> > explain my thoughts......
> 
> 
> 
> If you would like try to make the proposal for both the clock
> recovery and correlator blocks that can fit in the whole opencores
> bluetooth design and I will added there.
> Do you agree to take the reponsibility of these blocks? it seems you
> will be very help full to our project.
> 
> 
> Regards,
> Jamil Khatib
> 
> > 
> > 
> > Cheers
> > Rob
> > 
> > Robert Openshaw
> > 
> 
> 
> 
> 
> --
> To unsubscribe from bluetooth mailing list please visit
http://www.opencores.org/mailinglists.shtml 

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com
--
To unsubscribe from bluetooth mailing list please visit http://www.opencores.org/mailinglists.shtml