HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

104 103 0
HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Đ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

Nhận dạng chữ số viết tay với FPGA. Bài toán nhận diện chữ số viết tay được xuất hiện trên nhiều bài báo khi lĩnh vực học sâu mới bùng nổ. Nó được sử dụng để so sánh mức độ thành công của học sâu so với các thuật toán thị giác máy tính thông thường (xử lý ảnh), và cũng là cơ sở để phát triển các mạng tích chập phức tạp.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THƠNG BÁO CÁO CUỐI KỲ TRÍ TUỆ NHÂN TẠO VÀ ỨNG DỤNG Đề tài: HANDWRITTEN DIGIT RECONITION ON FPGA Nhóm thực hiện: Sinh viên thực hiện: Giảng viên hướng dẫn: TS VÕ LÊ CƯỜNG LỜI NÓI ĐẦU Trí tuệ nhân tạo ứng dụng nhiều lĩnh vực sống ngưởi Nó phần cách mạng công nghệ 4.0 Trong kì học 20212, chúng em tìm hiểu mơn học Trí tuệ nhân tạo ứng dụng với hướng dẫn Thầy giáo TS Võ Lê Cường anh chị bạn TA Nhờ tham gia mơn học, sau kì học, chúng em trang bị cho khái niệm trí tuệ nhân tạo, tác nhân mơi trường trí tuệ nhân tạo Đặc biệt chúng em tìm hiểu thuật tốn Tìm kiếm, thuật tốn Machine learning hồi quy tuyến tính, định, hồi quy logic, SVM, vv Điều giúp cho chúng em hiểu rõ Trí tuệ nhân tạo nào, thuật tốn Machine learning huấn luyện mơ hình học máy Song song với trình tìm hiểu lý thuyết, chúng em hướng dẫn làm tập lớn mơn học Nhóm chúng em chọn đề tài: “Handwritten Digit Recognition on FPGA”, qua giúp chúng em tìm hiểu lĩnh vực học sâu thị giác máy tính, đặc biệt thực phần cứng Trong trình học tập, với hướng dẫn nhiệt tình Thầy anh chị, bạn TA, chúng em tích lũy kiến thức sở Deep learning, huấn luyện model phần mềm triển khai ngôn ngữ miêu tả phần cứng verilog Dù chúng em cố gắng thực thời gian cuối thực đề tài vào lúc dịch Covid -19 diễn biến phức tạp nên chúng em thực Kit DE-0 kế hoạch ban đầu kì học chúng em tiếp cận với kiến thức huấn luyện mơ hình, lập trình verilog nên gặp nhiều khó khăn, chắn có nhiều chỗ chưa hồn chỉnh, chúng em mong nhận đánh giá, góp ý Thầy anh để chúng em tích lũy thêm kiến thức, trao dồi kinh nghiệm để phục vụ cho công việc tới Chúng em xin gửi đến Thầy TS Võ Lê Cường, anh Phạm Văn Mười, anh Đặng Sơn Tùng, anh Nguyễn Mạnh Tuân, bạn Nguyễn Duy Tường anh chị khác lời cảm ơn chân thành tham gia hướng dẫn hỗ trợ chúng em lớp trình làm tập lớn MỤC LỤC PHÂN CHIA CÔNG VIỆC i DANH MỤC HÌNH VẼ ii DANH MỤC BẢNG BIỂU .iv DANH MỤC TỪ VIẾT TẮT vi TÓM TẮT BÁO CÁO vii CHƯƠNG TỔNG QUAN ĐỀ TÀI .1 1.1 Giới thiệu chung 1.1.1 Lý chọn đề tài 1.1.2 Ý nghĩa đề tài 1.1.3 Kế hoạch chi tiết .3 1.2 Yêu cầu phần cứng đề tài 1.2.1 FPGA board 1.2.2 Camera 1.2.3 LCD 1.3 Các kiến thức Deeplearning 1.3.1 Tìm hiểu chung mạng tích chập 1.3.2 Lớp tích chập (CONV) 1.3.3 Lớp Pooling (POOL) 10 1.3.4 Lớp Fully connected .10 1.4 Các kiến thức lập trình Verilog 10 1.4.1 Định nghĩa 10 1.4.2 Cấu trúc lập trình verilog 11 1.4.3 Các toán tử verilog 13 1.4.4 Verilog number .13 1.4.5 Testbench 14 1.4.6 So sánh Wire reg 14 CHƯƠNG HUẤN LUYỆN MẠNG TRÊN PHẦN MỀM .16 2.1 Nén mạng CNN 16 2.1.1 Tại cần nén .16 2.1.2 Các phương pháp nén 16 2.2 Xây dựng đánh giá kiến trúc mạng CNN .17 2.2.1 Kiến trúc model CNN sử dụng .17 2.2.2 Đánh giá .19 2.2.3 Kết 19 2.3 Tối ưu trọng số 20 2.3.1 Phương pháp giảm kích thước trọng số 20 2.3.2 Kết đánh giá 21 CHƯƠNG TRIỂN KHAI MẠNG TRÊN PHẦN CỨNG 22 3.1 Mô tả hệ thống 22 3.2 Mô tả chức khối 24 3.2.1 Khối RAM 24 3.2.2 Khối database .27 3.2.3 Khối tích chập 30 3.2.4 Khối border 32 3.2.5 Khối addressRAM 35 3.2.6 Khối Maxpooling 37 3.2.7 Khối Dense 39 3.2.8 Khối Result 42 3.2.9 Khối MemmoryWork 43 3.2.10 Khối conv_TOP 45 3.2.11 TOP Layer 48 3.3 Thực kiểm tra liệu 52 KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 54 PHỤ LỤC 55 PHÂN CHIA CÔNG VIỆC DANH MỤC HÌNH Hình 1 Các đầu việc kết đạt Hình Board De0-Nano Hình Board FPGA thiết bị ngoại viCamera .4 Hình Camera OV7670 Hình Sơ đồ chân TFT 3,2” ILI9341 .6 Hình Kiến trúc chung mạng CNN Hình Hoạt động lớp tích chập Hình Input output mạng CNN Hình Fully connected layer 10 Hình 10 Triển khai mạch số với Verilog 11 Hình 11 Cấu trúc Module Verilog 11 Hình 12 Các toán tử verilog 13 Hình 13 Ví dụ mơ testbench 14 Y Hình Kiến trúc Model CNN LWDD 18 Hình 2 Các tham số mạng .19 Hình Loss model 20 Hình Độ xác model .20 Hình Sơ đồ khối hệ thống 22 Hình Sơ đồ triển khai phần cứng 23 Hình 3 Khối RAM 24 Hình Kết testbench khối RAM .27 Hình Khối Database 28 Hình Kết testbench khối Database .29 Hình Khối tích chập 30 Hình Kết testbench khối tích chập 32 Hình Khối Border .33 Hình 10 Kết testbench khối Border 34 Hình 11 Khối addressRAM 35 Hình 12 Kết testbench khối addressRAM .36 Hình 13 Khối Maxpooling .37 Hình 14 Kết testbench khối Maxpooling 39 Hình 15 Khối Dense 39 Hình 16 Kết testbench khối Dense 41 Hình 17 Khối Result 42 Hình 18 Kết testbench khối Result 43 Hình 19 Khối Memmory work .44 Hình 20 Kết mơ khối con_TOP 48 Hình 21 Khối TOP 48 Hình 22 Kết testbench khối TOP step 1-2-3 50 Hình 23 Kết testbench khối TOP step 3-4-5 50 Hình 24 Kết testbench khối TOP step 7-8-9 51 Hình 25 Kết testbench khối TOP step 10 -11-12-13 51 Hình 26 Kết testbench khối TOP step 14-15 51 Hình 27 Kết testbench khối TOP step 16 52 DANH MỤC BẢNG BI Bảng 1 Ý nghĩa chân giao tiếp Camera OV76702 Bảng Ý nghĩa chân giao tiếp LCD Y Bảng Bảng tín hiệu đầu vào khối RAM 24 Bảng Bảng tín hiệu đầu khối RAM 26 Bảng 3 Bảng đánh giá khối RAM 26 Bảng Bảng tín hiệu đầu vào khối Database 28 Bảng Bảng tín hiệu đầu khối Database 28 Bảng Bảng đánh giá khối database .29 Bảng Bảng tín hiệu đầu vào khối tích chập 30 Bảng Bảng tín hiệu đầu khối tích chập 31 Bảng Bảng đánh giá khối tích chập .31 Bảng 10 Bảng tín hiệu đầu vào khối Border 33 Bảng 11 Bảng tín hiệu đầu khối Border .33 Bảng 12 Bảng đánh giá khối border .34 Bảng 13 Bảng tín hiệu đầu vào khối addressRAM 35 Bảng 14 Bảng tín hiệu đầu khối addressRAM 35 Bảng 15 Bảng đánh giá khối addressRAM 36 Bảng 16 Bảng tín hiệu đầu vào khối Maxpooling 37 Bảng 17 Bảng tín hiệu đầu khối pooling 37 Bảng 18 Bảng đánh giá khối Maxpooling 38 Bảng 19 Bảng tín hiệu đầu vào khối Dense 39 Bảng 20 Bảng tín hiệu đầu khối Dense 40 Bảng 21 Bảng tín hiệu đầu vào khối Result 42 Bảng 22 Bảng tín hiệu đầu khối Result 42 Bảng 23 Bảng tín hiệu đầu vào khối Memmory work 44 Bảng 24 Bảng tín hiệu đầu khối Memmory work 45 Bảng 25 Bảng tín hiệu đầu vào khối convTOP 45 Bảng 26 Bảng tín hiệu đầu khối convTOP 47 Bảng 27 Bảng tín hiệu đầo vào khối TOP 48 Bảng 28 Bảng tín hiệu đầu khối TOP 49 storage[251] = 11'b10100000000; // [0.625] storage[252] = 11'b10011100000; // [0.609375] storage[253] = 11'b10011100000; // [0.609375] storage[254] = 11'b10001111000; // [0.55859375] storage[255] = 11'b01011111000; // [0.37109375] storage[256] = 11'b01001000000; // [0.28125] storage[257] = 11'b01101101000; // [0.42578125] storage[258] = 11'b10011011000; // [0.60546875] storage[259] = 11'b10100111000; // [0.65234375] storage[260] = 11'b10101101000; // [0.67578125] storage[261] = 11'b10110000000; // [0.6875] storage[262] = 11'b10110000000; // [0.6875] storage[263] = 11'b10110000000; // [0.6875] storage[264] = 11'b10110000000; // [0.6875] storage[265] = 11'b10110000000; // [0.6875] storage[266] = 11'b10101110000; // [0.6796875] storage[267] = 11'b10101000000; // [0.65625] storage[268] = 11'b10001100000; // [0.546875] storage[269] = 11'b01100110000; // [0.3984375] storage[270] = 11'b01011100000; // [0.359375] storage[271] = 11'b10000110000; // [0.5234375] storage[272] = 11'b10011111000; // [0.62109375] storage[273] = 11'b10101000000; // [0.65625] storage[274] = 11'b10101010000; // [0.6640625] storage[275] = 11'b10101001000; // [0.66015625] storage[276] = 11'b10101000000; // [0.65625] storage[277] = 11'b10100110000; // [0.6484375] storage[278] = 11'b10100010000; // [0.6328125] storage[279] = 11'b10100001000; // [0.62890625] storage[280] = 11'b10011100000; // [0.609375] storage[281] = 11'b10011010000; // [0.6015625] storage[282] = 11'b10000110000; // [0.5234375] storage[283] = 11'b01010011000; // [0.32421875] storage[284] = 11'b01001101000; // [0.30078125] storage[285] = 11'b01111010000; // [0.4765625] storage[286] = 11'b10100000000; // [0.625] storage[287] = 11'b10101000000; // [0.65625] 78 79 storage[288] = 11'b10101110000; // [0.6796875] storage[289] = 11'b10101111000; // [0.68359375] storage[290] = 11'b10110000000; // [0.6875] storage[291] = 11'b10110000000; // [0.6875] storage[292] = 11'b10110001000; // [0.69140625] storage[293] = 11'b10110000000; // [0.6875] storage[294] = 11'b10101110000; // [0.6796875] storage[295] = 11'b10101001000; // [0.66015625] storage[296] = 11'b10001111000; // [0.55859375] storage[297] = 11'b01101000000; // [0.40625] storage[298] = 11'b01010111000; // [0.33984375] storage[299] = 11'b10000010000; // [0.5078125] storage[300] = 11'b10011110000; // [0.6171875] storage[301] = 11'b10100111000; // [0.65234375] storage[302] = 11'b10101010000; // [0.6640625] storage[303] = 11'b10101001000; // [0.66015625] storage[304] = 11'b10100111000; // [0.65234375] storage[305] = 11'b10100110000; // [0.6484375] storage[306] = 11'b10100010000; // [0.6328125] storage[307] = 11'b10100000000; // [0.625] storage[308] = 11'b10011101000; // [0.61328125] storage[309] = 11'b10011000000; // [0.59375] storage[310] = 11'b01111100000; // [0.484375] storage[311] = 11'b01001100000; // [0.296875] storage[312] = 11'b01010011000; // [0.32421875] storage[313] = 11'b10001001000; // [0.53515625] storage[314] = 11'b10100010000; // [0.6328125] storage[315] = 11'b10101010000; // [0.6640625] storage[316] = 11'b10101101000; // [0.67578125] storage[317] = 11'b10101110000; // [0.6796875] storage[318] = 11'b10101110000; // [0.6796875] storage[319] = 11'b10110000000; // [0.6875] storage[320] = 11'b10110000000; // [0.6875] storage[321] = 11'b10110000000; // [0.6875] storage[322] = 11'b10101110000; // [0.6796875] storage[323] = 11'b10101001000; // [0.66015625] storage[324] = 11'b10001110000; // [0.5546875] storage[325] = 11'b01101000000; // [0.40625] storage[326] = 11'b01010110000; // [0.3359375] storage[327] = 11'b10000000000; // [0.5] storage[328] = 11'b10011101000; // [0.61328125] storage[329] = 11'b10100110000; // [0.6484375] storage[330] = 11'b10101000000; // [0.65625] storage[331] = 11'b10101000000; // [0.65625] storage[332] = 11'b10100111000; // [0.65234375] storage[333] = 11'b10100100000; // [0.640625] storage[334] = 11'b10100001000; // [0.62890625] storage[335] = 11'b10011111000; // [0.62109375] storage[336] = 11'b10011100000; // [0.609375] storage[337] = 11'b10010100000; // [0.578125] storage[338] = 11'b01101111000; // [0.43359375] storage[339] = 11'b01000111000; // [0.27734375] storage[340] = 11'b01011100000; // [0.359375] storage[341] = 11'b10001111000; // [0.55859375] storage[342] = 11'b10100100000; // [0.640625] storage[343] = 11'b10101001000; // [0.66015625] storage[344] = 11'b10101100000; // [0.671875] storage[345] = 11'b10101100000; // [0.671875] storage[346] = 11'b10101101000; // [0.67578125] storage[347] = 11'b10101110000; // [0.6796875] storage[348] = 11'b10101110000; // [0.6796875] storage[349] = 11'b10101110000; // [0.6796875] storage[350] = 11'b10101011000; // [0.66796875] storage[351] = 11'b10100110000; // [0.6484375] storage[352] = 11'b10001101000; // [0.55078125] storage[353] = 11'b01100110000; // [0.3984375] storage[354] = 11'b01010101000; // [0.33203125] storage[355] = 11'b10000010000; // [0.5078125] storage[356] = 11'b10011101000; // [0.61328125] storage[357] = 11'b10100100000; // [0.640625] storage[358] = 11'b10101000000; // [0.65625] storage[359] = 11'b10100111000; // [0.65234375] storage[360] = 11'b10100101000; // [0.64453125] storage[361] = 11'b10100011000; // [0.63671875] 80 81 storage[362] = 11'b10100001000; // [0.62890625] storage[363] = 11'b10011110000; // [0.6171875] storage[364] = 11'b10011010000; // [0.6015625] storage[365] = 11'b10010000000; // [0.5625] storage[366] = 11'b01100100000; // [0.390625] storage[367] = 11'b01000111000; // [0.27734375] storage[368] = 11'b01100110000; // [0.3984375] storage[369] = 11'b10010101000; // [0.58203125] storage[370] = 11'b10100011000; // [0.63671875] storage[371] = 11'b10101000000; // [0.65625] storage[372] = 11'b10101011000; // [0.66796875] storage[373] = 11'b10101011000; // [0.66796875] storage[374] = 11'b10101011000; // [0.66796875] storage[375] = 11'b10101100000; // [0.671875] storage[376] = 11'b10101101000; // [0.67578125] storage[377] = 11'b10101011000; // [0.66796875] storage[378] = 11'b10101001000; // [0.66015625] storage[379] = 11'b10100011000; // [0.63671875] storage[380] = 11'b10001010000; // [0.5390625] storage[381] = 11'b01100010000; // [0.3828125] storage[382] = 11'b01010111000; // [0.33984375] storage[383] = 11'b10000110000; // [0.5234375] storage[384] = 11'b10011110000; // [0.6171875] storage[385] = 11'b10100101000; // [0.64453125] storage[386] = 11'b10100101000; // [0.64453125] storage[387] = 11'b10100101000; // [0.64453125] storage[388] = 11'b10100100000; // [0.640625] storage[389] = 11'b10100010000; // [0.6328125] storage[390] = 11'b10100000000; // [0.625] storage[391] = 11'b10011110000; // [0.6171875] storage[392] = 11'b10011001000; // [0.59765625] storage[393] = 11'b10001100000; // [0.546875] storage[394] = 11'b01011111000; // [0.37109375] storage[395] = 11'b01000111000; // [0.27734375] storage[396] = 11'b01101100000; // [0.421875] storage[397] = 11'b10011000000; // [0.59375] storage[398] = 11'b10100100000; // [0.640625] storage[399] = 11'b10100111000; // [0.65234375] storage[400] = 11'b10101001000; // [0.66015625] storage[401] = 11'b10101010000; // [0.6640625] storage[402] = 11'b10101100000; // [0.671875] storage[403] = 11'b10101100000; // [0.671875] storage[404] = 11'b10101100000; // [0.671875] storage[405] = 11'b10101011000; // [0.66796875] storage[406] = 11'b10101001000; // [0.66015625] storage[407] = 11'b10011111000; // [0.62109375] storage[408] = 11'b10000000000; // [0.5] storage[409] = 11'b01010111000; // [0.33984375] storage[410] = 11'b01011010000; // [0.3515625] storage[411] = 11'b10001010000; // [0.5390625] storage[412] = 11'b10011111000; // [0.62109375] storage[413] = 11'b10100101000; // [0.64453125] storage[414] = 11'b10100101000; // [0.64453125] storage[415] = 11'b10100101000; // [0.64453125] storage[416] = 11'b10100011000; // [0.63671875] storage[417] = 11'b10100001000; // [0.62890625] storage[418] = 11'b10011111000; // [0.62109375] storage[419] = 11'b10011101000; // [0.61328125] storage[420] = 11'b10011001000; // [0.59765625] storage[421] = 11'b10001010000; // [0.5390625] storage[422] = 11'b01011111000; // [0.37109375] storage[423] = 11'b01001010000; // [0.2890625] storage[424] = 11'b01101101000; // [0.42578125] storage[425] = 11'b10011001000; // [0.59765625] storage[426] = 11'b10100011000; // [0.63671875] storage[427] = 11'b10100111000; // [0.65234375] storage[428] = 11'b10101000000; // [0.65625] storage[429] = 11'b10101001000; // [0.66015625] storage[430] = 11'b10101010000; // [0.6640625] storage[431] = 11'b10101010000; // [0.6640625] storage[432] = 11'b10101011000; // [0.66796875] storage[433] = 11'b10101011000; // [0.66796875] storage[434] = 11'b10101001000; // [0.66015625] storage[435] = 11'b10011010000; // [0.6015625] 82 83 storage[436] = 11'b01110100000; // [0.453125] storage[437] = 11'b01001100000; // [0.296875] storage[438] = 11'b01011100000; // [0.359375] storage[439] = 11'b10001101000; // [0.55078125] storage[440] = 11'b10100000000; // [0.625] storage[441] = 11'b10100100000; // [0.640625] storage[442] = 11'b10100100000; // [0.640625] storage[443] = 11'b10100100000; // [0.640625] storage[444] = 11'b10100010000; // [0.6328125] storage[445] = 11'b10100000000; // [0.625] storage[446] = 11'b10011110000; // [0.6171875] storage[447] = 11'b10011101000; // [0.61328125] storage[448] = 11'b10011000000; // [0.59375] storage[449] = 11'b10001100000; // [0.546875] storage[450] = 11'b01100100000; // [0.390625] storage[451] = 11'b01001010000; // [0.2890625] storage[452] = 11'b01101001000; // [0.41015625] storage[453] = 11'b10010100000; // [0.578125] storage[454] = 11'b10100010000; // [0.6328125] storage[455] = 11'b10100100000; // [0.640625] storage[456] = 11'b10100111000; // [0.65234375] storage[457] = 11'b10100110000; // [0.6484375] storage[458] = 11'b10100111000; // [0.65234375] storage[459] = 11'b10101010000; // [0.6640625] storage[460] = 11'b10101010000; // [0.6640625] storage[461] = 11'b10101010000; // [0.6640625] storage[462] = 11'b10100111000; // [0.65234375] storage[463] = 11'b10001111000; // [0.55859375] storage[464] = 11'b01100010000; // [0.3828125] storage[465] = 11'b01000110000; // [0.2734375] storage[466] = 11'b01100010000; // [0.3828125] storage[467] = 11'b10010000000; // [0.5625] storage[468] = 11'b10100000000; // [0.625] storage[469] = 11'b10100011000; // [0.63671875] storage[470] = 11'b10100011000; // [0.63671875] storage[471] = 11'b10100010000; // [0.6328125] storage[472] = 11'b10100000000; // [0.625] storage[473] = 11'b10011111000; // [0.62109375] storage[474] = 11'b10011110000; // [0.6171875] storage[475] = 11'b10011100000; // [0.609375] storage[476] = 11'b10011010000; // [0.6015625] storage[477] = 11'b10010001000; // [0.56640625] storage[478] = 11'b01110001000; // [0.44140625] storage[479] = 11'b01001100000; // [0.296875] storage[480] = 11'b01100110000; // [0.3984375] storage[481] = 11'b10010010000; // [0.5703125] storage[482] = 11'b10100000000; // [0.625] storage[483] = 11'b10100101000; // [0.64453125] storage[484] = 11'b10100101000; // [0.64453125] storage[485] = 11'b10100111000; // [0.65234375] storage[486] = 11'b10101000000; // [0.65625] storage[487] = 11'b10101010000; // [0.6640625] storage[488] = 11'b10101011000; // [0.66796875] storage[489] = 11'b10101001000; // [0.66015625] storage[490] = 11'b10011110000; // [0.6171875] storage[491] = 11'b01111001000; // [0.47265625] storage[492] = 11'b01001101000; // [0.30078125] storage[493] = 11'b01000100000; // [0.265625] storage[494] = 11'b01110010000; // [0.4453125] storage[495] = 11'b10011000000; // [0.59375] storage[496] = 11'b10100011000; // [0.63671875] storage[497] = 11'b10100100000; // [0.640625] storage[498] = 11'b10100101000; // [0.64453125] storage[499] = 11'b10100011000; // [0.63671875] storage[500] = 11'b10100001000; // [0.62890625] storage[501] = 11'b10011111000; // [0.62109375] storage[502] = 11'b10011110000; // [0.6171875] storage[503] = 11'b10011101000; // [0.61328125] storage[504] = 11'b10011011000; // [0.60546875] storage[505] = 11'b10010100000; // [0.578125] storage[506] = 11'b01111101000; // [0.48828125] storage[507] = 11'b01010010000; // [0.3203125] storage[508] = 11'b01100010000; // [0.3828125] storage[509] = 11'b10001110000; // [0.5546875] 84 85 storage[510] = 11'b10011111000; // [0.62109375] storage[511] = 11'b10100011000; // [0.63671875] storage[512] = 11'b10100101000; // [0.64453125] storage[513] = 11'b10100110000; // [0.6484375] storage[514] = 11'b10101000000; // [0.65625] storage[515] = 11'b10101010000; // [0.6640625] storage[516] = 11'b10101010000; // [0.6640625] storage[517] = 11'b10101000000; // [0.65625] storage[518] = 11'b10001101000; // [0.55078125] storage[519] = 11'b01011111000; // [0.37109375] storage[520] = 11'b01000000000; // [0.25] storage[521] = 11'b01001000000; // [0.28125] storage[522] = 11'b10000011000; // [0.51171875] storage[523] = 11'b10011101000; // [0.61328125] storage[524] = 11'b10100100000; // [0.640625] storage[525] = 11'b10100110000; // [0.6484375] storage[526] = 11'b10100011000; // [0.63671875] storage[527] = 11'b10100011000; // [0.63671875] storage[528] = 11'b10100001000; // [0.62890625] storage[529] = 11'b10011111000; // [0.62109375] storage[530] = 11'b10011110000; // [0.6171875] storage[531] = 11'b10011100000; // [0.609375] storage[532] = 11'b10011001000; // [0.59765625] storage[533] = 11'b10010101000; // [0.58203125] storage[534] = 11'b10000110000; // [0.5234375] storage[535] = 11'b01011110000; // [0.3671875] storage[536] = 11'b01010111000; // [0.33984375] storage[537] = 11'b10000010000; // [0.5078125] storage[538] = 11'b10011100000; // [0.609375] storage[539] = 11'b10100001000; // [0.62890625] storage[540] = 11'b10100011000; // [0.63671875] storage[541] = 11'b10100101000; // [0.64453125] storage[542] = 11'b10100110000; // [0.6484375] storage[543] = 11'b10101001000; // [0.66015625] storage[544] = 11'b10101001000; // [0.66015625] storage[545] = 11'b10011111000; // [0.62109375] storage[546] = 11'b01111100000; // [0.484375] storage[547] = 11'b01001011000; // [0.29296875] storage[548] = 11'b00111010000; // [0.2265625] storage[549] = 11'b01010010000; // [0.3203125] storage[550] = 11'b10001011000; // [0.54296875] storage[551] = 11'b10011111000; // [0.62109375] storage[552] = 11'b10100101000; // [0.64453125] storage[553] = 11'b10100011000; // [0.63671875] storage[554] = 11'b10100010000; // [0.6328125] storage[555] = 11'b10100000000; // [0.625] storage[556] = 11'b10011110000; // [0.6171875] storage[557] = 11'b10011101000; // [0.61328125] storage[558] = 11'b10011100000; // [0.609375] storage[559] = 11'b10011011000; // [0.60546875] storage[560] = 11'b10010111000; // [0.58984375] storage[561] = 11'b10010110000; // [0.5859375] storage[562] = 11'b10001101000; // [0.55078125] storage[563] = 11'b01101111000; // [0.43359375] storage[564] = 11'b01010100000; // [0.328125] storage[565] = 11'b01110010000; // [0.4453125] storage[566] = 11'b10010111000; // [0.58984375] storage[567] = 11'b10011111000; // [0.62109375] storage[568] = 11'b10100010000; // [0.6328125] storage[569] = 11'b10100011000; // [0.63671875] storage[570] = 11'b10100111000; // [0.65234375] storage[571] = 11'b10100111000; // [0.65234375] storage[572] = 11'b10101000000; // [0.65625] storage[573] = 11'b10010111000; // [0.58984375] storage[574] = 11'b01101101000; // [0.42578125] storage[575] = 11'b01000010000; // [0.2578125] storage[576] = 11'b00111010000; // [0.2265625] storage[577] = 11'b01100001000; // [0.37890625] storage[578] = 11'b10010011000; // [0.57421875] storage[579] = 11'b10100001000; // [0.62890625] storage[580] = 11'b10100101000; // [0.64453125] storage[581] = 11'b10100010000; // [0.6328125] storage[582] = 11'b10100000000; // [0.625] storage[583] = 11'b10011111000; // [0.62109375] 86 87 storage[584] = 11'b10011110000; // [0.6171875] storage[585] = 11'b10011100000; // [0.609375] storage[586] = 11'b10011010000; // [0.6015625] storage[587] = 11'b10011001000; // [0.59765625] storage[588] = 11'b10010111000; // [0.58984375] storage[589] = 11'b10010111000; // [0.58984375] storage[590] = 11'b10010011000; // [0.57421875] storage[591] = 11'b10000010000; // [0.5078125] storage[592] = 11'b01011100000; // [0.359375] storage[593] = 11'b01100011000; // [0.38671875] storage[594] = 11'b10001010000; // [0.5390625] storage[595] = 11'b10011101000; // [0.61328125] storage[596] = 11'b10100001000; // [0.62890625] storage[597] = 11'b10100011000; // [0.63671875] storage[598] = 11'b10100100000; // [0.640625] storage[599] = 11'b10100101000; // [0.64453125] storage[600] = 11'b10011111000; // [0.62109375] storage[601] = 11'b10000000000; // [0.5] storage[602] = 11'b01010010000; // [0.3203125] storage[603] = 11'b00111001000; // [0.22265625] storage[604] = 11'b01000000000; // [0.25] storage[605] = 11'b01110110000; // [0.4609375] storage[606] = 11'b10011010000; // [0.6015625] storage[607] = 11'b10100010000; // [0.6328125] storage[608] = 11'b10100011000; // [0.63671875] storage[609] = 11'b10100001000; // [0.62890625] storage[610] = 11'b10100000000; // [0.625] storage[611] = 11'b10011111000; // [0.62109375] storage[612] = 11'b10011101000; // [0.61328125] storage[613] = 11'b10011011000; // [0.60546875] storage[614] = 11'b10011001000; // [0.59765625] storage[615] = 11'b10010111000; // [0.58984375] storage[616] = 11'b10010110000; // [0.5859375] storage[617] = 11'b10010110000; // [0.5859375] storage[618] = 11'b10010110000; // [0.5859375] storage[619] = 11'b10001101000; // [0.55078125] storage[620] = 11'b01110011000; // [0.44921875] storage[621] = 11'b01010101000; // [0.33203125] storage[622] = 11'b01101110000; // [0.4296875] storage[623] = 11'b10010000000; // [0.5625] storage[624] = 11'b10011100000; // [0.609375] storage[625] = 11'b10100000000; // [0.625] storage[626] = 11'b10100000000; // [0.625] storage[627] = 11'b10011110000; // [0.6171875] storage[628] = 11'b10001000000; // [0.53125] storage[629] = 11'b01011001000; // [0.34765625] storage[630] = 11'b00111010000; // [0.2265625] storage[631] = 11'b00111010000; // [0.2265625] storage[632] = 11'b01010101000; // [0.33203125] storage[633] = 11'b10001000000; // [0.53125] storage[634] = 11'b10011100000; // [0.609375] storage[635] = 11'b10100000000; // [0.625] storage[636] = 11'b10100000000; // [0.625] storage[637] = 11'b10011111000; // [0.62109375] storage[638] = 11'b10011101000; // [0.61328125] storage[639] = 11'b10011100000; // [0.609375] storage[640] = 11'b10011010000; // [0.6015625] storage[641] = 11'b10010111000; // [0.58984375] storage[642] = 11'b10010110000; // [0.5859375] storage[643] = 11'b10010101000; // [0.58203125] storage[644] = 11'b10010100000; // [0.578125] storage[645] = 11'b10010100000; // [0.578125] storage[646] = 11'b10010110000; // [0.5859375] storage[647] = 11'b10010011000; // [0.57421875] storage[648] = 11'b10000100000; // [0.515625] storage[649] = 11'b01011100000; // [0.359375] storage[650] = 11'b01001100000; // [0.296875] storage[651] = 11'b01100000000; // [0.375] storage[652] = 11'b01111110000; // [0.4921875] storage[653] = 11'b10010001000; // [0.56640625] storage[654] = 11'b10010011000; // [0.57421875] storage[655] = 11'b10000100000; // [0.515625] storage[656] = 11'b01011111000; // [0.37109375] storage[657] = 11'b00111110000; // [0.2421875] 88 89 storage[658] = 11'b00111001000; // [0.22265625] storage[659] = 11'b01001101000; // [0.30078125] storage[660] = 11'b01111010000; // [0.4765625] storage[661] = 11'b10011000000; // [0.59375] storage[662] = 11'b10011110000; // [0.6171875] storage[663] = 11'b10011110000; // [0.6171875] storage[664] = 11'b10011110000; // [0.6171875] storage[665] = 11'b10011101000; // [0.61328125] storage[666] = 11'b10011100000; // [0.609375] storage[667] = 11'b10011010000; // [0.6015625] storage[668] = 11'b10011000000; // [0.59375] storage[669] = 11'b10010111000; // [0.58984375] storage[670] = 11'b10010110000; // [0.5859375] storage[671] = 11'b10010011000; // [0.57421875] storage[672] = 11'b10010011000; // [0.57421875] storage[673] = 11'b10010101000; // [0.58203125] storage[674] = 11'b10010110000; // [0.5859375] storage[675] = 11'b10010110000; // [0.5859375] storage[676] = 11'b10001111000; // [0.55859375] storage[677] = 11'b01110111000; // [0.46484375] storage[678] = 11'b01001011000; // [0.29296875] storage[679] = 11'b00111101000; // [0.23828125] storage[680] = 11'b01001000000; // [0.28125] storage[681] = 11'b01010100000; // [0.328125] storage[682] = 11'b01010101000; // [0.33203125] storage[683] = 11'b01001000000; // [0.28125] storage[684] = 11'b00111100000; // [0.234375] storage[685] = 11'b00111101000; // [0.23828125] storage[686] = 11'b01010010000; // [0.3203125] storage[687] = 11'b01111010000; // [0.4765625] storage[688] = 11'b10010111000; // [0.58984375] storage[689] = 11'b10011101000; // [0.61328125] storage[690] = 11'b10011110000; // [0.6171875] storage[691] = 11'b10011100000; // [0.609375] storage[692] = 11'b10011101000; // [0.61328125] storage[693] = 11'b10011100000; // [0.609375] storage[694] = 11'b10011010000; // [0.6015625] storage[695] = 11'b10011001000; // [0.59765625] storage[696] = 11'b10010111000; // [0.58984375] storage[697] = 11'b10010110000; // [0.5859375] storage[698] = 11'b10010101000; // [0.58203125] storage[699] = 11'b10010010000; // [0.5703125] storage[700] = 11'b10010001000; // [0.56640625] storage[701] = 11'b10010011000; // [0.57421875] storage[702] = 11'b10010101000; // [0.58203125] storage[703] = 11'b10010110000; // [0.5859375] storage[704] = 11'b10010100000; // [0.578125] storage[705] = 11'b10001100000; // [0.546875] storage[706] = 11'b01110000000; // [0.4375] storage[707] = 11'b01001000000; // [0.28125] storage[708] = 11'b00110111000; // [0.21484375] storage[709] = 11'b00110101000; // [0.20703125] storage[710] = 11'b00110110000; // [0.2109375] storage[711] = 11'b00111100000; // [0.234375] storage[712] = 11'b01001000000; // [0.28125] storage[713] = 11'b01100100000; // [0.390625] storage[714] = 11'b10000100000; // [0.515625] storage[715] = 11'b10011000000; // [0.59375] storage[716] = 11'b10011100000; // [0.609375] storage[717] = 11'b10011100000; // [0.609375] storage[718] = 11'b10011100000; // [0.609375] storage[719] = 11'b10011011000; // [0.60546875] storage[720] = 11'b10011011000; // [0.60546875] storage[721] = 11'b10011010000; // [0.6015625] storage[722] = 11'b10011001000; // [0.59765625] storage[723] = 11'b10010111000; // [0.58984375] storage[724] = 11'b10010101000; // [0.58203125] storage[725] = 11'b10010100000; // [0.578125] storage[726] = 11'b10010011000; // [0.57421875] storage[727] = 11'b10010000000; // [0.5625] storage[728] = 11'b10001111000; // [0.55859375] storage[729] = 11'b10010010000; // [0.5703125] storage[730] = 11'b10010011000; // [0.57421875] storage[731] = 11'b10010100000; // [0.578125] 90 91 storage[732] = 11'b10010101000; // [0.58203125] storage[733] = 11'b10010100000; // [0.578125] storage[734] = 11'b10001100000; // [0.546875] storage[735] = 11'b01110111000; // [0.46484375] storage[736] = 11'b01011010000; // [0.3515625] storage[737] = 11'b01001010000; // [0.2890625] storage[738] = 11'b01001111000; // [0.30859375] storage[739] = 11'b01100101000; // [0.39453125] storage[740] = 11'b10000001000; // [0.50390625] storage[741] = 11'b10010011000; // [0.57421875] storage[742] = 11'b10011011000; // [0.60546875] storage[743] = 11'b10011100000; // [0.609375] storage[744] = 11'b10011011000; // [0.60546875] storage[745] = 11'b10011011000; // [0.60546875] storage[746] = 11'b10011010000; // [0.6015625] storage[747] = 11'b10011010000; // [0.6015625] storage[748] = 11'b10011010000; // [0.6015625] storage[749] = 11'b10011001000; // [0.59765625] storage[750] = 11'b10010111000; // [0.58984375] storage[751] = 11'b10010101000; // [0.58203125] storage[752] = 11'b10010100000; // [0.578125] storage[753] = 11'b10010011000; // [0.57421875] storage[754] = 11'b10010001000; // [0.56640625] storage[755] = 11'b10001110000; // [0.5546875] storage[756] = 11'b10001101000; // [0.55078125] storage[757] = 11'b10001111000; // [0.55859375] storage[758] = 11'b10010010000; // [0.5703125] storage[759] = 11'b10010100000; // [0.578125] storage[760] = 11'b10010110000; // [0.5859375] storage[761] = 11'b10010111000; // [0.58984375] storage[762] = 11'b10011000000; // [0.59375] storage[763] = 11'b10010100000; // [0.578125] storage[764] = 11'b10001100000; // [0.546875] storage[765] = 11'b10000110000; // [0.5234375] storage[766] = 11'b10001010000; // [0.5390625] storage[767] = 11'b10010100000; // [0.578125] storage[768] = 11'b10011010000; // [0.6015625] storage[769] = 11'b10011100000; // [0.609375] storage[770] = 11'b10011100000; // [0.609375] storage[771] = 11'b10011011000; // [0.60546875] storage[772] = 11'b10011010000; // [0.6015625] storage[773] = 11'b10011001000; // [0.59765625] storage[774] = 11'b10011001000; // [0.59765625] storage[775] = 11'b10011001000; // [0.59765625] storage[776] = 11'b10011000000; // [0.59375] storage[777] = 11'b10010111000; // [0.58984375] storage[778] = 11'b10010101000; // [0.58203125] storage[779] = 11'b10010100000; // [0.578125] storage[780] = 11'b10010011000; // [0.57421875] storage[781] = 11'b10010010000; // [0.5703125] storage[782] = 11'b10010000000; // [0.5625] storage[783] = 11'b10001101000; // [0.55078125] end endmodule 92 ... Wieght Digital Detection CNN Convolutional Neural Network FPGA Field Programmable Gate Arrays TÓM TẮT BÁO CÁO Trong báo cáo tập lớn này, chúng em trình bày nội dung thực đề tài: ? ?Handwritten digital... lớp convolution, liệu từ RAM module thông qua Control module đưa đến khối Convolution layers module Khối tiếp tục gọi tới hàm border khối Border control module hàm tích chập khối Convolution blocks... huấn luyện mơ hình học máy Song song với q trình tìm hiểu lý thuyết, chúng em hướng dẫn làm tập lớn mơn học Nhóm chúng em chọn đề tài: ? ?Handwritten Digit Recognition on FPGA? ??, qua giúp chúng em

