00 голосов за00 голосов против

11 просмотров21 стр.DR

Sep 16, 2014

© © All Rights Reserved

DOCX, PDF, TXT или читайте онлайн в Scribd

DR

© All Rights Reserved

11 просмотров

00 голосов за00 голосов против

DR

© All Rights Reserved

Вы находитесь на странице: 1из 21

In a digital recording system, sound is stored and manipulated as a stream of

discrete numbers, each number representing the air pressure at a particular time.

The numbers are generated by a microphone connected to a circuit called an

ANALOG TO DIGITAL CONVERTER, or ADC. Each number is called a

SAMPLE, and the number of samples taken per second is the SAMPLE RATE.

Ultimately, the numbers will be converted back into sound by a DIGITAL TO

ANALOG CONVERTER or DAC, connected to a loudspeaker.

Fig. 1 The digital signal chain

Figure 1 shows the components of a digital system. Notice that the output of the

ADC and the input of the DAC consists of a bundle of wires. These wires carry the

numbers that are the result of the analog to digital conversion. The numbers are in

the binary number system in which only two characters are used, 1 and 0. (The

circuitry is actually built around switches which are either on or off.) The value of a

character depends on its place in the number, just as in the familiar decimal system.

Here are a few equivalents:

BINARY DECIMAL

0=0

1=1

10=2

11=3

100=4

1111=15

1111111111111111=65535

Each digit in a number is called a BIT, so that last number is sixteen bits long in its

binary form. If we wrote the second number as 0000000000000001, it would be

sixteen bits long and have a value of 1.

Word Size

The number of bits in the number has a direct bearing on the fidelity of the signal.

Figure 2 illustrates how this works. The number of possible voltage levels at the

output is simply the number of values that may be represented by the largest

possible number (no "in between" values are allowed). If there were only one bit in

the number, the ultimate output would be a pulse wave with a fixed amplitude and

more or less the frequency of the input signal. If there are more bits in the number

the waveform is more accurately traced, because each added bit doubles the

number of possible values. The distortion is roughly the percentage that the least

significant bit represents out of the average value. Distortion in digital systems

increases as signal levels decrease, which is the opposite of the behavior of analog

systems.

Fig. 2 Effect of word size

The number of bits in the number also determines the dynamic range. Moving a

binary number one space to the left multiplies the value by two (just as moving a

decimal number one space to the left multiplies the value by ten), so each bit

doubles the voltage that may be represented. Doubling the voltage increases the

power available by 6 dB, so we can see the dynamic range available is about the

number of bits times 6 dB.

Sample Rate

The rate at which the numbers are generated is even more important than the

number of bits used. Figure 3. illustrates this. If the sampling rate is lower than the

frequency we are trying to capture, entire cycles will be missed, and the decoded

result would be too low in frequency and might not resemble the proper waveform

at all. This kind of mistake is called aliasing. If the sampling rate were exactly the

frequency of the input, the result would be a straight line, because the same spot on

the waveform would be measured each time. This can happen even if the sampling

rate is twice the frequency of the input if the input is a sine or similar waveform.

The sampling rate must be greater than twice the frequency measured for accurate

results. (The mathematical statement of this is the Nyquist Theorem.) This implies

that if we are dealing with sound, we should sample at least 40,000 times per

second.

Fig. 3 Effects of low sample rates

The Nyquist rate (twice the frequency of interest) is the lowest allowable sampling

rate. For best results, sampling rates twice or four times this should be used. Figure

4 shows how the waveform improves as the sampling rate is increased.

Fig. 4 Effect of increasing sample rate

Even at high sample rates, the output of the system is a series of steps. A Fourier

analysis of this would show that everything belonging in the signal would be there

along with a healthy dose of the sampling rate and its harmonics. The extra junk

must be removed with a low pass filter that cuts off a little higher than the highest

desired frequency. (An identical filter should be placed before the ADC to prevent

aliasing of any unsuspected ultrasonic content, such as radio frequency

interference.)

If the sampling rate is only twice the frequency of interest, the filters must have a

