1 / 88

Constrained Coding Techniques for Advanced Data Storage Devices Paul H. Siegel Director, CMRR

Constrained Coding Techniques for Advanced Data Storage Devices Paul H. Siegel Director, CMRR Electrical and Computer Engineering University of California, San Diego. Outline. Digital recording channel model Constrained codes (track-oriented) Bit-stuffing, bit-flipping, symbol-sliding

ronli
Download Presentation

Constrained Coding Techniques for Advanced Data Storage Devices Paul H. Siegel Director, CMRR

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Constrained Coding Techniques for Advanced Data Storage Devices Paul H. Siegel Director, CMRR Electrical and Computer Engineering University of California, San Diego

  2. Outline • Digital recording channel model • Constrained codes (track-oriented) • Bit-stuffing, bit-flipping, symbol-sliding • Information theory of constrained codes • Constrained codes (page-oriented) • Bit-stuffing in 2-dimensions • Concluding remarks

  3. “Constrained coding” Digital Recording Channel Error Correction Encoder Write Equalization Modulation Encoder 1110110 10010001001 11101101 Head/ Medium Error Correction Decoder Read Equalization Modulation Decoder

  4. Hard Disk Drive – Magnetic Transitions Linear Density: 135.4 kb/in or 5.33bits/μm 32μm 78μm Courtesy of Fred Spada

  5. CD - Pits and Lands Linear Density: 39.4 kb/in or 1.55 bits/μm Courtesy of Giesbert Nijhuis

  6. (d,k) Runlength-Limited Constraints • Modulation codes for digital recording channels • d = minimum number of 0’s between 1’s • k = maximum number of 0’s between 1’s • CD uses (d,k)=(2,10) ; Disk Drive uses (d,k)=(0,4) 0 0 0 0 0 0 0 0 1 2 d d+1 k ... ... 1 . . . . . 1 1

  7. Constrained Coding • Problem: • How can we transform unconstrained binary data streams into (d,k) constrained binary code streams? • Issues: • Invertibility of transformation (unique decodability) • Rate R, i.e., average ratio of # data bits to # code bits • Complexity of encoding and decoding operations

  8. Bit-Stuffing Encoder • Encoder “stuffs” extra bits into data stream, as needed to enforce the (d,k) constraint: • Stuffs d 0’s after every data 1 • Keeps track of total number of consecutive 0’s • Stuffs a 1 and d 0’s after a runlength of k0’s 0 0 0 0 0 0 0 0 0 1 2 d d+1 k-1 k ... ... 1 . . . . . 1 1 1

  9. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: Decoder Code sequence: Data sequence:

  10. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 Decoder Code sequence: Data sequence:

  11. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 Decoder Code sequence: Data sequence:

  12. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 Decoder Code sequence: Data sequence:

  13. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 Decoder Code sequence: Data sequence:

  14. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 Decoder Code sequence: Data sequence:

  15. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 Decoder Code sequence: Data sequence:

  16. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 Decoder Code sequence: Data sequence:

  17. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 Decoder Code sequence: Data sequence:

  18. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 Decoder Code sequence: Data sequence:

  19. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 Decoder Code sequence: Data sequence:

  20. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 Decoder Code sequence: Data sequence:

  21. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 Decoder Code sequence: Data sequence:

  22. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 Decoder Code sequence: Data sequence:

  23. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 Decoder Code sequence: Data sequence:

  24. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: Data sequence:

  25. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence:

  26. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1

  27. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0

  28. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0

  29. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1

  30. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0

  31. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0

  32. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0

  33. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0

  34. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1

  35. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1

  36. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0

  37. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0

  38. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0

  39. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0

  40. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1

  41. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1

  42. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0

  43. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0

  44. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1

  45. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0

  46. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0

  47. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0

  48. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 01

  49. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 01 0

  50. Bit-Stuffing Demonstration(d,k)=(1,3) Encoder Data sequence: 1 1 0 0 0 0 1 0 1 Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Decoder Code sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 Data sequence: 1 0 1 0 0 0 1 0 0 0 1 0 1 0 01 0

More Related