Ngày đăng: 25/08/2021, 17:30

Hình ảnh liên quan

Hình 1.2. Board De0-Nano - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 1.2..

Board De0-Nano Xem tại trang 16 của tài liệu.
Khả năng tái cấu hình cho phép chỉnh sửa thiết kế cho đến khi đạt yêu cầu mà không cần xây dựng các con chip đắt đỏ. - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

h.

ả năng tái cấu hình cho phép chỉnh sửa thiết kế cho đến khi đạt yêu cầu mà không cần xây dựng các con chip đắt đỏ Xem tại trang 16 của tài liệu.
Hình 1.4. Camera OV7670 - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 1.4..

Camera OV7670 Xem tại trang 17 của tài liệu.
Bảng 1.2. Ý nghĩa các chân giao tiếp LCD - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Bảng 1.2..

Ý nghĩa các chân giao tiếp LCD Xem tại trang 19 của tài liệu.
Hình 1. 9. Fully connected layer - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 1..

9. Fully connected layer Xem tại trang 22 của tài liệu.
Hình 1. 10. Triển khai mạch số với Verilog - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 1..

10. Triển khai mạch số với Verilog Xem tại trang 23 của tài liệu.
Hình 1. 11. Cấu trúc một Module trong Verilog - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 1..

11. Cấu trúc một Module trong Verilog Xem tại trang 24 của tài liệu.
Hình 1. 11. Cấu trúc một Module trong Verilog - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 1..

