Sơ lược về khối AU_FLOATING_POINT:o Input: Sel: chọn phép tính cho khối module AU A , B: 2 giá trị cần tính toáno Output: Overflow, Underflow: báo cờ tràn trên hoặc tràn dưới Result: kết quả của phép tính toáno Module: ADD_SUB 00_01: Khối thực hiện chức năng cộng, trừ 2 số MULTIPLIER 10: Khối thực hiện chức năng nhân 2 số DIVISION 11: Khối thực hiện chức năng chia 2 số
ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ -o0o - BÁO CÁO BÀI TẬP LỚN MÔN HỌC: KỸ THUẬT SỐ NÂNG CAO THIẾT KẾ MÁY TÍNH DẤU CHẤM ĐỘNG 32 BITS GVHD: Trịnh Vũ Đăng Nguyên SVTH: Nguyễn Thái Nguyên 1712386 Bùi Thị Thắm TPHCM, tháng năm 2021 1814071 MỤC LỤC Khối cộng trừ: 1.1 Sơ đồ khối: 1.2 Chức khối chính: 1.3 Một số module hỗ trợ: 1.4 Giải thuật thứ nhất: Full-adder Bộ nhân 10 2.1 Sơ đồ khối: 10 2.2 Chức khối chính: 10 2.3 Các module hỗ trợ cho giải thuật Array multiplier 11 Bộ chia 13 3.1 Sơ đồ khối Restore & Non_Restore division: 13 3.2 Chức khối chính: 13 3.3 Giải thuật Restore & Non_Restore Division 14 Kết mô phần II 14 4.1 Bộ cộng: 14 4.2 Phép nhân: 16 4.3 Phép chia 17 Phần Bonus 17 5.1 Bộ chuyển FP32 sang thập phân 17 5.2 Giải thuật phép cộng trừ Carry Tree Adder (CTA) 19 5.3 Giải thuật phép nhân Booth Multiplier 22 HÌNH ẢNH Hình 1-1 : Sơ đồ khối Add_sub Hình 1-2: Ví dụ hoạt động Shiftright count = Hình 1-3 Sơ đồ khối Full_ adder Hình 2-1 Sơ đồ khối nhân 10 Hình 2-2 Bộ nhân bit 11 Hình 2-3 Bộ nhân 4bits 11 Hình 2-4 : Bộ nhân bits 12 Hình 3-1 : Sơ đồ khối Restore & Non_Restore Division 13 Hình 3-2 : Ví dụ phép chia Non_restore 5bits 14 Hình 4-1 : Mô cộng trừ với số 14 Hình 4-2 : Mô cộng đặt biệt 15 Hình 4-3 : Mô trừ đặc biệt 15 Hình 4-4 : Mô nhân với số 16 Hình 4-5 : Mô nhân đặc biệt 16 Hình 4-6 : Mô chia với số 17 Hình 4-7 : Mô chia đặt biệt 17 Hình 5-1 : Sơ đồ chuyển đổi FP32 18 Hình 5-2 : Ví dụ fraction_process bits 19 Hình 5-3: Mơ chuyển đổi dạng wave FP32 sang Thập phân 19 Hình 5-4 : Mơ chuyển đổi FP32 sang Thập phân 19 Hình 5-5 : Sơ đồ khối CTA 16 bits 20 Hình 5-6 : BlackCell and GrayCell 20 Hình 5-7: Ví dụ cho giải thuật CTA 21 Hình 5-8: Kết mô cộng trừ giải thuật 22 Hình 5-9: Sơ đồ khối phép nhân Booth 23 Hình 5-10: Ví dụ cho giải thuật Booth 24 Hình 5-11: Mơ phép nhân giải thuật 24 YÊU CẦU BÀI TẬP LỚN MƠN KỸ THUẬT SỐ NÂNG CAO I HỒN THÀNH BÀI LAB THIẾT KẾ MỘT MÁY TÍNH DẤU CHẤM ĐỘNG THỰC HIỆN CÁC PHÉP II TOÁN (+, -, *, /) GIỮA HAI SỐ FLOATING POINT (IEEE-754, SINGLE PRECISION, 32-BIT Ngõ vào: số float 32-bit (A, B) 2-bit lựa chọn phép toán (+, -, *, /) Ngõ ra: Kết phép toán định dạng IEEE-754 Lưu ý: Khơng sử dụng phép tốn có sẵn Verilog/VHDL (như +, -, *, / Number o Inf: Khi exp[7:0] = 11111111 Khi frac [22:0] = 00 00 => +Inf or -Inf Khi frac [22:0] != 00 00 => NaN Module Count_to_shift: o Input fraction 24 bit o Output: count bit o Xét từ bit 23, [23] = count = 0, [22] = count = 1, tương tự đến bit = count = 23 1.4 Giải thuật thứ nhất: Full-adder S = A xor B xor Cin Cout = (A xor B).Cin + A.B Module add_sub thực cách cho Cin=1 B’ = B xor Cin tạo B bù Hình 1-3 Sơ đồ khối Full_ adder Bộ nhân 2.1 Sơ đồ khối: Hình 2-1 Sơ đồ khối nhân 2.2 Chức khối chính: Add_sud_26: trừ exp_a exp_b cho 127, sau cộng exp trừ, cộng lại cho 127, đưa vào khối normalize để kiểm tra tràn chuẩn hóa Mul_24: nhân fraction 24 bits, thành temp_frac_norm 48 bits, sau đưa vào chuẩn hóa Mul_24: tạo nên từ module mul nhỏ ghép lại 10 Normalize48: o Xử lý exp: Cộng exp cho để check over_flow Trừ exp cho giá trị count (sau phát bit temp_frac) để check under_flow o Xử lý frac: Phát bit để lấy giá trị count count_bit32, sau dịch phải count bits Xét điều kiện bit để lấy fraction tương ứng, sau nhân ta có biến temp_frac 48 bits, lấy 23 bits có trọng số cao o Cờ tràn xét theo điều kiện tương ứng 2.3 Các module hỗ trợ cho giải thuật Array multiplier Hình 2-2 Bộ nhân bit Hình 2-3 Bộ nhân 4bits 11 Hình 2-4 : Bộ nhân bits Bộ nhân cho 16 24 bits tương tự Shiftright_32: dịch phải fracsion qua bit Count_to_shift: tìm bit lưu vào biến count Shiftleft_32: dịch trái fraction qua count bits 12 Bộ chia 3.1 Sơ đồ khối Restore & Non_Restore division: Hình 3-1 : Sơ đồ khối Restore & Non_Restore Division 3.2 Chức khối chính: Trong chia ta dùng: o Bộ trừ exponent : Addsub_8 o Bộ cộng trừ số A vs M: Addsub_48 o Tìm bit để chuẩn hóa o Dịch trái, dịch phải 13 3.3 Giải thuật Restore & Non_Restore Division Hình 3-2 : Ví dụ phép chia Non_restore 5bits Kết mô phần II 4.1 Bộ cộng: a) Trường hợp với số: Hình 4-1 : Mơ cộng trừ với số 14 Phép toán Số thứ Số thứ Kết + 0.5 0.4375 0.9375 1.468*10^7 1.468*10^7 9.730*10^6 9.730*10^6 0.0725 -0.083 + -0.0105 + -25362.0 -1.1237*10^-8 -25362.0 - 9.0985*10^-12 -8.6736*10^-18 9.0985*10^-12 b) Trường hợp đặt biệt: Hình 4-2 : Mơ cộng đặt biệt Phép cộng A B NAN -INF +INF NAN NAN NAN NAN NAN -INF NAN -INF NAN -INF +INF NAN NAN +INF +INF Hình 4-3 : Mơ trừ đặc biệt Phép trừ A B NAN -INF +INF NAN NAN NAN NAN NAN -INF NAN NAN -INF -INF +INF NAN +INF NAN +INF 15 4.2 Phép nhân: a) Trường hợp với số: Hình 4-4 : Mơ nhân với số Phép toán Số thứ Số thứ Kết 0.5 0.4375 0.21875 1.468*10^7 7.34*10^6 9.730*10^6 -102173 0.0725 -0.00076125 -25362.0 -1.1237*10^-8 0.000285 9.0985*10^-12 -8.6736*10^-18 -7.89169*10^-29 * -0.0105 b) Trường hợp đặt biệt: Hình 4-5 : Mơ nhân đặc biệt Phép nhân A B NAN -INF +INF NAN NAN NAN NAN NAN -INF NAN +INF -INF NAN 16 +INF NAN -INF +INF NAN 4.3 Phép chia a) Trường hợp với số: Hình 4-6 : Mơ chia với số b) Trường hợp với số: Hình 4-7 : Mô chia đặt biệt Phần Bonus 5.1 Bộ chuyển FP32 sang thập phân Lý thuyết chuyển đổi: - FP32 chia thành phần: Sign = FF[31] ; Exponent = FF[30:23] ; Fraction =FF[22:0] - Một số floating point chuyển thành thập phân sau: s X = (-1) ×( + fraction)×2exp-127 - Ví dụ ta có fp = 10110101 11100010001010000001001 Sign = Exp = 101101012 = 181 Fraction = 111000100010100000010012 = 7410697 X = (-1) × (1 + 7410697) × 2181-127 = -1 7410697*254 Sơ đồ chuyển đổi 17 Hình 5-1 : Sơ đồ chuyển đổi FP32 Fraction_process a Bảng chuyển đổi giá trị: - Vì số nhị phân khơng cộng sau dấu “.” được, nên tạm thời ta cộng phần ngun trước - Vì bit fraction có giá trị ngày nhỏ bit có trọng số thấp, nên ta lấy giá trị 10 bits đầu tiên, độ xác thay đổi không đáng kể Frac[n] frac[22] frac[21] frac[20] frac[19] frac[18] frac[17] frac[16] frac[15] frac[14] frac[13] Tổng Giá trị 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 Thực tế Giá trị tạm 0.5 5000000000 0.25 2500000000 0.125 1250000000 0.0625 625000000 0.03135 313500000 0.015625 156250000 0.0078125 78125000 0.0030625 30625000 0.0019312 19312500 0.0009765 9765620 0.9981578 9981578000 b Sơ đồ khối fraction_process Số nhị phân 0100101010000001011111001000000000 0010010101000000101111100100000000 0001001010100000010111110010000000 0000100101010000001011111001000000 0000010010101000000101111100100000 0000001001010100000010111110010000 0000000100101010000001011111001000 0000000010010101000000101111100100 0000000001001010100000010111110010 0000000000100101010000001011111001 1001010010111100101100101100010000 18 - Ta gán giá trị số nhị phân tạm thời vào biến value[n] Hình 5-2 : Ví dụ fraction_process bits Kết mơ Hình 5-3: Mơ chuyển đổi dạng wave FP32 sang Thập phân Hình 5-4 : Mơ chuyển đổi FP32 sang Thập phân 19 5.2 Giải thuật phép cộng trừ Carry Tree Adder (CTA) Sơ đồ khối 16 bit Hình 5-5 : Sơ đồ khối CTA 16 bits o Black cell o Gray cell Hình 5-6 : BlackCell and GrayCell Giải thích giải thuật - Thực phép tính cout trước cách tạo khái niệm g p (propagate and generate): g (a,b) = a.b cho biết bit có tạo hay không p (a,b) = a xor b cho biết bit có lan truyền tiếp không, tức tổng bit thứ i có mang qua bit thứ i+1 hay khơng.(một số định nghĩa khác cho thấy p = a + b, không ảnh hưởng đến giá trị c(carry) sau đó) 20 Việc tạo g p để ta thực thi module cho giá trị c việc tính tổng lúc đơn giản tính xor bit thứ i a, b c (khơng nhớ) Tuy cách có hiệu so với Ripple Carry Adder với số > 16 bits cell c15 có đến 16 tầng dẫn đến delay đáng kể số cell để thực cho block lớn - Có cách để thực cho Carry tree adder: Kogge–Stone adder, Brent–Kung adder, Lynch–Swartzlander - Ở sử dụng phương pháp Kogge-Stone adder (KSA) CLA, ta c4 = (g4, p4) ο [ (g3, p3) ο [(g2, p2) ο (g1, p1)] ] Việc xếp lại c4 = [(g4, p4) ο (g3, p3)] ο [(g2, p2 ) ο (g1, p1)] giúp cho thiết kế hoạt động song song , dẫn đến hiệu suất cao Nếu CLA n bits phải có độ trễ n tầng, CTA có độ trễ log2n tầng - Hai khối bổ sung phương pháp Black cell Gray cell (dành cho đầu cuối trước đưa vào khối FA) Nếu ta đặt co(k+1) = ak bk c1(k+1) = ak + bk (carry nút k) c k+1 biểu diễn sau: ck+1 = ~cin.co(k+1) + cin.c1(k+1) Như trình bày Hình 5-7: Ví dụ cho giải thuật CTA 21 Kết mơ Hình 5-8: Kết mô cộng trừ giải thuật 5.3 Giải thuật phép nhân Booth Multiplier Sơ đồ khối : - Thuật toán Booth hoạt động dựa thực tế chuỗi số hệ số nhân không yêu cầu phép cộng mà cần dịch chuyển chuỗi số hệ số nhân từ trọng số bit ^ k đến trọng số ^ m coi ^ (k + 1) thành ^ m - Như tất sơ đồ nhân, thuật toán Booth yêu cầu kiểm tra bit hệ số nhân dịch chuyển tích phần Các số hạng phép nhân phải có dấu Vậy Số dương bit lớn =0; Số âm bit lớn = Các số hạng có độ dài bit giống Khởi tạo Q-1=0 Khi Q0Q-1= 00 hay 11 dời bit sang phải giảm số hạng nhân Khi Q0Q-1 = 01 A = A+M dời bit sang phải giảm số hạng nhân Khi Q0Q-1 = 10 A = A-M dời bit sang phải giảm số hạng nhân Khi dời bit giữ dấu A Khi nhân hết số hạng kết giá trị nối hai giá trị A & Q - Các module hỗ trợ cho q trình tính tốn tương tự giải thuật 22 Hình 5-9: Sơ đồ khối phép nhân Booth Ví dụ cho giải thuật: - Tính x (-3) 23 Hình 5-10: Ví dụ cho giải thuật Booth Kết mơ phỏng: Hình 5-11: Mơ phép nhân giải thuật 24 ... Hình 1: Sơ đồ khối máy tính dấu chấm động (AU_FLOATING_POPINT) Sơ lược khối AU_FLOATING_POINT: o Input: Sel: chọn phép tính cho khối module AU A , B: giá trị cần tính tốn o Output: Overflow,... MỘT MÁY TÍNH DẤU CHẤM ĐỘNG THỰC HIỆN CÁC PHÉP II TỐN (+, -, *, /) GIỮA HAI SỐ FLOATING POINT (IEEE-754, SINGLE PRECISION, 32-BIT Ngõ vào: số float 32-bit (A, B) 2-bit lựa chọn phép toán (+,... giữ dấu A Khi nhân hết số hạng kết giá trị nối hai giá trị A & Q - Các module hỗ trợ cho q trình tính tốn tương tự giải thuật 22 Hình 5-9: Sơ đồ khối phép nhân Booth Ví dụ cho giải thuật: - Tính