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

Re: [bluetooth] Re: Clock Recovery in BT




Hi,
Thanks for your information.
Please check my answers and comments below within your email

[email protected]_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