11. Cấu trúc một Module trong Verilog Xem tại trang 24 của tài liệu.
Hình 1. 13 Ví dụ về mô phỏng testbench - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 1..

13 Ví dụ về mô phỏng testbench Xem tại trang 26 của tài liệu.
Hình 2.2 Các tham số của mạng - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 2.2.

Các tham số của mạng Xem tại trang 31 của tài liệu.
Hình ảnh chụp từ camera được chuyển đổi về ảnh xám với kích thước 28*28 và đưa vào mạng nơ-ron để nhận dạng. - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

nh.

ảnh chụp từ camera được chuyển đổi về ảnh xám với kích thước 28*28 và đưa vào mạng nơ-ron để nhận dạng Xem tại trang 34 của tài liệu.
Hình 3.2 Sơ đồ triển khai phần cứng - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3.2.

Sơ đồ triển khai phần cứng Xem tại trang 35 của tài liệu.
Hình 3.3 Khối RAM - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3.3.

Khối RAM Xem tại trang 36 của tài liệu.
3.2.2.3 Bảng tín hiệu: - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

3.2.2.3.

Bảng tín hiệu: Xem tại trang 40 của tài liệu.
Hình 3 .5 Khối Database - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3.

5 Khối Database Xem tại trang 40 của tài liệu.
Bảng 3 .6 Bảng đánh giá khối database - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Bảng 3.

