1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture

40 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Design a 32-bit RISC-V CPU using single-cycle architecture
Tác giả Lê Vĩnh Hà
Người hướng dẫn ThS. Huỳnh Hoàng Hà
Trường học Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh
Chuyên ngành Công nghệ kỹ thuật máy tính
Thể loại Đồ án
Năm xuất bản 2025
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 40
Dung lượng 1,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1 GIỚI THIỆU (11)
    • 1.1 GIỚI THIỆU (11)
    • 1.2 MỤC TIÊU ĐỀ TÀI (11)
    • 1.3 GIỚI HẠN NGHIÊN CỨU (12)
    • 1.4 PHƯƠNG PHÁP NGHIÊN CỨU (12)
    • 1.5 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU (13)
    • 1.6 BỐ CỤC QUYỂN BÁO CÁO (13)
  • CHƯƠNG 2 CƠ SỞ LÝ THUYẾT (14)
    • 2.1 GIỚI THIỆU VỀ RISC-V (14)
      • 2.1.1 TỔNG QUAN VỀ RISC-V (14)
      • 2.1.2 SO SÁNH KIẾN TRÚC RISC VÀ CISC (14)
    • 2.2 KIẾN TRÚC TẬP LỆNH RISC-V (15)
      • 2.2.1 R – format layout (16)
      • 2.2.2 I – format layout (17)
      • 2.2.3 Load and Store – format layout (18)
      • 2.2.4 B – format layout (19)
      • 2.2.5 J – format layout (20)
      • 2.2.6 U-format layout (Upper immediate) (21)
  • CHƯƠNG 3 THIẾT KẾ (24)
    • 3.1 PROGRAM COUNTER (24)
    • 3.2 INSTRUCTION MEMORY (24)
    • 3.3 REGISTER FILE (25)
    • 3.4 IMMEDIATE GENERATION (26)
    • 3.5 BRANCH (26)
    • 3.6 ARITHMETIC LOGIC UNIT (27)
    • 3.7 LOAD AND STORE UNIT (29)
    • 3.8 CONTROL UNIT (Ctrl_Unit) (30)
    • 3.9 SINGLE_CYCLE (31)
  • CHƯƠNG 4 KẾT QUẢ THỰC NGHIỆM (32)
    • 4.1 CÁCH THỨC THỰC HIỆN VÀ ĐO ĐẠC (32)
    • 4.2 KẾT QUẢ MÔ PHỎNG (32)
      • 4.2.1 MODULE INSTRUCTION MEMORY (32)
      • 4.2.2 MODULE REGRISTER FILE (32)
      • 4.2.3 IMMEDIATE GENERATION (34)
      • 4.2.4 BRANCH (34)
      • 4.2.5 ALU (35)
      • 4.2.6 LSU (36)
      • 4.2.7 SINGLE CYCLE (36)
  • CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (37)
    • 5.1 KẾT LUẬN (37)
    • 5.2 HƯỚNG PHÁT TRIỂN (38)

Nội dung

CHƯƠNG 1 GIỚI THIỆU 1.1 GIỚI THIỆUĐề tài "Thiết Kế Bộ Xử Lý Đơn Chu Kỳ Dựa Trên Kiến Trúc RISC-V 32I" tậptrung vào việc ứng dụng kiến thức về kiến trúc máy tính và thiết kế phần cứng đểx

GIỚI THIỆU

GIỚI THIỆU

Đề tài "Thiết Kế Bộ Xử Lý Đơn Chu Kỳ Dựa Trên Kiến Trúc RISC-V 32I" tập trung vận dụng kiến thức về kiến trúc máy tính và thiết kế phần cứng để xây dựng một mô hình CPU đơn chu kỳ hiệu quả và chuẩn hóa Thông qua triển khai RISC-V 32I, một kiến trúc mở và hiện đại, đề tài nhắm tới tạo ra một bộ xử lý có khả năng thực thi các lệnh cơ bản với độ chính xác và tốc độ cao, đồng thời tối ưu hóa thiết kế để giảm thiểu độ phức tạp và tiết kiệm tài nguyên.

Thiết kế theo mô hình đơn chu kỳ (single-cycle) sử dụng ngôn ngữ mô tả phần cứng SystemVerilog cho phép xây dựng một CPU có cấu trúc rõ ràng và dễ hiểu Dự án không chỉ triển khai đầy đủ các khối chức năng chủ chốt như ALU, bộ thanh ghi, bộ điều khiển và bộ nhớ mà còn chú trọng vào kiểm thử và đánh giá hiệu năng thông qua môi trường mô phỏng, từ đó đo đạc và tối ưu hóa hoạt động của toàn bộ hệ thống Mục tiêu là tạo ra một nền tảng CPU đơn giản, phù hợp cho việc học tập và nghiên cứu, đồng thời làm nền tảng phát triển cho các hệ thống phức tạp hơn trong tương lai.

