Файл: Digital design with CPLD applications and VHDL (R. Dueck, 2000).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.06.2025

Просмотров: 8083

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

236

C H A P T E R 6 • Digital Arithmetic and Arithmetic Circuits

The BCD digits are the binary values of each decimal digit, encoded separately. We can break bits into groups of 4 for easier reading. Note that the first and last BCD digits each have a leading zero to make them 4 bits long.

498710 0100 1001 1000 0111BCD

Table 6.3 Decimal Digits and

Their 8421 and Excess-3

Equivalents

Decimal

Digit

8421

Excess-3

0

0000

0011

1

0001

0100

2

0010

0101

3

0011

0110

4

0100

0111

5

0101

1000

6

0110

1001

7

0111

1010

8

1000

1011

9

1001

1100

Excess-3 Code

K E Y T E R M S

Excess-3 Code A BCD code that represents each digit of a decimal number by a binary number derived by adding 3 to its 4-bit true binary value.

9’s complement A way of writing decimal numbers where a number is made negative by subtracting each of its digits from 9 (e.g., 726 999 726 273 in 9’s complement).

Self-complementing A code that automatically generates a negative equivalent (e.g., 9’s complement for a decimal code) when all its bits are inverted.

Excess-3 code is a type of BCD code that is generated by adding 112 (310) to the 8421 BCD codes. Table 6.3 shows the Excess-3 codes and their 8421 and decimal equivalents.

The advantage of this code is that it is self-complementing. If the bits of the Excess-3 digit are inverted, they yield the 9’s complement of the decimal equivalent.

We can generate the 9’s complement of an n-digit number by subtracting it from a number made up of n 9s. Thus, the 9’s complement of 632 is 999 632 367.

The Excess-3 equivalent of 632 is 1001 0110 0101. If we invert all the bits, we get 0110 1001 1010. The decimal equivalent of this Excess-3 number is 367, the 9’s complement of 632.

This property is useful for performing decimal arithmetic digitally.

Table 6.4 4-Bit Gray Code

True

Gray

Decimal

Binary

Code

0

0000

0000

1

0001

0001

2

0010

0011

3

0011

0010

4

0100

0110

5

0101

0111

6

0110

0101

7

0111

0100

8

1000

1100

9

1001

1101

10

1010

1111

11

1011

1110

12

1100

1010

13

1101

1011

14

1110

1001

15

1111

1000

Gray Code

K E Y T E R M

Gray code A binary code that progresses such that only one bit changes between

two successive codes.

Table 6.4 shows a 4-bit Gray code compared to decimal and binary values. Any two adjacent Gray codes differ by exactly one bit.

Gray code can be extended indefinitely if you understand the relationship between the binary and Gray digits. Let us name the binary digits b3b2b1b0, with b3 as the most significant bit, and the Gray code digits g3g2g1g0 for a 4-bit code. For a 4-bit code:

g3 b3

g2 b3 b2 g1 b2 b1 g0 b1 b0

For an n-bit code, the MSBs are the same in Gray and binary (gn bn). The other Gray digits are generated by the Exclusive OR function of the binary digits in the same position and the next most significant position.


6.5 • Numeric and Alphanumeric Codes

237

Another way to generate a Gray code sequence is to recognize the inherent symmetry in the code. For example, a 2-bit Gray code sequence is given by:

00

01

11

10

To generate a 3-bit Gray code, write the 2-bit sequence, then write it again in reverse order.

00

01

11

10

10

11

01

00

Add an MSB of 0 to the first four codes and an MSB of 1 to the last four codes. The sequence followed by the last two bits of all codes is symmetrical about the center of the sequence.

000

001

011

010

110

111

101

100

We can apply a similar process to generate a 4-bit Gray code. Write the 3-bit sequence, then again in reverse order. Add an MSB of 0 to the first half of the table and an MSB of 1 to the second half. This procedure yields the code in Table 6.4.

ASCII Code

K E Y T E R M S

Alphanumeric code A code used to represent letters of the alphabet and numerical characters.

ASCII American Standard Code for Information Interchange. A 7-bit code for

representing alphanumeric and control characters.

Case shift Changing letters from capitals (uppercase) to small letters (lowercase) or vice versa.

Digital systems and computers could operate perfectly well using only binary numbers. However, if there is any need for a human operator to understand the input and output data of a digital system, it is necessary to have a system of communication that is understandable to both a human operator and the digital circuit.

A code that represents letters (alphabetic characters) and numbers (numeric characters) as binary numbers is called an alphanumeric code. The most commonly used alphanumeric code is ASCII (“askey”), which stands for American Standard Code for Information Interchange. ASCII code represents letters, numbers, and other “typewriter characters” in 7 bits. In addition, ASCII has a repertoire of “control characters,” codes that


238

C H A P T E R 6 • Digital Arithmetic and Arithmetic Circuits

are used to send control instructions to and from devices such as video display terminals, printers, and modems.