6 Bảng đánh giá khối database Xem tại trang 41 của tài liệu.
Hình 3 .7 Khối tích chập - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3.

7 Khối tích chập Xem tại trang 42 của tài liệu.
- Bảng tín hiệu: - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Bảng t.

ín hiệu: Xem tại trang 42 của tài liệu.
Hình 3 .9 Khối Border - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3.

9 Khối Border Xem tại trang 45 của tài liệu.
- Bảng tín hiệu: - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Bảng t.

ín hiệu: Xem tại trang 49 của tài liệu.
Bảng 3. 18 Bảng đánh giá khối Maxpooling - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Bảng 3..

18 Bảng đánh giá khối Maxpooling Xem tại trang 50 của tài liệu.
Hình 3. 15 Khối Dense - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3..

15 Khối Dense Xem tại trang 51 của tài liệu.
memstartp_lvl - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

memstartp.

_lvl Xem tại trang 55 của tài liệu.
Bảng 3. 22 Bảng tín hiệu đầu ra khối Result - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Bảng 3..

22 Bảng tín hiệu đầu ra khối Result Xem tại trang 55 của tài liệu.
Bảng 3. 23 Bảng tín hiệu đầu vào khối Memmory work Tên đầu vào Kiểu dữ - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Bảng 3..

23 Bảng tín hiệu đầu vào khối Memmory work Tên đầu vào Kiểu dữ Xem tại trang 57 của tài liệu.
- Bảng tín hiệu: - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Bảng t.