very steep characteristic to allow proper frequency response and satisfactorily reject

the sampling clock. Such filters are difficult and expensive to build. Many systems

now use a very high sample rate at the output in order to simplify the filters. The

extra samples needed to produce a super high rate are interpolated from the

recorded samples.

By the way, the circuits that generate the sample rate must be exceedingly accurate.

Any difference between the sample rate used for recording and the rate used at

playback will change the pitch of the music, just like an off speed analog tape.

Also, any unsteadiness or jitter in the sample clock will distort the signal as it is

being converted from or to analog form.

Recording Digital Data

Once the waveform is faithfully transformed into bits, it is not easy to record. The

major problem is finding a scheme that will record the bits fast enough. If we

sample at 44,100 hz, with a sixteen bit word size, in stereo, we have to

accommodate 1,411,200 bits per second. This seems like a lot, but it is within the

capabilities of techniques developed for video recording. (In fact, the first digital

audio systems were built around VCRs. 44.1 khz was chosen as a sample rate

because it worked well with them.)

To record on tape, a very high speed is required to keep the wavelength of a bit at

manageable dimensions. This is accomplished by moving the head as well as the

tape, resulting in a series of short tracks across the tape at a diagonal.

On a Compact Disc, the bits are microscopic pits burned into the plastic by a

laser.The stream of pits spirals just like the groove on a record, but is played from

the inside out.To read the data, light from a gentler laser is reflected off the surface

of the plastic (from the back: the plastic is clear.) into a light detector. The pits

disrupt this reflection and yield up the data.

In either case, the process is helped by avoiding numbers that are hard to detect,

like 00001000. That example is difficult because it will give just a single very short

electrical spike. If some numbers are unusable, a larger maximum (more bits) must

be available to allow recording the entire set. On tape, twenty bits are used to

record each sixteen bit sample, on CDs, twenty-eight bits are used.

Error Correction

Even with these techniques, the bits are going to be physically very small, and it

must be assumed that some will be lost in the process. A single bit can be very

important (suppose it represents the sign of a large number!), so there has to be a

way of recovering lost data. Error correction is really two problems; how to detect

an error, and what to do about it.

Fig. 5 Effects of data errors

The most common error detection method is parity computation. An extra bit is

added to each number which indicates whether the number is even or odd. When

the data is read off the tape, if the parity bit is inappropriate, something has gone

wrong. This works well enough for telephone conversations and the like, but does

not detect serious errors very well.

In digital recording, large chunks of data are often wiped out by a tape dropout or a

scratch on the disk. Catching these problems with parity would be a matter of luck.

To help deal with large scale data loss, some mathematical computation is run on

the numbers, and the result is merged with the data from time to time. This is

known as a Cyclical Redundancy Check Code or CRCC. If a mistake turns up in

this number, an error has occurred since the last correct CRCC was received.

Once an error is detected, the system must deal gracefully with the problem. To

make this possible, the data is recorded in a complex order. Instead of word two

following word one, as you might expect, the data is interleaved, following a

pattern like:

words 1,5,9,13,17,21,25,29,2,6,10,14,18,22,26,30,3,7,15,19,27 etc.

With this scheme, you could lose eight words, but they would represent several

isolated parts of the data stream, rather than a large continuous chunk of waveform.

When a CRC indicates a problem, the signal can be fixed. For minor errors, the

CRCC can be used to replace the missing numbers exactly. If the problem is more

extensive, the system can use the previous and following words to reconstruct a

passable imitation of the missing one. One of the factors that makes up the price

difference in various digital systems is the sophistication available to reconstruct

missing data.

The Benefits of Being Digital

You may be wondering about the point of all of this, if it turns out that a digital

system is more complex than the equivalent analog circuit. Digital circuits are

complex, but very few of the components must be precise; most of the circuitry

merely responds to the presence or absence of current. Improving performance is

usually only a matter of increasing the word size or the sample rate, which is

achieved by duplicating elements of the circuit. It is possible to build analog

circuits that match digital performance levels, but they are very expensive and

require constant maintenance. The bottom line is that good digital systems are

cheaper than good analog systems.

Digital devices usually require less maintenance than analog equipment. The

electrical characteristics of most circuit elements change with time and

temperature, and minor changes slowly degrade the performance of analog circuits.

Digital components either work or don't, and it is much easier to find a chip that has

failed entirely than one that is merely 10% off spec. Many analog systems are

mechanical in nature, and simple wear can soon cause problems. Digital systems

have few moving parts, and such parts are usually designed so that a little vibration

or speed variation is not important.

In addition, digitally encoded information is more durable than analog information,

again because circuits are responding only to the presence or absence of something

rather than to the precise characteristics of anything. As you have seen, it is

possible to design digital systems so that they can actually reconstruct missing or

incorrect data. You can hear every little imperfection on an LP, but minor damage

is not audible with a CD.

The aspect of digital sound that is most exciting to the electronic musician is that

any numbers can be converted into sound, whether they originated at a microphone

or not. This opens up the possibility of creating sounds that have never existed

before, and of controlling those sounds with a precision that is simply not possible

with any other technique.

For further study, I recommend Principles of Digital Audio by Ken C Pohlmann,

published by McGraw-Hill inc ISBN number0-07-050469-5.

Peter Elsea 1996

Source: http://artsites.ucsc.edu/ems/music/tech_background/TE-16/teces_16.html

The Mathematics Behind

Digital Technology

Nowadays, when you watch TV or listen

to a CD, you'd be forgiven for taking

the high quality of the audio and video for

granted. It seems a long time since we played

warped, scratched and dusty vinyl records, or

struggled to watch Match of the Day through

a blizzard of atmospheric 'snow'.

Today's digital technology reproduces to a

high degree the images which were captured

at the filming location or the sound recorded

in the studio.

This Entry introduces a branch

of mathematics which underpins modern

communication technology and ensures that,

among other things, the television pictures

we watch and the recorded sounds we hear

are of optimum quality. It's known as coding

theory.

Going Digital

These days we use digital technology to

record, communicate and replay. The

analogue or real-life signals are converted

into long strings of binary digits when they

are recorded, stored and communicated, and

then converted back into an analogue signal

when played back to the viewer or listener.

One of the benefits of using binary numbers

is that we can use some very clever

mathematics to check whether the signals are

correct at each stage of the process, and, in

many cases, where it isn't we can

automatically correct them. In practice, it's a

very complicated business, and the actual

methods used would be far beyond the scope

of this Entry. However, we'll examine one of

the principles involved, and by using simple

examples we'll describe the mathematics

behind one type of binary code, and how

errors can be automatically detected and

corrected.

Each digital signal consists of a series of

numbers. In the case of a CD, for example,

each number might indicate the sound level

at one particular point in time along one of

the stereo channels. The signal is read by

a laser which scans the binary information

burnt into the microscopic indentations in

the track of the disc. If the track is at a

particular depth at a given point, it reads 0,

whereas if it's indented (known as a pit1),

then it reads 1. In the course of playing the

entire CD, the laser will detect many millions

of these numbers.

Let's say that each number we read can have

one of 16 values at any point in time (in fact,

standard compact disc technology uses a

more complex and entirely different coding

system, which we'll mention later). In binary,

these values will be represented by the

numbers 0000, 0001, 0010, through to 1111,

ie the decimal values 0 to 15). Binary digit is

abbreviated to 'bit', so we call this a 4-bit

message.

Now, consider the binary number 1001,

representing a value of 9. This could

represent, for example, the sound level on a

Nigel Kennedy CD through the left-hand

stereo channel at exactly 1 minute and 14

seconds into his rendition of the third

movement of 'Spring' from Vivaldi's Four

Seasons. What happens if there's an error

when we read it? Maybe the CD is slightly

warped, or there's a minute manufacturing

fault in the track depth, or maybe someone

jogs the CD player at that moment. If there's

just a small error, then one of the bits of our