MỤC TIÊU ĐỀ TÀI

Đề tài thiết kế và xây dựng một mô hình bộ xử lý đơn chu kỳ dựa trên kiến trúc RISC-V 32I nhằm giúp sinh viên nắm vững nguyên lý vận hành của vi xử lý và quy trình thiết kế phần cứng Qua dự án, sinh viên được thực hành viết và triển khai các khối xử lý, ứng dụng lý thuyết vào thực tế và đánh giá hiệu suất CPU ở mức đơn chu kỳ Mục tiêu cuối cùng là tạo ra một mô hình CPU đơn giản, hiệu quả và dễ mở rộng, làm nền tảng cho hoạt động học tập và nghiên cứu chuyên sâu về vi xử lý và kiến trúc RISC-V 32I sau này.

Cụ thể, đề tài tập trung vào các mục tiêu sau:

Thiết kế và mô phỏng kiến trúc CPU đơn chu kỳ dựa trên chuẩn RISC-V 32I, trình bày cách xây dựng các khối chức năng cơ bản của bộ xử lý như bộ điều khiển, bộ giải mã lệnh, ALU, bộ thanh ghi và hai loại bộ nhớ là bộ nhớ dữ liệu và bộ nhớ chương trình Quá trình này cho phép phân tích chi tiết cách một CPU đơn chu kỳ hoạt động, từ điều phối tín hiệu điều khiển tới thực hiện các thao tác logic và lưu trữ dữ liệu, phục vụ mục tiêu giáo dục và phát triển hệ thống vi xử lý nhúng.

Để đảm bảo tương thích với RISC-V RV32I, hệ thống cần triển khai đầy đủ tập lệnh RV32I theo đúng đặc tả tiêu chuẩn CPU phải có khả năng xử lý các lệnh số học và lệnh logic, thực hiện các phép toán như cộng, trừ và các thao tác bitwise một cách chính xác Hệ thống cũng cần hỗ trợ các lệnh điều kiện rẽ nhánh và các lệnh tải/ghi bộ nhớ để quản lý luồng dữ liệu và chương trình đúng thứ tự Đồng thời, lệnh điều khiển và điều khiển luồng phải được triển khai đúng chuẩn nhằm đảm bảo tính tương thích, ổn định và tối ưu hiệu suất trên nhiều nền tảng.

Hoạt động của CPU được mô phỏng bằng ngôn ngữ SystemVerilog, cho phép thiết kế phần cứng và viết testbench kiểm thử ngay trên môi trường mô phỏng Việc sử dụng SystemVerilog giúp mô phỏng các yếu tố tín hiệu, chu kỳ hoạt động và luồng dữ liệu của CPU một cách chi tiết mang lại khả năng xác thực cao Xây dựng testbench phù hợp cho hệ thống CPU cho phép kiểm tra các chức năng cơ bản đến phức tạp, từ lệnh và chu trình điều khiển đến sự tương tác với bộ nhớ và ngoại vi Các công cụ mô phỏng như ModelSim hoặc Questa Sim hỗ trợ việc phân tích thời gian, trace tín hiệu và phát hiện lỗi sớm, từ đó tối ưu thiết kế phần cứng và đảm bảo tính đúng đắn của hệ thống.

Việc theo dõi và kiểm tra tín hiệu bên trong CPU là một hoạt động then chốt trong thiết kế và vận hành hệ thống máy tính Bằng cách quan sát đường truyền dữ liệu và tín hiệu điều khiển trong từng chu kỳ xung, chúng ta có thể phát hiện sai lệch và đảm bảo tính chính xác của việc thực thi lệnh Quá trình này giúp tối ưu luồng dữ liệu, nâng cao độ tin cậy của bộ xử lý và cải thiện hiệu suất hệ thống, đồng thời hỗ trợ nhận diện các bottleneck và lỗi ở các mạch điều khiển, thanh ghi và đường truyền dữ liệu Các kỹ thuật như phân tích thời gian trễ, mô phỏng tín hiệu và kiểm tra đồng bộ đóng vai trò quan trọng trong việc đảm bảo CPU hoạt động đúng thứ tự và đáp ứng đúng yêu cầu của tín hiệu điều khiển trong mọi chu kỳ.

Đặt nền tảng cho việc mở rộng và nâng cấp CPU bằng một thiết kế có khả năng mở rộng trong tương lai Thiết kế này cho phép bổ sung pipeline để tăng hiệu suất và thông lượng, hỗ trợ ngắt để xử lý đa nhiệm hiệu quả, đồng thời tích hợp thêm tập lệnh ngoài RV32I nhằm mở rộng khả năng tương thích và linh hoạt cho các ứng dụng sau này.

GIỚI HẠN NGHIÊN CỨU

