Project Done By Apurva Patel Vrajesh Patel Swapna
Project Done By: Apurva Patel Vrajesh Patel Swapna Kalakonda
• The purpose of this project is to build a coded Hex Calculator that does the following operations: - Multiply -Square of a number - Addions of signed and Unsigned Numbers - Subtractions of signed and Unsigned Numbers - Division - Signed Division
case 1: - Multiplying two negative numbers--> will give the answer in positve so we will take the abs of the two numbers and then multiply: the abs function (Absolute Value Function): -This function will take the 2 s’ complement of the number is negative (signed) case 2: If a positive number is multiplied by a negative number then for sure the ans is going to be negative. For the ans to be negative we will take the abs of that negative number and then do a normal multiply and to show that the ans is negative will turn on the LED showing the negative sign. case 3: when both are positive then we will do the regular multiply
Sigmul. Whp : SM* (A B -- +(A*B)) OVER /2 Dup A B XOR 80 AND /n = ((A xor B) and 80 h) -- To check wheather only /one of them is negative DUP /A B n n >R /A B n ? ABS /call to the routine ? ABS to take the absolute /values of negative numbers either A or B or /both * /call to the normal unsigned multiplication routine /for multiplying / C = |A|*|B| R> /C n IF /if n = 1 the answer is negative indicated by /pushing 80 h into 80 LD! / LED register THEN ;
This routine multiplies the input number by itself. The following is the whyp file for square. : SQUARE (A -- A*A ) DUP / A A * ; /call to unsigned multiplication routine for multiplying A*A
How to do Unsigned Division to get 16 -bit Quotient and a 8 -bit remainder. * In order to get a 16 -bit quotient we need to carry out the normal division two times. * Each time we will get a 8 -bit quotient. * This routine will not give us an overflow unless a number is divided by 00 h.
unsigndiv. whp : MU/MOD (NL NH D -- R Q) /THIS ROUTINE DIVIDES /16 -BIT NUMERATOR WITH /8 -BIT DENOMINATOR TO /GIVE 8 -BIT QIUOTIENT AND /8 -BIT REMAINDER -ROT /D NL NH DIV DIV ROT_DROP_SWAP ; /R Q : UM/MOD (NL NH D -- R QL QH) >R 00 R@ MU/MOD R> SWAP >R MU/MOD R> ; /NL NH 00 D /R QH D /R D QH /R D /R 2 QL QH D D QH QH
This takes in a 16 -bit signed numerator and an 8 -bit Denominator Therefore, the sign numbers can be broken down into the following categories: 1. 0000 h to 7 FFFh --> Positive numbers 2. 8000 h to FFFFh --> Negative numbers The following are the cases for signed division: Divident Divisor Quotient Remainder Negative Positive Positive Negative Positive
Signdiv. whp : DIVIDE* (NL NH D -- R QL QH) OVER AND /NL NH D 80 AND IF /NH<0 D<0 --> QLQH>0 AND R<0 ABS -ROT DABS /|D| |NL| |NH| ROT UM/MOD /R QL QH WAITBTN 3 /R QL QH DROP 0= /R IF 00 LD! ELSE 80 LD! THEN ELSE /IF R = 0 NO NEED TO SHOW NEGATIVE SIGN /ELSE LIGHT UP THE SIG LED /SHOWS REMAINDER IS NEGATIVE /EITHER NUMERATOR OR DENOMINTOR < 0 OR BOTH > 0 0< IF /D<0 AND NLNH >0 --> QLQH<0 AND R>0 ABS /NL NH |D| UM/MOD /R QL QH 0= >R SWAP 0= /CHECKS WHEATHER QUOTIENT IS ZERO OR NOT >R SWAP R> R> AND
Cont. . . IF /IF QUOTIENT IS ZERO NO NEED TO SHOW THE /NEGATIVE SIGN 00 LD! ELSE 80 LD! THEN WAITBTN 3 00 LD! /R QL QH DROP /R ELSE -ROT /D NL NH 0< /CHECKS WHEATHER NUMERATOR < 0 IF /D>0 AND NLNH<0 --> R<0 AND QLQH<0 DABS /D |NLNH| ROT UM/MOD /R QL QH 0= >R SWAP 0= /CHECKS WHEATHER QUOTIENT IS ZERO OR NOT >R SWAP R> R> AND
Cont. . . IF /IF QUOTIENT IS ZERO NO NEED TO SHOW THE /NEGATIVE SIGN 00 LD! ELSE 80 LD! THEN WAITBTN 3 /R QL QH DROP /R 0= IF 00 LD! ELSE 80 LD! THEN ELSE ROT UM/MOD WAITBTN 3 DROP THEN ; /CHECKS WHEATHER QUOTIENT IS ZERO OR NOT /D>0 NLNH>0 --> R>0 QLQH>0 /NL NH D /R QL QH /R
Case 1: Subtracting when both the numbers are negative: subcase 1: if B>A then get a positive answer else get a negative answer Case 2: When one of A or B is a negative number subcase 1: if A ‘+ve’ and B ‘-ve’ then ans = A + B else if A ‘-ve’ and B is ‘+ve’ then ans = -(A+B) Case 3: when both are positive ans = A-B and the ans is postive or neg depending on the magnitude of A and B
Signsub. whp : S- (A B -- A-B) 0< IF SWAP 0< IF - 0< IF ABS ELSE 80 LD! THEN ELSE SWAP ABS + 0< IF FF LD! THEN ELSE SWAP 0< IF ABS + 0< /checks wheather B<0 /B A /checks wheather A<0 /A<0 and B<0 / C = B-A /checks wheather C<0 /B<0 and A>0 /C = A-(-B) /if C<0 It is a overflow /Indicates a overflow /B>0 and A<0 /C = -A-B /If C is negative indicates a overflow /else answer is negative and 2'scomplement /of C
Cont. . . IF FF LD! ELSE 80 LD! THEN ELSE SWAP 0< IF ABS 80 LD! THEN ; /A>0 and B>0 /C = A - B /if B>A then answer is negative and 2'scomplement of /of C
Changes Made to The W 8 Y controller Changed from Mux 2 g to mux 3 g Input from 16 x 8 Dpram Output Y 2 of ALU 4 N 2 ALU 4
Whyp Words Added to W 8 Y controller * mpp : Carries out the multiplication of the numbers in the data stack when called 8 times * divide: carries out the division of the numbers in the data stack when called 8 times to leave a 8 -bit quotient and 8 -bit remainder * ABS: takes the absoloute value of the number in T-Reg * DABS: Takes the 2 s complement of a 16 -bit number and leaves the higher 8 -bit in T-Reg and the lower 8 -bits in N-Reg
User’s Guide 1. First enter the code for the operation to be carried out. Project 1 operations: hex code operation 01 h signed subtraction 02 h unsigned multiplication 03 h Square 04 h signed multiplication Project 2 operations: hex code operations 01 h unsigned division 02 h signed division If the entered hex code is different from the above codes all the LEDs will Light up indicating a NULL operation. 2. Enter the required hex values
Cont … user guide * For division enter the lower 8 -bits of numerator first and followed by higher 8 -bits followed by the denominator * Press BTN 3 to enter the values through the switches. * Negative numbers will be indicated by turning on the most significant LED by pushing 80 h in the LD-reg * Overflow is indicated by lighting up all the LEDs
MERRY CHRISTMAS AND A HAPPY NEW YEAR TO ALL
- Slides: 20