ín hiệu: Xem tại trang 57 của tài liệu.
write_addres - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

write.

_addres Xem tại trang 61 của tài liệu.
Hình 3. 20 Kết quả mô phỏng khối con_TOP - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3..

20 Kết quả mô phỏng khối con_TOP Xem tại trang 61 của tài liệu.
Hình 3. 22 Kết quả testbench khối TOP step 1-2-3 - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3..

22 Kết quả testbench khối TOP step 1-2-3 Xem tại trang 63 của tài liệu.
Hình 3. 23 Kết quả testbench khối TOP step 3-4-5 - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

Hình 3..

23 Kết quả testbench khối TOP step 3-4-5 Xem tại trang 64 của tài liệu.

Mục lục

  • PHÂN CHIA CÔNG VIỆC

  • DANH MỤC BẢNG BI

  • TÓM TẮT BÁO CÁO

  • CHƯƠNG 1. TỔNG QUAN ĐỀ TÀI

    • 1.1 Giới thiệu chung

      • 1.1.1 Lý do chọn đề tài

      • 1.1.2 Ý nghĩa của đề tài

      • 1.1.3 Kế hoạch chi tiết

      • 1.3 Các kiến thức cơ bản về Deeplearning

        • 1.3.1 Tìm hiểu chung về mạng tích chập

        • 1.3.2 Lớp tích chập (CONV)

        • 1.4.2 Cấu trúc lập trình verilog

        • 1.4.3 Các toán tử trong verilog

        • 1.4.6 So sánh Wire và reg

        • CHƯƠNG 2. HUẤN LUYỆN MẠNG TRÊN PHẦN MỀM

          • 2.1 Nén mạng CNN

            • 2.1.1 Tại sao cần nén

            • 2.1.2 Các phương pháp nén

            • 2.2 Xây dựng và đánh giá kiến trúc mạng CNN

              • 2.2.1 Kiến trúc model CNN sử dụng

              • 2.3 Tối ưu trọng số

                • 2.3.1 Phương pháp giảm kích thước trọng số

                • 2.3.2 Kết quả và đánh giá

                • CHƯƠNG 3. TRIỂN KHAI MẠNG TRÊN PHẦN CỨNG

                  • 3.1 Mô tả hệ thống

                  • 3.2.1.2 Sơ đồ luồng dữ liệu:

                  • 3.2.2.2 Sơ đồ luồng dữ liệu:

                  • 3.2.3.2 Sơ đồ luồng dữ liệu:

Tài liệu cùng người dùng

Tài liệu liên quan