Đề tài thiết kế bộ xử lý đơn chu kỳ theo kiến trúc RISC-V 32I được thực hiện với phạm vi mô phỏng ở quy mô nhỏ nhằm mục tiêu học tập và nghiên cứu Hệ thống được thiết kế dưới dạng mô hình cơ bản, tập trung triển khai đầy đủ các lệnh thuộc tập lệnh RV32I và chưa bao gồm các tập lệnh mở rộng như RV32M (nhân–chia), RV32A (atomic) hay RV32F (số thực).

Do giới hạn về thời gian, nhân lực và tài nguyên, đề tài chưa hướng đến việc tối ưu hiệu suất phần cứng hoặc triển khai thực tế trên FPGA Việc kiểm thử chủ yếu được thực hiện trong môi trường mô phỏng (simulation) và chưa áp dụng kiểm thử trên mạch vật lý.

Ngoài ra, vì đây là CPU đơn chu kỳ nên hiệu suất xử lý chưa cao, không phù hợp cho các ứng dụng yêu cầu tính toán phức tạp hoặc tốc độ xử lý nhanh Mô hình chưa hỗ trợ pipeline, ngắt (interrupt), và các tính năng nâng cao khác thường có trong các CPU hiện đại.

PHƯƠNG PHÁP NGHIÊN CỨU

Phân tích yêu cầu cho RV32I nhằm xác định đầy đủ các thành phần cần có của một CPU đơn chu kỳ, gồm xác định tập lệnh cần hỗ trợ, thiết kế luồng dữ liệu và các tín hiệu điều khiển để đảm bảo tuân thủ đặc tả của RISC-V Nghiên cứu chi tiết kiến trúc RV32I giúp định hình các khối cốt lõi như đơn vị điều khiển, ALU, thanh ghi và bộ nhớ, đồng thời tối ưu hóa luồng dữ liệu và hệ thống tín hiệu điều khiển phù hợp với tập lệnh và yêu cầu của RV32I Kết quả là một thiết kế CPU đơn chu kỳ tương thích với RISC-V, tối ưu về hiệu suất và tính tin cậy, với sự tuân thủ nghiêm ngặt đặc tả RV32I và các yếu tố tập lệnh, dữ liệu và điều khiển.

Thiết kế hệ thống CPU bắt đầu từ thiết kế kiến trúc tổng thể, xác định các khối chức năng cốt lõi gồm bộ giải mã lệnh, bộ điều khiển, ALU, bộ thanh ghi, cùng với bộ nhớ chương trình và dữ liệu Việc phác thảo sơ đồ khối, đường truyền dữ liệu (datapath) và tín hiệu điều khiển (control signals) tạo nền tảng cho sự phối hợp nhịp nhàng giữa các thành phần, đảm bảo hoạt động đúng và tối ưu trong từng chu kỳ lệnh.

Phương pháp hiện thực phần cứng tập trung vào việc mô tả và mô phỏng các thành phần của CPU bằng Verilog — ngôn ngữ mô tả phần cứng cho phép xây dựng, kiểm thử và xác nhận chức năng một cách chi tiết Việc sử dụng Verilog giúp tạo các mô-đun cấu thành CPU và mô phỏng hoạt động của chúng trong môi trường thiết kế Áp dụng nguyên lý thiết kế đồng bộ và sử dụng xung clock chung cho toàn bộ hệ thống đảm bảo sự nhất quán, đồng bộ trạng thái và giảm thiểu sai lệch giữa các phần của CPU trong quá trình vận hành.

Để kiểm thử CPU, xây dựng một testbench nhằm kiểm tra hoạt động của bộ xử lý với các chương trình mẫu Quá trình mô phỏng được thực hiện trên các phần mềm chuyên dụng như ModelSim hoặc QuestaSim để đảm bảo tính đúng đắn của quá trình thực thi lệnh Trong quá trình mô phỏng, các nhà phát triển kiểm tra luồng dữ liệu và tín hiệu điều khiển ở mỗi chu kỳ để phát hiện và khắc phục sai sót một cách hiệu quả.

Đánh giá hiệu quả hoạt động của CPU được thực hiện bằng cách đo khả năng thực thi dựa trên các tiêu chí như độ chính xác trong xử lý lệnh, khả năng mở rộng và sự phù hợp với đặc tả kiến trúc RISC-V Quá trình phân tích các hạn chế hiện tại giúp đề xuất các hướng cải tiến trong tương lai, ví dụ bổ sung pipeline, hỗ trợ ngắt và mở rộng tập lệnh, nhằm tăng hiệu suất, tính ổn định và khả năng triển khai của hệ thống.

ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU

Đề tài nghiên cứu kiến trúc RISC-V RV32I ở chế độ single-cycle, tập trung thiết kế và mô phỏng các thành phần chính bằng Verilog gồm ALU, Register File, bộ nhớ và đơn vị điều khiển; đồng thời phân tích cách chúng phối hợp để thực thi lệnh trong một chu trình và đánh giá hiệu suất qua mô phỏng và testbench Bài viết cũng khảo sát cơ chế CPU giao tiếp với các thiết bị ngoại vi để điều khiển và kiểm thử hoạt động hệ thống, từ nhận lệnh đến truy cập bộ nhớ và ngoại vi Tổng thể, nội dung làm rõ quy trình thiết kế hệ thống RISC-V RV32I single-cycle, cách tối ưu luồng dữ liệu và giao tiếp ngoại vi, và cung cấp phương pháp kiểm thử toàn diện cho hoạt động của hệ thống.

BỐ CỤC QUYỂN BÁO CÁO

Nội dung chính của đề tài được trình bày với 5 chương:

 Chương 1 GIỚI THIỆU: giới thiệu chung về đề tài, mục tiêu nghiên cứu, giới hạn đề tài, phương pháp nghiên cứu, đối tượng và phạm vi nghiên cứu.

 Chương 2 CƠ SỞ LÝ THUYẾT: giới thiệu về tình hình nghiên cứu, hướng nghiên cứu.

 Chương 3 THIẾT KẾ : Mô tả chức năng và thiết kế của từng khối.

 Chương 4 KẾT QUẢ THỰC NGHIỆM: trình bày kết quả mô phỏng trên phần mềm Questa Sim.

 Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: rút ra các kết luận, điểm mạnh điểm yếu và hướng phát triển của mô hình.

CƠ SỞ LÝ THUYẾT

GIỚI THIỆU VỀ RISC-V

RISC-V là một kiến trúc tập lệnh (ISA) mã nguồn mở, được phát triển dựa trên nguyên lý của kiến trúc RISC (Reduced Instruction Set Computer) Khác với ARM và các kiến trúc phổ biến khác, RISC-V được thiết kế để trở thành một chuẩn mở, dễ mở rộng và hoàn toàn không yêu cầu phí bản quyền Nhờ tính mở và miễn phí giấy phép, RISC-V có thể được triển khai trên nhiều loại thiết bị khác nhau mà không gặp rào cản về chi phí, từ vi mạch nhúng đến hệ thống máy chủ, thúc đẩy đổi mới và tùy biến theo nhu cầu người dùng.

Theo các nhà phát triển RISC-V, việc cung cấp một kiến trúc CPU miễn phí và mở có thể làm giảm đáng kể chi phí phát triển phần mềm nhờ khả năng tái sử dụng mã nguồn một cách linh hoạt và dễ dàng tích hợp các giải pháp hiện có Mô hình mở này cho phép cộng đồng và doanh nghiệp tận dụng tối đa nguồn lực, gia tăng tốc độ triển khai và thúc đẩy sự đổi mới trong ngành thiết kế vi xử lý Nhờ đó, cạnh tranh lành mạnh được đẩy mạnh và hệ sinh thái phần mềm mở rộng, mang lại lợi ích cho người dùng và nhà phát triển.

2.1.2 SO SÁNH KIẾN TRÚC RISC VÀ CISC

Trong quá trình thiết kế kiến trúc máy tính CISC, phức tạp ở phần cứng tạo ra nguy cơ cao và làm tăng thời gian phát triển Việc thiết kế các kiến trúc CISC mới thường tốn nhiều thời gian hơn do độ phức tạp lớn và yêu cầu tối ưu hóa nhiều thành phần Ngược lại, kiến trúc RISC có tính đơn giản và dễ triển khai, giúp rút ngắn thời gian ra thị trường và giảm nguy cơ so với CISC.

Hình 2.1.2 Quá trình biên dịch của RISC và CISC

RISC (Reduced Instruction Set Computer) thường được cho là có trình biên dịch phức tạp vì để thực hiện cùng một thao tác, hệ thống này cần nhiều lệnh hơn để đạt được kết quả mong muốn Tuy các lệnh của RISC có độ dài cố định, điều này làm cho quá trình giải mã và điều khiển của bộ xử lý trở nên đơn giản hơn, từ đó tăng tốc độ thực thi và tối ưu hiệu suất.

Kiến trúc CISC (Complex Instruction Set Computer) nổi bật với tập lệnh đa dạng và cho phép một lệnh có thể ghi vào thanh ghi hoặc trực tiếp vào bộ nhớ Tuy nhiên, độ dài lệnh khác nhau khiến quá trình giải mã và thực thi của bộ xử lý trở nên phức tạp, từ đó bộ xử lý có thể hoạt động chậm hơn so với các kiến trúc có độ dài lệnh đồng nhất.

Tiêu chí RISC (Vi xử lý tập lệnh rút gọn)

CISC (Vi xử lý tập lệnh phức tạp) Độ dài lệnh Cố định (thường 32-bit, 64-bit) Biến đổi (1 - 15 byte trong x86)

Số lượng lệnh Ít hơn, tập trung vào các lệnh đơn giản

Nhiều hơn, có các lệnh

14 phức tạp như MUL, DIV, PUSH, POP

Thấp (1 lệnh thường hoàn thành trong 1 chu kỳ)

Cao hơn (các lệnh phức tạp mất nhiều chu kỳ hơn)

Dễ tối ưu hóa do độ dài lệnh cố định

Khó tối ưu hóa hơn do độ dài lệnh thay đổi

Bộ nhớ Chỉ sử dụng các lệnh LOAD và

STORE để truy xuất bộ nhớ

Có thể truy xuất bộ nhớ trực tiếp trong nhiều lệnh

Nhiều hơn (~32 hoặc hơn) Ít hơn (~8-16 trên x86) Độ phức tạp của

CPU Ít phức tạp, dễ mở rộng và tiết kiệm điện

Phức tạp hơn do có nhiều mạch xử lý lệnh đa dạng

Tốc độ xử lý Cao hơn do tối ưu pipeline và độ trễ thấp

Có thể chậm hơn trong một số trường hợp do lệnh phức tạp Ứng dụng thực tế

Dùng trong các hệ thống nhúng, thiết bị di động, siêu máy tính (ARM, RISC-V, PowerPC)

Dùng trong PC, máy chủ, hệ thống doanh nghiệp (Intel x86, AMD64)

Bảng 2.1.1 Bảng so sánh RISC và CISC

KIẾN TRÚC TẬP LỆNH RISC-V

Kiến trúc Single-Cycle RV32I có 32 thanh ghi x0–x31, trong đó x0 được gán cố định bằng 0 và x1 làm thanh ghi trả về giá trị khi được gọi hàm Với RV32, mỗi thanh ghi có kích thước 32 bit và chứa các trường opcode, funct3, funct7, rd, rs1, rs2 và imm[], phục vụ cho quá trình giải mã và thực thi lệnh Hệ thống này hỗ trợ 6 dạng lệnh cơ bản: R-type, I-type, S-type, B-type, U-type và J-type, mỗi dạng xác định cách ghép các trường và cách xử lý địa chỉ khác nhau để thực thi các thao tác số học, logic và truy cập bộ nhớ.

Bảng 2.2: Kiến trúc tập lệnh RISC-V

 opcode: Có độ rộng 7-bits, dùng để phân biệt các dạng lệnh.

 rd (destination register): Thanh ghi đích, chứa kết quả phép tính giữa rs1,rs2, imm, thông qua bộ xử lý số học ALU.

 rs1 (source register 1): Chỉ định thanh ghi thứ nhất, có độ rộng 5-bits tương ứng từ x0 – x31.

 rs2 (source register 2): Chỉ định thanh ghi thứ hai, có độ rộng 5-bits tương ứng từ x0 – x31.

 funct3 & funct7: Opcode dùng để phân biệt đây là dạng lệnh nào, thì funct3 & funct7chỉ rõ chức năng riêng của từng lệnh trong dạng lệnh đó.

 imm (immediate): Giá trị tức thời.

Chức năng của các lệnh:

 R-type: Được sử dụng cho các lệnh tính toán số học và logic, với cả hai toán hạng đều là các thanh ghi

 I-type: Áp dụng cho các lệnh truy cập bộ nhớ, lệnh tính toán với toán hạng tức thời (immediate), và các lệnh nhảy có điều kiện

 S-type: Được sử dụng cho các lệnh lưu trữ dữ liệu từ thanh ghi vào bộ nhớ

 B-type: Sử dụng cho các lệnh nhảy có điều kiện

 U-type: Áp dụng cho các lệnh tạo tức thời với độ rộng lớn (upper immediate)

 J-type: Được sử dụng cho các lệnh nhảy không điều kiện với phạm vi lớn.

Bảng 2.2.1a: Cấu trúc lệnh của R-type

RV32I định nghĩa R-type là các phép toán thực hiện giữa hai thanh ghi (register-to-register) Các thao tác này đọc hai nguồn rs1 và rs2 và ghi kết quả vào thanh ghi đích rd, tạo ra một lệnh tách biệt trong lộ trình xử lý Các trường funct3 và funct7 quyết định kiểu phép toán được thực hiện, còn opcode đặc trưng cho loại lệnh R-type trong tập lệnh RV32I Tóm lại, một lệnh R-type trong RV32I mô tả phép tính giữa hai thanh ghi, với rs1 và rs2 làm đầu vào, rd làm đầu ra, và được mã hóa bằng các trường funct3, funct7 cùng với opcode để chọn phép toán cụ thể như ADD, SUB, AND, OR và các phép dịch hoặc so sánh khác.

