八比十四调制 (Eight-to-Fourteen Modulation, EFM) 是一种用于 CD 和前 Hi-MD MiniDisc 的编码技巧。EFM 以及 EFMPlus 都是由 Kees A. Schouhamer Immink 所发明的。
EFM 属于 DC-free 的游长受限码 (Run Length Limited),因为它保证了:
在光学记录系统中,伺服系统 (servo system) 在三种维度上准确地沿循轨道的位置:半径、焦点和旋转速度。日常操作的损害,诸如灰尘、指纹、刮伤,不只会影响接收的资料,也会破坏伺服功能 (在一些情况中,必须跳过轨道或甚而卡住)。在凹洞 (pit) 和平面 (land) 连续序列的集合中,有一些特定序列特别容易受到碟片瑕疵的影响,假如可以避免这些序列的发生,就可以增强光碟的可靠性。而 EFM 的用途就在于它能很有效率地解决这个工程问题。
在 EFM 规则下,要储存的资料首先被分割成 8 位元的区块 (字节),然后利用查找表将各个 8 位元区块转译成相应的 14 位元代号。
14 位元代码选择的原则,是让二进制的 1 之间,总是相隔最小两个、最多十个的 0。这是因为位元是以不归零 (NRZ) 或 modulo-2 integration 编码的,所以坑洞到平面、或平面到坑洞的改变代表二进制 1,而没有改变代表二进制 0。一个 0011 的序列会被改成 1101 或者倒转的 0010,依照前一个写入的凹洞而有所不同。如果两个 1 之间有两个 0,那么写入的序列会有三个连续的 0 (或 1)。例如,010010 会转译成 100011 (或 011100)。000100010010000100 会被转译成 111000011100000111 (或它的逆转)。
因为 EFM 保证了每两个 1 之间一定至少有两个 0,这代表每个凹洞和平面之间的长度至少会有三个单位时脉的位元长。这个性质十分有用,因它降低了对回放机制中光学唱头的要求。最多至连续十个 0 的要求,代表的是最糟情况下的时脉回复机制。
EFM 要求相邻的 14 位元代码组之间,必须有三个位元用作结合码,以确保串连起来的代码亦不会破坏规定的最大最小游长。这三个位元的结合码亦用于形塑编码后序列的频谱。因此,在最终的结果中,保存 8 位元的资料必须使用 17 位元的空间。
EFMPlus 是用于 DVD 和 SACD 上的通道码。
EFMPlus 的编码器是有四种状态的决定性有限状态机,将 8 位元的资料转译成 16 位元代码。如同经典 EFM 一样,确保连续的 1 之间将有二至十个的 0。不同的是它并无结合码。
EFMPlus 有效率地降低容量的要求,每一区块减少 1 通道位元 (channel bit),因此容量增加了 1/16 = 6.25%。EFMPlus 代码的解码使用一个 sliding-block 解码器,两个一组,也就是说需要两个连续的代码区块才能解出一独特的序列。