Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 104 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
104
Dung lượng
2,87 MB
Nội dung
ĐOÀN VŨ THỊNH BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - Đoàn Vũ Thịnh CƠNG NGHỆ THƠNG TIN TÌM HIỂU LÝ THUYẾT VÀ THỰC NGHIỆM VỀ CÔNG NGHỆ FPGA TRONG THIẾT KẾ CPU THEO KIẾN TRÚC MIPS LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THƠNG TIN KHỐ 2010 Hà Nội – Năm 2012 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Đồn Vũ Thịnh TÌM HIỂU LÝ THUYẾT VÀ THỰC NGHIỆM VỀ CÔNG NGHỆ FPGA TRONG THIẾT KẾ CPU THEO KIẾN TRÚC MIPS Chuyên ngành: Công nghệ Thông tin LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS Trịnh Văn Loan Hà Nội – Năm 2012 LỜI CAM ĐOAN Tôi tên Đoàn Vũ Thịnh, học viên cao học ngành Cơng nghệ Thơng tin, khóa 2010 trường Đại học Bách khoa Hà Nội Tôi xin cam đoan hoàn toàn chịu trách nhiệm lời cam đoan này: Toàn nội dung Luận văn Thạc sỹ tơi thực hướng dẫn tận tình PGS TS Trịnh Văn Loan Trong q trình thực Luận văn tơi có kế thừa kiến thức tài liệu tham khảo (phần tài liệu tham khảo) Các kết mô phỏng, thí nghiệm sử dụng để kết luận đánh giá Luận văn hoàn toàn chân thực Hà Nội, ngày 30 tháng năm 2012 Đoàn Vũ Thịnh i LỜI CẢM ƠN Trải qua khoảng thời gian học tập theo chương trình cao học Trường Đại học Bách khoa Hà Nội, thầy cô giảng dạy chương trình cao học truyền đạt cho nhiều kiến thức Tôi xin chân thành cảm ơn PGS.TS Trịnh Văn Loan người tận tình hướng dẫn giúp đỡ thực Luận văn Thạc sỹ Tôi xin cảm ơn đến thầy cô Trường Đại học Bách khoa Hà Nội giảng dạy tạo nhiều điều kiện thuận lợi để hồn thành khóa học Cảm ơn đồng nghiệp Trường Đại học Nha Trang bạn học viên lớp Cao học Cơng nghệ Thơng tin khóa 2010 trao đổi, góp ý giúp đỡ tơi lúc học tập lúc thực luận văn Đoàn Vũ Thịnh ii DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT Đơn vị số học Logic ALU Arthimetic Logic Unit ASIC Application Specific Intergrated Circuit Mạch tích hợp có ứng dụng chun biệt CPLD Complex Programmable Logic Device Thiết bị Logic khả trình có cấu trúc phức tạp CU Control Unit Đơn vị điều khiển I/O Input/Ouput Vào/Ra IOE Input Output Element Thành phần Vào Ra LAB Logic Array Block Khối mảng logic LE Logic Element Thành phần logic LUT Look up Table Bảng tra MIPS Microprocessor without Interlocked Bộ xử lý khơng có đoạn Pipeline Stages đường ống khóa lẫn Multiplexor Bộ hợp kênh MUX FPGA Field Programmable Gate Arrays Mảng cổng khả trình PLD Programmable Logic Device Thiết bị Logic khả trình RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên ROM Read Only Memory Bộ nhơ đọc RAM tĩnh SRAM Static RAM iii DANH MỤC BẢNG Bảng 1.1 Kiến trúc MIPS Bảng 1.2 Các toán hạng MIPS Bảng 1.3 Ngôn ngữ MIPS assembly Bảng 1.4 ảng chuyển đổi hệ 16-2 10 Bảng 1.5 Mã hóa lệnh MIPS 12 Bảng 1.6 Ph p tốn có liên quan đến logic C MIPS 13 Bảng 1.7 Tổng hợp kiến trúc tập lệnh MIPS 18 Bảng 1.8 Các ghi qua lời gọi thủ tục 25 Bảng 1.9 Quy ước ghi MIPS 25 Bảng 1.10 Tổng hợp tốn hạng, ngơn ngữ asembly ghi MIPS 26 Bảng 2.1 Các bit điều khiển ALU 46 Bảng 2.2 ảng trạng thái đường điều khiển ALU 47 Bảng 2.3 Ảnh hưởng t n hiệu điều khiển 50 Bảng 2.4 Thiết lập đường điều khiển b ng cách xác định giá trị từ trường lệnh 51 Bảng 2.5 Các chức điều khiển lệnh đơn chu k 55 ản Khuôn dạng lệnh MIPS 32-bit 59 ản Tập lệnh MIPS vi xử lý 60 iv DANH MỤC HÌNH 16 22 29 30 nh 1.7 30 34 36 38 38 39 40 - 41 42 44 45 48 49 51 52 53 55 57 v 61 Hình 3.2 n nh n l nh c a CPU 63 Hình 3.3 nh gi i mã l nh 64 Hình 3.4 n th c thi l nh 66 Hình 4.1 Ki n trúc c u n – CU 67 Hình 4.2 n nh n l nh 68 Hình 4.3 Giai n gi i mã l nh 69 Hình 4.4 n th c hi n l nh 70 vi MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT iii DANH MỤC BẢNG iv DANH MỤC HÌNH v MỞ ĐẦU CHƢƠNG I: KIẾN TRÚC TẬP LỆNH MIPS 1.1 Giới thiệu 1.2 Các toán hạng MIPS 1.3 Mô tả lệnh máy t nh 1.4 Các trường MIPS 10 1.5 Các ph p toán liên quan đến logic 13 1.6 Lệnh h trợ định 15 16 18 1.7 Hàm thủ tục phần cứng máy t nh 19 1.8 Liên kết với giới 28 1.9 Địa 32 bit ph p tốn với h ng số có độ dài 32bit 30 30 31 CHƢƠNG II: CÁC THÀNH PHẦN CỦA BỘ XỬ LÝ THEO KIẾN TRÚC MIPS 33 2.1 Tổng quan chế MIPS 33 2.2 Thành phần logic 37 2.3 Các thành phần thực thi tập lệnh MIPS 39 2.4 Chi tiết thành phần 45 CHƢƠNG III: THIẾT KẾ TẬP LỆNH MIPS VỚI VHDL 59 vii 3.1 Tổng quan 59 3.2 Mô tả kiến trúc MIPS với VH L 61 - CU) 61 n nh n l nh (Instruction Fetch) 62 3.2.3 Gi i mã l nh (Decode) 64 3.2.4 Th c thi l nh (Execute) 65 CHƢƠNG IV: KẾT QUẢ ĐẠT ĐƢỢC 67 4.1 Những mặt đạt 67 4.2 Những mặt hạn chế 71 4.3 Hướng phát triển luận văn 71 TÀI LIỆU THAM KHẢO 72 PHỤ LỤC 73 viii signal Branch : in std_logic; signal Zero : in std_logic; signal clock, reset : in std_logic; signal Inst : out std_logic_vector(31 downto 0); signal PC_plus_4_out : out std_logic_vector(9 downto 0); signal PC_out : out std_logic_vector(9 downto 0) ); END COMPONENT; COMPONENT decode port ( Inst : in std_logic_vector(31 downto 0); read_data : in std_logic_vector(31 downto 0); ALU_result : in std_logic_vector(31 downto 0); RegWrite : in std_logic; MemtoReg : in std_logic; RegDst : in std_logic; clock,reset : in std_logic; Sign_extend : out std_logic_vector(31 downto 0); read_data_1 : out std_logic_vector(31 downto 0); read_data_2 : out std_logic_vector(31 downto 0) ); END COMPONENT; COMPONENT CU port ( Input ports Opcode : in std_logic_vector(5 downto 0); clock, reset : in std_logic; 80 Output ports RegDst : out std_logic; ALUSrc : out std_logic; MemtoReg : out std_logic; RegWrite : out std_logic; MemRead : out std_logic; MemWrite : out std_logic; Branch : out std_logic; ALUop : out std_logic_vector(1 downto 0) ); END COMPONENT; COMPONENT EXE port ( Read_data_1 : in std_logic_vector(31 downto 0); Read_data_2 : in std_logic_vector(31 downto 0); Sign_extend : in std_logic_vector(31 downto 0); Function_opcode : in std_logic_vector(5 downto 0); ALUOp : in std_logic_vector(1 downto 0); PC_plus_4 : in std_logic_vector(9 downto 0); ALUSrc : in std_logic; clock, reset : in std_logic; Zero : out std_logic; ALU_Result : out std_logic_vector(31 downto 0); Add_Result : out std_logic_vector(7 downto 0) ); END COMPONENT; COMPONENT dmemory port 81 ( Input ports address : in std_logic_vector(7 downto 0); write_data : in std_logic_vector(31 downto 0); MemRead : in std_logic; Memwrite : in std_logic; clock,reset : in std_logic; Output ports read_data : out std_logic_vector(31 downto 0) ); END COMPONENT; declare signals used to connect VHDL components signal PC_plus_4 : std_logic_vector(9 downto 0); signal read_data_1 : std_logic_vector(31 downto 0); signal read_data_2 : std_logic_vector(31 downto 0); signal Sign_Extend : std_logic_vector(31 downto 0); signal Add_result : std_logic_vector(7 downto 0); signal ALU_result : std_logic_vector(31 downto 0); signal read_data : std_logic_vector(31 downto 0); signal ALUop : std_logic_vector(1 downto 0); signal Inst : std_logic_vector(31 downto 0); signal ALUSrc : std_logic; signal Branch : std_logic; signal RegDst : std_logic; signal Regwrite : std_logic; signal Zero : std_logic; signal MemWrite : std_logic; signal MemtoReg : std_logic; signal MemRead : std_logic; 82 begin Instruction_out read_data_1, read_data_2 => read_data_2, Inst => Inst, read_data => read_data, 83 ALU_result => ALU_result, RegWrite => RegWrite, MemtoReg => MemtoReg, RegDst => RegDst, Sign_extend => Sign_extend, clock => clock, reset => reset ); dvdieukhien: CU PORT MAP ( Opcode => Inst(31 downto 26), RegDst => RegDst, ALUSrc => ALUSrc, MemtoReg => MemtoReg, RegWrite => RegWrite, MemRead => MemRead, MemWrite => MemWrite, Branch => Branch, ALUop => ALUop, clock => clock, reset => reset ); thucthilenh: EXE PORT MAP ( Read_data_1 => read_data_1, Read_data_2 => read_data_2, Sign_extend => Sign_extend, 84 Function_opcode => Inst(5 downto 0), ALUOp => ALUop, ALUSrc => ALUSrc, Zero => Zero, ALU_Result => ALU_Result, Add_Result => Add_Result, PC_plus_4 => PC_plus_4, Clock => clock, Reset => reset ); vungnhodulieu: dmemory PORT MAP ( read_data => read_data, address => ALU_Result (7 downto 0), write_data => read_data_2, MemRead => MemRead, Memwrite => MemWrite, clock => clock, reset => reset ); end arch_MIPS; Vung nho du lieu cho bo xu ly dmemory.vhdl -LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; 85 LIBRARY altera_mf; USE altera_mf.altera_mf_components.all; entity dmemory is port ( Input ports address : in std_logic_vector(7 downto 0); write_data : in std_logic_vector(31 downto 0); MemRead : in std_logic; Memwrite : in std_logic; clock,reset : in std_logic; Output ports read_data : out std_logic_vector(31 downto 0) ); end dmemory; architecture arch_dmemory of dmemory is signal write_clock : std_logic; begin data_memory : altsyncram generic map ( operation_mode => "SINGLE_PORT", width_a => 32, widthad_a => 8, lpm_type => "altsyncram", outdata_reg_a => "UNREGISTERED", init_file => "dmemory.mif", intended_device_family => "Cyclone" ) 86 PORT MAP ( wren_a => memwrite, clock0 => write_clock, address_a => address, data_a => write_data, q_a => read_data ); write_clock