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ế hệ thống tìm kiếm khuôn mặt trên FPGA

59 0 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

Tiêu đề Thiết kế hệ thống tìm kiếm khuôn mặt trên FPGA
Tác giả Lưu Quyết Thắng, Mai Anh Phong
Người hướng dẫn ThS. Trương Văn Cường
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Kỹ thuật máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 59
Dung lượng 15,62 MB

Nội dung

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

THONG 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 4

Trong 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 5

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

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

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

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

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

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

TÓ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 12

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

1.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 14

1.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 15

t3 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 16

Mộ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 17

precision, 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 18

2.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 19

Cosine 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 20

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

phả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 22

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

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

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

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

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

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

Khố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 29

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

Ngày đăng: 23/10/2024, 00:38