Chức năng cụ thể của các lệnh:

 add: phép cộng giữa rs1, rs2 lưu vào thanh ghi đích rd.

 sub: phép trừ giữa rs1, rs2 lưu vào thanh ghi đích rd.

 sll (Shift left logical): dịch bit rs1 sang bên trái với số bit tương ứng với giá trị rs2, lưu kết quả vào thanh ghi đích rd.

 srl (Shift right logical): Tương tự SLL, nhưng dịch rs1 sang bên phải.

 slt (Set less than): So sánh rs1 với rs2, nếu rs1 < rs2 thì ta set rd = 1 và ngược lại.

 sltu (Set less than unsigned): So sánh không dấu giữa rs1 với rs2, nếu rs1> imm[4:0]

4’d4 xor rd = rs1 ⊕ rs2 rd = rs1 ⊕ imm

4’d5 and rd = rs1 ^ rs2 rd = rs1 ^ imm

4’d6 or rd = rs1 | rs2 rd = rs1 | imm

4’d9 sra rd = rs1 >>> rs2[4:0] rd = rs1 >>> imm[4:0]

4’d10 GrabOnlyB rd = rs2 rd=rs2

Bảng 3.6a Bảng chức năng của bộ ALU

Ngoài những chức năng trên, ALU còn có chức năng chỉ lấy giá trị đầu vào thứ hai làm ngõ ra (grab only B).

 ALU có 11 chức năng được biểu diễn 4-bits, ALU_sel thực hiện chức năng chọn loại phép toán nào sẽ được thực hiện.

Hình 3.6 Sơ đồ khối bộ ALU

i_rs1_data is a 32-bit input value for the first ALU input, sourced through a 2-to-1 multiplexer i_rs2_data is a 32-bit input value for the second ALU input, sourced through a 2-to-1 multiplexer i_alu_sel is a 4-bit control signal from the CTRL_UNIT that selects which ALU operation will be performed.

28 o_result_alu Output 32 Kết quả thực hiện được.

Bảng 3.6b Bảng tín hiệu bộ ALU.

LOAD AND STORE UNIT

LSU (Load-Store Unit) đảm nhận chức năng tải dữ liệu từ bộ nhớ vào thanh ghi và lưu dữ liệu từ thanh ghi vào bộ nhớ, từ đó quản lý sự tương tác giữa bộ xử lý và bộ nhớ một cách hiệu quả Chức năng này tối ưu hóa luồng dữ liệu, giảm độ trễ truy cập bộ nhớ và tăng hiệu suất hệ thống bằng cách đồng bộ hóa xử lý và quản lý việc truyền dữ liệu giữa CPU và bộ nhớ.

Bộ LSU được chia thành 3 phần:

 input_peripheral: nhận tín hiệu từ thiết bị ngoại vi như switch, button

 output_peripheral: nơi lưu trữ tín hiệu, được thể hiện trên các vị ngoại vi như lcd, led 7 đoạn, led đỏ, led xanh

 data_memory: nơi lưu trữ dữ liệu thông qua bộ tính toán ALU được thực hiện qua các lệnh lưu trữ (store), tải (load)

Hình 3.7a Sơ đồ phân bổ bộ nhớ.

Signal overview: i_clk is the global clock input and i_rst is the global reset input that initializes the system The i_lsu_op (4-bit) selects the operation to be performed by the control unit, while i_lsu_addr (3-bit IMEM) selects the type of load or store instruction, and i_lsu_wren (1-bit) enables memory writes External peripherals include i_io_sw (32-bit switches) and i_io_btn (4-bit push-buttons) The data path provides o_ld_data (32-bit) as the loaded data, with peripherals displaying results via io_ledr and io_ledg (each 32-bit for red and green LEDs) Hex displays io_hex0 to io_hex7 render hexadecimal values for debugging and monitoring.

Peripherals 7 Hiển thị trên đèn led 7 đoạn io_lcd Peripherals 32 Hiển thị trên LCD

Bảng 3.7 Bảng tín hiệu bộ LSU

CONTROL UNIT (Ctrl_Unit)

Chức năng của Bộ Ctrl_Unit là điều khiển toàn bộ luồng dữ liệu trong CPU bằng việc phát và điều phối các tín hiệu điều khiển cần thiết cho ALU, thanh ghi, bộ nhớ và các thành phần khác của hệ thống dựa trên mã lệnh (opcode) nhận được từ bộ giải mã Thông qua opcode từ bộ giải mã, Ctrl_Unit xác định thứ tự và phương thức thực thi, phát tín hiệu điều khiển tương ứng để thực hiện các phép toán, truy cập bộ nhớ và đồng bộ hóa hoạt động giữa ALU, thanh ghi và các khối liên quan.

