THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH BEQ (có code) THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH BEQ (có code) THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH BEQ (có code) THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH BEQ (có code) THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH BEQ (có code)
THIẾT KẾ CPU RISC 32 BIT ĐƠN CHU KỲ THỰC HIỆN LỆNH BEQ MỤC LỤC DANH MỤC CÁC HÌNH VẼ DANH MỤC CÁC BẢNG BIỂU HÌNH 1.1: CÁC TOÁN TỬ TRONG VERILOG HÌNH 1.1: Ý NGHĨA CÁC TỐN TỬ TRONG VERILOG HÌNH 2.1: CÁC LỆNH DÙNG TRONG KHUÔN DẠNG LỆNH DANH MỤC CÁC TỪ VIẾT TẮT CPLD Complex progamable logic device IM Instruction memory CPU Central Processing Unit HDLs Hardware Description Languages CISC Complex Instruction Set Computer MIPS Microprocessor without Interlocked Pipeline Stages RF Register File ALU Arithmetic Logic Unit FPGA Field-programable gate array RISC Reduced Instructions Set Computer Trang 6/24 CHƯƠNG TỔNG QUAN VỀ CPU RISC VÀ NGÔN NGỮ MÔ TẢ PHẦN CỨNG 1.1 Giới thiệu 1.1.1 RISC RISC (Reduced Instructions Set Computer - Máy tính với tập lệnh đơn giản hóa) phương pháp thiết kế vi xử lý theo hướng đơn giản hóa tập lệnh, thời gian thực thi tất lệnh Hiện vi xử lý RISC phổ biến ARM, SuperH, MIPS, SPARC, DEC Alpha, PA-RISC, PIC, PowerPC IBM Mục tiêu RISC đơn giản hóa lệnh, để lệnh thực thi chu kỳ máy Ngồi hướng thiết kế khác CISC (Complex Instruction Set Computer - Máy tính với tập lệnh phức tạp), hướng thiết kế trước RISC Dù cấp độ nào, đơn vị logic chip RISC cần transistor so với chip CISC Những đặc điểm thường thấy chip RISC: - Địng dạng chuẩn mã lệnh (làm trình giải mã đơn giản hơn) Các ghi đồng (có thể dùng để thay nhau) Cách đánh địa đơn giản Hỗ trợ kiểu liệu 1.1.2 Ngôn ngữ mô tả phần cứng Sự phát triển khoa học công nghệ ngày tăng để đáp ứng nhu cầu người, để giải vấn đề công nghệ người ta tạo vi mạch lập Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 7/24 trình (hay gọi chip đa chức năng) FPGA, CPLD…Nhưng vi mạch người tạo lại khơng thể hiểu ngơn ngữ người, người ta tạo loại ngơn ngữ giao tiếp người với vi mạch (hay với phần cứng) gọi ngơn ngữ lập trình Số lượng cổng logic tích hợp bên chip ngày lớn ( lên đến hàng triệu) dẫn đến việc dây thủ công gần bất khả thi, yêu cầu người lập trình phải thiết kế vi mạch số khoảng thời gian cho phép nên ngôn ngữ mô tả phần cứng HDLs đời Do HDLs giúp nâng cao suất thiết kế tạo đa dạng chức vi mạch số với tốc độ cao nên ngày sử dụng phổ biến HDLs có nhiều loại cho người lập trình lựa chọn có hai loại ngơn ngữ tiểu biểu sử dụng nhiều VHDL Verilog HDL 1.2 Verilog HDL Verilog HDL (thường gọi tắt Verilog) phát minh Gateway Design Automatic giới thiệu lần đầu vào năm 1984 Như đề cập hai ngơn ngữ thiết kế vi mạch phổ biến giới Để hoạt động lĩnh vực thiết kế phần cứng người kỹ sư sinh viên theo học cần phải biết qua ngôn ngữ Verilog HDL Được đánh giá từ đa số người giống với ngơn ngữ lập trình C (ngơn ngữ lập trình giảng dạy bắt đầu học lập trình) nên Verilog HDL dễ làm quen, dễ sử dụng có cú pháp ngắn gọn cấu trúc chương trình khơng q phức tạp Do thư viện ngôn ngữ Veriog hỗ trợ từ gần hầu hết công cụ thiết kế vi mạch nên trở thành lựa chọn tối ưu nhà lập trình Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 8/24 1.3 Cơ Verilog HDL 1.3.1 - - - - Quy ước chung từ khóa Khoảng trắng: bao gồm phím space, phím tab phím enter Chú thích: bao gồm thích đơn dòng (//…) nhiều dòng (/*…*/) Giúp ghi ý nghĩa câu lệnh, hay giá trị biến thêm vào, hỗ trợ cho người lập trình nhanh chóng nắm bắt nội dung chương trình Từ định danh: chữ “_”, không số “$” (những ký tự sau ký tự đầu số), có phân biệt chữ hoa,chữ thường Được dùng việc đặt tên cho biến, module, trường hợp, port xuất nhập hay khối lấy sử dụng Toán tử: loại toán tử đơn (a = !b), toán tử kép (a = c ^ d) toán tử điều kiện (a = x ? y : z) Chữ số: cho biết độ rộng (hay số bit số khai báo), kèm dạng số số khai báo ’b (nhị phân), ’o(bát phân), ’d(thập phân), ’h (thập lục phân) phần chữ số sau khai báo giá trị số Gạch dưới: giúp phân biệt số nhị phân trường hợp q nhiều bit Ngồi cơng dụng từ định danh “_” thêm vào mà số nhị phân có nhiều bit, giúp dễ phân biệt mà không làm thay đổi giá trị số 1.3.2 Module Module khối khối nhỏ mạch gọi vào sử dụng khối chính, bao gồm phần: - Tên module (định nghĩa) Các chân vào, module Chức module Kết thúc module 1.3.3 Kiểu liệu Gồm kiểu: - Net: Đóng vai trò sợi dây nối module, biến số trung gian input output Được dùng phép gán trực tiếp Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 9/24 Cú pháp: wire [msb:lsb] ten_bien; - Register: Đóng vai trò ghi, lưu giữ giá trị nhận giá trị Có công dụng kiểu Net dùng khối always, if… Cú pháp: reg [msb:lsb] ten_bien; - Parameter: Đóng vai trò tham số phần thiết kế Cú pháp: parameter [msb:lsb] ten_tham_so = gia_tri; 1.3.4 Các phép gán Phép gán liên tục: dùng để gán giá trị cho port, biến wire Khi sử dụng hoạt động cách đồng thời không phân biệt trước sau không nằm khối chức Từ khóa: “assign” Phép gán thủ tục: gồm Blocking Non-blocking, thường nằm khối chức - Blocking: đặt trưng dấu “=” Các phép gán thực cách tuần tự, - phép gán sau sử dụng kết phép gán trước Non-blocking: đặt trưng dấu “= == != & | ^ ~ > ? : {} Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 16/24 2.2.3 Khối Arithmetic Logic Unit (ALU) Dựa vào liệu từ khối RF để thực phép toán số học logic Hình 2.4: Khối ALU Thành phần khối ALU: - A, B: ngõ vào 32 bit nhận giá trị để thực tính tốn Op (Operation): ngõ vào bit, định ALU thực lệnh thiết kế - CPU thực nhiều lệnh khác Output: ngõ 32 bit, ngõ đưa giá trị sau tính tốn Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 17/24 2.3 Sơ đồ kết nối khối Hình 2.5: Sơ đồ tổng quát kết nối khối Ngồi khối đề cập đề tài thiết kế CPU RISC 32 bit thực lệnh beq phài có khối khác để hoạt động theo yêu cầu, bao gồm: - Các cộng (adder) Các mux 2-1 Khối PC Khối control Khối ALU control Bộ mở rộng dấu (signextend) Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 18/24 2.4 Lưu đồ giải thuật Hình 2.6: Lưu đồ giải thuật khối Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 19/24 2.5 Các thành phần chương trình 2.5.1 Module khối Bao gồm module alu, IM, RF, control, mux21, PC, signextend Mỗi module quy định hành vi chức hoạt động khối 2.5.2 Module kết nối khối Bao gồm module datacontrol, datapath cpu Các module liên kết khối lại với thông qua việc gọi module bên nó, tạo thành CPU hoàn chỉnh Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 20/24 CHƯƠNG KẾT QUẢ MÔ PHỎNG Hình 3.1: Kết mơ Kết mơ lệnh beq yêu cầu, giá trị ghi ngõ bật lên, thực rẽ nhánh Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 21/24 CHƯƠNG NHẬN XÉT 4.1 Ưu điểm Thiết kế đơn giản hóa với phương pháp RISC dựa kiến trúc MIPS Tốc độ tính tốn nâng cao với tập lệnh đơn giản 4.2 Nhược điểm Do có tập lệnh đơn giản nên người lập trình phải viết chương trình dài Ít lệnh hỗ trợ ngôn ngữ cấp cao Hỗ trợ kiểu liệu Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 22/24 CHƯƠNG KẾT LUẬN 5.1 Kết luận Kết mô với yêu cầu lệnh Chương trình khơng xảy lỗi biên dịch để nạp lên kit chạy thử 5.2 Hướng phát triển Từ CPU 32 bit đơn chu lệnh, nâng cấp lên thành CPU 64 bit đa chu nhiều lệnh Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 23/24 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Tống Văn On, Thiết kế vi mạch CMOS VLSI, Nhà xuất Phương Đông [2] Vũ Đức Lung, Lâm Đức Khải, Phan Đình Duy, Ngơn ngữ lập trình phần cứng Verilog, Nhà xuất Đại Học Quốc Gia TP Hồ Chí Minh [3] https://vi.wikipedia.org/wiki/ Tiếng Anh [4] Blaine Readler, Verilog by Example, Full ARC Press, United States [5] https://www.google.com.vn/ Thiết kế CPU RISC 32 bit đơn chu lệnh beq SVTH: Nguyễn Văn A Trang 24/24 PHỤ LỤC A Các chương trình //ALU 32bit module alu (alu1,alu2,aluop,zero); output zero; input [1:0]aluop; input [31:0]alu1,alu2; logic [31:0]x; always @(*) case (aluop) 2'b10:x