+ Web Interface: Thực hiện nhận dữ liệu từ Camera, hoặc Internet, sau đó truyền vào Server, nhận kết quả những khuôn mặt có độ tương đồng cao nhất từ Server để... Interface được Floating
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
LUU QUYET THANG
MAI ANH PHONG
KHOA LUAN TOT NGHIEP
THIET KE HE THONG TIM KIEM KHUON MAT TREN
FPGA
Design and Implementation of Face Search Engine on FPGA
KY SƯ NGANH KY THUAT MAY TÍNH
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
LƯU QUYET THANG - 18520151
MAI ANH PHONG - 18520127
KHOA LUAN TOT NGHIEP
THIET KE HE THONG TIM KIEM KHUON MAT TREN
FPGA
Design and Implementation of Face Search Engine on FPGA
KY SƯ KY NGANH THUAT MAY TÍNH
GIANG VIEN HUONG DAN
ThS Truong Van Cuong
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số 71/QD-DHCNTT
ngày 15/02/2023 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4Trong quá trình học tập và rèn luyện tại trường Đại học Công nghệ Thông tin, bọn
em đã được chỉ bảo tận tình, được truyền đạt những kiến thức chuyên sâu quý báu vềngành, đào tạo cho chúng em chuyên môn vững chắc, giúp hiểu biết của chúng em được
mở rộng hơn như hôm nay Bên cạnh kiến thức là môi trường dai học ở UIT được các thầy
cô, anh chị cán bộ đoàn hội quân tâm tạo ra nhiều chương trình cho sinh viên giúp cải thiện
kỹ năng mềm trong suốt quá trình học tập Tắt cả những thứ đó sẽ là vốn liếng quý báu củachúng em tiến lên trong cuộc sóng và trong tương lai
Tiếp đến, chúng em xin cảm ơn các thầy cô Khoa Kỹ thuật máy tính đã tạo điều
kiện, cung cấp trang thiết bị cho chúng em thực hiện khóa luận tốt nghiệp Đặc biệt, đểthực hiện dé tài này, chúng em cảm ơn thay Trương Văn Cương đã hướng dẫn tận tình
cùng với nhóm của thầy đã hỗ trợ tài liệu và tài nguyên để chúng em thực hiện đề tài đượcsuôn sẻ Bên cạnh đó, bọn em cũng vô cùng biết ơn trước những kiến thức được giảng dạy
và cơ hội làm việc với doanh nghiệp của Khoa Kỹ thuật máy tính đem lại cho sinh viên.
Cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình và bạn bè đã là hậu phương
vững chắc, chỗ dựa tỉnh thần giúp chúng em có thẻ hoàn thành khóa luận tốt nghiệp
Thành phố Hồ Chí Minh, tháng 2 năm 2023
Nhóm sinh viên thực hiện
Lưu Quyết Thắng - Mai Anh Phong
Trang 5MỤC LỤC
Chương 1 GIỚI THIỆU TONG QUAN ĐỀ TÀI -.esereerereeeeeeee 121.1 Bối cảnh và nhu cầu thực tẾ -eeeeceeeerreerrrrrarrerereoao 2
1.2 Mục tiêu và phương pháp thực hiện dé tài -.eeeeeeeeeeeeeeeeeee LB
1.2.1 Mục tiêu của để tài ceeserrrirrrirarrero T3
1.2.2 Phương pháp thực hiện -e-cceceeeeeeeseeseee LA
Chương2 CO’ SO LÝTHUYẾT ò55ssseeeeereerrsrereseeex 1
2.1 Mạng neural tích chập (CNN) và xác minh khuôn mặt (F]) 14
2.2 Số dấu chấm động - floating point và chuẩn IEEE754 16
2.2.1 Biểu diễn số floating point eeeeeerrrrereeeoe TỔ,
2.2.2 Chuẩn IEEE754 e-cereeeeereererrereererreersrr 1B
2.3 Độ tương đồng Cosine eeererrrrrrrrrrrrrre, LO
Chương3 THIẾT KẾ PHẦN CỨNG
3.1 Thiết kế và xác minh module cosine -sceeeeeeereeeeeseereesee.ee 20
3.1.1 Floating Point IP Core
3.1.2 Thiết kế chỉ tiết module cosine -«s-seeeesieeeeeeeeeeee.x 23
3.2 Xillybus IP Core.
3.2.1 Quy ước đặt tên các tín hiệu FPGA eceececccserterkiierrrrireiiirirree 2 Z
3.2.2 _ Tín hiệu cho dữ liệu truyền từ máy chủ xuống FPGA 3Ö3.2.3 _ Tín hiệu cho truyền dữ liệu từ FPGA lên máy chủ 4⁄23.3 Thiết kế phần truyền dữ liệu giữa FPGA và máy chủ 46
3.3.1 Thiết kế giao diện dé truyền dữ liệu phần mềm 46
3.3.2 Thiết kế giao diện dé truyền dữ liệu phần cứng #
Trang 64.1 Kết quả khi tổng hợp hệ thống trên FPGA 2sseseererrerrerrere4.2 Kết quả đạt được trên FPA c.2+vxvthhHhnHnH hitChương 5 KET LUẬN VA HƯỚNG PHAT TRIỂN CUA DE TÀI -
5.2 Khó khăn gặp phan 5.3 Huong phát triên
54 56 57 57
Trang 7DANH MỤC HÌNH
Hình 1.1 Mô hình hệ thống tìm kiếm khuôn mặt -2cc+++ccvzvxez 13Hình 2.1: Kiến trúc mạng CNN đơn giản 2222c22c+ezt2tEEvvvvrrrrrrrrrrrree 15Hình 2.2: Kiến trúc mạng DenseÌNet : +222++++t222v+rettvvvrrerrxrrrrrrr 16Hình 2.3: Mô hình trích xuất vector đặc trưng của khuôn mặt từ mạng CNN 16Hình 2.4: Các trường bit của biểu diễn số floating-point -+ 17
Hình 2.5: Giá trị cosine của hai góc trong hệ tọa độ ¿- 5-5 <5+c++x+c++ 19
Hình 3.1: Thông số và các toán tử của khối tính toán số floating point 20
Hình 3.2: Interface của các khối tính toán số floating point . -: 21Hình 3.3: Interface của khối cosine sssssesssssssesssssssecesssssscesssssscssssecsesssusscessseeecessees 23Hình 3.4: Sơ đồ khối tổng quan của module cosine -: -:+cc5sc+2 24Hình 3.5: Interface của khối floating point add -¿-©2z++22+sz+zczsscez 25Hình 3.6: Interface của khối floating point mul - ¿2©c++22+zz+2zvscez 27Hình 3.7: Interface của khối floating point sQFt -: -c¿5sc++2cscc+cvsscez 28
Hình 3.8: Interface của khối floating point sqrt - -cccscsccc-zcccccsssc+3Ù
Hình 3.9: Interface của khối MAC -cccccczccccvcvveerreerrrrrxseererrrrrrreeere.3 ÍHình 3.10: Interface của khối cOunt€r ¿¿©22+++22EE++++2EESS+z2vExvrrsrrrscee 32Hình 3.11: Tài nguyên sử dụng dé triển khai khối cosine - - 34
Hình 3.12: Cấu trúc một packet dùng đề xác minh khối cosine 35
Hình 3.13: Mô trường testbenchh 5: 5c + x22 222 2112111 erree 35
Hình 3.14: Kết quả đạt được với random dafa - - - 5c <5 5++x+x‡exervrkekererre 36
Hình 3.15: Kết qua đạt được với realdata và trực quan dữ liệu 3Ó
Hình 3.3.16: Luong dé liệu từ máy chủ truyền xuống FPGA (downstream) [7] 39Hình 3.17: Luồng dữ liệu được truyền từ FPGA lên máy chủ (upstream) [7] 43Hình 3.18: Sơ đồ khối hệ thống -222:¿+222EEEEErrrstttrEkrrrrrrrrrrrrrrre 49Hình 3.19: Sơ đồ thiết kế của khối Frame Reader -iiiriirrrrrreeeee 50Hình 3.20: Interface của khối Frame Reader ¿¿-++¿+222v+zz+cvvszcesrr 52Hình 4.1: Tài nguyên sử dụng của hệ thống dạng bảng -+ 54
Trang 8Hình 4.3: Năng lượng tiêu thụ của hệ thống :¿¿©22z222v+zz+ccvsvreerr 55
Hình 4.4: Năng lượng tiêu thụ hệ thống trên chip ¿+22zz+ccsscez 55
Hình 4.5: Kết quả tính toán khi day hai vector khác nhau chứa 128 phần tử 56Hình 4.6: Kết quả khi đầy hai vector giống nhau chứa 128 phần tử
Trang 9DANH MỤC BANG
Bang 3.1: Mô tả tín hiệu của các khối tính toán sé floating point 22Bang 3.2: Mô tả tính hiệu của khối nhân cộng tích lũy (MAC) 24Bảng 3.3: Mô tả tín hiệu của khối floating point add -:-ss+<+ 26Bảng 3.4: Mô tả tín hiệu của khối floating point mul - ¿22+ 27Bảng 3.5: Mô tả tín hiệu của khối floating point sqrt - : -:s<+ 29Bảng 3.6: Mô tả tín hiệu của khối floating point sqrt - : : 5se<+ 30
Bảng 3.7: Mô tả tín hiệu của khối MAC -:ccccccvvvvvverrrrrirrrrrrtrrrrrrrrrrrker 32Bảng 3.8: Mô tả tính hiệu của khối cOun(er -:2 ©222¿222++z+e2v2xvzesrrrreeesrr 33
Bang 3.9: Tổng hợp kết quả của khối cosine 2¿¿222sz++222vvzcsccvseeecrr 34Bảng 3.10: Thông tin về các chân kết nói I/O của hệ thống tìm kiếm khuôn mặt 48Bang 3.11: Thông tin về các chân kết nói I/O của module Frame Reader 53
Trang 10DANH MỤC TU VIET TAT
IEEE Institute of Electrical and Electronics Engineers
FI Face Identification
CNN Convolutional Neural Network
IP Intellectual Property
MAC Multiply and Accumulate
FIFO First In First Out
FPGA Field-Programmable Gate Array
DMA Direct Memory Access
LUT Look-up table
FF Flip-Flop
DSP Digital Signal Processing
BUFG Global Clock Buffer
MMCM Mixed-Mode Clock Manager
Trang 11TÓM TÁT KHÓA LUẬN
Hiện nay việc ứng dụng machine learning và deep learning đã quá phổ biến và
mang lại nhiều ứng dụng tuyệt vời Tuy nhiên kèm theo đó sự bùng nỗ của dữ liệu
lớn dẫn đến nhiều thách thức hơn cần phải giải quyết, đặc biệt là bài toán tốc độ xử
lý Trong khóa luận này nhóm chúng em xin trình bày giải pháp tìm kiếm khuôn
mặt dựa trên vector đặc trưng của khuôn mặt kết hợp với khả năng tính toán mạnh
với chỉ phí thấp của FPGA đề giải quyết vấn đề nêu trên
Nhóm đã nghiên cứu về các kiến thức liên quan đến tính toán độ tương đồng,
độ tương đồng cosine Sau đó nhóm đề xuất kiến trúc tổng quan và chỉ tiết cho từng
khối để xây dựng module tính toán cosine bằng code Verilog trên môi trường phầnmềm Vivado, tiến hành xác minh mô phỏng bằng di liệu random và tập dữ liệu
khuôn mặt được trích xuất trước dé kiểm chứng module đã thiết kế thông qua file
testbench.
Tiếp đến, nhóm tích hợp module cosine thiết kế được vào xillybus ip core
cho phép truyền dữ liệu dựa trên DMA, kết hợp với trình điều khiển linux trên
FPGA (xilinux) cùng nhau tạo thành một hệ thống tính toán tương đồng giao tiếp
giữa FPGA và PC.
Cuối cùng, nhóm tổng hợp toàn bộ thiết kế và nạp xuống board Zynq-7000
ARM/FPGA SoC Board đề thử nghiệm và đánh giá kết quả
Trang 12Chương 1 GIỚI THIỆU TONG QUAN DE TÀI
1.1 Bối cảnh và nhu cầu thực tế
Máy học ở thời điểm hiện tại đã không còn là xu hướng hay phong trào trong giới
công nghệ, mà đã trở thành một phương pháp phô biến giải quyết được nhiều bài
toán trong cuộc sống mà phương pháp lập trình cổ điển bị hạn chế Cụ thể như là
các bài toán nhận diện và xác minh khuôn mặt, nhận diện làn đường, phát hiện đối
tượng trong lĩnh vực thị giác máy tính Hay đề xuất cụm từ, phát hiện bình luận tiêu
cực, chống đạo văn bản trong lĩnh vực xử lý ngôn ngữ tự nhiên Đặc biệt trong cộngđồng nhận diện khuôn mặt bên cạnh xử lý các giải thuật liên quan dé CNN, YoLo
Thi các giải thuật đi kèm dé xử lý luồng dữ liệu trả ra từ các thuật toán xử lý ảnh
cũng rất là lớn Kèm theo yêu cầu xử lý tốc độ cao khi xử lý real-time ở các thiết bị
biên với chỉ phí thấp Cụ thể với đề tài của nhóm là xử lý tính toán độ tương đồng
của hai khuôn mặt bằng cách tính độ tương đồng hai giữa hai vector đặc trưng đặc
trưng khuôn mặt sau khi được trích xuất Từ mạng CNN được đào tạo trước
Để hiện hiện thực hóa các giải thuật liên quan đề máy học nói chung và những
giải thuật liên quan dé học sâu hay xử lý ảnh nói riêng, các nhà phát triển thường
triển khai chúng trên một server có rất nhiều tài nguyên đặc biệt là GPU Trong khi
các ứng dụng nhúng AI đề làm việc hiệu quả ở các thiết bị biên (camera) cần tối ưu
tính toán dé có hiệu suất tốt hơn và việc tiêu hao năng lượng cũng là vấn đề được
quan tâm Ví dụ, nhận diện khuôn mặt tại camera, nhận diện làn đường cho xe tự
hành, điều khiển robot, tiêu hao năng lượng thấp cho giải thuật máy học và học sâu
Trang 131.2 Mục tiêu và phương pháp thực hiện đề tai
1.2.1 Mục tiêu của đề tài
Xây dựng hệ thống tìm kiếm khuôn mặt thực hiện tính toán ít nhất trên 10.000
khuôn mặt dựa trên việc kết hợp xử lý trên Server và SoC Kit gồm ba thành phần
chính như Hình 1.1:
+ Server: Thực hiện trích xuất trên dữ liệu hình ảnh ngoài đời thực để lay và lưu
trữ hình ảnh khuôn mặt Giao tiếp với SoC Kit dé tiến hành so sánh độ tương đồng
+ SoC: Hiện thực hệ thống tính toán độ tương đồng, gồm hai thành phần Linux
nhúng trên lõi ARM của SoC và FPGA sử dụng tính toán độ tương đồng Cosine
Similarity.
+ Web Interface: Thực hiện nhận dữ liệu từ Camera, hoặc Internet, sau đó truyền
vào Server, nhận kết quả những khuôn mặt có độ tương đồng cao nhất từ Server để
Trang 141.2.2 Phương pháp thực hiện
Tìm hiéu và xây dựng các thuật toán tính toán độ tương đồng trên phần mềm Xây
dựng các giải thuật tính toán độ tương đồng dé xuất bằng ngôn ngữ RTL, xây dựng
datapath và controller, thiết kế các module Hoàn thiện thiết kế và tiến hành kiểmtra kết quả phần cứng với kết qua đã thực hiện ở phần mềm, đánh giá tông quan về
hiệu suất của thiết kế dé tiến hành tối ưu chuẩn bị để triển khai lên FPGA Triển
khai thiết kế trên SoC Kit Xây dựng cơ sở dữ liệu và server cho việc trích xuất vàlưu trữ đặc trưng khuôn mặt Xây dung web interface để nhận dữ liệu đầu vào và
xuất dữ liệu đầu ra Tiến hành chạy và đánh giá kết quả của hệ thống đề xuất
Chương2 CƠ SỞ LÝ THUYET
2.1 Mang neural tích chập (CNN) và xác minh khuôn mặt (FI)
Trong mạng neural, mô hình mạng neural tích chập (CNN) là một trong những
mô hình để nhận dạng và phân loại hình ảnh Trong đó, xác định đối tượng và nhận
dạng khuôn mặt là một trong sỐ những lĩnh vực mà CNN được sử dụng rộng rãi
CNN phân loại hình ảnh bằng cách lấy một hình ảnh đầu vào (feature), xử lý và
phân loại nó theo hạng mục nhất định Mạng CNN là tập hợp nhiều lớp
Convolutional chồng lên nhau, sử dụng các hàm Nonlinear Activation và tanh để
kích hoạt các trọng số trong các node Ở mỗi lớp CNN, sau khi được các hàm kích
hoạt sẽ tạo ra các thông tin trừu tượng hơn cho những lớp tiếp theo Mỗi layer kế
tiếp sẽ là kết quả Convolution từ Layer trước đó nên chúng ta có được các kết nối
cục bộ.
Trang 15t3 ftc_4
Eully-Connected Fully-Connected
Neural Network Neural Network
Conv_1 Conv_2 ReLU activation
Hình 2.1: Kiến trúc mang CNN đơn giản
Việc thay đổi các lớp hay phát triển các kiến trúc mạng khác nhau cũng là một xu
thế chạy đua trong những năm gần đây Các mạng CNN nổi tiếng như là LetNet,
AlexNet, VGG-16, GoogleNet — Inception-VI, ResNet-50, DenseNet vv Hiện tại
ngày càng xuất hiện nhiều các kiến trúc CNN mới Chúng hình thành, phát triển và
cải tiến về độ sâu, cách thiết kế block Lần lượt từ VGG Net đến DenseNet, chúng
được ra đời dựa trên sự kế thừa những ý tưởng cũ và phát triển những ý tưởng mới.Quá trình phát triển của các kiến trúc mạng cũng song hành cùng với sự phát triển
phần cứng máy tính như các GPU, CPU, TPU hay FPGA Kỹ thuật huấn luyện phân
tán và song song trên nhiều GPU cho phép có kết quả nhanh hơn Các framework
hỗ trợ học sâu cũng xuất hiện nhiều hơn, được cải tiến và trở thành công cụ đáp ứng
mọi nhu cầu cần thiết cho quá trình huấn luyện học sâu
Trang 16Một trong nhánh ứng dụng của CNN là Face identification (FI), nó phổ biến ở
khắp mọi nơi và thúc đây nhiều quyết định mang tính quan trọng cao do cơ quan
thực thi pháp luật đưa ra Phương pháp tiếp cận FI phổ biến so sánh hai hình ảnhbằng cách lấy cosine similarity giữa các image embeddings của chúng Để có kết
quả chính xác hơn các nhà phát trién kết hợp nhiều giải thuật tương đồng khác nhau
dé tăng độ chính xác cho kết quả ranking
4 _—_. Stage 1: Image similarity-based ranking
h favo)
asane io) = — 1 In]
Query image aan
Gallery images Image embeddings
Hình 2.3: Mô hình trích xuất vector đặc trưng của khuôn mặt từ mạng CNN
2.2 Số dấu chấm động - floating point và chuẩn IEEE754
2.2.1 Biểu diễn số floating point
Trong tin học, số dấu cham động được dùng dé chi một hệ thống biéu diễn số
mà trong đó sử dụng một chuỗi bit để biểu diễn một số hữu tỉ Đối với single
Trang 17precision, format width = 32-bit và fraction width = 24bit Chúng được ký hiệu
lần lượt là: w, wr Một số floating point được biểu diễn sử dung sign, exponent,
và fraction (Được ký hiệu lần lượt ‘s’ , "E?, và bo.biba bwr - 1)
Giá trí của số floating point được tính:
Floating point value = (—1)Š + 2 x bạ bib bự, ~+ (2-1)
Các bit nhị phân bị, có trọng số 2”, khi MSB bo là hang số bằng 1 Như vậy kết
hợp sự ràng buộc này thì 1 < bobiba bwr- ¡< 2 và số này được gọi là normalized
E là phần được biểu thị theo số mũ của 2 Sign bit cấp giá trị đương khi s bằng 1,
giá trị âm khi s bằng 0 Biểu diễn nhị phân của số floating-point chứa 3 trườngđược biểu diễn theo hình sau hình 2.4
Bit significance (i) We-1 o 1 2 3 Wr~ 1
e f
4 al T Ty tT TT R
- — >
Hình 2.4: Các trường bit của biểu diễn số floating-point
Xem bọ như là một hằng số, chỉ phần fractional được giữ lai, đó là, f =biba bwr.¡ Nó yêu cầu chỉ wr- 1 bit Trong các bit còn lại, chỉ một bit được sử
dụng làm sign bit và we = w - wr bit đại diện cho exponent Phan exponent, e,
được sử dung như đại diện độ lệch nguyên dương, có giá trị theo công thức:
Trang 182.2.2 Chuẩn IEEE754
Hiệp hội IEEE đã chuan hóa cho việc biểu diễn số dấu phẩy động nhị phân trong
máy tính bằng cách đưa ra chuẩn IEEE 754 Ngày nay hầu hết các máy tính đều
tuân thủ theo chuẩn này Một số trường hợp ngoại lệ như máy tính lớn IBM và máy
vector Cray Loại máy tính lớn IBM ngoài định dạng thập phân và nhị phân IEEE
754 còn có một định dạng riêng của IBM Còn với máy vector Cray thì họ T90 có
một phiên bản IEEE nhưng máy SV1 vẫn còn dùng định dạng dấu phẩy động của
chính Cray Chuan IEEE 754 đưa ra nhiều định dang rất gần nhau, chỉ khác nhau ở
một ít chỉ tiết Năm trong số những định dạng này được gọi là định dạng cơ bản, và
hai trong chúng đặc biệt được dùng rộng rãi trong cả phần cứng máy tính và ngôn
ngữ lập trình:
+ Độ chính xác đơn, được gọi bằng tên là "float" trong họ ngôn ngữ lập trình C và
tên là "real" hay "real*4" trong ngôn ngữ Fortran Đây là định dạng nhị phân chiếm
32 bits (4 bytes) và phần định trị của nó có độ chính xác 24 bit (tương đương với
khoảng 7 chữ số thập phân)
+ Độ chính xác kép, được gọi bằng tên là "double" trong họ ngôn ngữ lập trình C
và tên là "double precision" hay "real*8" trong ngôn ngữ Fortran Đây là định dang
nhị phân chiếm 64 bit (8 byte) và phần định trị của nó có độ chính xác 53 bit (tương
đương với khoảng 16 chữ sé thập phân)
Các định dạng khác là nhị phân với độ chính xác bậc bốn (128 bit), cũng như là
dẫu phay động thập phân (64 bit) và dau phay động thập phân "kép" (128 bit)
Trang 19Cosine Similarity độ tương tu cosin đặc biệt sử dung trong không gian dương
với kết quả được giới han chặt chẽ trong biên độ [0,1]
Left: Two vectors with 98% similarity based on the cosine of the angle between the vectors Right: Two vectors
with 55% similarity based on the cosine of the angle between the vectors
Hình 2.5: Giá tri cosine của hai góc trong hệ tọa độ
Trang 20Chương 3 THIẾT KE PHAN CỨNG
3.1 Thiết kế và xác minh module cosine
3.1.1.
Xilinx® Floating-Point Operator cho phép các tính toán với số floating-point
được thực hiện trên FPGA Hình 3.1 giới thiệu về LogiCORE của Xilinx Các
operation, wordlength, latency, interface được chỉ định khi core được tạo, mỗi
operation khác nhau nhưng có chung interface Xilinx LogiCORETM IP module
được cung cấp sẵn miễn phí với Xilinx Vivado® Design Suite Interface được
Floating Point IP Core
minh hoa 6 hinh 3.2:
Features
Sự tuân thủ IEEE-754 Standard yêu cầu các phép toán số học cơ bản tao ra kết
quả chính xác đến một nửa của đơn vị ở vị trí cuối cùng (Unit in the Last Place
-ULP) Xilinx Floating-Point Operator phù hợp cho yêu cầu này bao gồm
multiply, add/subtract, fused multiply-add, divide, square-root va conversion
operators Hiện thực khối kết hợp multiply-add và multiply-acc sử dụng DSP58
LogiCORE IP Facts Table
Supported operators:
Multiply
Add/subtract
Accumulator Fused multiply-add Divide
Paani VersalTM ACAP
Provided with Core
Design Files Enơypted RTL
Example Design Not Provided
Simulation Model Enaypted VHDL, C Model
khối tính toán số floating point
Tested Design Flows”?
Conversion from floating-point to fixed-point
Vwado° Design Suite
Conversion from fixed-point to floating-point
Conversion between floating-point
types
Unfused multiply-add
Design Entry ‘system Generator for DSP
Xilinx Design Tools: Release Notes Guide.
Synthesis Vivado Synthesis
‘Support
Release Notes and ‘AR 54504
Known Issues
Unfused multiply-accumulator All Vivado IP
Change Logs Master Vivado IP Change Logs: 72775
Accumulator primitive Xilinx Support web page
Trang 21phải làm tròn sau cả hai
Hình 3.2: Interface của các khối tính toán số floating point
Độ trễ của hầu hết các operators có thể đặt giữa 0 và một giá trị max phụ thuộc
vào các parameter được chọn Các cổng được sử dụng bởi core được thể hiện trong
hình 3.1 Chúng được mô tả chỉ tiết hơn trong Bảng 3.1 Tất cả các tín hiệu điềukhiển đều hoạt động ở mức cao ngoại trừ aresetn
Trang 22Bảng 3.1: Mô tả tín hiệu của các khối tính toán số floating point
Tên tín hiệu VO Mô tả
aclk I_ | Rising-edge clock
aclken 1| Active-High clock enable (optional)
Active-Low synchronous clear (optional), luôn
aresetn 1 | được ưu tiên hơn aclken Tin hiệu nay phải được
giữ ít nhất trong hai chu kỳ xung clock
s_axis_a_tvalid TVALID cho channel A
s_axis_a_tready TREADY cho channel A
S_axis_a_tuser TUSER cho channel A
s_axis_b_tvalid TVALID cho channel B
s_axis_c_tvalid TVALID cho channel C
S_axis_c_tdata TDATA cho channel C
S_axis_c_tuser TUSER cho channel C
s_axis_c_tlast TLAST cho channel C
s_axis_operation_tvalid TVALID cho channel OPERATION
s_axis_operation_tready TREADY cho channel OPERATION
s_axis_operation_tdata TDATA cho channel OPERATION
s_axis_operation_tuser TUSER cho channel OPERATION
s_axis_operation_tlast TLAST cho channel OPERATION
m_axis_result_tvalid TVALID cho channel RESULT
m_axis_result_tready TREADY cho channel RESULT
m_axis_result_tdata TDATA cho channel RESULT
m_axis_result_tuser TUSER cho channel RESULT
m_axis_result_tlast elelel-lce-l-l-lcl-l-l-'-lcl-l-l-l-lc -l-l-l-lo|- TLAST cho channel RESULT
Trang 233.1.2 Thiết kế chỉ tiết module cosine
3.1.2.1 Tổng quan thiết kế
Nhóm đề xuất thiết kế don vị tính toán cosine similarity theo kiến trúc (MAC
- Multiply and Accumulate) trên kiểu dữ liệu số floating-point 32 bit Với yêu
cầu bài toán và tính độ tương đồng cosine giữa hai vector đầu vào
tử của vector được truyền nối tiếp vào IP thông qua cổng ina và inb và đầu ra là
Trang 24Bảng 3.2: Mô tả tính hiệu của khối nhân cộng tích lũy (MAC)
Tínhiệu | UO | Số bit Mô tả
valid_in I 1 Tính hiệu valid_in bằng 1 khi dữ liệu vào đúngina I 39 _ | Giá trị của vector a được biéu diễn dưới dang
sô floating point 32-bit
inb I 32 Giá trị của vector b được biêu diễn dưới dạng
sô floating point 32-bit
size I 32 Kich thước của hai vector đầu vào được biểu
ì diễn ở dạng sô floating point 32-bit
Tích cực trong 1 xung clock tại giá trị đầu tiên
start I 1 ñ Â bắt đỀn P
của vector đê bat dau tính toán.
Tính hiệu en bằng một cho phép COSINE IP
rst_n I 1 Tin hiệu reset động bộ tích cực mức thấp.
Giá trị tương đồng của hai vector được biéu
cosine_out | O 5M | eat dang số floating point 32-bit
cosine_done | O 1 Tinh hiệu cosine_done bang | khi ngõ ra
Trang 25Module Cosine sẽ gồm 4 module chính:
© MAC: Thực hiện phép tính nhân tích lũy sé floating-point
© DFF: Dé để tạo độ trễ chu kỳ xung clock
e MUL: Thực hiện tính phép nhân số floating-point
¢ DIV: Thực hiện tính phép chia sé floating-point
e Counter: Thực hiện điều khiển tính hiệu tính toán
3.1.2.3 Sơ đồ khối chỉ tiết
Xilinx để thực hiện tính phép cộng hai số floating-point 32 bit sử dụng các chân tín
hiệu như sau:
e_ Chân đầu vào tính toán 32 bit: ina, inb
e Các chân điều khiển bao gồm: valid_in, en, clk, rst_n
e Chân dau ra tính toán 32 bit: add_out [31:0]
Trang 26Bảng 3.3: Mô tả tín hiệu của khối floating point add
Tín hiệu | ƯO | Số bit Mô tả
valid_in 1 1 Tính hiệu valid in bang 1 khi dit liệu vào đúng
Giá trị của đầu vào toán tử a biểu diễn ở dạng số
ina I 32 l
floating point 32 bit.
Giá trị của đầu vào toán tử b biéu diễn ở dạng số
inb I 32 l l
floating point 32 bit.
1 Tinh hiệu en bằng một cho phép module hoạt
floating point 32 bit.
valid_out | O 1 Tinh hiệu valid_out bằng 1 khi dé liệu ra đúng
Khối nhân hai số floating-point 32bit sử dụng IP Multiply floating-point của
Xilinx để thực hiện nhân hai số floating-point 32 bit sử dụng các chân tín hiệu như
sau:
e Chân đầu vào tính toán 32 bit: ina[31:0], inb[3 1:0]
e_ Các chân điều khiển bao gồm: valid_in, en, clk, rst_n.
e Chân đầu ra tính toán 32 bit: mul_out [31:0]
e_ Chân tín hiệu dé thông báo kết quả trả về: valid_out
Trang 27Hình 3.6: Interface của khối floating point mul
Bang 3.4: Mô tả tín hiệu của khối floating point mulTín hiệu | I/O | Số bit Mô tả
valid_in I 1 Tinh hiệu valid_in bang 1 khi dữ liệu vào đúng
Giá trị của đầu vào toán tử a biểu diễn ở dạng số
ina I 32
floating point 32 bit
Giá tri của đầu vào toán tử b biéu diễn ở dang số
inb I 32
floating point 32 bit
1 1 Tính hiệu en bằng một cho phép module hoạt
en
động
clk I 1 Tín hiệu xung clock của hệ thống kích cạnh lên
rst_n I 1 Tin hiệu reset động bộ tích cực mức thấp.
Giá trị đầu ra của phép cộng a * b ở dạng số
mul_out Oo 32
floating point 32 bit.
valid_out | O 1 Tính hiệu valid_out bằng 1 khi dữ liệu ra đúng
Trang 28Khối căn bậc hai số floating-point 32bit sử dụng IP Square-root floating-point của
Xilinx để thực hiện căn bậc hai số floating-point 32 bit, két quả sau khi tinh toán
xong ở khối nhân hai số floating-point sẽ được truyền đến khối căn bậc hai Khối
tính toán căn bậc hai hai số floating-point 32 bit sử dụng các chân tín hiệu như sau:
e_ Chân đầu vào tính toán 32 bit: in[31:0]
© Các chân điều khiển bao gồm: valid_in, en, clk, rst_n.
¢ Chan đầu ra tinh toán 32 bit: sqrt_out [31:0]
¢ Chân tín hiệu dé thông báo kết qua trả về: valid_out
Trang 29Bảng 3.5: Mô tả tín hiệu của khối floating point sqrt
Tín hiệu | ƯO | Số bit Mô tả
valid_in 1 1 Tính hiệu valid in bang 1 khi dit liệu vào đúng
Giá trị của đầu vào toán tử a biểu diễn ở dạng số
in I 32 l
floating point 32 bit
I 1 Tinh hiệu en bằng một cho phép module hoạt
en
động
clk I 1 Tín hiệu xung clock của hệ thống kích cạnh lên
rst_n I 1 Tin hiệu reset động bộ tích cực mức thấp
Giá trị đầu ra của phép căn bậc hai của a ở dạng
sqrt_out O 32) :
sô floating point 32 bit.
valid_out | O 1 Tính hiệu valid_out bằng 1 khi dữ liệu ra đúng
Khối chia hai số floating-point 32bit sử dụng IP Divide floating-point của Xilinx
dé thực hiện chia hai số floating-point 32 bit, kết quả sau khi tính toán xong ở khối
căn bậc hai số floating-point sẽ được truyền đến khối chia dé tính toán Khối tính
chia hai số floating-point 32 bit sử dụng các chân tín hiệu như sau:
e Chan đầu vào tính toán 32 bit: ina[31:0], inb[31:0]
© (Cac chân điều khiển bao gồm: valid_in, en, clk, rst_n
¢ Chân đầu ra tính toán 32 bit: div_out [31:0]
e Chin tín hiệu dé thông báo kết quả trả về: valid_out