Trong thiết kế bộ xử lý, các tín hiệu điều khiển sau đóng vai trò định hình luồng điều khiển và thực thi lệnh: i_BrEq và i_BrLT là tín hiệu 1 bit cho biết có nhảy hay không; inst là tín hiệu 32 bit đưa lệnh từ IMEM về bộ điều khiển để quyết định hành động; o_pc_sel là tín hiệu 1 bit quyết định PC sẽ thực hiện địa chỉ nào; o_rd_wren là tín hiệu 1 bit cho phép ghi vào reg_file; o_BrUn là tín hiệu 1 bit cho phép bộ nhánh so sánh có dấu; o_a_sel là tín hiệu 2 bit để chọn toán hạng thứ nhất cho ALU; o_b_sel là tín hiệu 2 bit để chọn toán hạng thứ hai cho ALU; o_alu_sel là tín hiệu 4 bit để chọn phép toán cho ALU; o_lsu_wren là tín hiệu 1 bit cho phép ghi dữ liệu vào bộ LSU Các tín hiệu này phối hợp với nhau để giải mã lệnh, điều khiển ghi dữ liệu và thực hiện các phép toán trong mức điều khiển của hệ thống.

ALU. o_wb_sel Output 2 Lựa chọn luồng dữ liệu nào được ghi lại vào thanh ghi (reg_file).

Bảng 3.8 Bảng tín hiệu bộ Control Unit

SINGLE_CYCLE

Sau khi thiết kế các module đơn lẻ, việc cuối cùng ta thực hiện ghép các module với nhau, để tạo nên bộ CPU hoàn chỉnh.

Hình 3.9 Sơ đồ khối mô tả hoạt động của RV32I CPU

KẾT QUẢ THỰC NGHIỆM

KẾT QUẢ MÔ PHỎNG

Đề tài trình bày lần lượt các bước RTL design và simulation được thực hiện trên công cụ Questa Sim Mã RTL được viết bằng Verilog hoặc SystemVerilog và lưu dưới dạng các file có phần mở rộng sv, mỗi file chứa một module chức năng riêng biệt, đảm bảo cấu trúc mô-đun rõ ràng và dễ mô phỏng.

Thực hiện mô phỏng (simulate) bằng Questa Sim:

Cách thức kiểm tra hoạt động của CPU:

• Viết testbench cho từng khối nhỏ có trong hệ thống, sau đó thực hiện trên toàn bộ hệ thống.

Dãy mã hex trong chương trình:

Hình 4.2.1a Waveform của module IMEM Nhận xét: Khi có xung clock, bộ đếm chương trình PC = PC +4, mỗi địa chỉ tương ứng với một mã hex.

Hình 4.2.1b Schematic của module imem

// Test 1: Write to register 1 and read it back

00200613 i_rd_addr = 5'd1; i_rd_data = 32'hAAAA_AAAA; i_rd_wren = 1;

// Test 2: Write to register 5 and read using both ports

#10;i_rd_addr = 5'd5; i_rd_data = 32'h5555_5555; i_rd_wren = 1;

// Read register 5 from both ports

// Test 3: Try writing to register 0 (should stay 0) i_rd_addr = 5'd0; i_rd_data = 32'hFFFF_FFFF; i_rd_wren = 1;

Hình 4.2.2a Waveform của module REG_FILE

Hình 4.2.2b Schematic của module REG_FILE

// I-type (ANDI) i_inst = 32'b000000000111_00010_000_00001_0010011; // imm = 7 // I-type (ANDI) i_inst = 32'b111111111001_00010_111_00001_0010011; // imm = -7 // I-type (SLLI) - imm from [24:20] = 5 i_inst = 32'b0000000_00101_00010_001_00001_0010011;

// Load-type (LW) i_inst = 32'b000000001100_00010_010_00001_0000011; // imm = 12 // Store-type (SW) i_inst = 32'b0000001_00101_00010_010_00110_0100011; // imm = {7'h01, 5'b00110} = 0x26 = 38

// JALR (I-type) i_inst = 32'b000000000100_00010_000_00001_1100111; // imm = 4 // JAL// imm = {i[31], i[19:12], i[20], i[30:21], 0} i_inst = 32'b0_0000000110_0_00000010_00001_1101111; // imm = 32'd8204

Hình4.2.3a Waveform của module ImmGen

Hình 4.2.3b Schematic của module ImmGen

4.2.4 BRANCH i_rs1_data = 32'd10;i_rs2_data = 32'd10;i_BrUn = 1; i_rs1_data = 32'd5;i_rs2_data = 32'd15;i_BrUn = 1; i_rs1_data = 32'd100;i_rs2_data = 32'd10;i_BrUn = 1; i_rs1_data = -32'sd7;i_rs2_data = -32'sd7;i_BrUn = 0;

34 i_rs1_data = -32'sd20;i_rs2_data = 32'sd5;i_BrUn = 0; i_rs1_data = 32'sd12;i_rs2_data = -32'sd5;i_BrUn = 0; i_rs1_data = 32'hFFFFFFFF;i_rs2_data = 32'h00000000;i_BrUn = 0;

