mainframes at speeds that make the mind boggle, like 250K to 1M BAUD. Not a
bad thing in itself, but it made my brain ache by having to learn about things
like HDLC. Anyway HDLC, which stands for High-level Data Link Communication,
although a bit nasty to get to grips with, is rather clever when it clicks.
Not only is it efficient, but at can be used at very high speeds.
The real sneaky with HDLC is in the way the data is packaged up (hence
the term Packet Radio). Instead of sending serial data in the form we are
familiar with, that is, a start bit, a byte of data and a stop bit, each byte
being sent and received asynchronously with separate clocks; whole chunks of
stuff are sent at once (typically 128 or 256 bytes at a time) with the clock
signal as part of the data, in other words synchronously. To make this
possible an HDLC packet consists of six fields like this:
The first flag is a unique signal, usually 01111110, now thats not unique you
will think, but we’ll come to the way it is unique in a moment. Anyway, the
flag says ‘Get ready, here comes the packet’.
The next thing to follow is the address, now the address length is not
defined by the protocol, except that it must not be less than one byte long.
Typically the address is two bytes long, and in that 16 bits, it may contain
the coded address of the sending device within a network, and the coded
address of the receiver within the same network; it may also contain routing
instructions through the network. Overall, the address is the code which
allows the packet to reach its correct destination.
The control is again a minimum one byte code, typically two bytes, and
contains supervisory information, things like the current packet number, the
length of the following packet, an acknowledgement of the correct receipt of
the last packet, or a request to resend the last packet, or end of message, or
anything else of a control nature defined and understood by the other end.
Next comes the data. This may be as many bytes as has been decided, it
could be a standard number, 128 or 256, or if could be a number that has been
decided by the control byte. Again the minimum is one byte
The CRC is a two byte Cyclic Redundancy Check (or checksum) which is
computed from all the preceding data bits back to the first flag, so it
encompasses the address and the control as well as the data. CRC’s are lot
better than simple checksums, but whatever it is, it forms a check on the
validity of the preceding data.
Lastly comes the end of packet flag, again the unique code 01111110. This
signals the end of the packet and also that the preceding two bytes were the
So to the uniqueness of the flags. All data is sent as a continual bit
stream, it starts 01111110..... and finishes.....01111110. There are no start
bits, no stop bits, nothing to indicate the bytes at all, just a continual bit
stream from first to last. So what happens if we send a stream of FF’s or
00’s, apart from the flags there will be no low-high transitions and no high-low