number will be misread a 0 will be

represented as a 1 or a 1 as a 0 in our binary

message.

Depending on which bit was incorrect, our

number 1001 could be read by the CD player

as any of the following: 0001, 1101, 1011 or

1000. But the trouble is, these are still valid

numbers in our set. Instead of 9, they

represent 1, 13, 11 or 8 respectively. Our CD

player can't know that anything is wrong - it

would just process it as if the violinist had

played a sound according to level 13, say,

rather than level 9 at that point, and so this

would corrupt the signal we hear. In practice,

a single error wouldn't usually be noticeable

to the listener, but in some cases it might be

heard as a small 'pop' or crackle on the

soundtrack. With lots of errors throughout

the recording, however, we would notice a

deterioration in sound quality, not unlike the

familiar effects of dust or scratches on a vinyl

LP.

So, if an error occurs with this code, the CD

player can't tell, as any error condition is the

same as another valid number in our code. In

order to tell if there's an error, we need to

add some additional information to our

message.

Error Detection

The most simple way is to add an extra bit to

the end of the code number - a check bit -

and choose its value according to a rule. For

example, we might say that every word in our

code has to have an even number of 1s. So

0000 would have a 0 appended to the end

(giving it zero 1s in total), 0001 would have a

1 appended (making two 1s in total), and so

on. Our new code looks like this:

Message bits Check bit Codeword

0000 0 00000

0001 1 00011

0010 1 00101

0011 0 00110

0100 1 01001

0101 0 01010

0110 0 01100

0111 1 01111

1000 1 10001

1001 0 10010

1010 0 10100

1011 1 10111

1100 0 11000

1101 1 11011

1110 1 11101

1111 0 11110

The first four digits of each codeword are our

original message, and each complete

codeword has an even number of 1s, or, as

mathematicians would say, has even parity.

Now, see what happens if an error occurs in

one bit. No matter where it occurs, it

invalidates our rule for the check bit. It will

change a 0 into a 1 or a 1 into a 0, and we end

up with an odd number of 1s as a result. So

we know if there's an error and we can

programme our equipment to check for this

condition and take appropriate action. In the

case of some communication systems, when

we detect an error, we might ask for the

signal to be retransmitted.

For the CD player, however, this isn't

possible. The music would sound very

strange and we'd lose a fair amount of

rhythm if we asked the laser to go back and

read each error again. If it were a

manufacturing fault causing the error, then

the laser may never be able to read the

correct value in any case. All is not lost,

though. All we need is a clever way to not

only detect an error but to make an informed

guess as to what the correct value might have

been.

In the case of the previous code, we may

know that something is wrong, but it's not

possible to tell which bit was in error. If we

receive the message 10101, say, containing

three 1s, then we know there's an error, but,

assuming only one bit was in error, the

intended message may have been any of five

values: 00101, 11101, 10001, 10111 or 10100

(in decimal: 2, 14, 8, 11 or 10) . We don't

know which one of these is correct.

Error Correction and

Hamming Codes

For automatic error correction we need to

add more check bits. We'll illustrate this

using one common set of codes used for 4-bit

messages, where three check bits are

appended, making each into a 7-bit

codeword. These are known as Hamming

codes, named after American mathematician

Richard Hamming (1915 - 98).

There are many ways to encode the check

bits. In the following example, we'll derive

them according to these three rules:

1. The first, second, fourth and fifth bits

have even parity

2. The first, third, fourth and sixth bits

have even parity

3. The second, third, fourth and seventh

bits have even parity

This allows us to construct the following

code. The columns show the binary number

which is our message, the check bits we add

to it, as calculated by the above rules, and the

final codeword which we would transmit

(and hopefully receive).

Message bits Check bits Codeword

0000 000 0000000

0001 111 0001111

0010 011 0010011

0011 100 0011100

0100 101 0100101

0101 010 0101010

0110 110 0110110

0111 001 0111001

1000 110 1000110

1001 001 1001001

1010 101 1010101

1011 010 1011010

