From: Frank Buss on
Frank Buss wrote:

> http://www.frank-buss.de/tmp/1wire.png

I've added it, with some more explanation, to the Wikipedia page:

http://en.wikipedia.org/wiki/1-Wire

--
Frank Buss, fb(a)frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
From: Brian Drummond on
On 11 Aug 2006 14:16:19 -0700, "rickman" <spamgoeshere4(a)yahoo.com>
wrote:

>Frank Buss wrote:
>> rickman wrote:
>>
>> > Is self clocking on a single pin possible? I am thinking that the
>> > extra info has to be presented in some manner that requires either a
>> > timing or amplitude measurement.
>>
>> As Jim wrote, the one-wire bus can do this. With this concept you need only
>> one wire (and ground) to power and communicate with a device:
>>
>> http://pdfserv.maxim-ic.com/en/an/onewirebus.pdf
>> http://www.maxim-ic.com/appnotes.cfm/an_pk/126
>
>Thanks to everyone for their posts. Each of the above solutions
>require timing of the signal and so will not work without a clock (or
>timer) of a specified rate. The key is "specified". To decode a
>machester stream you need a time interval of about 3/4 of the bit time
>in order to blank the edge detector on the edge between bits.

If you *know* it's Manchester coding, and have *no idea* of the clock
rate, the problem can be solved if you can afford to spend some time
framing up. It's harder if you instantly need to decode the first bit.

Basic approach is to measure the times between transitions, compare
several successive transition intervals, and classify them as "long" or
"short" compared to each other. THEN take a mean value, apply blanking
(clock recovery), and start framing up.

(If you need to retroactively decode the first bit, you'll need to store
and re-visit the first few transition times. This may be easier with the
assistance of an embedded CPU)

There will need to be some constraints on data, otherwise an infinite
sequence of '0's or '1's would take infinitely long to decode. In SP/DIF
or EBU/AES digital audio for example, this comes in the form of an
extra-long transition interval (1.5 bit times) during a preamble, the
trailing edge of which is guaranteed to correctly sync the clock
recovery circuit.


>So I can't read a Manchester stream at 10 Mbps and one at 1
>Mbps with the same timer.

This approach should allow that - given some quiet time between
different streams, to enable you to recognise a switch in rate.

- Brian
From: Brian Drummond on
On 12 Aug 2006 04:12:43 -0700, "rickman" <spamgoeshere4(a)yahoo.com>
wrote:

>Jonathan Bromley wrote:
>> On 11 Aug 2006 14:16:19 -0700, rickman
>> <spamgoeshere4(a)yahoo.com> wrote:
>>
>>
>> >Thanks to everyone for their posts. Each of the above solutions
>> >require timing of the signal and so will not work without a clock (or
>> >timer) of a specified rate.
>>
>> I'm not sure I understand this.
>>
>> Give me an oscillogram of a Manchester-coded signal and I can
>> tell you its clock rate by inspection - unless the data stream
>> is all-1s or all-0s, and that's a corner case that we easily
>> know how to avoid. I need only one different bit in the
>> entire oscillogram and I can work out what's going on with
>> no _a priori_ knowledge of the data rate.
>
>Actually, that is not correct. Here are two sequences sampled at 1
>MHz. Please tell me the clock rates.
>
>0101010101010101
>0011001100110011

Where are the "different" bits specified by Jonathan in that sequence?
These are both sequences of *identical* bits - all 1's or all 0's (when
stripped of their clock), which Johnathan already covered.

- Brian

