Basic data encoding techniques for transmission or storage.
Error checking :
Parity bit
- Even or odd.
- Parity bit sent so total 1 bits counted matches parity.
- Detects single bit error
- Cannot identify specific bad bit
- Used in early PCs as a check for main memory.
CRC - cyclic redundancy check
- Effective for quick detection of data corruption when transferring data.
- Uses polynomial math to calculate a short check value.
- Added to data stream. Recalculation results null out on good data transfer.
- Cannot recover data, just detects corruption.
- Useful where re-transmission cheap.
- Used in early hard drive storage.
Hamming code
- Provide error detection and recovery where error rate low.
- Better protection if errors are not close together.
- Used on main memory on high-end servers where accurate data is critical.
Reed-Solomon
- Applied to blocks of data
- Provides check and correction for multiple errors in block.
- Used where re-transmission of bad data not practical.
- Variations used in
- DVD
- CD
- QR code
- DSL
- WiMax
- Digital TV
- deep space satellite
Turbo-code
- Highly efficient technique for checking and repairing errors.
- Effective where corrupting noise is present.
- Uses a type of cross check on receiving for best-guess fix.
- Used in 3G/4G mobile and newer deep-space satellites.
Low-density parity check code LDPC
- Highly efficient technique for checking and repairing errors.
- Effective where corrupting noise is present.
- Conceived in 60's but implementation only possible with current
technology.
- Used in newer satellite communications.
- More efficient than turbo-code for very high speed transmission.
******************
Bus basics
4 types of bus
- Address - used to identify device/cicuit being contacted.
- Data - used to transfer data between devices/circuits.
- Control - used trigger actions or transmit status of activity.
- Power - used to power circuits/devices.
Arbitration - used when more than one device can master the bus.
4 types
Daisy-chain
- Grant line linked to masters in serial chain. If a master claims
the grant, it doesn't pass the grant on to then next master.
- Lesser masters get bus only if higher master not interested.
- Not fair, but efficient for certain bus designs.
Centralized arbitration
- Uses a dedicated arbiter.
- Can allow for 'programmable' prioritization.
- Masters need only limited additional circuitry (request/grant)
- WiFi uses this, clients wait for a clear channel and requests
a reseved time slot to use WiFi. Access point grants or denies(ignores)
request. If granted, all other devices see the grant and wait.
- PCI arbitration is performed by the PCI controller.
Distributed arbitration
- Each master needs additional logic (decoder logic) to break ties.
- Each master assigned an ID to establish priority.
- All masters share arbitration lines.
- Some versions all priority to be reassigned dynamically.
- Closely resembles daisy chain, but uses additional logic on each device.
- Examples : SCSI
Distributed using collision detection.
- Any device may use 'bus'.
- Device transmits only on a clear bus
- As it transmits, it continues to monitor for collision.
- If detected, transmission pause for short time.
- Re-transmission attempted again.
- If collisions continue, transmission abandoned.
- Effective if number of 'masters' not too large.
- Early ethernet used CSMA/CD.