Download Lecture 13: Pulse Code Modulation and more Study notes Law in PDF only on Docsity!
Lecture 13: Pulse Code Modulation
John M Pauly
November 2, 2021
Pulse Code Modulation (PCM)
I (^) PCM in the Bell System
I (^) Multiplexing PCM
I (^) Asynchronous PCM
I (^) Extensions to PCM
I (^) Differential PCM (DPCM) I (^) Adaptive DPCM (ADPCM) I (^) Delta-Sigma Modulation (DM)
I (^) Vocoders
Based on lecture notes from John Gill
Telephone Exchange Using Strowger Switches
Electromechanical Crossbar Switch
T-1 Carrier System (cont.)
The 8-bit compressed voice values are sent consecutively, msb first.
The samples of all 24 inputs comprise a frame.
Most serial communications transmits data lsb first (“little endian”).
T-1 Frame
A framing bit is prepended to each frame, hence 193 bits/frame. Framing bits alternate and allow for frame synchronization.
The “final” version of T-1 uses robbed-bit signaling. In every sixth frame, the lsb of each sample is used for control purposes.
Early T-1 used every lsb for signaling, hence only 128 quantization levels. In the same way, information can be hidden in the lsb of CD audio or images.
Multiplexing PCM
A major motivation for PCM is the ability to multiplex many low bit rate channels on a single hit bit rate channel. There are many ways to do this: I (^) Bit interleaving
I (^) Word interleaving
These each have advantages and disadvantages. A major issue is synchronization. There are several different approaches I (^) Synchronous : hard to do in practice
I (^) Asynchronous : potentially wasteful of capacity
I (^) Plesiochronous : a practical balance
Multiplexing PCM
Differential PCM
PCM uses a lot of bits per second. This is mostly because audio has a large dynamic range, and is weighted towards lower frequencies.
The result is that samples are highly correlated, and the previous sample is a good prediction of the next. We can improve PCM by transmitting samples of (^) dtd m(t), and then reconstructing the m(t) at the other end by integration
0 3kHz
Differentiated Audio Spectrum
This is differential PCM.
Differential PCM
In general, we want to use previous samples to predict the signal. I (^) m[k] is the sampled unquantized signal we want to transmit, and mq[k]
is the quantized signal
I (^) mˆ[k] is the prediction of m[k] based on previous samples mq[k]
I (^) d[k] = m[k] − mˆ[k], the unquantized difference between m[k] and the
prediction
I (^) dq[k] is the actual quantized difference that will be transmitted.
A predictor will take previous samples of the signal, and compute the next expected sample
Differential PCM
A simple encoder would quantize first, compute the prediction, and then compute the difference signal to transmit
Quantizer
Predictor
AAAB63icbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWy2m3bp7ibsboQS+he8eFDEq3/Im//GTZqDtj4YeLw3w8y8MOFMG9f9diobm1vbO9Xd2t7+weFR/fikp+NUEdolMY/VIMSaciZp1zDD6SBRFIuQ0344u8v9/hNVmsXy0cwTGgg8kSxiBJtcEv4sGNUbbtMtgNaJV5IGlOiM6l/DcUxSQaUhHGvte25iggwrwwini9ow1TTBZIYn1LdUYkF1kBW3LtCFVcYoipUtaVCh/p7IsNB6LkLbKbCZ6lUvF//z/NREt0HGZJIaKslyUZRyZGKUP47GTFFi+NwSTBSztyIyxQoTY+Op2RC81ZfXSa/V9K6b3sNVo90q46jCGZzDJXhwA224hw50gcAUnuEV3hzhvDjvzseyteKUM6fwB87nD/z5jig= m[k]
AAAB7XicbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWw2m3btZjfuboQS+h+8eFDEq//Hm//GbZuDtj4YeLw3w8y8MOVMG9f9dkpr6xubW+Xtys7u3v5B9fCoo2WmCG0TyaXqhVhTzgRtG2Y47aWK4iTktBuOb2Z+94kqzaS4N5OUBgkeChYzgo2VOtHg0R8Hg2rNrbtzoFXiFaQGBVqD6lc/kiRLqDCEY619z01NkGNlGOF0WulnmqaYjPGQ+pYKnFAd5PNrp+jMKhGKpbIlDJqrvydynGg9SULbmWAz0sveTPzP8zMTXwc5E2lmqCCLRXHGkZFo9jqKmKLE8IklmChmb0VkhBUmxgZUsSF4yy+vkk6j7l3WvbuLWrNRxFGGEziFc/DgCppwCy1oA4EHeIZXeHOk8+K8Ox+L1pJTzBzDHzifP3gFjwM= dq [k]
AAAB83icbVBNS8NAEJ34WetX1aOXxSJ4KkkR9Vjw4rGC/YAklM122y7dTeLuRCihf8OLB0W8+me8+W/ctjlo64OBx3szzMyLUikMuu63s7a+sbm1Xdop7+7tHxxWjo7bJsk04y2WyER3I2q4FDFvoUDJu6nmVEWSd6Lx7czvPHFtRBI/4CTloaLDWAwEo2ilIBhRzNW09+iPw16l6tbcOcgq8QpShQLNXuUr6CcsUzxGJqkxvuemGOZUo2CST8tBZnhK2ZgOuW9pTBU3YT6/eUrOrdIng0TbipHM1d8TOVXGTFRkOxXFkVn2ZuJ/np/h4CbMRZxmyGO2WDTIJMGEzAIgfaE5QzmxhDIt7K2EjaimDG1MZRuCt/zyKmnXa95Vzbu/rDbqRRwlOIUzuAAPrqEBd9CEFjBI4Rle4c3JnBfn3flYtK45xcwJ/IHz+QNc35HZ m ˆq [k]
AAAB7XicbVDLSgNBEOyNrxhfUY9eBoPgKewGUY8BLx4jmAdsljA7mU3GzGOdmRVCyD948aCIV//Hm3/jJNmDJhY0FFXddHfFKWfG+v63V1hb39jcKm6Xdnb39g/Kh0ctozJNaJMornQnxoZyJmnTMstpJ9UUi5jTdjy6mfntJ6oNU/LejlMaCTyQLGEEWye1RO8xHEW9csWv+nOgVRLkpAI5Gr3yV7evSCaotIRjY8LAT200wdoywum01M0MTTEZ4QENHZVYUBNN5tdO0ZlT+ihR2pW0aK7+nphgYcxYxK5TYDs0y95M/M8LM5tcRxMm08xSSRaLkowjq9DsddRnmhLLx45gopm7FZEh1phYF1DJhRAsv7xKWrVqcFkN7i4q9VoeRxFO4BTOIYArqMMtNKAJBB7gGV7hzVPei/fufSxaC14+cwx/4H3+AIXWjww= mq [k]
Predictor
I (^) The problem with this is that quantization errors can build up
I (^) This can lead to larger errors.
I (^) We can do much better!
Differential PCM
However, we can do better with this encoder
Predictor
Decoder Encoder
AAAB7XicbVDLSgNBEOyNrxhfUY9eBoPgKewGUY8BLx4jmAdsljA7mU3GzGOdmRVCyD948aCIV//Hm3/jJNmDJhY0FFXddHfFKWfG+v63V1hb39jcKm6Xdnb39g/Kh0ctozJNaJMornQnxoZyJmnTMstpJ9UUi5jTdjy6mfntJ6oNU/LejlMaCTyQLGEEWye1RO8xHEW9csWv+nOgVRLkpAI5Gr3yV7evSCaotIRjY8LAT200wdoywum01M0MTTEZ4QENHZVYUBNN5tdO0ZlT+ihR2pW0aK7+nphgYcxYxK5TYDs0y95M/M8LM5tcRxMm08xSSRaLkowjq9DsddRnmhLLx45gopm7FZEh1phYF1DJhRAsv7xKWrVqcFkN7i4q9VoeRxFO4BTOIYArqMMtNKAJBB7gGV7hzVPei/fufSxaC14+cwx/4H3+AIXWjww= mq [k]
AAAB63icbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWy2m3bp7ibsboQS+he8eFDEq3/Im//GTZqDtj4YeLw3w8y8MOFMG9f9diobm1vbO9Xd2t7+weFR/fikp+NUEdolMY/VIMSaciZp1zDD6SBRFIuQ0344u8v9/hNVmsXy0cwTGgg8kSxiBJtcEv4sGNUbbtMtgNaJV5IGlOiM6l/DcUxSQaUhHGvte25iggwrwwini9ow1TTBZIYn1LdUYkF1kBW3LtCFVcYoipUtaVCh/p7IsNB6LkLbKbCZ6lUvF//z/NREt0HGZJIaKslyUZRyZGKUP47GTFFi+NwSTBSztyIyxQoTY+Op2RC81ZfXSa/V9K6b3sNVo90q46jCGZzDJXhwA224hw50gcAUnuEV3hzhvDjvzseyteKUM6fwB87nD/z5jig= m[k]
AAAB63icbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWw2m3bp7ibsboQS+he8eFDEq3/Im//GTZuDtj4YeLw3w8y8MOVMG9f9diobm1vbO9Xd2t7+weFR/fikp5NMEdolCU/UIMSaciZp1zDD6SBVFIuQ0344vSv8/hNVmiXy0cxSGgg8lixmBJtCivxpMKo33Ka7AFonXkkaUKIzqn8No4RkgkpDONba99zUBDlWhhFO57VhpmmKyRSPqW+pxILqIF/cOkcXVolQnChb0qCF+nsix0LrmQhtp8Bmole9QvzP8zMT3wY5k2lmqCTLRXHGkUlQ8TiKmKLE8JklmChmb0VkghUmxsZTsyF4qy+vk16r6V03vYerRrtVxlGFMziHS/DgBtpwDx3oAoEJPMMrvDnCeXHenY9la8UpZ07hD5zPH+86jh8= d[k] <latexit^ sha1_base64="U6P7OMGWLS7HVxin2mSblHvYpEw=">AAAB7XicbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWw2m3btZjfuboQS+h+8eFDEq//Hm//GbZuDtj4YeLw3w8y8MOVMG9f9dkpr6xubW+Xtys7u3v5B9fCoo2WmCG0TyaXqhVhTzgRtG2Y47aWK4iTktBuOb2Z+94kqzaS4N5OUBgkeChYzgo2VOtHg0R8Hg2rNrbtzoFXiFaQGBVqD6lc/kiRLqDCEY619z01NkGNlGOF0WulnmqaYjPGQ+pYKnFAd5PNrp+jMKhGKpbIlDJqrvydynGg9SULbmWAz0sveTPzP8zMTXwc5E2lmqCCLRXHGkZFo9jqKmKLE8IklmChmb0VkhBUmxgZUsSF4yy+vkk6j7l3WvbuLWrNRxFGGEziFc/DgCppwCy1oA4EHeIZXeHOk8+K8Ox+L1pJTzBzDHzifP3gFjwM= dq [k]
AAAB83icbVBNS8NAEJ34WetX1aOXxSJ4KkkR9Vjw4rGC/YAklM122y7dTeLuRCihf8OLB0W8+me8+W/ctjlo64OBx3szzMyLUikMuu63s7a+sbm1Xdop7+7tHxxWjo7bJsk04y2WyER3I2q4FDFvoUDJu6nmVEWSd6Lx7czvPHFtRBI/4CTloaLDWAwEo2ilIBhRzNW09+iPw16l6tbcOcgq8QpShQLNXuUr6CcsUzxGJqkxvuemGOZUo2CST8tBZnhK2ZgOuW9pTBU3YT6/eUrOrdIng0TbipHM1d8TOVXGTFRkOxXFkVn2ZuJ/np/h4CbMRZxmyGO2WDTIJMGEzAIgfaE5QzmxhDIt7K2EjaimDG1MZRuCt/zyKmnXa95Vzbu/rDbqRRwlOIUzuAAPrqEBd9CEFjBI4Rle4c3JnBfn3flYtK45xcwJ/IHz+QNc35HZ m ˆq [k]
I (^) This uses the actual decoder to compute the prediction
I (^) It computes the difference between the unquantized signal and the
quantized prediction.
Adaptive Differential PCM (ADPCM)
I (^) The DPCM signal will be much lower amplitude if it is a good model
I (^) The number of quantization levels L is fixed
I (^) ADPCM adaptively adjusts the channel gain, so that the quantization levels best represent the signal.
The combination of DPCM and ADPCM can reduce the number of bits required by a factor of two,
This can be used to reduce the bandwidth required by a factor of two, or improve the SNR for a fixed bandwidth.
Delta Modulation
DPCM is much simpler if we just use the previous sample for the predictor. The predictor is just a delay.
Delay
Decoder
AAAB7XicbVDLSgNBEOyNrxhfUY9eBoPgKewGUY8BLx4jmAdsljA7mU3GzGOdmRVCyD948aCIV//Hm3/jJNmDJhY0FFXddHfFKWfG+v63V1hb39jcKm6Xdnb39g/Kh0ctozJNaJMornQnxoZyJmnTMstpJ9UUi5jTdjy6mfntJ6oNU/LejlMaCTyQLGEEWye1RO8xHEW9csWv+nOgVRLkpAI5Gr3yV7evSCaotIRjY8LAT200wdoywum01M0MTTEZ4QENHZVYUBNN5tdO0ZlT+ihR2pW0aK7+nphgYcxYxK5TYDs0y95M/M8LM5tcRxMm08xSSRaLkowjq9DsddRnmhLLx45gopm7FZEh1phYF1DJhRAsv7xKWrVqcFkN7i4q9VoeRxFO4BTOIYArqMMtNKAJBB7gGV7hzVPei/fufSxaC14+cwx/4H3+AIXWjww= m q [k]
AAAB7XicbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWw2m3btZjfuboQS+h+8eFDEq//Hm//GbZuDtj4YeLw3w8y8MOVMG9f9dkpr6xubW+Xtys7u3v5B9fCoo2WmCG0TyaXqhVhTzgRtG2Y47aWK4iTktBuOb2Z+94kqzaS4N5OUBgkeChYzgo2VOtHg0R8Hg2rNrbtzoFXiFaQGBVqD6lc/kiRLqDCEY619z01NkGNlGOF0WulnmqaYjPGQ+pYKnFAd5PNrp+jMKhGKpbIlDJqrvydynGg9SULbmWAz0sveTPzP8zMTXwc5E2lmqCCLRXHGkZFo9jqKmKLE8IklmChmb0VkhBUmxgZUsSF4yy+vkk6j7l3WvbuLWrNRxFGGEziFc/DgCppwCy1oA4EHeIZXeHOk8+K8Ox+L1pJTzBzDHzifP3gFjwM= d q [k]
AAAB73icbVBNSwMxEJ2tX7V+VT16CRbBi2W3FPVY8OKxgv2A7VKyabYNTbLbJCuUpX/CiwdFvPp3vPlvTNs9aOuDgcd7M8zMCxPOtHHdb6ewsbm1vVPcLe3tHxwelY9P2jpOFaEtEvNYdUOsKWeStgwznHYTRbEIOe2E47u533miSrNYPpppQgOBh5JFjGBjpa7oT/zxlRf0yxW36i6A1omXkwrkaPbLX71BTFJBpSEca+17bmKCDCvDCKezUi/VNMFkjIfUt1RiQXWQLe6doQurDFAUK1vSoIX6eyLDQuupCG2nwGakV725+J/npya6DTImk9RQSZaLopQjE6P582jAFCWGTy3BRDF7KyIjrDAxNqKSDcFbfXmdtGtV77rqPdQrjVoeRxHO4BwuwYMbaMA9NKEFBDg8wyu8ORPnxXl3PpatBSefOYU/cD5/AGLMj34= m q [k^ ^ 1]
Delay
Decoder Encoder
AAAB7XicbVDLSgNBEOyNrxhfUY9eBoPgKewGUY8BLx4jmAdsljA7mU3GzGOdmRVCyD948aCIV//Hm3/jJNmDJhY0FFXddHfFKWfG+v63V1hb39jcKm6Xdnb39g/Kh0ctozJNaJMornQnxoZyJmnTMstpJ9UUi5jTdjy6mfntJ6oNU/LejlMaCTyQLGEEWye1RO8xHEW9csWv+nOgVRLkpAI5Gr3yV7evSCaotIRjY8LAT200wdoywum01M0MTTEZ4QENHZVYUBNN5tdO0ZlT+ihR2pW0aK7+nphgYcxYxK5TYDs0y95M/M8LM5tcRxMm08xSSRaLkowjq9DsddRnmhLLx45gopm7FZEh1phYF1DJhRAsv7xKWrVqcFkN7i4q9VoeRxFO4BTOIYArqMMtNKAJBB7gGV7hzVPei/fufSxaC14+cwx/4H3+AIXWjww= m q [k]
AAAB63icbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWy2m3bp7ibsboQS+he8eFDEq3/Im//GTZqDtj4YeLw3w8y8MOFMG9f9diobm1vbO9Xd2t7+weFR/fikp+NUEdolMY/VIMSaciZp1zDD6SBRFIuQ0344u8v9/hNVmsXy0cwTGgg8kSxiBJtcEv4sGNUbbtMtgNaJV5IGlOiM6l/DcUxSQaUhHGvte25iggwrwwini9ow1TTBZIYn1LdUYkF1kBW3LtCFVcYoipUtaVCh/p7IsNB6LkLbKbCZ6lUvF//z/NREt0HGZJIaKslyUZRyZGKUP47GTFFi+NwSTBSztyIyxQoTY+Op2RC81ZfXSa/V9K6b3sNVo90q46jCGZzDJXhwA224hw50gcAUnuEV3hzhvDjvzseyteKUM6fwB87nD/z5jig= m[k]^ <latexit^ sha1_base64="42gXfy6wP0BckHyvAUkhX/w8mgw=">AAAB63icbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWw2m3bp7ibsboQS+he8eFDEq3/Im//GTZuDtj4YeLw3w8y8MOVMG9f9diobm1vbO9Xd2t7+weFR/fikp5NMEdolCU/UIMSaciZp1zDD6SBVFIuQ0344vSv8/hNVmiXy0cxSGgg8lixmBJtCivxpMKo33Ka7AFonXkkaUKIzqn8No4RkgkpDONba99zUBDlWhhFO57VhpmmKyRSPqW+pxILqIF/cOkcXVolQnChb0qCF+nsix0LrmQhtp8Bmole9QvzP8zMT3wY5k2lmqCTLRXHGkUlQ8TiKmKLE8JklmChmb0VkghUmxsZTsyF4qy+vk16r6V03vYerRrtVxlGFMziHS/DgBtpwDx3oAoEJPMMrvDnCeXHenY9la8UpZ07hD5zPH+86jh8= d[k] AAAB7XicbVBNS8NAEJ3Ur1q/qh69LBbBU0mKqMeCF48V7AekoWw2m3btZjfuboQS+h+8eFDEq//Hm//GbZuDtj4YeLw3w8y8MOVMG9f9dkpr6xubW+Xtys7u3v5B9fCoo2WmCG0TyaXqhVhTzgRtG2Y47aWK4iTktBuOb2Z+94kqzaS4N5OUBgkeChYzgo2VOtHg0R8Hg2rNrbtzoFXiFaQGBVqD6lc/kiRLqDCEY619z01NkGNlGOF0WulnmqaYjPGQ+pYKnFAd5PNrp+jMKhGKpbIlDJqrvydynGg9SULbmWAz0sveTPzP8zMTXwc5E2lmqCCLRXHGkZFo9jqKmKLE8IklmChmb0VkhBUmxgZUsSF4yy+vkk6j7l3WvbuLWrNRxFGGEziFc/DgCppwCy1oA4EHeIZXeHOk8+K8Ox+L1pJTzBzDHzifP3gFjwM= d q [k]
AAAB73icbVBNSwMxEJ2tX7V+VT16CRbBi2W3FPVY8OKxgv2A7VKyabYNTbLbJCuUpX/CiwdFvPp3vPlvTNs9aOuDgcd7M8zMCxPOtHHdb6ewsbm1vVPcLe3tHxwelY9P2jpOFaEtEvNYdUOsKWeStgwznHYTRbEIOe2E47u533miSrNYPpppQgOBh5JFjGBjpa7oT/zxlRf0yxW36i6A1omXkwrkaPbLX71BTFJBpSEca+17bmKCDCvDCKezUi/VNMFkjIfUt1RiQXWQLe6doQurDFAUK1vSoIX6eyLDQuupCG2nwGakV725+J/npya6DTImk9RQSZaLopQjE6P582jAFCWGTy3BRDF7KyIjrDAxNqKSDcFbfXmdtGtV77rqPdQrjVoeRxHO4BwuwYMbaMA9NKEFBDg8wyu8ORPnxXl3PpatBSefOYU/cD5/AGLMj34= m q [k^ ^ 1]
We can make up for the simple predictor by increasing the sampling rate. This increases the similarity between adjacent samples, and reduces the number of bits we need for dq[k].