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

Nhận dạng dấu vân tay dùng fpga

70 56 0

Đ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 70
Dung lượng 2,03 MB

Nội dung

Đại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA HV : NGUYỄN LÝ MINH THIỆN ĐỀ TÀI : NHẬN DẠNG DẤU VÂN TAY DÙNG FPGA Chuyên ngành : KĨ THUẬT ĐIỆN TỬ LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng 12 năm 2008 iii ĐẠI HỌC QUỐC GIA TP HCM CỘNG HOÀ XÃ HỘI CHỦ NGHIÃ VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc Lập - Tự Do - Hạnh Phúc oOo Tp HCM, ngày 02 tháng 02 năm 2009 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Nguyễn Lý Minh Thiện Ngày, tháng, năm sinh : 15/05/1982 Chuyên ngành : Giới tính : Nam Nơi sinh : Tp HCM Kĩ thuật điện tử Khoá (Năm trúng tuyển) : 1- TÊN ĐỀ TÀI: 2006 NHẬN DẠNG DẤU VÂN TAY DÙNG FPGA 2- NHIỆM VỤ LUẬN VĂN: - Xây dựng giải thuật dùng matlab để mô giải thuật nhận dạng dấu vân tay - Thực nhận liệu dấu vân tay, xử lý hiển thị kết nhận dạng kit FPGA 3- NGÀY GIAO NHIỆM VỤ : 02 / 2008 4- NGÀY HOÀN THÀNH NHIỆM VỤ : 12 / 2008 5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN (Ghi đầy đủ học hàm, học vị ): PGS, TS Dương Hoài Nghĩa , Ths Hồ Trung Mỹ Nội dung đề cương Luận văn thạc sĩ Hội Đồng Chuyên Ngành thông qua CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH (Họ tên chữ ký) CHƯƠNG : TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL 1.1 GIỚI THIỆU VỀ FPGA FPGA viết tắt "Field Programmable Gate Array", vi mạch dùng cấu trúc mảng phần tử logic mà người dùng lập trình được, thực tính logic thơng qua máy tính với giá rẻ, xóa viết lại nhiều lần Xilinx công ty bán FPGA chiếm thị phần lớn Ngồi cịn có Alterna, Lattice, Actel, QuickLogic Nhiều nhà sản xuất cung cấp nhiều cấu trúc phương pháp xử lý khác Vì vậy, việc chọn cấu trúc phương pháp xử lý để đáp ứng yêu cầu chức độ ổn định, hệ thống thực tế vấn đề mang tính định Thiết bị logic lập trình được phát minh lần đầu vào cuối thập kỷ 1970 trở lên phổ biến ngành cơng nghiệp bán dẫn Ngồi khả lập trình đa dạng, cơng nghệ cịn có thời gian sản xuất nhỏ nên có khả cạnh tranh thương mại lớn Hơn nữa, việc thiết kế với dễ dàng có khả lập trình lại nhiều lần FPGA thiết kế đầu tiêm Ross Freeman, người sáng lập công ty Xilinx vào năm 1984, kiến trúc FPGA cho phép tính hợp số lượng tương đối lớn phần tử bán dẫn vào vi mạch so với kiến trúc trước CPLD (Complex Programmable Logic Device).Điểm tương đồng CPLD FPGA chỗ chúng bao gồm số lượng tương đối lớn phần tử logic khả trình Tuy nhiên mật độ tích hợp khác nhau, mật độ cổng logic CPLD nằm khoảng từ vài nghìn đến hàng chục nghìn, với FPGA mật độ tích hợp cỡ hàng chục nghìn vài triệu FPGA CPLD có nhiều điểm khác biệt nhiên kiến trúc điểm khác biệt CPLD FPGA CPLD có kiến trúc giới hạn mức độ đó, bao gồm nhiều dải logic “sum-of-products” khả trình cung cấp số tương đối nhỏ ghi đồng Điều làm cho CPLD trở nên không mềm dẻo lắm, bù lại trễ timing lại dễ dự đoán tốc độ kết nối logic cao FPGA Với FPGA, kiến trúc theo cách khác trội hẳn CPLD FPGA sử dụng liên kết nối Điều khơng tạo cho mềm dẻo nhiều mà làm tăng độ phức tạp thết kế Điểm khác biệt FPGA CPLD hầu hết chip FPGA có hàm cấp cao (như cộng nhân) nhớ nhúng vào Ngoài ra, FPGA đời hỗ trợ đầy đủ phần việc cấu hình lại hệ thống, cho phép thay đổi thiết kế tức cập nhật hệ thống cấu hình động (dynamic reconfiguration) chúng hoạt động Một vài FPGA cịn có khả cấu hình lại cục (partial re-configuration) tức phần thiết bị cấu hình phần lại hoạt động 1.2 KIẾN TRÚC CHUNG CỦA MỘT FPGA Cấu trúc tổng thể FPGA bao gồm: -Các khối Logic -Hệ thống liên kết mạch -Các phần tử tích hợp sẵn Hình 1.1 Cấu trúc tổng thể FPGA 1.2.1 Khối logic FPGA Hình 1.2 Khối Logic FPGA chứa nhiều khối logic tái cấu hình CLB (Configurable Logic Blocks) liên kết với thành liên kết khả trình (Programmable Interconnect) Các khối vào phân bố xung quanh chip tạo thành liên kết với bên ngồi Bên khối logic CLB có bảng LUT (Look-Up Table) phần tử nhớ (FlipFlop chốt) LUT (Look up table) khối logic thực hàm logic từ đầu vào, kêt hàm tùy vào mục đích mà gửi ngồi khối logic trực tiếp hay thông qua phần tử nhớ flip-flop Trong tài liệu hướng dẫn dòng FPGA Xilinx sử dụng khái niệm SLICE, Slice tạo thành từ gồm khối logic, số lượng Slices thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA Nếu nhìn cấu trúc tổng thể mảng LUT ngồi đầu vào kể cịn hỗ trợ thêm đầu vào bổ xung từ khối logic phân bố trước sau nâng tổng số đầu vào LUT lên chân Cấu trúc nhằm tăng tốc số học logic 1.2.2 Hệ thống mạch liên kết Mạng liên kết FPGA cấu thành từ đường kết nối theo hai phương ngang đứng, tùy theo loại FPGA mà đường kết nối chia thành nhóm khác nhau, ví dụ XC4000 Xilinx có loại kết nối: ngắn, dài dài Các đường kết nối nối với thông qua khối chuyển mạch lập trình (programable switch), khối chuyển mạch chứa số lượng nút chuyển lập trình đảm bảo cho dạng liên kết phức tạp khác 1.2.3 Các phần tử tích hợp sẵn Ngồi khối logic tùy theo loại FPGA khác mà có phần tử tích hợp thêm khác nhau, ví dụ để thiết kế ứng dụng SoC, dòng Virtex 4,5 Xilinx có chứa nhân xử lý PowerPC, hay Atmel FPSLIC tích hợp nhân ARV…, hay cho ứng dụng xử lý tín hiệu số DSP FPGA tích hợp DSP Slide nhân cộng tốc độ cao, thực hàm A*B+C, ví dụ dịng Virtex Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit 1.3 NGÔN NGỮ MƠ TẢ PHẦN CỨNG (HDL) Ngơn ngữ mơ tả phần cứng (HDL) ngơn ngữ lập trình phần mềm dùng để mơ hình họat động mong muốn phần cứng Có hai khía cạnh mà HDL tạo điều kiện để mơ tả phần cứng: mơ hình hành vi trừu tượng mơ hình cấu trúc phần cứng Mơ hình hành vi trừu tượng Ngôn ngữ mô tả phần cứng tạo điều kiện dễ dàng cho việc mô tả trừu tượng hành vi phần cứng mục đích đặc tả (chỉ rõ chi tiết kỹ thuật) Hành vi khơng bị chi phối bới khía cạnh cấu trúc thiết kế ý định phần cứng Mơ hình cấu trúc phần cứng Cấu trúc phần cứng có khả mơ hình ngơn ngữ mô tả phần cứng mà không cần quan tâm đến hành vi thiết kế Năm 1980 Quốc phòng Mỹ (DOD) muốn thực việc thiết kế mạch tự dẫn chứng, muốn theo đuổi hệ phương pháp thiết kế tổng quát sử dụng lại với cơng nghệ Rõ ràng có nhu cầu cho ngơn ngữ lập trình chuẩn để mơ tả chức cấu trúc mạch số việc thiết kế vi mạch (IC) Sau DOD tài trợ cho dự án thuộc chương trình vi mạch có tốc độ cao VHSIC (very high speed integrated circuit) để tạo ngôn ngữ mô tả phần cứng chuẩn Kết dự án tạo ngôn ngữ mô tả phần cứng VHSIC hay thường gọi VHDL (VHSIC Hardware Description Language-Ngôn ngữ miêu tả phần cứng VHSIC) VHDL xem kết hợp ngôn ngữ sau : ngôn ngữ + ngôn ngữ đồng thời + netlist + định thời + mô Do cấu trúc VHDL cho phép thể cách thức thực theo kiểu song song hay hệ thống số có khơng có timing Nó cho phép vẽ mơ hình hệ thống liên kết nối thành phần VHDL dành cho tổng hợp mạch (synthesis) mơ mạch (simulation) Dù VHDL mơ cách đầy đủ, tất cấu trúc VHDL tổng hợp 1.3.1 Các ưu điểm VHDL - Chương trình VHDL viết theo nhiều cấu trúc khác nhau: Ngẫu nhiên, tuần tự, nối chân, định thời rõ, ngôn ngữ sinh dạng sóng - VHDL ngơn ngữ phân cấp, hệ thống số mơ kết nối khối mà khối thực khối khác nhỏ - Cung cấp cách mềm dẻo phương thức thiết kế xuống, lên, tổ hợp hai - Cung cấp hai mode đồng không đồng - Linh hoạt kĩ thuật mô số sử dụng biểu đồ trạng thái, thuật toán, hàm Boolean - Có tính đại chúng: VHDL phát triển bảo trợ phủ Mỹ tiêu chuẩn IEEE VHDL hỗ trợ nhiều nhà sản xuất thiết bị nhiều nhà cung cấp công cụ thiết kế mô hệ thống - VHDL cung cấp kiểu mẫu viết khác nhau: structural, dataflow behavioral - Không giới hạn độ lớn thiết kế sử dụng ngơn ngữ - VHDL hồn tồn độc lập với công nghệ chế tạo phần cứng Một mô tả hệ thống dùng VHDL thiết kế mức cổng chuyển thành tổng hợp mạch khác tuỳ thuộc công nghệ chế tạo phần cứng đời áp dụng cho hệ thống thiết kế - Khả định nghĩa kiểu liệu cung cấp công cụ hữu hiệu cho thiết kế mô công nghệ với mức cao 1.3.2 Cấu trúc mơ hình hệ thống sử dụng ngơn ngữ VHDL VHDL ngôn ngữ mô tả phần cứng mà sử dụng để làm mơ hình hệ thống số Hệ thống số đơn giản cổng logic hay phức tạp hệ thống hoàn chỉnh Các khối xây dựng nên ngôn ngữ VHDL gọi khối thiết kế Có khối thiết kế chính: - Khai báo Entity (Thực thể) - Khai báo Architecture (Kiến trúc) - Khai báo Configuration (Cấu hình) - Đơi ta s d ụ n g c c g ó i (Packages) mơ hình kiểm tra hoạt động hệ thống (Testbench) 1.3.2.1 Entity (Thực thể) Khai báo thực thể VHDL phần định nghĩa tiêu phía ngồi phần tử hay hệ thống Khai báo Entity tên Entity liệt kê cổng vào/ra Các cổng (dây) tín hiệu mà qua entity giao tiếp với mơi trường bên ngồi Ví dụ, mạch bán tổng hình : Hình 1.3 Bộ bán tổng Khai báo Entity sau: entity HALF-ADDER is port ( A, B : in BIT; SUM, CARRY : out BIT); end HATF-ADDER; Bộ bán cộng gồm có hai đầu vào A B; hai đầu SUM CARRY, BIT kiểu cấu trúc ngôn ngữ định nghĩa trước FPGA 1.3.2.2 Architecture (Kiến trúc) Phần thứ mã nguồn VHDL khai báo Architecture Mỗi khai báo Entity phải kèm với Architecture tương ứng Khai báo Architecture chương trình phải kết hợp tên Architecture Entity chương trình Phần thân Architecture bao gồm khai báo tín hiệu bên trong, phần tử bên hệ thống, hay hàm thủ tục mô tả hoạt động hệ thống Tên Architecture nhãn đặt tuỳ theo người viết chương trình Cấu trúc bên Architecture viết theo số kiểu mẫu sau: -Tập hợp kết nối bên thiết bị -Tập câu lệnh ngẫu nhiên -Tập câu lệnh -Kết hợp ba dạng Các kiểu mơ hình mơ tả cụ thể sau: ¾ Kiểu kiến trúc Kiểu xây dựng dựa tập thành phần kết nối Ví dụ bán tổng sau đây: architecture HA-STRUCTURE of HALF-ADDER is component XOR2 port (X,Y : in BIT; 54 So sánh So sánh A A ? Y Tín hiệu A Y Tín hiệu B Y Tín hiệu C N So saùnh B B ? N So saùnh C C ? N Tín hiệu lạ Hình 3.22 : Lưu đồ so sánh để tạo tín hiệu hiển thị 55 3.3.3 Hiển thị kết : Trên kit spartan 3e có chức hiển thị LCD, đó, tơi chọn hiển thị kết LCD Như ta biết, LCD thường dùng chế độ đường liệu, LCD kit làm việc với chế đường liệu Khi làm việc chế độ đường liệu giãm số đường mạch in kết nối làm phức tạp trình điều khiển, hiển thị LCD Trước tiên ta phải cài đặt chế độ hoạt động cho LCD theo lưu đồ sau : Khởi động delay > 15ms ghi bit ="0011" delay > 4.1ms ghi bit ="0011" delay > 100us ghi bit ="0011" delay > 40us ghi bit ="0010" delay >40us End Hình 3.23 : Lưu đồ cài đặt ban đầu cho LCD 56 Sau cài đặt ban đầu cho LCD, ta tiến hành cài đặt chức , cài đặt tín hiệu ngõ vào, cài đặt hiển thị… Cho LCD lưu đồ sau : Cài đặt ban đầu Cài đặt chức RS=0 CMD=28 hex Cài đặt ngõ vào RS=0 CMD=06 hex Cài đặt hiển thị RS=0 CMD=0C hex Xóa hiển thị RS=0 CMD=01hex Delay > 1.64 ms Cài đặt địa RS=0 CMD= Cài đặt liệu RS=1 CMD= Hình 3.24 : Cài đặt chế độ làm việc cho LCD 57 Process( tín hiệu nhận dạng) Tín hiệu A Y Hiển thị = CHÀO A Y Hiển thị = CHÀO B Y Hiển thị = CHÀO C N Tín hiệu B N Tín hiệu C N Hiển thị = NGƯỜI LẠ Hình 3.25 : Lưu đồ hiển thị kết Ta dùng ghi hiển thị chứa chuổi giá trị cần hiển thị LCD Ứng với tín hiệu nhận sau phân tích, ghi hiển thị thay chuổi giá trị để hiển thị người 58 CHƯƠNG : KẾT QUẢ THỰC HIỆN 4.1 KẾT QUẢ MÔ PHỎNG MATLAB : Trong mục này, trình bày số kết để kiểm nghiệm giải thuật đưa Tôi chọn matlab thực mô đưa kết giải thuật nhỏ trình phân tích, nhận dạng dấu vân tay Kết trình bày từ hình 4.1 dến hình 4.9 Hình 4.1 : Ảnh dấu vân tay ban đầu Hình 4.2 : Ảnh sau làm mãnh 59 Hình 4.3 : Kết ảnh sau lọc theo hướng ngang ( hướng độ) Hình 4.4 : Kết ảnh sau lọc theo hướng 45 độ 60 Hình 4.5 : Kết ảnh sau lọc theo hướng dọc ( hướng 90 độ) Hình 4.6 : Kết ảnh sau lọc theo hướng 135 độ 61 Hình 4.7 : Ảnh tổng hợp Hình 4.8 : Kết nhận dạng người A 62 Trong trường hợp này, ảnh f2 có cách xoay ảnh f1 góc 180 độ Khi vị trí tọa độ dấu vân tay f2 khác hoàn toàn với f1 Sau ta tiến hành lấy sơ sở liệu cách dùng hàm dulieu(f) Hàm dulieu(f) đề cập phần phụ lục dt1 sở liệu f1, liệu gốc dt2 sở liệu f2, liệu cần so sánh Kết so sánh trả thông qua hàm sosanh(dt2,dt1) Ta thấy kết nhận dạng người A Hình 4.9 : Kết nhận dạng với mẫu khác Trường hợp này, dt3 không phù hợp với dt1 nên kết trả người A mà kết khác, ví dụ " nguoi b gian xao" Từ kết ta thấy 63 tiến hành so sánh sở liệu người cho kết mong muốn 4.2 KẾT QUẢ THỰC HIỆN TRÊN KIT FPGA : Sau thực kiểm nghiệm giải thuật máy tính chương trình Matlab, tơi tiến hành thực kit Spartan XC3S500E dựa theo giải thuật trình bày chương Kết đạt kit hiển thị nguời nhận dạng, mẫu nhận dạng phù hợp với mẫu lưu trữ người Kết hiển thị thứ nhất, ta thấy LCD hiển thị “ CHAO A “ Điều có nghĩa kit nhận mẫu dấu vân tay, tiến hành phân tích so sánh với liệu gốc lưu kit, trường hợp này, mẫu phù hợp với liệu người A Vì thế, tín hiệu hiển thị tạo ra, ứng với việc yêu cầu module điều khiển LCD hiển thị kết “ CHAO A” Hình 4.10 : Kết nhận dạng người A 64 Kết hiển thị thứ hai, ta thấy LCD hiển thị “ NGUOI LA “ Điều có nghĩa kit nhận mẫu dấu vân tay, tiến hành phân tích so sánh với liệu gốc lưu kit, trường hợp này, mẫu không phù hợp với liệu lưu kit Vì thế, tín hiệu hiển thị tạo ra, ứng với việc yêu cầu module điều khiển LCD hiển thị kết “ NGUOI LA” Hình 4.11 : Kết nhận dạng không phù hợp 65 CHƯƠNG : KẾT LUẬN 5.1 KẾT LUẬN Đề tài thực nhằm tạo thiết bị nhận dạng nhỏ gọn phép người số người sử dụng hệ thống hay thiết bị u cầu địi hỏi đề tài nhận dạng dấu vân tay phải thực phần cứng Thế nhưng, thực kit Spartan XC3S500E gặp phải nhiều vấn đề khó khăn : tài nguyên kit, phép toán hổ trợ, đặc biệt phép toán thực với số thực giao tiếp kit với thiết bị… Chính điều gây khó khăn việc chọn xây dựng giải thuật nhận dạng Trong chương 3, xây dựng giải thuật nhận dạng mới, mô Matlab, nhằm mục đích tạo thuận tiện thực FPGA hạn chế tối đa phép tốn Nhưng bù lại, khối lượng phân tích giá trị pixel lớn, nhiều giải thuật nhỏ tiêu tốn nhiều thời gian việc tạo sở liệu cho dấu vân tay Bên cạnh đó, giải thuật dựa phân tích giá trị pixel nên trình làm mảnh ảnh lọc ảnh ta vơ tình loại bỏ giá trị pixel quan trọng, ngược lại, q trình làm bù ảnh tạo số giá trị pixel không mong muốn Nhưng nhìn chung, kết phân tích nhận dạng dấu vân tay Matlab xác so sánh dấu vân tay với liệu gốc dấu vân tay bị thay đổi góc định hướng vị trí pixel Trong đề tài này, tơi thực nhận dạng mẫu dấu vân tay có sẵn máy tính, sau truyền qua cổng COM xuống kit kit nhận dấu vân tay, xử lý, tạo kết hiển thị chương Tôi chưa thực việc nhận dạng dấu vân tay cách nhận dấu vân tay trực tiếp từ đầu đọc dấu vân tay MBF200 66 5.2 CÔNG VIỆC CẦN LÀM THÊM Dựa vào kết thực đề tài này, cần phải thực thêm số công việc sau : - Hoàn thiện giải thuật nhận dạng dấu vân tay trường hợp thực chương trình Matlab thưc kit FPGA - Thực nhận dạng dấu vân tay trực tiếp từ đầu đọc dấu vân tay MBF200 - Tạo thiết bị nhận dạng dấu vân tay có kết nối, điều khiển thiết bị 67 TÀI LIỆU THAM KHẢO Raymond Thai, ”fingerprint image Enhancement and minutiae extraction”, the university of Western Australia ,2003 Rafael C.Gonzalez, Richard E.Woods, Steven L.Eddins, “ Digital image using matlab processing”, Prentice hall, Upper saddle river, NJ, 2004 James R.Armstrong, F Gail Gray, “ VHDL design Representation and synthesis “, second edition ,Prentice Hall, upper saddle River, NJ 07458 Charles H Roth, Jr, “ Digital Systems design using VHDL”, the university of texas at Austin, PWS Publishing Company Etugrul Saatci, vedat tavsanoglu, “ Fingerprint image Enhancement using CNN Gabor_type filter”, south bank University, London Mian Qin, “ A fast and low cost SIMD Architecture for Fingerprint image enhancement”, Technische University Delft “ Spartan FPGA family complete data sheet”, xilinc, Inc “ Spartan 3e data sheet”, xilinc, Inc Các trang web có liên quan, gồm từ khóa : identification fingerprint using matlab, regconize image fingerprint, Fingerprint image Enhancement, use VHDL to identify fingerprint image… LÝ LỊCH TRÍCH NGANG : Họ tên: Nguyễn Lý Minh Thiện Giới tính : nam Ngày, tháng, năm sinh: 15/ / 1982 Nơi sinh: Tp HCM Dân tộc : Tôn giáo : không Kinh Quê quán : ấp Phước Toàn, xã Long Hiệp, huyện Bến Lức, tỉnh Long An Địa liên lạc: 467 Minh Phụng P10, Q11, Tp HCM QUÁ TRÌNH ĐÀO TẠO - Từ năm 2000 đến 2005 : học đại học Trường ĐH BÁCH KHOA Tp.HCM, khoa Điện- Điện Tử, chuyên nghành Điện Tử Viễn thông - Từ năm 2006 đến 2008 : học cao học Trường ĐH BÁCH KHOA Tp.HCM, chuyên nghành Kĩ Thuật Điện Tử Q TRÌNH CƠNG TÁC - 6/2005 – 4/ 2006 : công tác Công ty cổ phần Đầu Tư - Xây Dựng Bưu Điện, chi nhánh phía nam - 5/2007 đến : cơng tác trường CĐ Công Nghệ Thực Phẩm Tp.HCM, khoa Điện- Điện tử ... NHẬN DẠNG DẤU VÂN TAY DÙNG FPGA 2- NHIỆM VỤ LUẬN VĂN: - Xây dựng giải thuật dùng matlab để mô giải thuật nhận dạng dấu vân tay - Thực nhận liệu dấu vân tay, xử lý hiển thị kết nhận dạng kit FPGA. .. mẫu dấu vân tay không hồn chỉnh Như vậy, cơng việc q trình nhận dạng dấu vân tay hạn chế sai biệt ảnh dấu vân tay lấy mẫu Nếu không xử lý tốt sai biệt làm cho trình xử lý phức tạp kết nhận dạng. .. đồ nhận dạng dấu vân tay 3.1.2.3 Dấu vân tay : Dấu vân tay ban đầu hình , ma trận hai chiều gồm mxn pixel Mỗi pixel có giá trị từ 255, giá trị mức tối, 255 giá trị mức sáng 37 Hình 3.9 : ảnh dấu

Ngày đăng: 16/02/2021, 18:36

TỪ KHÓA LIÊN QUAN

w