Khi thực hiện các phép toán số học trên số dấu chấm động, phần cứng phải xử lý sự kết hợp giữa dấu, số mũ và phần Mantissa, tất cả được mã hoá dưới dạng nhị phân... Tính toán trên số thự
Trang 1ĐẠI HOC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
VÕ DONG HUNG - 20521376
LE NGUYEN TIN HUY — 20521395
KHOA LUAN TOT NGHIEP
THIET KE IP CHO BO TINH TOAN FFT SU DUNG
THUAT TOAN BUTTERFLY
IP DESIGN FOR FFT CALCULATION BASE ON BUTTERFLY
ALGORITHM
CU NHAN KY THUAT MAY TINH
GIANG VIEN HUONG DAN
TS TRAN QUANG NGUYEN
TP HO CHÍ MINH, 2024
Trang 2THÔNG TIN HỘI ĐÒNG CHÁM KHÓA LUẬN TÓT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 662/QD-DHCNTT
ngày 05 thang 07 năm 2024 của Hiệu trưởng Trường Dai học Công nghệ Thông tin.
Trang 3LỜI CẢM ƠN Trước hết, nhóm chúng em xin bày tỏ lòng biết ơn và sự kính trọng sâu sắc đến toàn thể quý thầy cô của trường Đại học Công Nghệ Thông Tin — Đại học Quốc gia Thành phố Hồ Chí Minh Trong suốt thời gian học tập, quý thầy cô đã luôn tận tình giảng dạy, truyền đạt những kiến thức, kỹ
năng quý báu giúp chúng em trưởng thành và vững vàng trên con đường
học vấn.
Đặc biệt, nhóm xin gửi lời cảm ơn sâu sắc đến Tiến sĩ Trần Quang Nguyên, người đã nhiệt tình hướng dẫn, góp ý và hỗ trợ nhóm trong suốt quá trình thực hiện khóa luận tốt nghiệp Sự tận tụy và chỉ dẫn nhiệt tình của thay đã giúp nhóm hoàn thành dé tài một cách tốt nhất.
Bên cạnh đó, nhóm cũng xin gửi lời cảm ơn chân thành đến Thạc sĩ Nguyễn Hiếu Bình và công ty Cổ phần Công Nghệ VNCHIP, những người
đã hỗ trợ và chia sẻ kinh nghiệm quý báu với nhóm trong suốt quá trình
thực hiện khóa luận.
Mặc dù đã cố gắng hết mình, tuy nhiên thì khóa luận của nhóm không thê tránh khỏi những thiếu sót Vì vậy, rất mong nhận được sự góp ý, đóng
góp quý báu từ các thầy cô và các bạn, giúp nhóm hoàn thiện đề tài lần
này.
Một lần nữa nhóm xin chân thành cảm ơn mọi người đã giúp đỡ và
ủng hộ nhóm trong suốt quá trình học tập và nghiên cứu.
Thực hiện khóa luận
Võ Đông Hưng Lê Nguyễn Tín Huy
Trang 4MỤC LỤC
Chương 1 GIỚI THIEU DE TÀII - 2-22 2 E£SEE+EE£EE£EEEEEeEEEZEEEEEerEerrerree 3
1.1 Tổng quan đề tài - :-:- ++Sk‡Ex+EEEEEEEEEEEEE1221211211211211211211 21121 1ec1 cxe 3
1.1.1 _ Đối với các nghiên cứu trong nưỚc - 2 2 s+ss+s+sze+zzzxzez 4
1.1.2 Đối với các nghiên cứu ngoài nước -: 2 ++cs++zx+zzx++z+s 51.2 Mục tiêu đề tài - 2+ 22c 2k 21 2212271 211211111111111 1112111 re 61.3 Giới hạn đề tài 2-25: 2t 2E 22122122112212211211211211211 11211211 1ctrrre 6Chương 2 CƠ SỞ LÝ THUYÊTT 2: ©2£©5£SE+SE2EE£EEEEEEEEEEEEEEEEEEerkrrrkrree 7
2.1 Số dấu chấm động (số Floating - Poin() -¿ ¿s¿++2++cx+zcxeecxeeex 7
2.1.1 _ Giới thiệu số dâu chấm động - 2 5+ +++x++£s+rxezrserxee 72.1.2 Biểu diễn của số thực dấu châm động - ¿2 s2 +©++s++: 72.1.3 Dạng chuân IEEE 754 cho số dấu chấm động . - 2 5- 82.1.4 Pham vi va độ chính xác của số dau cham động « <c<+-+ 92.1.5 _ Các giá trị đặc biệt của số thực dau chấm động - 102.1.6 Tính toán trên số thực dấu chấm động với độ chính xác đơn 112.1.7 Làm tròn khi tính toán số dau chấm động - 2-2-2 25+ 12
Trang 53.1.3 Module Choose_ S1ø1 - - G1 ng ệt 24
3.1.4 Chuẩn hóa phan thập phân (Mantissa) -. 2 ¿- 5¿525z2c++ 26
3.1.5 Module AddSub_Mantissa wo ccc ccccccccceessssssssssssesesessescccssseeeees 27
3.1.6 Chuẩn hóa kết qua phan thập phân sau khi tính toán 303.1.7 Chuẩn hóa lại mũ sau khi thực hiện chuẩn hóa phan thập phân 303.1.8 Làm tròn kết quả sau khi tính toán - 2-2 s2 s+++£+£zxzez 323.1.9 Chuẩn hóa lại mũ sau khi làm tròn kết quả . -: :-s- 333.1.10 Kiến trúc tong của mạch cộng trừ hai số Floating - Point 343.2 Bộ nhân hai số Floating - POint 2-2-2 2 s+SEE++EE+E£E+EzEzrezrerxee 35
3.2.1 Module Choose_ S1ø11 - - - c G HH ng ng 36
3.2.2 Kiểm tra điều kiện bằng không - 2 2 s+cz+£+zezezez 37
3.2.3 Tìm mũ THỚI - 6 t1 ng 38
3.2.4 Chuẩn hóa và thực hiện nhân phần thập phân với nhau 39
3.2.5 Chuẩn hóa lại mũ sau khi thực hiện chuẩn hóa phan thập phân 403.2.6 Làm tròn kết quả sau khi tính toán -2¿ 22 ++s++:x++zxe+zxz 41
3.2.7 Chuan hóa lại mũ sau khi làm tròn kết quả - 2-2 +s+ 41
3.2.8 Kiến trúc tổng quan của mach nhân hai số Floating - Point 423.3 Thiết kế kiến trúc FET -c+¿+©++++t2EExttttEktrtttrrtrtrtrtrrrrrrrrrrrrrrre 43
3.3.1 Khối Add_Complex_PL và Sub_Complex_ PL - - 433.3.2 Khối Multiply_Complex_PL -2-©22©225E2££+£Ev£xzzzrxcres 44
ch: na ae 45 3.3.4 ;/ 9 AẦÂẦÂẦdỐ 46
SP n aâÝõ.: sẼÕỶẼŸẼŸÝẼẦẼÕẼẼŸÖỔẦ 46 3.3.6 ROM_TW va COUTIẨC[ sseessssessscccecccccccccccccceeeeeessssssesssssesscess 48
Trang 63.3.7 DataStOFaỹ HH TH HH HH, 50 3.3.8 FIfolDafaln LH HH HH TH TH HH ng nh Hy 52
3.3.9 Khối OutputArranger - ++c++c++EeEeEererrrrrrrres 52
3.3.10 Datapa(h - QLTQnH HT TH TH TH KH ng ngư 54
3.4 Xây dựng môi trường UVÌM SG 1n v.v vn ng nh 57
3.4.1 Data Python Ăn HH ngư 58 3.4.2 TTranSaCfIOH G Ghi nh ng 59 3.4.3 S€QU€TCG SH TH TH HH HH 60
3.4.4 — Interface f2 gu c 61
3.4.5 Driver G2 Zếp - N Ô 61 3.4.6 MOHIOT LG HH HH TH ng nh tru 63
SG `.‹ f6 t¬ vẽ hs nh 64 3.4.8 ScOreboard HH HH TH ng ng ng nh ng 64
3.4.9 ETVITOnIN€II G c ngư, 65
BALO Test >> = 65
3.4.11 Testbench tOp cá HH HH TH HH ngư tr 66
Chương 4 Mô phỏng và đánh giá kết quả -2- 2 2©5++2+++zx+zzxvzrxzrxez 67
4.1 Kết quả mô phỏng - ¿- 2-2 t9SE+SE+EE£EEEEEEEEEEEEE1211211211211211212 11121 67
4.1.1 Pre ae 67 4.1.2 POst— Synthesis oo cee eescesccesseesseeeseecseecesecesaeceeeeseeeeaeeeeeeeseenseeeeaees 68
4.2 Tổng hợp số liệu - -:- SE St E919 E9 EEE1911211211211211211211111 1 1e 1x, 68Chương 5 Kết luận và hướng phát triỂn 2 2 2 22+ £++E++E++Ez+xzzzrxee 70
5.1 KẾtluận ch TT E1 11111111 1511111111111 1111111111111 11x EcE 70
Trang 75.2 Ưu điểm và hạn chẾ ¿- 5s +kk‡Ek+E‡EEEE+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEkrkerkrkerrrk5.3 Hướng phát triển
Trang 8DANH MỤC HÌNH
Hình 2.1: Số dau chấm động chính xác đơn - 2 2 2 2 ++££+££+E£zE++Ez£zzxzez 8Hình 2.2: Số dau cham động chính xác kép - 2-2 2 + +2 ++££+E£+E+xzxzxzzxez 9Hình 2.3: Phạm vi biéu diễn của số Floating - Point -2:z©+cs+2cszze: 9Hình 2.4: Sơ đồ tính toán FFT trên thuật toán Radix-22 N điểm [1] 14
Hình 2.5: UVM Environment Testbenchh - s6 + x1 3x 9 9v rưy 17
Hình 3.1: Giao diện khối Choose_ D€TAfOT - G s vn ng 21
Hình 3.2: Lưu đồ giải thuật khối Check_Larger - 2-2 2 2+ss+s++£++szxz+xzez 22
Hình 3.3: Giao diện khối Check_Larger : 2¿ 22 £+2++£+++£x++Ex+zrxrzrxerrxee 23Hình 3.4: Giao diện khối Choose_Sign 2:©22¿©222S+2ES+2EE++Exerxrsrxrrrxee 26Hình 3.5: Sơ đồ mạch dé chuẩn hóa phan thập phân -2- 2 ¿5z 52522 27Hình 3.6: Lưu đồ giải thuật khối AddSub_Mantissa 2- 25525522 s52 28Hình 3.7: Giao diện khối AddSub_ Mantissa + 5S x+Et+EeEeErxerxerrxeree 29Hình 3.8: Sơ đồ mạch khối LeadingZeroCounter và ShiftLeft -: 30Hình 3.9: Lưu đồ thuật toán khối AddSub_Exponent 2-2 2 22 22s 31
Hinh 3.10: So dé mach khối AddSub_ EXpON€TI 5 5< 5£ ++vExsseeseeeees 31
Hình 3.11: Sơ đồ mạch làm tròn kết quả sau khi tính toán - 2-2 2+: 33 Hình 3.12: Sơ đồ mạch chuẩn hóa lại mũ sau khi làm tròn kết quả - 34
Hình 3.13: Kiến trúc mạch cộng trừ hai số Floating - Point -. - 2-5: 34Hình 3.14: Giao diện khối Choose Sign - 2-2 2 2 £+EE2£2EE+EzEzErrerreee 37Hình 3.15: Sơ đồ mạch khối Check Zro .-¿ scc+++sccvxrrrrrkrrrrrrkrrrrrrkee 38Hình 3.16: Sơ đồ mạch thực hiện tìm mũ mớii - - ¿6 + x2 E£E++E+EeEx+EeEzxsxers 39Hình 3.17: Sơ đồ mạch khối chuân hóa và nhân phan thập phân với nhau 39Hình 3.18: Sơ đồ mạch bộ nhân binary pipeline [7] -« «+5 «<+sseessesseeees 40Hình 3.19: Sơ đồ mạch chuẩn hóa lại mũ sau khi chuẩn hóa phần thập phân 41Hình 3.20: Sơ đồ mach làm tròn kết quả sau khi tính toán 2-52 5¿ 41
Hình 3.21: Sơ đồ mach chuẩn hóa lại mũ sau khi làm tròn kết quả 42
Hình 3.22: Kiến trúc mạch nhân hai số Floating - Point -. -¿ +: 42Hình 3.23: Sơ đồ mạch khối Add_Complex_PLL 2- 2 5¿2++22++2z+z+sse2 43
Trang 9Hình 3.24: Sơ đồ mạch khối Sub_Complex _PIL 2-2 2 22 2222222222522 44
Hình 3.25: Sơ đồ mạch khối Multiply_Complex _PL - 2-2 25252252522 45
Hình 3.26: Sơ đồ mạch khối Butterfly - 2: 2 2 £+E£+EE+EE+E2EE+E+zEzErrerreee 45Hình 3.27: Giao diện khối FIFO -¿- 2 +©2++EE+EE2EEEEEEEEESEEEEECEEEerkrrrrrrrrrvee 46Hình 3.28: Sơ đồ mạch khối FIEO . 2++2+++ttE++ttrtEkkrrttrkrrrrrrkrrrrrrkeg 47
Hình 3.29: Sử dụng khối Swap trong mach FFT c cccsscsssssssssessesseseesessesseeseesesees 47
Hình 3.30: Giao diện khối ROM cccccsccscsessesssessesssessesssessecsesssessecsecssecsesssessesseesseeses 48Hình 3.31: Sử dụng khối ROM_TW trong mạch FFT ¿2 ss++zss+ez 49Hình 3.32: Sơ đồ mạch khối DataStOrage - 2-2 2 s+S++EE+EE+E2EE2EEEEErEerrerreee 50Hình 3.33: Sử dụng khối DataFifoln - 2-2 2 2 t+EE£EE+EE2EEEEEErErrrrrrrrerrvee 52
Hình 3.34: Sơ đồ mạch khối OutputArranger c.cceccsscescsseessesseseeseseeseesessesseeseeseesees 53
Hình 3.35: Sơ đồ mạch Datapath FFT c.cscsssesssesssesssesssecssecssecssesssscsscsecssecssecsses 56
Hình 3.36: Môi trường xác minh cho FT ÌỬ + + **xk*+E+eEeeEseeseesekeskesee 57 Hình 3.37: Các bước thực hiện generate đÌafa - - + -c + *+vvseeeksseeseeereere 58
Hình 3.38: Lưu đồ giải thuật khối Sequence - 2-2 22 22++££+££+£++zz2z++2 61Hình 3.39: Lưu đồ giải thuật khối Driver- - 2-2 2 22+ ++£++£++£++x+zxezzxee 62Hình 3.40: Lưu đồ giải thuật khối MonifOr - + 2-5252 + £x£+££+£xezx+zzscsez 63Hình 3.41: Lưu đồ giải thuật khối Seoreboard - 2-2 + s2 ++£++£+z£z+£zz£zzxz 64Hình 3.42: Lưu đồ giải thuật khối 'Tes( 2-2 2 2 £+E£+EE2E£+EE2EzEzEzrzreee 66
Hình 3.43: Các công việc cần thực hiện bên trong Testbench top - 66
Hình 4.1: Kết quả mô phỏng pre — synthesis FFT trên 16 điểm . G7Hình 4.2: Kết quả mô phỏng post — synthesis FFT trên 16 điểm - 68
Trang 10DANH MỤC BANG
Bang 1.1: So sánh độ phức tap của thuật toán DFT và FFT [2] . ««-+ 4
Bang 1.2: Kết quả từ bài báo [ I] - ¿55+ S2+SE‡EE+E2E2E2E121121121121121121 21.1 xe 5Bảng 2.1: Phạm vi và độ chính xác của số dau cham động [7] . - 10Bang 2.2: Số lượng các giai đoạn cụ thé với từng số điểm 2-2 5+: 15Bang 2.3: Giá trị các yếu tố xử lý cho FFT với N điểm [1] 2-2 2-55: l6
Bang 3.1: Bảng chân trị khối Choose_OperatOT - 2 2 2 ++sz+£z+£z+zzzzzzzee 21
Bang 3.2: Mô tả tin hiệu của khối Choose_Operator c.csscsscssessesseesessesseeseeseeseesee 21Bảng 3.3: Mô tả tín hiệu của khối Check_L.arger 2-©¿ 5¿+c++2zx+2z+z2sse2 23Bảng 3.4: Bảng chân trị khối Choose_Sign 2: 22 ©52225+22x+2£x+zzxrzrxzrxez 24Bang 3.5: Mô tả tín hiệu khối Choose_Sign 2-2-5252 S22S£2££2EE2E2EE2EzEezrxee 25
Bảng 3.6: Mô tả tín hiệu khối AddSub_Mantissa - ¿2 252 +E+E+EvEcEcEcEzszsrsrs 29
Bảng 3.7: Bảng chân trị khối Cut_and_Round -2-¿- ¿2 s+2cx+2zx>zse+sse2 32Bảng 3.8: Mô tả tín hiệu khối Increase_Mantissa 2-2-5552 s+cxecse+zxecxez 33Bang 3.9: Mô tả tín hiệu khối Increase_Exponent -2 2- + ©z+s+z+++zszcszes 33Bang 3.10: Bảng chân trị khối Choose_Sign 2-2 2 22 +2 ££+£E+E£+E+E+Ezreez 36Bang 3.11: Mô tả tín hiệu khối Choose_Sign bộ nhân 2-2 2 252252: 36
Bảng 3.12: Mô tả tín hiệu khối Check _/Zero -. ¿+ +E+E+E+E+E+ESEEEEEEEEEEEEsrsrsrssse 38
Bang 3.13: Tín hiệu điều khiển vào giai đoạn 8 điỂm - 2 2s¿5cz+5e25++‡ 51Bang 3.14: Tín hiệu điều khiển vào giai đoạn 16 điểm - 2 2 225252: 51Bang 3.15: Tín hiệu điều khiển khối OutputArran8er - 2-2 z2cs+szzszzs+ 54Bang 3.16: Bảng tông hợp số lượng các khối với N điểm 2-2-5255: 55Bang 3.17: Số xung Clock cần chờ của các khối -¿- s¿©s¿2+2s+zcs+ze- 57Bảng 3.18: Mô tả biến và hàm sử dụng trong Transaction -: -: szs+¿ 59Bảng 4.1: So sánh kết quả thực tế với kết quả từ Python - : ¿5+¿ 67Bảng 4.2: Bang so sánh kết quả của nhóm với bài báo -: ¿¿©csz+5s+¿ 69
Trang 11DANH MỤC TU VIET TAT
IP Intellectual Property
FFT Fast Fourier Transform
DFT Discrete Fourier Transform
UVM Universal Verification Methodology FIFO First — In — First — Out
ROM Read Only Memory
NaN Not A Number
SDF Single Delay Feedback
MDC Multipath Delay Commutator
Trang 12TOM TAT KHÓA LUẬN
Nội dung chính của khóa luận tập trung vào việc nghiên cứu và thiết kế một IP(Intellectual Property) về tính toán FFT (Fast Fourier Transform) sử dụng thuật toánButterfly [1] Thiết kế dé xuất cho dé tài lần này sử dụng các khối: FIFO, bộ cộngtrừ trên số Floating — Point (32 — bit), bộ nhân hai sỐ Floating — Point (32 - bit),
ROM (Twiddle factor), controller,
Đầu tiên, nhóm sé tién hành xây dựng thuật toán trên Python dé đảm bao rangmình đã hiểu được cách vận hành và tính toán của thuật toán trên số Floating - Point
32 — bit, két quả sẽ được so sánh với bộ thư viện FFT ma Python hỗ trợ Từ đónhóm sẽ có được dữ liệu dé so sánh với kết quả thiết kế sau này
Với mục tiêu thiết kế có khả năng nap dữ liệu liên tục, nhóm xây dựng kiến
trúc pipeline cho các khối tính toán (cộng, trừ, nhân) trên SỐ dạng Floating - Point
32 — bit, cũng như pipeline trên kiến trúc mạch FFT
Bên cạnh đó việc sử dung cơ chế FIFO để lưu trữ và đưa data từ tang này quatầng khác Bộ đệm FIFO được sử dụng để lưu trữ các giá trị trung gian trong quá
trình tính toán FFT theo thuật toán Butterfly Việc sử dung FIFO giúp di liệu được
xử lý theo đúng thứ tự, đảm bảo tính đúng đắn trong việc tính toán kết quả mỗi tầngcủa FFT Kích thước và độ sâu của các bộ đệm FIFO ở mỗi tầng sẽ được tối ưu hóaphù hợp với việc lưu trữ data của mỗi tầng giúp tối đa hóa tốc độ xử lý và giảm
thiểu tinh trạng tràn/ dong dit liệu Ngoài ra với cơ chế doc/ghi dữ liệu cùng lúc, khi
đọc dit liệu của ô nhớ nao ra thì có thé lưu dit liệu mới vào chính ô nhớ đó; điều này
giúp giảm đi thời gian đưa dữ liệu từ input vào hoặc dữ liệu đi qua các giai đoạn
tính toán Chính điều này làm giảm di thời gian thực thi của toàn bộ thiết kế
Tùy vào số lượng đầu vào, mà bộ FFT sẽ có số lượng Twiddle factor tươngứng Nhóm thực hiện chia thành 2 bộ ROM để lưu trữ các giá trị Twiddle factorđược tính toán sẵn từ đó giảm được các module tính toán trong thiết kế Việc chiathành 2 bộ ROM trong thiết kế như thé này cũng giúp cho việc luồng dữ liệu có thé
xử lý xong song song với nhau từ đó cũng cải thiện được thời gian thực thi cho toàn
bộ thiết kế
Trang 13Đề kiểm tra độ chính xác của thiết kế, khóa luận này sẽ xây dựng môi trườngUVM đề kiểm tra tinh dung đắn của thiết kế đề ra UVM sé tao ra các test case mộtcách ngẫu nhiên đảm bao bao quát được các trường hợp có thé xảy ra của thiết kế.Qua đó, nhóm sẽ xác định được là thiết kế có đảm bảo hoạt động được trên các testcase hay không; từ đó tìm được các van đề (nếu có) bên trong thiết kế và từ đó cóthé tiến hành chỉnh sửa thiết kế dé thiết kế hoạt động được đúng với chức năng.
Toàn bộ quá trình mô phỏng này sẽ được thực hiện trên Modelsim và Vivado Nhờ
việc xây dựng môi trường kiểm thử dựa trên UVM, khóa luận có thé được đánh giámột cách toàn diện và chính xác về tính đúng đắn của thiết kế
Luận văn được tô chức thành 5 chương như sau:
Chương 1: Tổng quan dé tài
Chương 2: Cơ sở lý thuyết
Chương 3: Thiết kế kiến trúc FFT
Chương 4: Mô phỏng và đánh giá thiết kế
Chương 5: Kết luận và hướng phát triển
Trang 14Chương 1 GIỚI THIEU ĐỀ TÀI
1.1 Tông quan đề tài
Trong thế giới ngày nay, chúng ta đang tiếp xúc với một lượng lớn dữ liệu như
là âm thanh, hình ảnh và đữ liệu từ các cảm biến, đặc biệt là dữ liệu lớn (big data)
Khi làm việc với các tín hiệu thời gian như âm thanh, hình ảnh, hoặc dữ liệu từ các
cảm biến thì việc hiểu và phân tích chúng là một phần không thé thiếu trong nhiềuứng dụng của nhiều lĩnh vực khác nhau Việc nắm bắt và phân tích sâu các tín hiệuthời gian này sẽ góp phần vào nhiều ứng dụng trong thực tiễn
Trước khi FFT phát triển thì trước đây đã có một phương pháp biến đốiFourier rời rac đó là DFT (Discrete Fourier Transform) đã ton tại va được sử dụngcho nhiều ứng dụng Tuy nhiên việc sử dụng phép biến đổi Fourier rời rac (DFT) lại
có một van dé, đó chính là việc tính toán tương đối phức tạp khi chiều dài dữ liệucan tính toán tăng lên Dé tính DFT chiều dài N cần số phép nhân là N? và N (N -1) phép cộng [2] Chính vì vậy mà khi sỐ lượng mẫu N càng lớn thì việc tính toánDFT trở nên rất tốn kém về mặt tài nguyên máy tính Điều này khiến việc ứng dụngDFT trong thực tế trở nên gặp nhiều hạn ché, đặc biệt là trong các ứng dụng yêu cầu
xử lý các tín hiệu lớn hoặc thời gian thực.
Từ khi James Cooley và John Tukey phát hiện ra thuật toán nhanh hơn vào
khoảng năm 1965 gọi là FFT (viết tắt của Fast Fourier Tranform), là một phươngpháp đo lường quan trọng trong lĩnh vực khoa học và kỹ thuật Ý tưởng của thuậttoán FFT là sử dụng kỹ thuật chia dé trị Thay vì việc tính DFT cho cả một đoạn tín
hiệu có độ dài lớn chúng ta sé thực hiện DFT cho từng đoạn tín hiệu nhỏ hơn trong
tín hiệu đó rồi từ kết quả thu được chúng ta tính ngược lại DFT của tín hiệu banđầu Yêu cầu của phương pháp này đó là day tín hiệu cần phải có độ dai N va N
phải là lũy thừa của 2 Cách tính của phương pháp này là thực hiện chia day tín hiệu
cần tính thành 2 nửa có độ dài N/2 rồi tính DFT của 2 dãy nhỏ này Mỗi dãy nhỏ lạiđược tính bằng cách chia nhỏ chúng ra thành 2 day con nhỏ hơn, Công việc trênđược lặp lại đến khi nào dãy con trở nên đơn giản hơn rồi và không cần phải chia
Trang 15nữa (thường dãy con chỉ còn là 2) Từ kết quả DFT của dãy con ta tính ngược lại
DFT của dãy to hơn Thuật toán FFT chiều dài N thì chỉ cần 5 (ogzN) phép nhân
và NlogzN phép cộng [2] Chính vì vật nó giúp giảm đáng kể thời gian và tàinguyên cần thiết dé thực hiện biến đôi Fourier đặc biệt khi số lượng mẫu N rất lớn
Bảng 1.1: So sánh độ phức tạp của thuật toán DFT va FFT [2]
DET FFT
Số phép cộng | Số phép nhân | Số phép con
N Sô phép nhân P peons P P š mạng
, sô phức sô phức sô phức
Sự ra đời của FFT đã mở ra nhiều cánh cửa mới cho các ứng dụng liên quan
đến xử lý tín hiệu, truyền thông, xử lý ảnh và âm thanh kỹ thuật số, Nó đã trở
thành một công cụ không thé thiếu trong nhiều lĩnh vực khoa học và công nghệ hiệnđại, góp phan đây nhanh tiến độ nghiên cứu và phát triển trong lĩnh vực này
1.1.1 Đối với các nghiên cứu trong nước
Nghiên cứu FFT tại Việt Nam đã có những bước phát triển đáng kể trongnhững năm gần đây Hướng nghiên cứu này đã và đang được các kỹ sư, nhà nghiên
cứu và sinh viên ở các trường đại học trong lĩnh vực công nghệ thông tin và viễn
thông nghiên cứu và phát triển tập trung vào việc cải tiến thuật toán, tăng tốc độ xử
Trang 16lý và giảm tài nguyên hệ thống không cần thiết, Đặc biệt là các công ty trongnước cũng đã nghiên cứu và phát triển cho IP này cho việc tích hợp được chúng vàocác sản phẩm công nghệ của mình [3] [4] [5].
1.1.2 Đối với các nghiên cứu ngoài nước
Nghiên cứu FFT là một lĩnh vực rất sôi động trên toàn thế giới, với sự tham
gia của các nhóm nghiên cứu từ các trường đại học, viện nghiên cứu và các công ty
công nghệ Các hướng nghiên cứu chính bao gồm việc tối ưu thuật toán FFT trêncác kiến trúc phần cứng như GPU, FPGA, ARM, phát triển các IP FFT tích hợpcao với hiệu suất và tính toán linh hoạt; triển khai FFT trên các ứng dụng như xử lýảnh số, xử lý tín hiệu, radar, sonar, [1] [6]
Theo bài báo [1] hiện tại họ đã làm được mạch FFT trên N điểm và đạt đượccác thông số như Bảng 1.2:
Bảng 1.2: Kết quả từ bài báo [1]
Parameters Reconfigurable Radix-22 FFT
No of Point
16 32 64 128 256 512 (N)
No of slice Flip Flop | 284 410 538 679 851 | 1028
used
No of4 input LUTs 629 1031 1345 1397 2497 3335
used
Max
Frequency | 173.27 | 161.29 | 158.96 | 158.69 | 158.37 | 155.9
(MHz)
Nhận thấy được sự cần thiết và tiềm năng của FFT Do đó, nhóm đã quyết
định quyết định nghiên cứu và thực hiện thiết kế một mạch FFT có khả năng nạp dữ
Trang 17liệu liên tục để làm khóa luận tốt nghiệp Trong khóa luận này nhóm thực hiện thayđổi bộ tính toán từ Fix — Point sang bộ tính toán Floating — Point 32 — bit để có thétăng độ chính xác hơn trong tính toán đồng thời đặt pipeline vào cho các bộ tính
toán này dé van đảm bao toc độ.
1.2 Mục tiêu đề tài
- Hiéu được thuật toán và có xây dựng thuật toán bang Python
- Thiết kế được bộ tính toán số Floating - Point 32 — bit trên các phép toán
cộng trừ và nhân có pipeline.
- _ Thiết kế bộ tính toán FFT tối ưu về tốc trên số Floating - Point 32 — bit
- _ Xây dựng môi trường dé kiểm tra tính đúng sai của thiết kế bằng UVM
- Tan số đạt được của thiết kế trên 100Mhz
1.3 Giới hạn đề tài
- Bộ tính toán trên số Floating — Point với sai số là 6 chữ số thập phân
- Dam bao được thiết kế FFT hoạt động đúng chức năng
- _ Xây dựng được môi trường kiểm tra tính đúng sai của thiết kế băng UVM
- _ Tần số đạt được của thiết kế trên 100 MHz
Trang 18Chuong 2 CƠ SỞ LÝ THUYET
2.1 Số dấu cham động (số Floating - Point)
2.1.1 Giới thiệu số dấu cham động
Các số dấu chấm động cố định (Fixed — Point) bị hạn chế bởi việc chúngkhông thê đồng thời biểu diễn các số rất lớn và rất nhỏ băng một kích thước khoảngkích thước nhất định Dé khắc phục điều này, người ta đã áp dung một dạng chuẩnmới đó là scientific notation Với dang chuẩn này, ta có thể linh động đặt dấu chamnhị phân ở vi trí thuận tiện và sử dụng lũy thừa của hệ nhị phân dé xác định vị trí
đó Nhờ vào điều này mà các số rất lớn và rất nhỏ có thể được biểu diễn chỉ bằngvài chữ số [7] Chính vì vậy mà từ đó số dấu chấm động (Floating - Point) ra đời
Số dấu cham động được chuẩn hóa, cho phép biéu diễn gần đúng các số thậpphân rất lớn hoặc rất nhỏ dưới dạng một số nhị phân trong dạng quy ước Thànhphan của số dau cham động bao gồm phan dau, phần mũ và phan thập phân [8]
Số dấu cham động được dùng để biểu diễn số thập phân trong hầu hết máymóc và tính toán kỹ thuật Mỗi số dấu châm động nhị phân được biểu diễn dưới
dạng f2°, trong đó f là phần thập phân (hay còn gọi là Mantissa), 2 là cơ số nhị phân
và e là mũ của cơ số đó Phần Mantissa và số mũ có thể là số dương hoặc âm,
nhưng cơ số luôn là dương [7].
Khi thực hiện các phép toán số học trên số dấu chấm động, phần cứng phải xử
lý sự kết hợp giữa dấu, số mũ và phần Mantissa, tất cả được mã hoá dưới dạng nhị
phân.
2.1.2 Biéu diễn của số thực dấu cham động
Số dấu cham động dạng nhị phan (binary Floating — Point) dang chuan [9]:
1.XXXXxxx⁄¿ x 237 (2.1)
Số dấu chấm động dang thập phan (decimal Floating — Point) dạng chuẩn:
1.xxxxxx⁄⁄¡og x 101277 (2.2)
Trang 19Trong đó:
yyyy: Exponent (phần mũ)xxxxxxxx: Fraction (phần số lẻ)
1.xxxxxxxx: significand/Mantissa (phần định tri)
2.1.3 Dạng chuẩn IEEE 754 cho số dấu cham động
Có nhiều cách biểu diễn số dấu chấm động, trong đó cách biểu diễn theochuẩn IEEE — 754 được sử dụng rộng rãi trong khoa hoc máy tính hiện nay Theochuẩn IEEE — 754, số thực dấu cham động được biểu diễn ở hai dạng cơ bản: Sốthực dấu chấm động với độ chính xác đơn (Single precision) va số thực dấu chấmđộng với độ chính xác kép (Double precision) Số thực dấu chấm động được chiathành các phần: Dấu (Sign bit), phần mũ (Exponent field) và phần thập phân
(Mantissa Field) [7].
Phan bit dấu (Sign bit) theo chuẩn IEEE, bit dấu có giá tri 0 biểu diễn cho một
số dương va bit dau có giá trị 1 biểu diễn cho một số âm
Phần thập phân (Mantissa Field) có thể thể biểu diễn theo nhiều cách khácnhau bằng cách dịch số sang trái hoặc sang phải của dấu nhị phân và tăng giảm mũ
tương ứng.
Phần mũ (Exponent field) xác định phạm vi biểu diễn của số dấu chấm động.
Số thực dấu chấm động với độ chính xác đơn được định nghĩa có độ dài 32 —
bit được chia thành các phần: Dấu (Sign) với độ dài 1 — bit, mũ (Exponent) với độ
dài 8 — bit và phần lẻ sau dau cham (Mantissa/ Significand) với độ dài 23 bit
Exponent (biased) Significand
1 bit 8 bits 23 bits
Hình 2.1: Số dau cham động chính xác đơn
Trang 20Mối quan hệ giữa định dạng sỐ Floating - Point 32 — bits và số thực được cho
bởi [7]:
(—1)Ê(2°~127)(1 f) chuẩn hóa, 0 < e < 255,
Giá trị = 4 (—1)°(2°~125)(0 f) không chuẩn hóa, e = 0,ƒ > 0, (2.3)
Ngoại lệ, trường hợp khác.
Còn đối với số thực dấu cham động với độ chính xác kép được định nghĩa có
độ dài 64 — bit được chia thành các phan: Dấu (Sign) với độ dai 1 bit, mũ(Exponent) với độ dài 11 — bit va phần lẻ sau dấu cham (Mantissa/ Significand) với
Negative Representable Negative Positive Representable Positive
Overflow negative numbers Underflow Underflow positive numbers overflow
Number
—(2-2-23) x 2128 —2-127 0 2-127 (2-2-23) x 2128 line
Hình 2.3: Phạm vi biểu diễn của số Floating - Point
Trang 21Các số dương chuẩn hóa được định nghĩa trong phạm vi từ 2 ~ >) đến
Các số dương nhỏ hơn 2" ~ ®® và các số âm lớn hơn —2 ~ #5) có thé là các
số dưới mức hoặc số vô hiệu (Denormalized numbers) Số không được biểu diễn
bởi mẫu bit đặc biệt, trong đó e = 0 và f= 0.
Tràn trên và tràn dưới là kết quả của các điều kiện ngoại lệ (exceptionalvalue) Các số nam ngoài phạm vi được gọi là +Inf
Độ chính xác của một số dấu cham động là một sự xap xi cua giá tri “thực” vì
kích thước hữu han.
Một giá trị v với độ chính xác q được biéu thị bởi v + q Đối với các số dauchấm động theo chuẩn IEEE v = (-1)° (2°) (1.f) và q = 24 x 2*®s [7] Do đó độchính xác được liên kết với số bit trong trường thập phân
Bảng 2.1: Phạm vi và độ chính xác của số dau cham động [7]
2.1.5 Các giá trị đặc biệt của sô thực dầu châm động
Số Denormalized được sử dụng dé xử lý các trường hợp underflow của số mũ.Khi số mũ của kết quả quá nhỏ (nghĩa là số mũ âm với độ lớn quá lớn), kết quảđược Denormalized băng cách dịch phần thập phân và giữ nguyên số mũ ở giá trị
tôi thiêu Giúp duy trì sự chính xác của các phép toán sô học ở gân 0 băng cách mở
10
Trang 22rộng phạm vi của các số nhỏ có thé biểu diễn được [7] Điều này được thực hiệnbằng cách sử dụng phần thập phân để biểu diễn các giá trị nhỏ hơn và vẫn giữnguyên phần mũ Tuy nhiên thì việc làm này sẽ làm giảm độ chính xác vì phần thậpphan được dịch đi dé biểu diễn số nhỏ hơn.
Vô cực (Infinity) được coi là trường hợp giới hạn của số thực, với các giá tri
vô cực được định nghĩa là những giá trị nam ngoài phạm vi các số có thé biểu diễnhoặc -œ < (các số có thé biểu diễn) < +œ Ngoại trừ trường hợp đặc biệt là NaN,bất kỳ phép toán số học nào liên quan đến Inf đều cho kết quả là Inf Inf được biểudiễn bởi số mũ lớn nhất cho phép theo định dạng và phần thập phân bằng không [7]
NaN (Not a number) là một giá trị đặc biệt được sử dụng trong các phép toán
số dấu chấm động để biểu thị kết quả không phải là một số hợp lệ NaN được biểudiễn bởi số mũ bù lớn nhất cho phép theo định dạng và phần thập phân khác không
Ví hực hiện phép chia 0/0 hoặc tính căn bậc hai của một số âm, kết quả sẽ là NaN.NaN sẽ có một số mũ đạt giá trị tối đa mà chuẩn cho phép, và các bit trong phầnthập phân của số này sẽ không bằng không
2.1.6 Tính toán trên số thực dấu chấm động với độ chính xác đơn
Giải thuật thực hiện phép cộng và phép trừ như sau [10]:
Bước 1: So sánh hai toán hang xem toán hạng nào lớn hơn thì dau của kết qua
sẽ theo toán hạng đó.
Bước 2: Dịch phần mũ của toán hạng có phần mũ nhỏ hơn sao cho băng vớiphần mũ của toán hạng có phần mũ lớn hơn
Bước 3: Thực hiện cộng/ trừ phần định trị của hai toán hạng
Bước 4: Chuẩn hóa và làm tròn kết quả
Giải thuật thực hiện phép nhân như sau [10]:
Bước 1: Nếu hai toán hạng cùng dấu kết quả là phan dấu sẽ dương và ngược
lại là âm.
11
Trang 23Bước 2: Tính toán số mũ bằng cách cộng hai số mũ lại với nhau.
Bước 3: Nhân phần định trị của hai toán hạng với nhauBước 4: Chuẩn hóa và làm tròn kết quả
2.1.7 Lam tròn khi tính toán số dấu chấm động
Chuẩn IEEE — 754 định nghĩa bốn phép làm tròn sau [11]:
Làm tròn đến 0.
Lam tròn lên hoặc làm tròn đến dương vô cùng
Làm tròn xuống hoặc làm tròn đến âm vô cùngLàm tròn đến số gần nhất
2.2 FET
Thuật toán “Common Factor Algorithm” (CFA) Radix-2? và cấu trúc Butterflyđược sử dung dé thiết kế bộ xử ly FFT có thé thay đổi số điểm Do đó, mach đề xuấtđược thiết kế sao cho có thể hoạt động với các tính toán FFT gồm 8, 16, 32, 64,
128, 512, điểm Mach nay duoc thiết kế theo cấu trúc pipeline và sử dụng các bộtính toán Floating - Point dé dat được độ chính xác cao hơn Mỗi giai đoạn của FFTđều bao gồm cấu trúc Butterfly
DET - Discrete Fourier Transform trên N điểm được định nghĩa [6] là:
Trang 24Trong đó n,, nz và nz là các chỉ sô của mâu đâu vào n, và k,, kz và kz là các
chỉ số của mẫu đầu ra k (—1)"**1 và (—1)*2!2 là các thành phan sử dung Butterfly,
(—j)"2z1 và W"sŒ1*?*2) là các thành phan xử lý.
13
Trang 25Bit Reversal
StageLogaN-l StageLogoN
Ww,
Hình 2.4: Sơ đồ tính toán FFT trên thuật toán Radix-22 N điểm [1]
Hình 2.4 mô tả sơ đồ dòng tín hiệu của mạch tính toán FFT Radix-2? có thểthay đổi số điểm Dé tính toán FFT Radix-2? với N điểm thì cần logzN giai đoạn.Hai giai đoạn tính toán đầu tiên sử dụng n1, nạ, na, ki, ka, k3 được xác định dựa trên
số điểm N theo 2 công thức 2.6 và 2.7 Các đầu vào n; được sắp xếp theo thứ tựbình thường nhưng đầu ra kx được sắp xếp theo thứ tự đảo bit của các đầu vào Tức
là với mỗi giá trị nx ta sẽ có một bộ số M1, nạ, nạ tương ứng với công thức số 2.6 Sau
đó ta đảo bit nx thì được kx tương ứng Với mỗi giá tri kx ta sẽ có một bộ số ki, ko, ks
tương ứng với công thức số 2.7 Tương tự, hai giai đoạn tính toán tiếp theo cũng sửdụng các chỉ số này nhưng dựa trên số điểm N/4, và tiếp tục như vậy
Giai đoạn đầu tiên thực hiện các tính toán giữa điểm thứ n và điểm thứ(n+N/2) với cau trúc Butterfly (BU) Giai đoạn tiếp theo thực hiện các tính toángiữa điểm thứ (n+N/2) và điểm thứ (n+N/4), và cứ tiếp tục như vậy Quá trình nàydiễn ra liên tục cho đến giai đoạn cuối cùng là log2N, nơi thực hiện tính toánButterfly giữa các cặp điểm như điểm thứ 1 và điểm thứ 2, điểm thứ 3 và điểm thứ
4, và tiếp tục như vậy
14
Trang 26Sau khi tính toán Butterfly ở những giai đoạn lẻ (1, 2, 3, 5, ) ta cần phảinhân tat cả điểm với (—j)"2" tương ứng với chỉ số n, k tại điểm đó Với những giaiđoạn chan (2, 4, 6, 8, ) sau khi tính toán Butterfly ta nhân tat cả điểm với Twiddle
factor Wy; 3(K1+2k2) tương ứng với chi số n, k tại điểm đó Tuy nhiên giai đoạn cuối
cùng là logaN thì ta không cần phải nhân với -j hay Twiddle factor mà sẽ xuất kết
quả ra.
Tu đó ta có các công thức tính sô lượng các khôi tính toán như sau:
Số giai đoạn = Số Butterfly = log;N (2.10)
Số giai đoạn
Số giai đoạn nhân với (—j)"2*1 = floor (aa) (2.11)
: Số giai đoạn + 1
Số giai đoạn nhân tới ———_ = floor aoe —1 (2.12)
Trong đó floor là phép làm tròn xuống.
Bảng 2.2 cho thấy số lượng các giai đoạn cụ thê với từng số điểm cùng với số
cà A rae : oto A ns kị+2k 7
giai đoạn nhân với (—/)”?! và số giai đoạn nhân với Wy" 2(hị+2ka) tương ứng.
Bảng 2.2: Số lượng các giai đoạn cụ thê với từng số điểm
„ Số giai đoạn nhân Số giai đoạn nhân với
N | SO giai đoạn với (—j)"2h yar)
Trang 27Bang 2.3: Giá trị các yếu tố xử lý cho FFT với N điểm [1]
(age Stage 1 Stage 2 Stage 3 Stage 4 Stage 5 Stage 6 Stage 7 Stage 8
N (—jyre ws@Œi+2k) (-jyre wseœ+2k) (-Dz ws@i+2k) (-Dz WsŒi+2k)
N=4 m1,n2 = 0,1 n1,n2 = 0,1
k1,k2 =0,1 k1,k2 =0,1 k1,k2 = 0,1 k1,k2 =0,1
256 No PE
n3,k3 = 0,1, ,63 n3,k3 = 0,1, , 15 n3,k3 = 0,1, ,4 n3,k3 = 0
N=256 N=64 N=16 N=4 ni,n2 = 0,1 ni,n2=0,1 ni,n2=0,1 ni,n2=0,1
Trang 28UVM được xây dựng dựa trên nền tảng của ngôn ngữ SystemVerilog và cungcấp một khung công việc đề tạo ra các thành phần của một Testbench.
UVM cung cấp một phương pháp verify tiêu chuẩn, thúc đây khả năng sửdụng và đồng nhất trong việc phát triển Testbench Nó cung cấp một tập hợp cáclớp được xác định trước và một cấu trúc phân cấp rõ tràng dé tạo môi trường verify
2.3.2 Thành phần môi trường UVM Testbench
Trong UVM, các Testbench thường được xây dựng dựa trên các thành phân như uvm_sequence_item, uvm_squence, uvm_sequencer, uvm_agents, uvm_ driver,
uvm_monitor, va uvm_Scoreboard.
Hinh 2.5: UVM Environment Testbench
uvm_sequence_item có chức năng đóng gói dữ liệu (Transaction) dé đưa uvm sequece đưa những dữ liệu này đên cho uvm driver lái đên các thành phân
cân thiét khác.
17
Trang 29uvm_squence có chức năng chứa các thông tin vê Transaction và cách chúng được sắp xép, gửi di và xử lý.
uvm_sequencer có nhiệm vụ kiêm soát các Transaction trong Testbench Nó
sẽ “start” UVM Sequence dé tạo ra dữ liệu và gửi chúng đến Driver
uvm_driver có nhiệm vụ nhận dữ liệu từ uvm sequencer va đây chúng tới
thiết kế (DUT) thông qua virtual interface và đến uvm_ Scoreboard
uvm_monitor sẽ liên tục quan sát và ghi lại các tín hiệu từ DUT gửi đến cho
uvm_ Scoreboard.
uvm_agent hoạt động như một bộ trung gian giữa Testbench và DUT Nó bao
gồm các thành phần như uvm_ driver, uvm_monitor và uvm sequencer và hỗ trợ
việc tô chức và quản lý các thành phân bên trong nó.
uvm_Scoreboard có nhiệm vụ là so sánh kêt qua dự đoán với kêt quả thực tê tính được từ DUT.
18
Trang 30Chương 3 THIẾT KE FFT
3.1 Bộ cộng/trừ hai số Floating - Point
Các bước thực hiện cộng/ trừ hai số Floating - Point trên dạng binary:
Bước 1: Xét dấu đầu ra cho kết quả tính toán Bước này thực hiện bằng cách sosánh về mặt giá trị số nào lớn hơn thì dấu của kết quả sẽ theo số lớn hơn đó
Bước 2: Chuẩn hóa phan thập phân dé hai số có cùng số mũ
Nếu số mũ của cả hai số bằng nhau giữ nguyên không cần thực hiện chuẩn hóa
và số mũ tạm thời chọn để tính toán cho giai đoạn sau chọn theo số thứ nhất (có théchọn theo số thứ hai)
Nếu hai số có phần mũ không bằng nhau thì số nào có phần mũ lớn hơn sẽ giữnguyên Số có phần mũ nhỏ hơn sẽ dịch n bit ở phần thập phân (lượng chênh lệchphan mii giữa hai số) sao cho cả hai số có cùng số mũ và số mũ sẽ theo số có phan
mt lớn hơn.
Bước 3: Cộng/ Trừ phần thập phân cả 2 số lại với nhau
Đối với phép cộng thì thực hiện cộng như bình thường
Đối với phép trừ sẽ lấy sô lớn hơn trừ cho số nhỏ hơn Việc làm này giúp hạnchế được hiện tượng tràn dưới giúp dé xử lý trong quá trình tính toán
Bước 4: Chuẩn hóa phần thập phân và phần mũ về đúng định dạng
Bước 5: Kết hợp các phan lại với nhau
Vi dụ khi thực hiện cộng hai số 0x41399EFI và 0xC19C0B76 Trong đó sốthứ nhất có bit dấu là Sign1 = 0, phần mũ là Exponent1 = 10000010 (130) và phanthập phân Mantissal = 01110011001111011110001 Số thứ hai có bit dau là Sign2
= 1, phần mũ Exponent2 = 10000011 (131) và phần thập phân Mantissa2 =
00111000000101101110110.
19
Trang 31Bước 1: Ta có sô thứ nhat lớn bé hon sô thứ hai nên dâu cuôi cùng của biêu thức sẽ
Chức năng của khối nay là quyết định phép tính cộng hoặc trừ sé được thực
hiện bên trong khối cộng trừ, dựa trên dấu của các toán hạng Cụ thể, nếu cả hai
toán hạng đều là số dương, phép cộng sẽ được thực hiện bình thường Nếu một toánhạng là số dương và toán hạng kia là số âm, thì phép tính sẽ được thực hiện như lấygiá tri tuyệt đối của số âm trừ cho số dương, với dấu âm được đặt bên ngoài Nếu cảhai toán hạng đều là số âm, thì phép tính sẽ được thực hiện như cộng giá tri tuyệtđối của hai số âm, với dấu âm được đặt bên ngoài Tương tự, khi thực hiện phép trừ,
các trường hợp sẽ ngược lại so với phép cộng.
20
Trang 32Bảng 3.1: Bảng chân trị khối Choose_Operator
Operator | Signl | Sign2 | AddSub
Bảng 3.2: Mô tả tin hiệu của khối Choose_Operator
Operator Dau vao Phép tính bên ngoài đưa vào (0: Cộng, 1: Trừ)Sign Dau vao Dau cua số Floating - Point thứ nhất
Sign2 Dau vao Dau của số Floating - Point thứ hai
AddSub Đầu ra Phép tính thực hiện bên trong (0: Cộng, 1: Trừ)
Trang 333.1.2 Module Check_Larger
Chức năng của khối này là kiểm tra xem trong hai số Floating - Point đầu vào
số nào lớn hơn Việc kiểm tra số nào lớn hon là để phục vụ cho hai việc Thứ nhất
là dé biết được số mũ nào nhỏ hơn và chuẩn hóa số mũ của số đó sao cho bằng với
số mũ của số lớn hơn để có thể cộng hoặc trừ được Thứ hai là để khi thực hiệnphép trừ, cần lấy số lớn trừ cho số nhỏ (lúc này chỉ xét tới giá trị của số Floating -PoinÐ bởi vì phần dấu của hai số Floating - Point đã được xét riêng trong moduleChoose_Sign và vì vậy việc tìm số nào lớn hơn dé trừ cho số nhỏ hơn sẽ giúp tránh
được tình trạng xảy ra tràn dưới và dé xử lý và kiêm soát các giá tri hơn.
Đăng = % rant, Manssea feet al
Ỷ _—Exponent_Mantissa_2[22:0] >
— ?
sic “on ~_Exponent_Mantissa_1[22:0]
Exponent_Larger = Exponent_Mantissa1[30:23]
Ỷ Ỷ
isLG =2b01 isLG =2b00
Exponent_Larger = Exponent_Larger =
Exponent_Mantiss22[30:23] Exponent_Mantissa [20:23]
Hình 3.2: Luu đồ giải thuật khối Check_Larger
Để kiểm tra số nào lớn hơn cần xét hai yếu tổ phan mũ và phan thập phân.Nếu số nào có phần mũ lớn hơn thì số đó lớn hơn Nếu phần mũ bằng nhau thì xéttiếp đến phần thập phân, số nào phần thập phân lớn hơn thì số đó lớn hơn Nếu phầnthập phân bằng nhau thì kết luận hai số bằng nhau Đồng thời khối này cũng sẽ cho
biệt sô mũ lớn hơn là sô nào đê phục vụ cho việc tính toán liên quan đên phân mũ.
22
Trang 34Bang 3.3: Mô tả tín hiệu của khối Check_Larger
Mô tả
Phần giá trị (phần mũ và phần thập phân)của số Floating - Point thứ nhất Trong đó
Tín hiệu đầu ra có độ dài 2 bits cho biết
số nào lớn hơn Nếu isLG trả về 00 nghĩa
là hai số bằng nhau, nếu trả về 01 thìnghĩa là số thứ hai lớn hơn số thứ nhất vàtrả về 10 thì nghĩa là số thứ nhất lớn hơn
số thứ nhất
Tên tín hiệu Đầu vào/ Đầu ra
Exponent_Mantssa_1 Đầu vào
Exponent_ Mantssa_2 Đầu vào
isLG Đầu ra
Exponent_Larger Dau ra Dau ra có độ dai 8 bits cho biét sô mũ lớn
hơn giữa hai sô.
Trang 353.1.3 Module Choose_Sign
Chức năng của khối nay là dé tim dấu của kết qua phép tính Các trường hợp
xảy ra của khôi này:
Khi hai số bằng nhau và cùng mang dấu dương thì khi cộng hay trừ kết quả
dâu cuôi cùng sẽ mang dâu dương.
Khi số thứ hai lớn hơn số thứ nhất và cùng mang dấu dương thì khi cộng hoặctrừ kết quả của dấu cuối cùng sẽ là phép xor giữa dấu của số thứ hai (sign2) và phép
tính thực hiện (operator).
Khi số thứ nhất lớn hơn số thứ hai và cùng mang dấu dương thì khi cộng hoặctrừ kết quả sẽ theo dấu của số thứ nhất
Trường hợp isLG = 11 không xảy ra vì bên trong module Check_Larger đã set
ba trạng thái bằng nhau thì isLG = 00, số thứ hai lớn hơn số thứ nhất thì isLG = 01
và số thứ nhất lớn hơn số thứ hai thì isLG = 10 Chính vi vật trường hợp này sẽ
không xảy ra nên kêt quả của dâu cuôi cùng sẽ được đặt là “don’t care”.
Bảng 3.4: Bảng chân trị khối Choose_Sign
SIønl | Sign2 | isLG[1] | isLG[2] | Operator | Sign
Trang 36Bảng 3.5: Mô tả tín hiệu khối Choose_Sign
Operator Dau vao Phép tính bên ngoài đưa vào (0: Cộng, 1: Trừ)Sign] Dau vao Dấu của số Floating - Point thứ nhất
Sign2 Dau vao Dau của số Floating - Point thứ nhất
25
Trang 371sLG Đâu vào Điêu khiên việc chọn dâu theo sô lớn hơn
Sign Đầu ra Dau cua két quả sau khi thực hiện cộng trừ
Choose_Sign
Operator
Result_Sign
3.1.4 Chuẩn hóa phần thập phân (Mantissa)
Mục đích là thực hiện dịch phần thập phân dé điều chỉnh về mặt số mũ saocho hai số mũ băng nhau trước thi thực hiện cộng hoặc trừ
Đầu tiên 23 — bit phần thập phân của cả hai số Floating - Point đều được chènthêm bit 1 vào đầu Lý do của việc này là để đưa hai số này về dạng chuẩn của nó là
“I.” Sau đó phần thập phân của hai số này sẽ được đưa qua hai bộ mux dé lựachọn số nào sẽ là số cần được chuẩn hóa mũ Đồng thời lúc này, bộ trừ sẽ nhận đầuvào là phần mũ của cả hai số và thực hiện trừ nhau Việc trừ này sẽ được tín hiệuisLG điều khiển sao cho bộ trừ sẽ lấy số mũ lớn hơn trừ cho số mũ bé hơn và thuđược độ lệch giữa hai mũ Độ lệch nay sẽ được đưa vào bộ ShiftRight dé thực hiệndịch phải (n lần) phần thập phân của số nhỏ hơn Việc dịch phần thập phân nàynghĩa là ta đang thực hiện điều chỉnh phần mũ Sau khi khối này thực hiện xong cáccông việc trên kết quả cuối cùng thu được là hai phần thập phân của cả hai số và sẵnsàng cho bước tiếp theo là cộng trừ phần thập phân này
Thiét kê của khôi Normalize_Mantissa gôm: khôi Normalize_ Mantissa, khôi
trừ 8 — bit, hai khối mux2_1 và khối ShiftRight
26
Trang 38Nguyên nhân của việc nhận đầu vào của phần thập phân là 23 — bit và mở rộng
ra thêm bit 1 ở đầu là 24 — bit mà Out_SR va Out_Mux_2 ở đầu ra lại là 48 — bịt vìcần phải mở rộng thêm 24 — bit 0 cho cho phan thập của cả hai số là vì trong quátrình chuẩn hóa là cần phải dich bit sang phải, nếu giữ nguyên độ rộng 24 - bit déchuẩn hóa (dịch phải phần thập phân) thì sẽ gây nên hiện tượng mất bit và từ đó gây
ra sai số trong quá trình tính toán Mở rộng 24 - bit là vì phần thập phân của số
Floating - Point 32 — bit có độ dài là 23 — bit và thêm một bit 1 được chèn ở đầu dé
phan thập phan ở dạng chuẩn hóa
> lMantissa2 IManfissa2 NMIL
Hình 3.5: Sơ đồ mạch dé chuẩn hóa phan thập phân
3.1.5 Module AddSub_ Mantissa
Sau bước chuẩn hóa phan thập phân (Normalize_Mantissa) dé hai số có cùng
số mũ thì bước tiếp theo là thực hiện cộng hoặc trừ phần thập phân đã được chuẩnhóa này Phần thập phân trước khi đưa vào cộng trừ đã được mở rộng lên 48 — bit từkhối Normalize_Mantissa
27
Trang 39Out=B-A
Hình 3.6: Lưu đồ giải thuật khối AddSub_Mantissa
Khối này có chức năng thực hiện phép cộng hoặc trừ phần thập phân của hai
số Floating — Point Đầu tiên, dựa vào tín hiệu AddSub xác định phép toán yêu cầu
là cộng hay trừ Giả sử A là số thứ nhất và B là số thứ hai đi vào khốiAddSub_Mantissa Nếu là phép cộng, khối sẽ thực hiện cộng phần thập phân của số
A với phần thập phân của số B Nếu là phép trừ, khối sẽ kiểm tra xem hai số cóbằng nhau hay không Nếu bằng nhau, nó thực hiện phép trừ phần thập phân của số
A với phần thập phân của số B Nếu không bằng nhau, nó sẽ thực hiện phép trừphan thập phân của số B với phần thập phân của số A
Kết quả thu được sẽ có độ dai 49-bit, trong đó bit thứ 49 là tín hiệu cho biết
sau khi thực hiện phép cộng hoặc trừ có xảy ra tràn (overflow) hay không 48-bit
còn lại là giá tri của phần thập phân thu được Bit thứ 49 này sẽ được gán cho một
tín hiệu gọi là Overflow dé báo hiệu tràn Tín hiệu Overflow này sẽ được sử dụng
trong khối tiếp theo là AddSub_Exponent
28
Trang 40Bảng 3.6: Mô tả tín hiệu khối AddSub_ Mantissa
Tên tín hiệu Đầu vào/ Đầu ra Mô tả
Phần thập phân của số đã được chuẩn
Out_SR Đầu vào hóa có độ dài 48 — bit như đã trình bay
ở mục 3.1.5.
Phần thập phân của số còn lại đã đượcOut_Mux_2 Đầu vào chuẩn hóa có độ dai 48 - bit như đã
trình bay ở mục 3.1.5.
: Tín hiệu dé quyết định việc cộng hoặc
AddSub Đâu vào
trừ (0: Cộng, 1: Trin).
Tín hiệu điều khiến dé quyết định số
isLG Dau vao ,
lớn hơn trừ cho sô nhỏ hơn
Tín hiệu cho biết việc cộng hoặc trừOFM Đầu ra hai số Floating - Point có xảy ra tràn
không có độ dai 1 bit.
: Kết quả thu được sau khi cộng hoặc trừ
Out_ AddSub_ MantIssa Đâu ra : ;
phân thập phân có độ dài 49 — bit.