ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA ĐIỆN TỬ VIỄN THÔNG BÁO CÁO BÀI TẬP LỚN Thiết kế và thực hiện khối tính nhân chập 2 D dùng cho CNN MỤC LỤC Document History 3 Table of Contents Error Bookmark not defined 1 Giới thiệu 5 2 Yêu cầu 6 2 1 Yêu cầu đối với thiết kế 6 2 2 Định nghĩa giao diện vàora 7 3 Thuật toán 7 4 Thiết kế mức RTL 8 4 1 Mô hình máy FSMD 8 4 2 Đơn vị xử lý dữ liệu (Datapath) 8 4 3 Đơn vị điều khiển (Control Unit) 8 4 4 Sơ đồ khối tổng thể 8 5 Mô hình hóa bằng VH.
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA ĐIỆN TỬ VIỄN THÔNG BÁO CÁO BÀI TẬP LỚN Thiết kế thực khối tính nhân chập 2-D dùng cho CNN MỤC LỤC Document History Table of Contents Error! Bookmark not defined Giới thiệu Yêu cầu 2.1 Yêu cầu thiết kế: 2.2 Định nghĩa giao diện vào/ra Thuật toán Thiết kế mức RTL 4.1 Mơ hình máy FSMD 4.2 Đơn vị xử lý liệu (Datapath) 4.3 Đơn vị điều khiển (Control Unit) 4.4 Sơ đồ khối tổng thể Mơ hình hóa VHDL Mô đánh giá Kết luận Appendix A: Schematic Appendix B: VHDL Code 10 Appendix C: 11 List of Figures 12 List of Tables 13 References 14 Giới thiệu Mục tiêu: Vận dụng kiến thức, kỹ học để thiết kế, mô thực thi mô-đun phần cứng thực tính tích chập J = 2DConV(I, K) hình ảnh lối vài I với ma trận kernel K ([1] ) Trong đó, pixel hình ảnh tích phân J đại diện cho tổng tích lũy tích điểm-điểm ma trận K với ma trận thước trích xuất từ ma trận đầu vào I Phép chuyển đổi hình ảnh mơ tả ví dụ sau Ví dụ: hình ảnh đầu vào I ma trận có kích thước 5×5 sau: Và kernel có kích thước 3×3 sau: kết tính tốn khối 2D-Convolution trả hình ảnh J có kích thước 3×3 sau: Q trình tính tốn minh họa Hình Hình Ví dụ minh họa phép tính tích chập 2D ● Lưu ý pixel có tọa độ (r,c) – (hàng, cột) – tronh ảnh lối tính cách nhân chập điểm – điểm ma trận kernel ma trận 3×3 có tâm nằm vị trí có tọa độ (r + 1, c + 1) ảnh lối vào Yêu Cầu 2.1 Yêu cầu thiết kế - Khối 2DConV có giao diện ghép nối tới CPU cho CPU kích hoạt q trình tính tốn khối 2DConV đặt tín hiệu Start = ‘1’ - Sau q trình tính hình ảnh tích phân hoàn thành, khối 2DConV báo cho CPU biết cách đặt tín hiệu Done = ‘1’; - Khối 2DConV có giao diện ghép nối tới tới nhớ để đọc hình ảnh đầu vào - Khối 2DConV có giao diện ghép nối tới tới nhớ để ghi liệu đầu Start CLK Rst Done WEn REn Input Image Memory 2DConV RAddr Output Image Memory WAddr Data_out Data_in Hình Giao diện ghép nối I/O 2.2 Định nghĩa giao diện vào Bảng : Mơ tả tín hiệu vào T T Port Directio n Widt h Meaning Clk In 1bit Tín hiệu xung nhịp hệ thống Reset In 1bit Tín hiệu reset - Start In 1bit Khi reset = ‘1’, mạch điện chế độ reset, ghi nạp giá trị mặc định Khi reset = ‘0’, mạch điện chế độ hoạt động Tín hiệu bắt đầu - - Khi start = ‘0’, mạch điện chế độ chờ, thứ giữ nguyên Khi start = ‘1’ mạch điện bắt đầu lấy liệu để tính tốn Done Out 1bit Tín hiệu báo hồn thành Thuật toán Ở bọn em sử dụng vòng lặp lồng convolution Từ xuống dưới, từ trái qua phải dịch chuyển cửa sổ có kích thước với kernel ma trận đầu vào, thực phép nhân phần tử vị trí ma trận cửa số với kernel tính tổng giá trị scalar điền vào ma trận kết Đây gọi dot product Ta có cơng thức tính tích chập Do thuật tốn nhân ma trận chiều làm phức tạp trình thiết kế Vì để tốt ưu, thuật toán nhân ma trận xử lý dạng mảng chiều, mạch điện bọn em thiết kế xử lý liệu liệu địa chỉ, cụ thể chuyển liệu dạng mảng chiều dạng mảng chiều, xử lí phép nhân chập để tính kết lối Ma trận ảnh Img_height : Chiều cao cột (Số hàng) = Img_width : Độ rộng hàng (Số cột) = Ma trận Kernel Kernel_height : Chiều cao cột (Số hàng) = Kernel_width : Độ rộng hàng (Số cột) = Biến số H = img_height – (kernel_height – 1) = W = img_width – (kernel_width – 1) = Hai biến số hai khoảng mà ma trận cửa sổ duyệt bao gồm H số hàng, W số cột Vòng lặp Bọn em sử dụng vịng lặp để tính địa phần tử ma trận ảnh kernel, sau lấy giá trị nhớ để đưa vào MAC, kết đầu ghi vào nhớ Ouput image memory theo địa tính Các biến đếm Ic : Chạy cột để duyệt giá trị cột ma trận cửa sổ Ir : Chạy hàng để duyển cột ma trận cửa sổ Kc: Chạy cột để duyệt ma trận cửa sổ theo chiều dọc Kr : Chạy hàng để duyệt cột ma trận cửa sổ Imc : Chạy cột để duyệt ma trận kết theo chiều dọc Imr : Chạy hàng để duyệt cột ma trận kết Chạy vịng lặp để tính địa liệu đầu vào Ic chạy khoảng đến H – Ir chạy khoảng đến W – Kc chạy khoảng đến kernel_height -1 Kr chạy khoảng đến kernel_width – Các vòng lặp chạy lồng theo thứ tự từ xuống để tính địa pixel ma trận ảnh phần tử ma trận kernel theo địa tương ứng với thứ tự Công thức địa pixel ảnh lối vào Chuyển đổi địa mảng chiều thành địa mảng chiều Img_in_addr = img_width * (ic + kc) + (ir + kr) Công thức địa phần tử ma trận kernel ứng với ảnh Chuyển đổi địa mảng chiều thành địa mảng chiều Kernel_addr = kernel_width * ic + ir Chạy vịng lặp để tính địa liệu lối Imc chạy khoảng đến H - Imr chạy khoảng đến W – Kích thước ma trận lối khoảng mà ma trận cửa sổ di chuyển Hai vịng lặp chạy lồng để tính địa product nhớ chứa ma trận ảnh lối Công thức địa product Chuyển đổi địa mảng chiều thành địa mảng chiều Img_out_addr = img_out_width * imc + imr Mã giả (Pseudo code) mơ tả thuật tốn tính địa [initialize input data] Beginning : wait for start = Done = For ic = to (H – 1) For ir = to (W -1) For kc = to kernel_height -1 For kr = to kernel_width – Img_in_addr = img_width * (ic + kc) + (ir + kr) Kernel_addr = kernel_width * ic + ir End for End for End for End for Valid_out = For imc = to H – For imr = to W – Img_out_addr = img_out_width * imc + imr End for End for Product (img_out_width * imc) += Img_in (img_width * (ic + kc) + (ir + kr)) * kernel (kernel_width * ic + ir) Done = Wait for start = Go to the beginning End Thiết kế mức RTL 4.1 Mơ hình máy FSMD Mơ hình xử lí ảnh bọn em làm gồm phần Phần liệu đầu vào : Bao gồm Input image memory : Chứa liệu ma trận ảnh cần xử lý Kernel : Chứa liệu ma trận kernel Phần điều khiển xử lí : Bao gồm Control unit : Tính tốn địa pixel ảnh, phần tử ma trận kernel, địa product lưu vào Output memory MAC : Bộ nhân cộng tích lũy nhận liệu từ ảnh kernel sau tính product để chuyển tới Output memory, đồng thời gửi tín hiệu Valid_out = để bảo hiệu tính xong product ảnh lối Phần lối : Bao gồm Ouput memory : Để lưu trữ ảnh sau xử lý tín hiệu báo xử lý xong tồn ảnh lối vào Mơ hình máy trạng thái FSMD Mơ hình hoạt động xử lý Khi tín hiệu reset = 1, hệ thống trạng thái reset, reset = tín hiệu điều khiển start = 1, hệ thống hoạt động, xử lý bắt đầu tính tốn địa lối vào, gửi giá trị địa lối vào tín hiệu Ren để đọc liệu, đưa thẳng liệu đến MAC, sau MAC tính tốn, trả thẳng kết đến Ouput memory, tín hiệu ghi điều khiển tín hiệu Valid_out MAC, sau tính tốn xong tồn ảnh, tín hiệu done Output memory chuyển từ sang 1, báo hiệu xử lý xong toàn ảnh 4.2 Đơn vị xử lý liệu Datapath 4.3 Đơn vị điều khiển (Control Unit) Bọn em sử dụng mơ hình máy trạng thái với trạng thái Trạng thái reset : Khi tín hiệu reset = 1, xử lí ảnh trạng thái reset, địa ghi nạp giá trị 0, biến đếm giá trị Trạng thái đọc : Khi tín hiệu reset = 0, đồng thời tín hiệu start = xử lí ảnh vào trạng thái hoạt động Trạng thái ghi : Khi xử lí tính tốn xong giá trị product tín hiệu Valid_out từ chuyển sang 1, kích thích tín hiệu để tính địa lưu giá trị product vào Ouput memory, đồng thời kích thích tín hiệu ghi Ouput memory để lưu giá trị tính vào 4.4 Sơ đồ khối tổng thể Mô đánh giá Input Image Memory Code VHDL Dữ liệu lưu sẵn memory đọc theo địa Kết sau chạy testbench Kernel Code VHDL Dữ liệu lưu sẵn memory đọc theo địa Kết sau chạy testbench Đơn vị điều khiển Control Unit Phần code dài nên bọn em đưa vào phần chuyển trạng thái tính tốn địa Tính tốn địa Chuyển trạng thái Kết sau chạy testbench Khi valid_out = địa lối vào duyệt theo thứ tự thuật toán ban đầu, duyệt xuống cột duyệt cột Khi valid_out = địa lối duyệt theo thự tự từ xuống cột duyệt cột Bộ nhân cộng tích lũy (MAC) Code VHDL Kết sau chạy testbench Ouput Image Memory Code VHDL Kết sau chạy testbench Bộ xử lý ảnh Convolution Chạy testbench để kiểm tra hoạt động Kết tính tốn sau ma trận cửa sổ duyệt xong cột Tại ta thấy giá trị địa ứng với giá trị liệu đưa vào tính tốn, sau kết lưu vào memory ghi cột xét theo ma trận, địa ghi 0, 3, với giá trị ghi vào tương ứng 4, 2, Kết tính tốn sau ma trận cửa sổ duyệt xong cột thứ hai Tương tự giá trị lưu vào ghi có địa 1, 4, với giá trị 3, 4, Sau cột cuối duyệt tính tốn xong, kết qua lưu vào ghi lại 2, 5, với giá trị 4, 3, sau tín hiệu done = để báo hiệu xử lý xong ảnh lối vào Kết luận Xem kết lưu vào mem_list Kết tính tốn Kết luận xử lý ảnh hoạt động mong đợi ... duyệt tính tốn xong, kết qua lưu vào ghi lại 2, 5, với giá trị 4, 3, sau tín hiệu done = để báo hiệu xử lý xong ảnh lối vào Kết luận Xem kết lưu vào mem_list Kết tính tốn Kết luận xử lý ảnh hoạt... ma trận cửa số với kernel tính tổng giá trị scalar điền vào ma trận kết Đây gọi dot product Ta có cơng thức tính tích chập Do thuật toán nhân ma trận chiều làm phức tạp trình thiết kế Vì để tốt... mạch điện bọn em thiết kế xử lý liệu liệu địa chỉ, cụ thể chuyển liệu dạng mảng chiều dạng mảng chiều, xử lí phép nhân chập để tính kết lối Ma trận ảnh Img_height : Chiều cao cột (Số hàng) = Img_width