1100 011 1100011

1101 100 1101100

1110 000 1110000

1111 111 1111111

The reason why this code is clever is a

property known as the minimum distance of

the code. Unlike our earlier code where an

error in one bit merely turned it into another

valid codeword, each of these codewords in a

Hamming code differs from any other

codeword by at least three bits. If there is an

error in any one of the seven bits, then we

can identify the nearest codeword which is

only one bit different from it.

If we received the code 1010111, say, then this

isn't a valid codeword in our list. If we search

through the allowable codes, we can see it's

only one bit different from 1010101, so it's

reasonable if we correct it to this. As the

minimum distance of our code is three bits,

we know there is no other codeword which is

only one bit different.

Automating the Error

Correction Process

In the case of our Hamming code example,

we can automate this process using a neat bit

of mathematics. It involves a bit of modulo-2

matrix multiplication. Now, we appreciate

that maths doesn't float everyone's boat, so if

you really don't want to see the clever bit,

look away now.

Remember those rules we used to construct

our Hamming Code? We first need to write

them in the form of a binary matrix. There is

one row for each rule, and a column for each

bit of the code. We will therefore have three

rows and seven columns. Each cell has a 1 if

the rule checks that bit and 0 if it doesn't. In

our example, our first rule was that the first,

second, fourth and fifth bits would have even

parity, so the first row is 1101100, and so on.

Our completed parity check matrix looks like

this:

1 1 0 1 1 0 0

1 0 1 1 0 1 0

0 1 1 1 0 0 1

This is where the matrix multiplication

comes in. If we multiply our received

message by this matrix, it returns a three-bit

result which identifies one of the columns of

the parity check matrix. The column it

matches with is the bit which is in error. So,

using the received code 1010111 once again,

we perform the following multiplication:

1 1 0 1 1 0 0

1 0 1 1 0 1 0

0 1 1 1 0 0 1

X

2

1

0

1

0

1

1

1

=

0

1

0

The result 010 is the sixth column of our

parity check matrix, indicating that the sixth

bit of the received message 1010111 is in

error. When we correct this bit, we transform

the message into the nearest valid codeword,

1010101.

If we multiply every codeword we receive by

the parity matrix and then correct the bit

indicated by the result, then we will

automatically convert the received message

into a string of the nearest valid codewords.

This corrects every codeword which has no

more than one error in it.

Multiple Errors

The Hamming (7,4) code isn't capable of

correcting more than one error bit, but other

coding mechanisms exist which do.

The more errors we wish to detect, the more

check bits we have to use and the longer our

message becomes as a result. There is a

trade-off between the efficiency or rate of a

code ie what proportion of the code is the

actual message and the error-correcting

ability of it.

Different codes are suitable for different

applications. In the case of a CD, we would

wish to make the code as efficient as we can,

so that we can store as much real data on the

disk as possible. The precision manufacturing

process ensures that errors are not

widespread, and any clusters of localised

errors, perhaps indicating a pressing defect

or a scratch, are minimised by a process of

interleaving the numbers such that that data

from the same logical location are spread out

across different physical locations of the disk.

On the other hand, consider the example of a

space probe sending back photographs from

a distant planet. This will transmit a weak

signal, one which will be susceptible to many

errors caused by background noise. This

application lends itself to a coding system

which corrects multiple errors, ensuring that

the received picture is as high a quality as

possible. It will necessarily be an inefficient

code, however, with maybe five or six times

as many parity check bits as message bits,

and it will take far longer to transmit as a

result.

Back to those CDs

In practice, compact discs don't use

Hamming codes; they use something known

as a Reed-Solomon code2. This code is too

complex to describe here, but it has the

advantage of being applicable to the problem

of detecting and correcting long bursts of

errors, as may be caused by a scratched CD.

Source: http://www.bbc.co.uk/dna/place-london/plain/A85655046

## Гораздо больше, чем просто документы.

Откройте для себя все, что может предложить Scribd, включая книги и аудиокниги от крупных издательств.

Отменить можно в любой момент.