Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
3,51 MB
Nội dung
Đại Học Quốc Gia Tp.Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA - TRƯƠNG VIỆT PHƯƠNG THIẾT KẾ CPU RISC ĐA CHU KỲ 32 BIT Chuyên ngành: KỸ THUẬT ĐIỆN TỬ Mã ngành: 2.07.01 LUẬN VĂN THẠC SĨ TP.HỒ CHÍ MINH, tháng 07 năm 2008 TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM PHÒNG ĐÀO TẠO SĐH ĐỘC LẬP – TỰ DO – HẠNH PHÚC Tp HCM, ngày 03 tháng 07 năm 2008 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: TRƯƠNG VIỆT PHƯƠNG Phái: Nam Ngày, tháng, năm sinh: 23/05/1981 Nơi sinh: Quãng Ngãi Chuyên ngành: Kỹ thuật điện tử MSHV: 01406323 I- TÊN ĐỀ TÀI: THIẾT KẾ CPU RISC ĐA CHU KỲ 32 BIT II- NHIỆM VỤ VÀ NỘI DUNG: - Thiết kế vi xử lý RISC đa chu kỳ 32 bit - Cài đặt vi xử lý RISC 32 bit FPGA IIIIVV- NGÀY GIAO NHIỆM VỤ: 21/01/2008 NGÀY HOÀN THÀNH NHIỆM VỤ: 03/07/2008 HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS ĐINH ĐỨC ANH VŨ Ths.TỐNG VĂN ON 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 CN BỘ MÔN QL CHUYÊN NGÀNH LỜI CẢM ƠN Tôi trân trọng gửi đến Tiến sĩ Đinh Đức Anh Vũ Thạc sĩ Tống Văn On lời cảm ơn chân thành lòng biết ơn sâu sắc động viên đóng góp ý kiến suốt thời gian qua Xin chân thành cảm ơn thầy cô khoa Điện-Điện Tử, đặc biệt thầy cô môn Điện Tử Viễn Thông, Trường Đại Học Bách Khoa TP.HCM tận tình giảng dạy, hướng dẫn giúp đỡ tơi q trình học tập hồn thành luận văn Sau tơi xin bày tỏ tình cảm đến bạn khóa trao đổi nhiều tài liệu giúp đỡ suốt thời gian học TP Hồ Chí Minh, tháng 07 năm 2008 TRƯƠNG VIỆT PHƯƠNG CÔNG TRÌNH ĐƯC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học: Ths Tống Văn On Cán chấm nhận xét 1: Cán chấm nhận xét 2: Luận văn thạc só bảo vệ HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, Ngày 28 tháng 07 năm 2008 ABSTRACT In the age of today, together with the development of powerful information technology and telecommunications, technical innovation and upgrade is one of the most important factors that can’t be missed The normal processor can solve this problem but it can not ensure that fast processing speed and lower consumption The appearance of RISC processor not only responds demands of technical innovation and upgrade but also ensures processing speed and power consumption In these recent years, RISC processor are applied widely for a lot of devices including cars, phone, digital cameras, printers,…Specially, they are the key for realization of portable electronic devices In this thesis, I will present the design and implementation of 32 bit multicycle RISC on FPGA Mục lục: Lời cảm ơn Tóm tắt Abstract Chương 0: Giới thiệu 0.1 Giới thiệu 0.2 Tổ chức luận văn 0.3 Các cơng việc có liên quan Chương 1: Giới thiệu kiến trúc RISC 1.1 RISC gì? 1.2 Ý tưởng thiết kể RISC 1.3 Các đặc điểm RISC 1.4 Cải tiến RISC 1.5 Các hệ thống phổ biến RISC Chương 2: Tập lệnh 2.1 Tóm tắt tập lệnh 2.2 Định dạng lệnh 2.3 Các chế độ định địa 10 2.4 Tập lệnh chi tiết 12 Chương 3: Tổ chức vi xử lý 16 3.1 Tổng quan kiến trúc vi xử lý RISC 16 3.2 Sơ đồ chân 17 3.3 Tập ghi 18 3.4 Liên kết nối vi xử lý nhớ 19 Chương 4: Thiết kế đường liệu 21 4.1 Tổng quan đường liệu 21 4.2 Đường liệu đơn chu kỳ 21 4.2.1 Đường liệu cho trình tìm nạp lệnh 21 4.2.2 Đường liệu cho trình giải mã 22 4.2.3 Đường liệu cho trình thực thi lệnh dạng R 23 4.2.4 Đường liệu cho trình thực thi lệnh load store 24 4.2.5 Đường liệu cho trình thực thi lệnh nhảy 24 4.2.6 Đường liệu cho trình thực rẽ nhánh `25 4.2.7 Tạo đường dẫn liệu từ thành phần 25 4.2.8 Đường liệu đơn chu kỳ hoàn chỉnh 28 4.3 Đơn vị điều khiển 28 4.3.1 Điều khiển ALU 28 4.3.2 Đơn vị điều khiển 29 4.4 Ưu khuyết điểm đơn chu kỳ 31 4.5 Đường liệu đa chu kỳ 31 4.5.1 Tổng quan thực đa chu kỳ 31 4.5.2 Xây dựng đường liệu đa chu kỳ 34 4.5.3 Xây dựng giá trị tín hiệu điều khiển cho lệnh 40 Chương 5: Điều khiển đa chu kỳ 45 5.1 Điều khiển đa chu kỳ 45 5.2 Máy trạng thái đường liệu đa chu kỳ 46 5.2.1 Điều khiển FSM cho trình nhận giải mã lệnh 47 5.2.2 Điều khiển FSM cho trình tham chiếu nhớ 47 5.2.3 Điều khiển FSM cho dạng lệnh R 48 5.2.4 Điều khiển FSM cho dạng lệnh rẽ nhánh 48 5.2.5 Điều khiển FSM cho lệnh nhảy 48 5.3 Bảng giá trị tín hiệu điều khiển 49 Chương 6: Kết luận hướng phát triển đề tài 50 Luận văn tốt nghiệp GVHD: Tống Văn On CHƯƠNG GIỚI THIỆU 0.1 Giới thiệu: Thiết kế xử lý RISC hình thành phát triển năm 80 Qua nhiều nghiên cứu hệ thống máy tính , người ta nhận thấy hầu hết khoảng 80% lênh sử dụng Và đề án RISC từ IBM, Stanford UC-Berkeley IBM 801, Stanford MIPS Berkeley 2, tất thiết kế với mơ hình tương tự biết RISC ngày Hiện thiết kế chế tạo vi mạch lĩnh vực phát triển nhanh chóng Có nhiều cơng ty nghiên cứu phát triển lĩnh vực Đây lĩnh vực thuộc công nghệ cao lĩnh vực mũi nhọn tương lai, nước ta chưa có gì, vấn đề đặt cần phải đào tạo nguồn nhân lực lĩnh vực thiết kế vi mạch 0.2 Tổ chức luận văn: Chương 0: giới thiệu Chương1: giới thiệu kiến trúc RISC Chương 2:tập lệnh Chương 3: tổ chức vi xử lý Chương 4:thiết kế đường liệu Chương 5:điều khiển đa chu kỳ Chương 6: kết luận hướng phát triển đề tài Phụ lục 1: mã verilog thiết kế CPU Phụ lục 2: kết mô HVTH: Trương Việt Phương Luận văn tốt nghiệp GVHD: Tống Văn On 0.3 Các cơng việc có liên quan: Mục tiêu luận văn tìm hiểu nguyên tắc hoạt động, xây dựng tập lệnh thiêt kế cấu trúc vi xử lý RISC đa chu kỳ Ngoài để thiết kế FPGA, tác giả phải hiểu rõ FPGA ngôn ngữ mô tả phần cứng Verilog để lập trình cho thiết bị Cơng cụ để thực đề tài : ¾ Phần mềm ISE version 8.2i Xilinx ¾ Phần cứng board Spartan III HVTH: Trương Việt Phương Luận văn tốt nghiệp GVHD: Tống Văn On PHỤ LỤC 1: MÃ VERILOG CHO CPU RISC //file mips multi processor.v: module mips_multi(clk, reset); input clk, reset; // instruction bus wire [31:0] instr; // break out important fields from instruction wire [5:0] opcode, funct; wire [4:0] rs, rt, rd, shamt; wire [15:0] immed; wire [31:0] extend_immed, b_offset; wire [25:0] j_offset; wire [31:0] j_addr; assign opcode = instr[31:26]; assign rs = instr[25:21]; assign rt = instr[20:16]; assign rd = instr[15:11]; assign shamt = instr[10:6]; assign funct = instr[5:0]; assign immed = instr[15:0]; assign j_offset = instr[25:0]; // sign-extender assign extend_immed = { {16{immed[15]}}, immed }; // branch offset shifter assign b_offset = extend_immed