6 bit things

Aug 03, 2022 Last reply: 3 years ago 65 Replies

Is a byte always 8 bits? What can I call a 6-bit byte? A clump?



I want to send data over an SFP optical link, in 6-bit things.



0 1 1 0 d \d repeated, roughly 100 Mbits/sec

is DC balanced, which SFP likes.


The French (and maybe others) use 'octet' for byte, so 'sextet' sounds reasonable.

I use 'nips' for two bits, don't know if anyone else does.

I would still consider it a byte, but sixbit. You could always call it braille.

Cheers

Maybe "frame" sounds better than "clump."

It would still be a byte. Univac 1108, with 36-bit words.

A byte was always a fraction of a word, but the length of a word was whatever the computer was designed for. All sizes were tried.

I've worked on digital computers with the following word sizes (in bits): 12, 16, 24, 32, 36, 48, 64.

There were just as many floating-point formats.

Now days, it has settled down, and words are multiples of 8 bits in size, usually a power of two. And all FP is IEEE.

The standards folk came up with "octet" because byte was so ill-defined.

Half an octet was sometimes called a nybble. And so on.

If you use 8-bit patterns (best for component availability), but use only the DC balanced subset, does that suffice?

Or, turn it around. Figure out how many DC-balanced patterns you need, double it (for growth), and figure out long a word is needed. Don't forget to include some control patterns.

Gigabit Ethernet does something like this, only grander, with two patterns for every possible symbol to be sent, and they track current DC balance, and choose which pattern to use that will reduce the running DC balance.

Joe Gwinn

From

formatting link
The size of the byte has historically been hardware-dependent and no definitive standards existed that mandated the size. Sizes from 1 to 48 bits have been used.[4][5][6][7] The six-bit character code was an often-used implementation in early encoding systems, and computers using six-bit and nine-bit bytes were common in the 1960s. These systems often had memory words of 12, 18, 24, 30, 36, 48, or 60 bits, corresponding to 2, 3, 4, 5, 6, 8, or 10 six-bit bytes. In this era, bit groupings in the instruction stream were often referred to as syllables[a] or slab, before the term byte became common.

I also like the sound of sextet. Its easy to say out loud and gives a strong hint at the meaning.

John

SFP transceivers are capacitor coupled on input and output so they do care about the dc balance of the signal. I believe that there is also capacitor coupling in the photodetector circuit. They don't care about the exact protocol however.

John

And others indeed. All the RFC-s I have read use "octet", apparently a byte has not always been used meaning 8 bits. So the IETF have taken the decision quite a while ago.

I'd go with "sextet", although since during programming it will typically be part of a byte I'd comment "lowest 6 bits" or something.

We could do 8b10b, but that would need an FPGA to generate and receive. I'm thinking about a spare-time thing that I could design without an FPGA or uP, all hardware. My digital people are swamped with big projects and I need something fun to design.

The data is a 1-bit steam from a delta-sigma ADC. I just want to transport it over fiber, and SFP is the easy way to do that. But SFP is intended for telecom, ac coupled, intolerant of dc imbalance. Most SFPs won't pass anything below about 1 MHz. But they are crazy fast and have great AGC.

8b10b does elaborate long-term DC balancing like that. Too much work.

SFPs usually tolerate a little DC imbalance. You can send PWM at, say,

35% to 65%.

Or 'clod'. Alternatives abound. ;)

I'd go with sextet (or sestet, if you're feeling poetic).

Cheers

Phil Hobbs

After all this discussion it occurs to me that the correct answer is a bit. The 0110 is a dc balanced header and the d \d is just a coding scheme that ensures dc balance without conveying more than 1 bit of information.

John

Now one of my guys claims that all we need is

1 0 d1 \d1 1 0 d2 \d2 .... etc

four bits per chunk to recover data d. Which is a nibble. I can still call each 4 bits a frame.

I hate it when people are smarter than I am.

Is it 100 million bits per second, or symbols per second?

What is being digitized? Voice? Data of some kind?

Is there a maximum latency and latency jitter requirement?

One-bit delta samples are usually signed, so the minimum is two symbols. If the voltage being sent is zero, then we'll get a steady

+,-,+,-,+, stream, which will have very strong RF spurs and thus emissions, so need to break this up.

A zero symbol makes it three, and an idle symbol, makes it four symbols.

Yes, too much trouble. But if you use table lookup, you can get close enough.

For instance, have four tables (one per symbol), with unique random patterns, and choose a pattern from the correct table for the symbol to be sent. These patterns are all inherently DC balanced, being half

  • and half -, and don't have any long runs.

On the receive end, use table lookup to recover the sent symbols.

You will need a sync pattern to establish and maintain symbol framing. The key property of sync patterns is a sharp single correlation peak against shifted examples of that pattern. A sync preamble may be multiple sync symbols concatenated. Sync and idle symbols may be the same.

Joe Gwinn

MIX - for the model 1009 Knuth polyunsaturated virtual computer used 6 bit bytes and 5 bytes to a word in TAOCP. It was partly intended to break any algorithm that relied on things being a handy power of two.

I never had enough bookshelf space - or money at the time - for the complete works of Knuth. I don't know how he managed to do so much!

John

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required