Hình 4.2.4a Waveform của module Branch

Hình 4.2.4b Schematic của module Branch

Hình 4.2.6a Waveform của module ALU

Hình 4.2.6b Schematic của module ALU

Hình 4.2.6 Waveform của module LSU

Hình 4.2.7a Bảng mã hex chương trình

Hình 4.2.7b Mô tả hoạt động của CPU

Ngày đăng: 05/11/2025, 14:34

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Don Kurian Dennis, Ayushi Priyam, Sukhpreet Singh Virk, Sajal Agrawal, Tanuj Sharma, Arijit Mondal and Kailash Chandra Ray, “Single Cycle RISC-V Micro Architecture Processor and its FPGA Prototype”, truy cập từ https://ieeexplore.ieee.org/document/8303926 Sách, tạp chí
Tiêu đề: Single Cycle RISC-VMicro Architecture Processor and its FPGA Prototype
[2] Aneesh Raveendran, Vinayak Baramu Patil, David Selvakumar, Vivian Desalphine Centre for Development of Advanced Computing, “A RISC-V instruction set processor-micro-architecture design and analysis” truy cập từ https://ieeexplore.ieee.org/document/7593047 Sách, tạp chí
Tiêu đề: A RISC-Vinstruction set processor-micro-architecture design and analysis
[3] David A. Patterson, John Hennessy, “Computer Organization and Design – RISC V Edition: The Hardware/Software Interface”, Nhà xuất bản Morgan Kaufmann Sách, tạp chí
Tiêu đề: Computer Organization and Design –RISC V Edition: The Hardware/Software Interface
Nhà XB: Nhà xuất bản MorganKaufmann
[4] CS61C, UC Berkeley, Slide, Youtube, truy cập từ https://github.com/SMS- Derfflinger/self-learning/blob/master/CS61C/fa20/slide/2020Fa-CS61C-2020Fa-Module-2-C.pdfhttps://www.youtube.com/watch?v=VJ6tuX5bBf4&amp;list=PL0j-r-omG7i0-mnsxN5T4UcVS1Di0isqf Link
[5] The RISC-V Instruction Set Manual, Volume I: User Level ISA, Version 2.0 truy cập từ https://citeseerx.ist.psu.edu/document?repid=rep1&amp;type=pdf&amp;doi=097d9b196e215e2b65fabf8c94271d4075571c55 Link

HÌNH ẢNH LIÊN QUAN

Bảng 2.1.1 Bảng so sánh RISC và CISC - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Bảng 2.1.1 Bảng so sánh RISC và CISC (Trang 15)
Bảng 2.2.1b: Nhóm lệnh R-type - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Bảng 2.2.1b Nhóm lệnh R-type (Trang 17)
Bảng 2.2.3c: Cấu trúc lệnh của S-type - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Bảng 2.2.3c Cấu trúc lệnh của S-type (Trang 19)
Hình 2.2.3 Hoạt động của kiến trúc risc-v single cycle - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Hình 2.2.3 Hoạt động của kiến trúc risc-v single cycle (Trang 22)
Hình 3.2 Sơ đồ khối của IMEM - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Hình 3.2 Sơ đồ khối của IMEM (Trang 25)
Bảng 3.3 Bảng tín hiệu của REG_FILE - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Bảng 3.3 Bảng tín hiệu của REG_FILE (Trang 26)
Bảng 3.6a Bảng chức năng của bộ ALU - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Bảng 3.6a Bảng chức năng của bộ ALU (Trang 28)
Bảng 3.6b Bảng tín hiệu bộ ALU. - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Bảng 3.6b Bảng tín hiệu bộ ALU (Trang 29)
Bảng 3.8 Bảng tín hiệu bộ Control Unit - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Bảng 3.8 Bảng tín hiệu bộ Control Unit (Trang 30)
Hình 3.9 Sơ đồ khối mô tả hoạt động của RV32I CPU - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Hình 3.9 Sơ đồ khối mô tả hoạt động của RV32I CPU (Trang 31)
Hình 4.2.2a Waveform của module REG_FILE - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Hình 4.2.2a Waveform của module REG_FILE (Trang 33)
Hình 4.2.2b Schematic của module REG_FILE - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Hình 4.2.2b Schematic của module REG_FILE (Trang 34)
Hình 4.2.4a Waveform của module Branch - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Hình 4.2.4a Waveform của module Branch (Trang 35)
Hình 4.2.6 Waveform của module LSU - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Hình 4.2.6 Waveform của module LSU (Trang 36)
Hình 4.2.7a Bảng mã hex chương trình - Ngành công nghệ kỹ thuật máy tính design a 32 bit risc v cpu using single cycle architecture
Hình 4.2.7a Bảng mã hex chương trình (Trang 36)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w