From: rickman on
Brian Drummond wrote:
> On 11 Aug 2006 14:16:19 -0700, "rickman" <spamgoeshere4(a)yahoo.com>
> wrote:
>
> >Frank Buss wrote:
> >> rickman wrote:
> >>
> >> > Is self clocking on a single pin possible? I am thinking that the
> >> > extra info has to be presented in some manner that requires either a
> >> > timing or amplitude measurement.
> >>
> >> As Jim wrote, the one-wire bus can do this. With this concept you need only
> >> one wire (and ground) to power and communicate with a device:
> >>
> >> http://pdfserv.maxim-ic.com/en/an/onewirebus.pdf
> >> http://www.maxim-ic.com/appnotes.cfm/an_pk/126
> >
> >Thanks to everyone for their posts. Each of the above solutions
> >require timing of the signal and so will not work without a clock (or
> >timer) of a specified rate. The key is "specified". To decode a
> >machester stream you need a time interval of about 3/4 of the bit time
> >in order to blank the edge detector on the edge between bits.
>
> If you *know* it's Manchester coding, and have *no idea* of the clock
> rate, the problem can be solved if you can afford to spend some time
> framing up. It's harder if you instantly need to decode the first bit.
>
> Basic approach is to measure the times between transitions, compare
> several successive transition intervals, and classify them as "long" or
> "short" compared to each other. THEN take a mean value, apply blanking
> (clock recovery), and start framing up.
>
> (If you need to retroactively decode the first bit, you'll need to store
> and re-visit the first few transition times. This may be easier with the
> assistance of an embedded CPU)
>
> There will need to be some constraints on data, otherwise an infinite
> sequence of '0's or '1's would take infinitely long to decode. In SP/DIF
> or EBU/AES digital audio for example, this comes in the form of an
> extra-long transition interval (1.5 bit times) during a preamble, the
> trailing edge of which is guaranteed to correctly sync the clock
> recovery circuit.

I am familiar with how to recover Manchester data. The problem is that
you *do* have to measure the clock rate or know it.

The thread has broken into two discussions. One is about how to recover
Manchester data and the minimum rate clock to use. The other is about
self clocking data encoding and whether you can decode it without a
time reference. In reality there is not a practical way to do that. I
had not given the question much thought when I posed it and I see now
that all the "self clocking" schemes are framed in some rate and the
clock is recovered given a reference.

> >So I can't read a Manchester stream at 10 Mbps and one at 1
> >Mbps with the same timer.
>
> This approach should allow that - given some quiet time between
> different streams, to enable you to recognise a switch in rate.

Yes, you can in essence construct a very wide range PLL to decode a
Manchester signal. It still uses a time reference and a very complex
one at that. I was actually looking for a simple way to decode a
combined data and clock signal without having a time reference. For
most practical purposes this is not doable.

An analog of what I would like to do is the I2C bus. It is designed to
work at any rate down to 0 Hz. Of course it uses a clock separate from
data. It would be nice if that could be done on one digital wire
rather than two. But I see that this is not practical without going to
multiple voltage levels or adding a reference clock.

From: Jim Granville on
rickman wrote:
<snip>
>
> If I am going to require a time reference at the receiver the simplest
> scheme I know of is just async serial data with a start and a stop bit.

This is not quite the simplest.

It imposes clock tolerance requirements, and is half duplex, so the
Transmit has to generate it's own clock.

If you want to ease that, you can do something like the LIN bus, which
gives a auto-baud pre-amble, but that is getting complex for CPLDs.

> No point in using Manchester encoding if I am transferring the data
> over a wire just a few inches long.

Many TV remote's use manchester, and they do that to allow the use of RC
clocks, and straight from battery operation.

If you want the simplest scheme, in a CPLD, use one-wire, because that
is duplex, and does not need to generate a TX clock, just a Tx time slot
( which can be monostable derived ).

If you can get up to 2 wires, then i2c & variants are a widely used
standard, and it does not take too much CPLD resource.

There is something of a flurry of PowerControl busses being released at
the moment, some are one wire, and some are 2 wire.
Geberally, they try to be faster, and more low voltage tolerant, than i2c.

-jg

First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5 6 7 8 9
Prev: Cyclone I & II memory fmax
Next: JOP as SOPC component