Table 6.5 shows the ASCII code in both binary and hexadecimal forms. The code for any character consists of the bits in the column heading, then those in the row heading. For example, the ASCII code for “A” is 10000012 or 41H. The code for “a” is 11000012 or 61H. The codes for capital (uppercase) and lower case letters differ only by the second most significant bit, for all letters. Thus, we can make an alphabetic case shift, like using the Shift key on a typewriter or computer keyboard, by switching just one bit.

Numeric characters are listed in column 3, with the least significant digit of the ASCII code being the same as the represented number value. For example, the numeric character “0” is equivalent to 30H in ASCII. The character “9” is represented as 39H.

The codes in columns 0 and 1 are control characters. They cannot be displayed on any kind of output device, such as a printer or video monitor, although they may be used to control the device. For instance, if the codes 0AH (Line Feed) and ODH (Carriage Return)

Table 6.5

ASCII Code

MSBs

000

001

010

011

100

101

110

111

(0)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

LSBs

0000

(0)

NUL

DLE

SP

0

@

P

p

0001

(1)

SOH

DC1

!

1

A

Q

a

q

0010

(2)

STX

DC2

2

B

R

b

r

0011

(3)

ETX

DC3

#

3

C

S

c

s

0100

(4)

EOT

DC4

$

4

D

T

d

t

0101

(5)

ENQ

NAK

%

5

E

U

e

u

0110

(6)

ACK

SYN

&

6

F

V

f

v

0111

(7)

BEL

ETB

7

G

W

g

w

1000

(8)

BS

CAN

(

8

H

X

h

x

1001

(9)

HT

EM

)

9

I

Y

i

y

1010

(A)

LF

SUB

*

:

J

Z

j

z

1011

(B)

VT

ESC

;

K

[

k

{

1100

(C)

FF

FS

,

L

\

l

|

1101

(D)

CR

GS

-

=

M

]

m

}

1110

(E)

SO

RS

.

N

^

n

1111

(F)

SI

US

/

?

O

o

DEL

Control Characters:

NUL–NUll

DLE–Data Link Escape

SOH–Start of Header

DC1–Device Control 1

STX–Start Text

DC2–Device Control 2

ETX–End Text

DC3–Device Control 3

EOT–End of Transmission

DC4–Device Control 4

ENQ–Enquiry

NAK–No Acknowledgment

ACK–Acknowledge

SYN–Synchronous Idle

BEL–Bell

ETB–End of Transmission Block

BS–Backspace

CAN–Cancel

HT–Horizontal Tabulation

EM–End of Medium

LF–Line Feed

SUB–Substitute

VT–Vertical Tabulation

ESC–Escape

FF–Form Feed

FS–Form Separator

CR–Carriage Return

GS–Group Separator

SO–Shift Out

RS–Record Separator

SI–Shift In

US–Unit Separator

SP–Space

DEL–Delete


6.6 • Binary Adders and Subtractors

239

are sent to a printer, the paper will advance by one line and the print head will return to the beginning of the line.

The displayable characters begin at 20H (“space”) and continue to 7EH (“tilde”). Spaces are considered ASCII characters.

EXAMPLE 6.17

Encode the following string of characters into ASCII (hexadecimal form). Do not include

quotation marks.

“Total system cost: $4,000,000. @ 10%”

SOLUTION Each character, including spaces, is represented by two hex digits as follows:

54

6F

74

61

6C

20

73

79

73

74

65

6D

20

63

6F

73

74

3A

20

T

o

t

a

1

SP

s

y

s

t e

m

SP

c

o

s

t :

SP

24

34

2C

30

30

30

2C

30

30

30

2E

20

40

20

31

30

25

$

4

,

0

0

0

,

0

0

0 .

SP

@

SP

1

0

%

SECTION 6.5 REVIEW PROBLEM

6.8 Decode the following sequence of hexadecimal ASCII codes.

54

72

75

65

20

6F

72

20

46

61

6C

73

65

3A

20

31

2F

34

20

3C

20

31

2F

32

6.6 Binary Adders and Subtractors

FIGURE 6.1

Half Adder

Table 6.6 Half Adder Truth

Table

A

B

COUT

0

0

0

0

0

1

0

1

1

0

0

1

1

1

1

0

Half and Full Adders

K E Y T E R M S

Half adder A circuit that will add two bits and produce a sum bit and a carry bit.

Full adder A circuit that will add a carry bit from another full or half adder and two operand bits to produce a sum bit and a carry bit.

There are only three possible sums of two 1-bit binary numbers:

0 0 00

0 1 01

1 1 10

We can build a simple combinational logic circuit to produce the above sums. Let us designate the bits on the left side of the above equalities as inputs to the circuit and the bits on the right side as outputs. Let us call the LSB of the output the sum bit, symbolized by ,

and the MSB of the output the carry bit, designated COUT.

Figure 6.1 shows the logic symbol of the circuit, which is called a half adder. Its truth table is given in Table 6.6. Since addition is subject to the commutative property, (A B B A), the second and third lines of the truth table are the same.

The Boolean functions of the two outputs, derived from the truth table, are:

N O T E

COUT AB

AB AB A B