Thiết kế system on chip (SoC) và thực hiện bằng FPGA Thiết kế system on chip (SoC) và thực hiện bằng FPGA Thiết kế system on chip (SoC) và thực hiện bằng FPGA luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRẦN VĂN TIÊN Trần Văn Tiến KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG THIẾT KẾ SYSTEM ON CHIP (SoC) VÀ THỰC HIỆN BẰNG FPGA LUẬN VĂN THẠC SĨ KỸ THUẬT KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG CH2011B Hà Nội – 2013 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Trần Văn Tiến THIẾT KẾ SYSTEM ON CHIP (SoC) VÀ THỰC HIỆN BẰNG FPGA Chun ngành : Kỹ thuật máy tính truyền thơng LUẬN VĂN THẠC SĨ KỸ THUẬT KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG NGƯỜI HƯỚNG DẪN KHOA HỌC : TS NGUYỄN KIM KHÁNH Hà Nội – 2013 LỜI CAM ĐOAN Tôi xin cam đoan đề tài nghiên cứu hồn tồn tơi tự làm hướng dẫn thầy giáo Ts Nguyễn Kim Khánh, Viện công nghệ thông tin truyền thông - Đại học Bách Khoa Hà Nội Các số liệu, kết trình bày luận văn hoàn toàn trung thực chưa cơng bố cơng trình Các tài liệu tham khảo sử dụng luận văn dẫn nguồn (có bảng thống kê tài liệu tham khảo) đồng ý trực tiếp tác giả Nếu xảy điều không lời cam đoan trên, tơi xin chịu hồn toàn trách nhiệm trước Viện Nhà trường Hà Nội, ngày 15 tháng 03 năm 2013 Tác giả Trần Văn Tiến LỜI CẢM ƠN Để hoàn thành luận văn tốt nghiệp này, xin gửi lời cảm ơn chân thành tới tập thể thầy giáo, cô giáo trường Đại học Bách Khoa Hà Nội nói chung, viện Công nghệ thông tin Truyền thông, môn Kĩ thuật máy tính, đào tạo cho tơi kiến thức, kinh nghiệm qúy báu suốt thời gian học tập rèn luyện Tôi xin chân thành cảm ơn giúp đỡ thầy Nguyễn Kim Khánh Trong q trình thực đề tài thầy ln tận tình hướng dẫn, gợi cho tơi nhiều ý tưởng để hoàn thành luận văn cách tốt Cuối lời cảm ơn chân thành tới gia đình, bạn bè động viên, góp ý tạo điều kiên tốt để tơi hồn thành luận văn tốt nghiệp Tuy nhiên, thời gian trình độ có hạn nên đồ án chắn khơng tránh khỏi thiếu sót, tơi mong đóng góp ý kiến thầy, tồn thể bạn Tơi xin chân thành cảm ơn Hà Nội, ngày 15 tháng năm 2013 Sinh viên: Trần Văn Tiến MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC TỪ VIẾT TẮT, THUẬT NGỮ DANH MỤC CÁC HÌNH DANH MỤC CÁC BẢNG MỞ ĐẦU 10 Lý chọn đề tài 10 Lịch sử nghiên cứu 10 Mục đích, đối tượng phạm vi nghiên cứu 10 Tóm tắt luận điểm đóng góp đồ án 10 Phương pháp nghiên cứu 11 NỘI DUNG 12 CHƯƠNG TỔNG QUAN VỀ SYSTEM ON CHIP (SoC) 12 1.1 Cơ sở lý thuyết 12 1.1.1 Sự đời SOC 12 1.1.2 SoC đặc điểm 14 1.1.3 Công cụ lựa chọn 16 1.2 Quy trình thiết kế System on Chip 17 1.2.1 Giai đoạn thiết kế Front end 18 1.2.2 Giai đoạn thiết kế Back end 21 CHƯƠNG TỔNG QUAN VỀ CÔNG NGHỆ FPGA 22 2.1 Giới thiệu FPGA 22 2.2 Kiến trúc chung FPGA 23 1.2.1 Khối logic FPGA 23 1.2.2 Hệ thống mạch liên kết 24 1.2.3 Các phần tử tích hợp sẵn 25 2.3 Ngôn ngữ phần cứng HDL 25 1.3.1 Các ưu điểm VHDL 26 1.3.2 Cấu trúc mơ hình hệ thống sử dụng ngơn ngữ VHDL 27 CHƯƠNG THIẾT KẾ SYSTEM ON CHIP VÀ THỰC HIỆN BẰNG FPGA 34 3.1 Thiết kế vi xử lý 34 3.1.1 Cấu trúc tổng quát 34 3.1.2 Sơ đồ khối thiết kế 35 3.1.3 Quá trình thiết kế CPU 36 3.1.4 Thực code mổ FPGA 41 3.2 Thiết kế module nối ghép vào 43 3.2.1 Thiết kế module IP UART 43 3.2.2 Thiết kế module IP I2C 53 3.3 Thực hệ thống SoC FPGA dựa Vi xử lý 32-bit Nios II 66 3.3.1 Tạo hệ thống NIOS II SOPC Builder 66 3.3.2 Điều khiển Nios sử dụng ngôn ngữ C 73 CHƯƠNG KẾT QUẢ VÀ ĐÁNH GIÁ 76 4.1 Các kết đạt 76 4.2 Đánh giá định hướng 76 KẾT LUẬN 77 TÀI LIỆU THAM KHẢO 78 DANH MỤC TỪ VIẾT TẮT, THUẬT NGỮ Số thứ tự Từ viết tắt Ý nghĩa SoC System on Chip FPGA Field-programmable gate array UART Universal Asynchronous Receiver/Transmitter IP Intelecture Property I2C Inter-Integrated Circuit BSP Board Support Package EDS Embedded Design Suite TCL Tool Command Lanluage LSI Large Scale Integration 10 AC Address Counter 11 LCD Liquid Crystal Display 12 API Application Program Interface 13 EPCS Erasable Programmable Configurable Serial 14 IRQ Interrupt Request 15 HDL Hardware Description Language 16 ADC Analog to Digital Converter 17 DAC Digital to Analog Converter 18 DUT Device Under Test 19 SOPC System on a Programmable Chip 20 HAL Hardware Abstract Layer 21 MM Memory Mapped 22 SBT Software Build Tool DANH MỤC CÁC HÌNH Hình 1.1 Sự gia tăng mật độ transitor 12 Hình 1.2 Giảm giá thành sản phẩm 13 Hình 1.3 Mơ hình SoC 14 Hình 1.4 Quy trình thiết kế SoC 17 Hình 1.5 RTL Coding 18 Hình 1.6 Dynamic Verification 19 Hình 1.7 Synthesis and Scan Insertion 20 Hình 1.8 Formal Verification 21 Hình 2.1 Cấu trúc tổng thể FPGA 23 Hình 2.2 Khối Logic 24 Hình 2.3 Bộ bán tổng 27 Hình 2.4 Sơ đồ thiết kế VHDL 32 Hình 2.5 Sơ đồ tổng quát chương trình thử (Testbench) 33 Hình 3.1 Sơ đồ khối vi xử lý 35 Hình 3.2 Khối Datapath 36 Hình 3.3 Khối instruction_fetch 38 Hình 3.4 Sơ đồ máy trạng thái FSM cho vi xử lý 40 Hình 3.5 Sơ đồ thiết kế hoàn chỉnh vi xử lý 41 Hình 3.6 Cấu trúc file quatus 41 Hình 3.7 Kết mơ 43 Hình 3.8 Sơ đồ khối Uart 46 Hình 3.9 Sơ đồ tín hiệu kết nối module 47 Hình 3.10 Interfaces module baud_gen.v 48 Hình 3.11 Interface module uart_tx.v 49 Hình 3.12 Interface module uart_rx.v 50 Hình 3.13 Interface module fifo.v 51 Hình 3.14 Mơ dạng sóng module top.v 53 Hinh 3.15 Truyền nhận liệu UART 53 Hình 3.16 I2C thiết bị kết nối 54 Hình 3.17 Bit transfer on the I2C bus 56 Hình 3.18 Sơ đồ khối I2C 58 Hình 3.19 Khối Top_Control 59 Hình 3.20 Khối Byte control 62 Hình 3.20 Trạng thái FSM khối bit control 63 Hình 3.21 Kết mô I2C 65 Hình 3.22 Kết mô I2C Modelsim 66 Hình 3.23 SoPC Builder 67 Hình 3.24 Chọn hệ SoPC dựa ngơn ngữ Verilog 68 Hình 3.25 Chọn Loại NIOS II 69 Hình 3.26 Tạo nhớ hệ thống 71 Hình 3.27 JTAG UART 71 Hình 3.28 Giao diện phát triển Nios II IDE 73 Hình 3.29 Tạo example hello_world_small 74 Hình 3.30 Nạp chương trình cho Nios II 75 Hình 3.31 Example Hello world small 75 3.2.2.3.3 Thực kiếm tra khối IP thiết kế Kiểm Tra Bằng Tool SignalTap Trong Phần Mềm Quartus II: Dưới trình bày kết kiểm tra dùng tool SignalTap trình Master ghi liệu đến Slave, liệu ghi 77h c2h vào ô nhớ 00 01 Slave có địa 08h 64 Hình 3.21 Kết mơ I2C 65 Kết Qủa Kiểm Tra Trên Modelsim: Hình 3.22 Kết mô I2C Modelsim 3.3 Thực hệ thống SoC FPGA dựa Vi xử lý 32-bit Nios II 3.3.1 Tạo hệ thống NIOS II SOPC Builder Ta mở tool SoPC builder phần mềm QUATUS II Sau đặt tên hệ thống chọn ngơn ngữ mô tả phần cứng Verilog hay VHDL, nhấn OK.[1][8][9] 66 Hình 3.23 SoPC Builder 67 Hình 3.24 Chọn hệ SoPC dựa ngôn ngữ Verilog Tạo VXL Nios II cho hệ thống: Chọn kiểu NIOS II: tùy vào tính hệ thống mà chọn lõi NIOS II cho phù hợp Trong vi dụ khơng càn nhiều chức nên ta chon phiên đơn giản phiên NIOS II/e cách check vào mục NIOS II/e hình bên 68 Hình 3.25 Chọn Loại NIOS II 69 kiểu NIOS đơn giản nên ta tiếp tục next đến phần chọn thành phần JTAG Chọn lựa số chức khác NIOS II ví dụ phần cứng dùng để thực phép tính có dấu chấm động, qui định ngắt, chọn finish để hoàn thành Tạo hệ thống nhớ cho Nios II: Nios II lõi vi xử lý chưa phải vi điêu khiển cần phải có tối thiểu ộ nhớ liệu nhớ chương trình để hoạt động Để đơn giản dùng On-Chip Memory cách double_click “On-Chip Memory(RAM or ROM)” Nhưng lưu ý nên chọn dung lượng nhớ phù hợp ứng dụng Sau chọn Finish để hoàn thành Sau tạo nhớ xong, ta tạo kết nối Nios II nhớ chưa kết nối Chú ý phải kết nối hai bus instruction_master data_master 70 Hình 3.26 Tạo nhớ hệ thống Tạo UART thông qua chuẩn JTAG cho Nios II: Trong Communication double click chọn JTAG UART Hình 3.27 JTAG UART Sau bước ta có hệ thống đơn giản hoạt động hình sau : 71 Trong thẻ System Generation: Nhấn nút Generate để tạo hệ thống - Chờ hệ thống chạy xong nhấn exit 72 3.3.2 Điều khiển Nios sử dụng ngôn ngữ C Các bước thực hiện: Mở chương trình Nios II Chọn nơi lưu trữ phần mềm: File/ switch workspace, sau chọn đường dẫn OK Hình 3.28 Giao diện phát triển Nios II IDE Mở chương trình Nios II Chọn File>New>NiosII C/C++ Application Đặt tên cho chương trình khung Name (nếu ta muốn tạo thư viện mới, xài thư viện có sẵn hổ trợ hello_ world_small_0) Tại khung SOPC builder System chọn đường dẫn tới file có *.ptf mà Quartus sinh q trình tổng hợp 73 Hình 3.29 Tạo example hello_world_small Đến ta viết code C vào file “hello_ worl_small.c” có sẵn hay tạo file sử dụng lệnh có C lệnh hỗ trợ riêng cho Nios để lập trình điều khiển cho hệ thống Ở ta thực chức đơn giản C xuất đoạn text hình.(ta dung ln chương trình “hello_ worl_small.c”), Sau Nạp xong chương trình Quartus, ta có hệ thống đầy đủ với trung tâm vi xử lý 32bit Nios II Bây ta qua giao diện Nios II IDE để nạp chương trình cho NIOS: 74 Hình 3.30 Nạp chương trình cho Nios II Hình 3.31 Example Hello world small 75 CHƯƠNG KẾT QUẢ VÀ ĐÁNH GIÁ 4.1 Các kết đạt - Luận văn trình bày lý thuyết SoC, quy trình thiết kế SoC - Luận văn có nhìn tổng quan cơng nghệ PPGA - Luận văn thiết kế xây dựng đươc thành phần quan hệ thống SoC : vi xử lý, nhớ, Các module nối ghép vào : UART, I2C - Luận văn trình bày cách thức xây dựng hệ thống SoC dựa vi xử lý NiosII 4.2 Đánh giá định hướng Đánh giá: - Luận văn mở nghiên cứu hệ thống System On Chip, thức xây dựng hệ thống, cách thức xây dựng IP - Luận văn đưa bước thiết kế cho vi xử lý, khối UART, khối I2C - Luận văn đưa bước hoàn thiện hệ thống SoC Định hướng cải thiện phát triển: - Tìm hiểu sâu thiết kế chi tiết vi xử lý - Tìm hiểu thêm nhiều thành phần tạo thành hệ thống SoC, tìm hiểu thêm thiết kế xây dựng IP Core khác - Tích hợp thành phần xây dựng (IP) vào hệ thống SoC NiosII - Thực chạy kit phát triển 76 KẾT LUẬN Trong suốt thời gian thực luận văn tơi cố gắng hồn thành u cầu đề đồ án tìm hiểu SoC, quy trình thiết kế SoC thiết kế thành phần SoC thực FPGA Đến thời điểm này, luận văn đạt nhiều kết đáng kể, nhiên thời gian hạn chế nên luận văn thiếu sót Đã xây dựng thiết kế vi xử lý vi xử lý đơn giản, chưa có nhớ Ram Mới thiết kế thêm IP Core UART I2C , cần phải thiết kế thêm IP khác Mới dừng lại mô chưa thưc thực hành kit phát triển Và hướng nghiên cứu hoàn thiện hệ thống SoC, hoàn thiện phát triển thêm module thiết kế kết hợp module tạo vào hệ thống hoàn chỉnh Thực kit phát triển Luận văn góp phần tạo thêm tài liệu cho bạn học viên tiếp tục nghiên cứu tìm hiểu xây dựng SoC Xin chân thành cảm ơn! 77 TÀI LIỆU THAM KHẢO [1] Rapid Prototyping of Digital Systems SOPC Edition : SOPC Edition (James-O.Hamblen) [2] Computer System Design: System-on-Chip [Hardcover] (Michael J Flynn (Author), Wayne Luk (Author)) [3] A Platform-Centric Approach to System-on-Chip (SOC) Design [Hardcover] ( Vijay Madisetti (Author), Chonlameth Arpnikanondt (Author)) [4] Advanced FPGA Design: Architecture, Implementation, and Optimization [Hardcover] (Steve kilts) [5] Digital Design and Computer Architecture, 2nd Edition (Author(s) : Harris & Harris ) [6] Modern VLSI Design System-on-Chip Design, Third Edition (Wayne Wolf (Author)) [7] Processor Design: System-On-Chip Computing for ASICs and FPGAs [Hardcover] (Jari Nurmi (Editor)) [8] Website : www.xilinx.com [9] Website : http://www.altera.com 78 ... THIẾT KẾ SYSTEM ON CHIP VÀ THỰC HIỆN BẰNG FPGA 34 3.1 Thiết kế vi xử lý 34 3.1.1 Cấu trúc tổng quát 34 3.1.2 Sơ đồ khối thiết kế 35 3.1.3 Quá trình thiết kế. .. System on Chip, quy trình thiết kế hướng luận văn xây dựng thiết kế hệ thống SoC Chương : Cơng nghệ FPGA Trình bày công nghệ FPGA, kiến trúc FPGA ngôn ngữ sử dụng cho FPGA Chương : Thiết kế System. ..BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Trần Văn Tiến THIẾT KẾ SYSTEM ON CHIP (SoC) VÀ THỰC HIỆN BẰNG FPGA Chuyên ngành : Kỹ thuật máy tính