EEN 6113 DIGITAL LOGIC DESIGN 2 1 NUMBER SYSTEMS AND CODES 2 Learning objectives Review the decimal number system Convert from binary to decimal and from decimal to binary Convert from octal to decimal and from decimal to octal Convert from hex to decimal and from decimal to hex Convert from hex to binary and from binary to hex Perform binary addition, subtraction, multiplication and division on two binary numbers Add and subtract hexadecimal numbers Determine the 1’s and 2’s complements of a binary number Manipulate signed binary numbers using the 2’s complement system 3 Learning objectives Express decimal numbers in Binary Coded Decimal (BCD) form Add BCD numbers Interpret the American Standard Code for Information Interchange (ASCII) Convert from binary to gray code and from gray code to binary Explain how to use parity method to detect code errors Assign proper parity bit to a code Describe the Hamming code and know how to correct a single-bit error Determine if there is an error in a code based on the parity bit 4 Decimal Numbers The decimal numbering system has 10 types of digits Consist of numbers 0 through 9 The decimal numbering system has a base of 10 with each position weighted by a factor of 10 …. 103 102 101 100 10-1 10-2 10-3 10-4 Decimal point Example:- 18.510 = 1 x 101 + 8 x 100 + 5 x 10-1 10-5 5 Binary Numbers The binary numbering system has 2 types of digits Consist of numbers 0 and 1 only The binary numbering system has a base of 2 with each position weighted by a factor of 2 23 22 21 20 2-1 2-2 2-3 2-4 2-5 Example:110112 = 1 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 6 Binary to Decimal Conversion Convert binary to decimal by summing the positions that contain a 1: An example with a greater number of bits: Ronald Tocci/Neal Widmer/Gregory Moss Digital Systems: Principles and Applications, 10e Copyright ©2007 by Pearson Education, Inc. Columbus, OH 43235 All rights reserved. 7 Exercises Convert the following binary numbers to decimal without using a calculator. Use calculator to verify your answers. a) 100112 (19) b) 0011102 (14) c) 0101.110 2 (5.75) 8 Decimal to Binary Conversion Repeated Division (Method 1) • • • • Divide the decimal number by 2. Write the remainder after each division until a quotient of zero is obtained. The first remainder is the Least Significant Bit (LSB) and it represents the lowest power of 2. The last is the Most Significant Bit (MSB) and it represents the highest power of 2. Copyright ©2007 by Pearson Education, Inc. Columbus, OH 43235 All rights reserved. 9 Decimal to Binary Conversion Convert 3710 to binary: 1001012 Copyright ©2007 by Pearson Education, Inc. Columbus, OH 43235 All rights reserved. 10 Exercises Convert the following decimal numbers to binary with and without using a calculator. a) 5210 (1101002) b) 10810 (11011002) 11 Decimal Fractions to Binary Conversion Radix Multiply Technique The technique consists of the following steps: 1. Successively multiply the given fraction by the required base, noting the integer portion of the product at each step. Use the fractional part of the product as the multiplicand for subsequent steps. Stop when the fraction either reaches 0 or recurs/repeats. 2. Collect the integer digits at each step from first to last and arrange them left to right Note: If the radix multiplication process doesn’t converge to 0, it’s not possible to represent a decimal fraction in binary exactly. Accuracy, then, depends on the number of bits used to represent the fraction. 12 Decimal Fractions to Binary Conversion Radix Multiply Technique (0.250)10 =(?)2 0.25 X 2 0.50 X 2 1.00 (0.25)10 =(0.01)2 (0.345)10 =(?)2 0.345 X 2 0.690 X 2 1.380 X 2 0.760 X 2 1.520 X 2 1.040 X 2 0.080 (0.345)10 =(0.010110)2 The fraction may never reach 0; stop when the required number of the fraction digits is obtained; the fraction will not be accurate 13 Decimal Fractions to Binary Conversion Example: (25.45)10 =(?)2 For the integer of 2510 For the fraction of 0.4510 0.45 X 2 0.90 X 2 1.80 X 2 1.60 X 2 1.20 X 2 0.40 X 2 0.80 X 2 1.60 Repeated division by 2 yields the whole number while repeated multiplication by 2 of the fraction yields the binary fraction Repeats (25.45)10 =(11001.011100)2 14 Exercises Convert the following decimal numbers to binary. a) 52.7510 (110100.112) b) 108.2510 (1101100.012) 15 Octal Numbers The octal numbering system has 8 types of digits Consist of numbers 0 through 7 The octal numbering system has a base of 8 with each position weighted by a factor of 8 …. 83 82 Example:- 81 80 8-1 8-2 8-3 8-4 2748 = 2 x 82 + 7 x 81 + 4 x 80 = 18810 8-5 16 Decimal → Octal Example: Convert 15010 into Octal. 8 150 8 18 6 8 2 2 0 2 Remainder 15010 =2268 17 Exercises Perform the following conversion a) Convert to Octal :35910 (5478) b) Convert to decimal: 2748 (250 ) c) Convert to decimal: 24.68 (20.75 ) 10 10 18 Binary → Octal Example: Convert 0001011102 to octal Method: Form 3 binary bit, convert accordingly with max conversion =7 0001011102 000 101 1102 0 5 6 Answer =0568 Beware ! Avoid incorrect grouping 19 Binary → Octal (Fractions) Example: Convert 010110.0111002 to Octal 010 110 . 011 1002 2 6 3 Answer = 26.348 4 20 Exercises Convert the following binary numbers to octal. a) 110012 (318) b) 1010.0112 (12.38) 21 Hexadecimal Numbers Hexadecimal allows convenient handling of long binary strings, using groups of 4 bits—Base 16 The hexadecimal numbering system has a base of 16 with each position weighted by a factor of 16 …. 163 162 161 160 16-1 16-2 Hexadecimal point Example:- 16-3 16-4 16-5 22 Hexadecimal Number System Relationships between hexadecimal, decimal, and binary numbers. Copyright ©2007 by Pearson Education, Inc. Columbus, OH 43235 All rights reserved. 23 Hex → Decimal The hexadecimal numbering system uses the numerals 0 through 9 and the letters A through F. Counting : 0 1 2 3 4 5 6 7 8 9 A B C D E F Example : Convert 4D16 to decimal 1010 = ( 4 x 161) + (D x 160) = (4 x 16) + ( 13 x 1) =7710 1510 24 Decimal → Hex Convert 42310 to hex: Method: Use repeated division Copyright ©2007 by Pearson Education, Inc. Columbus, OH 43235 All rights reserved. 25 Exercise Copyright ©2007 by Pearson Education, Inc. Columbus, OH 43235 All rights reserved. 26 Exercise - solutions Copyright ©2007 by Pearson Education, Inc. Columbus, OH 43235 All rights reserved. 27 Decimal → Hex (Fractions) Convert 53.3910 to Hex 53 /16 = 3 , remainder = 5 3 / 16 = 0 , remainder = 3 (MSB) 0.39 x 16 = 6.24 Answer = 35.63D7H 0.24 x 16 = 3.84 0.84 x 16 = 13.44 0.44 x 16 = 7.04 Continue to reduce error 28 Hex → Binary Leading zeros can be added to the left of the MSB to fill out the last group. 29 Binary → Hex It is easy to convert between base 16 and base 2, because 16 = 24 . Convert from binary to hex by grouping bits in four starting with the LSB. Each group is then converted to the hex equivalent The binary number is grouped into groups of four bits & each is converted to its equivalent hex digit. Answer = 3A616 can be written as 3A6H Copyright ©2007 by Pearson Education, Inc. Columbus, OH 43235 All rights reserved. 30 Intermediate conversion Technique ➢ Convert 15010 to binary Method 1 : Using conventional Division method Method 2 : Intermediate method Decimal Octal Binary 8 150 8 18 6 8 2 2 0 2 2268 010 010 1102 31 Intermediate conversion Technique Convert 37810 to a 16-bit binary number Decimal Hex Binary = 1010 = 0111 = 0001 Answer = 17A16 = 0001 0111 10102 32 Exercises Convert the following hexadecimal numbers. a) 1B16=( ? )2 (110112) b) 7CA16=( (199410) ? )10 33 Final Exam 34 Final Exam 35 Homework 36 Arithmetic - Binary Addition Decimal , Binary Addition 8 0 0 1 1 1 +6 +0 +1 +1 + 1 14 0 1 10 11 Carry out to next stage One bit adder sum One bit adder sum carry 37 Arithmetic - Binary Addition ADD 47 and 29 in binary 11111 47 + 29 101111 + 011101 76 1 001100 Carry bits Begin with LSB and work towards the MSB, writing down (memories) carries as they are generated. 38 Arithmetic - Hexadecimal Addition ADD 2CH and 48H Use the following steps to perform hexadecimal addition: 1. Add one column at a time. 2. Convert to decimal and add the numbers. 3. If the result of step two is 16 or larger subtract the result from 16 and carry 1 to the next column. 4. If the result of step two is less than 16, convert the number to hexadecimal. 1 2C C=12 +48 12+8=20 74 20-16=4 Carry 1 (representing 16) remain 4 39 Exercises 40 Exercises-solution 41 Binary subtraction In subtracting, we have become accustomed to “Borrowing” from other column to find a result. In Decimal numbers, the base is 10, which means for subtraction, the borrowed number is 10. In Octal numbers, the base is 8, which means for subtraction, the borrowed number is 8. In Hex numbers, the base is 16, which means for subtraction, the borrowed number is 16. 42 Binary subtraction However, for reasons of efficiency, computers rarely perform subtractions in this manner; instead, these operations are typically performed by means of complement techniques. There are two complement techniques; 1.One’s complement 2.Two’s complement The method of two’s complement arithmetic is commonly used in computers to handle negative numbers. 43 Representation of Negative Numbers There are three forms in which signed integer numbers can be represented in binary: Sign-magnitude; 1’s complement; 2’s complement. The method of two’s complement arithmetic is commonly used in computers to handle negative numbers With sign magnitude, the MSB is used to flag a negative number. So for example with 4-bit numbers we would have 0011 = 3 and 1011 = −3. This is simple to see, but is not good for doing arithmetic. 44 Representation of Negative Numbers With 1’s complement The negative numbers are the 1’s complements of the corresponding positive numbers. For example, using eight bits, the decimal number (-25) is expressed as the 1’s complement of (+25) (00011001) as 11100110 Note: in the 1’s complement form, a negative number is the 1’s complement of the corresponding positive number With 2’s complement The negative numbers are the 2’s complements of the corresponding positive numbers. For example, using eight bits, the decimal number (-25) is expressed as the 1’s complement of (+25) (00011001) as 11100111 Note: in the 2’s complement form, a negative number is the 2’s complement of the corresponding positive number 45 Example Express the decimal number -39 as an 8-bit number in the sign-magnitude, 1’s complement, and 2’s complement forms. 8-bit number of +39 is 00100111. In sign-magnitude form, -39 is produced by changing the sign bit to a 1 and leaving the magnitude bits as they are. The number is 10100111. In the 1’s complement form, -39 is produced by taking the 1’s complement of +39 (00100111). The number is 11011000. In the 2’s complement form, -39 is produced by taking the 2’s complement of +39 (00100111). The number is 11011001. 46 One’s Complement Inverting each bit (changing each 0→1, and each 1→0) Example: 0101102 → to form One’s complement → 1010012 0 1 0 1 1 0 inverting 1 0 1 0 0 1 First Complement Two’s Complement Method = One’s Complement + 1 Example: Find the 2’s Complement of 28 in binary (8 bits) Step 1 : Find binary equivalent 2810 = 000111002 Step 2 : Find 1’s Complement number = 111000112 Step 3 : add 1 to get 2’s Complement 11100011 = One’s Complement +1 11100100 2’s Complement of 28D = One’s Complement + 1 47 Substrate 47 from 123 using 2’s Complement 48 binary arithmetic 123 01111011 -(47) -(00101111) ? ? Convert to 2’s Complement directly Solve for 4710 : +00101111 1’s complement : 11010000 2’s complement: 11010000 +1 11010001 Now, you can perform subtraction in addition form. 01111011 +11010001 101001100 Carry-- ignored =76 +ve sign 49 Example:- Calculate 12 – 3 and 3 – 12 in 5-bit word Note:12D = 01100 12 3 -3 -12 3D = 00011 Find 2’s complement for 3 Find 2’s complement for 12 00011 → 11100 + 1 =11101 01100→ 10011 + 1 =10100 01100 00011 +11101 +10100 101001 =+9 Ignore carry +ve sign 10111 (for prove, take the 2’s complement: 01001) = +9 =-9 (2’s complement form) -ve sign 50 Subtract 23H from 81H First convert the Hexa into binary It is important to hold an equal number of places for numbers being subtracted. 81 10000001 -23 -00100011 ? ? 10000001 +11011100 1 01011101 carry Convert to 1’s Complement 1 01011101 End round carry +1 01011110 answer 0101 1110 = 5EH 51 Exercises Calculate the following assuming a two’s complement number system and n = 8 (where MSB is the sign bit). Check your results by decimal arithmetic. a) 8 − 3 b) − 25 − 19 c) − 120 + 30 52 Overflow condition 53 Solutions 54 Solutions 55 Binary Multiplication The multiplication of binary numbers is done in the same manner as the multiplication of decimal numbers. The process is actually simpler since the multiplier digits are either 0 or 1. Perform binary multiplication of 910 x 1110 0101(5) Multiplicand x 0011(3) Multiplier 0101 0101 0000 + 0000 0001111 = (15) 56 Binary Division Compare Dividend (X) and Y (Divisor). a) If X >= Y, the quotient bit is 1 and perform the subtraction X-Y. b) If X < Y, the quotient bit is 0 and do not perform any subtractions. 4. 3. Shift Y one bit to the right and go to step 2. 0111 Divisor (Y) 111 110101 - 111 1100 - 111 Quotient Dividend (X) 1011 - 111 100 Remainder 57 Binary Division 11010 Divisor (Y) 1000 11010010 Quotient Dividend (X) - 1000 - 1010 1000 - 1001 1000 10 Remainder 58 Exercises Perform the following binary division. a) 110 ÷ 11 (102) 59 Binary codes : Binary Coded Decimal The BCD system is employed by computer systems to encode the decimal number into its equivalent binary number. This is generally accomplished by encoding each digit of the decimal number into its equivalent binary sequence. The main advantage of BCD system is that it is a fast and efficient system to convert the decimal numbers into binary numbers as compared to the pure binary system. The 4-bit BCD system is usually employed by the computer systems to represent and process numerical data only. In the 4-bit BCD system, each digit of the decimal number is encoded to its corresponding 4-bit binary sequence. The two most popular 4-bit BCD systems are: 1. Weighted 4-bit BCD code 2. Excess-3 (XS-3) BCD code 60 Weighted 4-bit BCD code Using 4 bits to define BCD, but use only 0 –9 digits. The weighted 4-bit BCD code is more commonly known as 8421 weighted code. It is called weighted code because it encodes the decimal system into binary system by using the concept of positional weighting into consideration. In this code, each decimal digit is encoded into its 4-bit binary number in which the bits from left to right have the weights 8, 4, 2, and 1, respectively. Decimal BCD 0 1 2 3 4 5 6 7 8 9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 61 8421 BCD Example: Convert 47910 into 8421 BCD 4 7 9 0100 0111 1001 Answer = 0100 0111 1001BCD Compare with pure binary conversion 47910 = 0001 1101 11112 62 BCD Addition Addition of BCD digits is similar to adding 4-bit unsigned binary numbers except a correction must be made if a result exceeds 1001 by adding 6 to the digit. Decimal to BCD + (5)10 (9)10 (14)10 + 0101 1001 + 1110 0110 0001 0100 (1) (4) Since sum exceed 1001, we add 0110 to the answer 63 BCD Addition Decimal to BCD + (56)10 (69)10 + 0101 0110 0110 1001 + 1011 1111 0110 0110 (125)10 0001 0010 0101 (1) (2) (5) Since sum exceed 1001 for both BCD, we add 0110 to each sum. 64 Excess-3 BCD Code The Excess-3 (XS-3) BCD code does not use the principle of positional weights into consideration while converting the decimal numbers to 4-bit BCD system. Therefore, we can say that this code is a non-weighted BCD code. The function of XS-3 code is to transform the decimal numbers into their corresponding 4-bit BCD code. This code can be derived from the natural binary BCD (8-4-2-1) code by adding 3 to each coded number. Therefore, we can say that the XS-3 code is strongly related with 8421 BCD code in its functioning. 65 BCD & Excess-3 Decimal BCD 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 66 Excess-3 BCD Code Example: Convert the decimal number 85 to XS-3 BCD code. Add 3 to each digit of the given decimal number as: 8+3=11 and 5+3=8 The corresponding 4-bit 8421 BCD representation of the decimal digit 11 is 1011. The corresponding 4-bit 8421 BCD representation of the decimal digit 8 is 1000. Therefore, the XS-3 BCD representation of the decimal number 85 is 1011 1000. 67 ASCII Code 4-bit BCD systems are inadequate for representing and handling non-numeric data. For this purpose, 6-bit BCD and 8-BCD systems have been developed. The 6-bit BCD systems can handle numeric as well as non-numeric data but with few special characters. The 8-bit BCD systems were developed to overcome the limitations of 6-bit BCD systems, which can handle numeric as well as nonnumeric data with almost all the special characters such as +, -, *, /, @, $, etc. Therefore, the various codes under the category of 8-bit BCD systems are also known as alphanumeric codes. The ASCII code is pronounced as ASKEE. Initially, this code was developed as a 7-bit BCD code to handle 128 characters but later it was modified to an 8-bit code. 8th bit is used as ‘extended ASCII’ to code graphical shapes, mathematical symbols, etc. or as check bit ACSII Code 68 ACSII Code 69 70 Gray Code This is a variable weighted code and is cyclic. This means that it is arranged so that every transition from one value to the next value involves only one bit change. To convert binary to gray code, bring down the most significant digit of the given binary number, because, the first digit or most significant digit of the gray code number is same as the binary number. To obtain the successive gray coded bits to produce the equivalent gray coded number for the given binary, add the first bit or the most significant digit of binary to the second one and write down the result next to the first bit of grey code, add the second binary bit to third one and write down the result next to the second bit of grey code, follow this operation until the last binary bit and write down the results based on EX-OR logic to produce the equivalent grey coded binary. 71 Binary to Gray Code Convert 10110 in binary code to Gray code. + + + + Binary 1 0 1 1 0 Gray 1 1 1 0 1 72 Gray Code to Binary Gray Convert 11011 in Gray code to Binary code. 1 1 + Binary 1 0 + 0 1 + + 0 1 1 0 ➢ To convert grey code to binary, bring down the most siginificant digit of the given grey code number, because, the first digit or the most siginificant digit of the grey code number is same as the binary number. ➢ To obtain the successive second binary bit, perform the EX-OR operation between the first bit or most siginificant digit of binary to the second bit of the given grey code. 73 Parity Bit for Error Detection Many systems use a parity bit as a means for bit error detection. Any group of bits contain either even or odd number of 1s. A parity bit is attached to a group of bits to make the total number of 1s in a group always even or always odd. An even parity bit makes the total number of 1’s even, and an odd parity bit makes the total to be odd. The parity bit can be attached to the code A given system operates with even or odd parity, but not both. If a system operates with even parity, a check is made on each group of bits received to make sure the total number of 1s in that group is even. If there is an odd number of 1s, an error has occurred. 74 Parity Bit for Error Detection Used for single bit error detection 8-bits 7-bits Parity bit generator Parity = X 8-bits Transmission medium 1 011 0100 0 100 1011 Parity bit checker Output Parity = X’ Noise Even parity Total no. of 1’s (including parity bit) is an even number 7-bits Odd parity Total no. of 1’s (including parity bit) is an odd number 0 011 0100 1 100 1011 75 Hamming Code (Distance-3) The most common types of error-correcting codes used in RAM are based on the codes devised by R. W. Hamming. In the Hamming code, k parity bits are added to an n-bit data word, forming a new word of n + k bits. The bit positions are numbered in sequence from 1 to n + k. Those positions numbered with powers of two are reserved for the parity bits. The remaining bits are the data bits. The code can be used with words of any length. Parity bit position = 2𝑛 Exclusive-OR gate can be used to generate and check parity bit 76 Hamming Code (Distance-3) Example:- Consider, for example, the 7-bit data word 1011001. The number of data bits = 7 The number of parity bits to be included = 4 The total number of bits = 11 The parity bits are placed at positions corresponding to power of 2, which corresponds to the position 1, 2, 4, and 8. 11 10 9 8 7 6 5 4 3 2 1 1 0 1 P8 1 0 0 P4 1 P2 P1 77 Hamming Code (Distance-3) a. Parity bit 1 covers all the bits positions whose binary representation includes a 1 in the least significant position (1, 3, 5, 7, 9, 11, etc). (1011) (1001) 11 10 9 1 0 1 (0111) 8 + (0101) 7 6 5 1 0 0 (0011) 4 2 1 1 P1 + + + 3 (0001) For XOR gate, count the number of 1s, if it’s even, then the results is zero, if it’s odd, then the results is 1. 0 b. Parity bit 2 covers all the bits positions whose binary representation includes a 1 in the second position from the least significant bit (2, 3, 6, 7, 10, 11, etc). (1011) (1010) 11 10 9 1 0 1 + 8 + (0111) (0110) 7 6 5 1 0 0 + 4 + (0011) (0010) 3 2 1 P2 1 1 78 Hamming Code (Distance-3) c. Parity bit 4 covers all the bits positions whose binary representation includes a 1 in the third position from the least significant bit (4–7, 12–15, 20–23, etc). 11 10 9 1 0 1 8 (0111) (0100) (0101) (0100) 7 6 5 4 3 1 0 0 P4 1 + + 2 1 1 d. Parity bit 8 covers all the bits positions whose binary representation includes a 1 in the fourth position from the least significant bit bits (8–15, 24–31, 40–47, etc). (1011) (1010) (1001) (1000) 11 10 9 8 7 6 5 1 0 1 P8 1 0 0 + + 0 4 3 1 2 1 79 Hamming Code (Distance-3) Thus, the data transferred will be 11 10 9 8 7 6 5 4 3 2 1 1 0 1 0 1 0 0 1 1 1 0 Where P1 = 0, P2 = 1, P4 = 1, P8 = 0 80 Hamming Code (Distance-3) Error Detection and Correction:- When the 11 bits are read from memory, they are checked again for errors. The parity of the word is checked over the same groups of bits, including their parity bits. The four check bits are evaluated as follows: C1 = XOR of bits (1, 3, 5, 7, 9, 11) = 0 C2 = XOR of bits (2, 3, 6, 7, 10, 11) = 0 C=C8C4C2C1 = 0000 = 0 (No error) C4 = XOR of bits (4, 5, 6, 7) = 0 C8 = XOR of bits (8, 9, 10, 11) = 0 11 10 9 8 7 6 5 4 3 2 1 1 0 1 0 1 0 0 1 1 1 0 81 Hamming Code (Distance-3) Error Detection and Correction:- A 0 check bit designates an even parity over the checked bits, and a 1 designates an odd parity. Since the bits were written with even parity, the result C = 0 indicates that no error has occurred. However, if C≠0, the 4-bit binary number formed by the check bits gives the position of the incorrect bit if only a single bit is in error. 82 Hamming Code (Distance-3) Suppose in the previous example, the 6th bit is changed from 0 to 1 during data transmission, then it gives new parity values in the binary number. The four check bits are evaluated as follows: C1 = XOR of bits (1, 3, 5, 7, 9, 11) = 0 C2 = XOR of bits (2, 3, 6, 7, 10, 11) = 1 C=C8C4C2C1 = 0110 = 6 (Error in bit 6) C4 = XOR of bits (4, 5, 6, 7) = 1 C8 = XOR of bits (8, 9, 10, 11) = 0 11 10 9 8 7 6 5 4 3 2 1 1 0 1 0 1 1 0 1 1 1 0 Bit Error 83 References Ronald J. Tocci, Neal S. Widmer and Gregory L. Moss, “Digital Systems - Principles and Applications”, 11th Edition, PrenticeHall, 2007. S. Brown and Z. Vranesic, “Fundamentals of Digital Logic with VHDL Design”, 2nd ed., McGraw-Hill, 2005 Alan B. Marcovitz, “Introduction to Logic Design”, 3rd Edition, McGraw-Hill, 2009. Donald D. Givone, “Digital Principles and Design”, McGraw-Hill, 2003.
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )