1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế IP cho bộ tính toán FFT sử dụng thuật toán Butterfly

85 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 85
Dung lượng 75,78 MB

Nội dung

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 2

THÔ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 3

LỜ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 4

MỤ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 5

3.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 6

3.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 7

5.2 Ưu điểm và hạn chẾ ¿- 5s +kk‡Ek+E‡EEEE+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEkrkerkrkerrrk5.3 Hướng phát triển

Trang 8

DANH 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 9

Hì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 10

DANH 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 11

DANH 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 12

TOM 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 14

Chươ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 15

nữ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 16

lý 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 17

liệ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 18

Chuong 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 19

Trong đó:

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 20

Mố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 21

Cá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 22

rộ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 23

Bướ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 24

Trong đó 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 25

Bit 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 26

Sau 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 27

Bang 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 28

UVM đượ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 29

uvm_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 30

Chươ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 31

Bướ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 32

Bả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 33

3.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 34

Bang 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 35

3.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 36

Bả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 37

1sLG Đâ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 38

Nguyê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 39

Out=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 40

Bả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.

Ngày đăng: 06/12/2024, 15:31