Bài giảng Vi xử lý nâng cao - Phần 2: Các hướng dẫn - Hướng dẫn 8: Thiết kế CPU đơn chu kỳ

Mở đầu
Viết trình mô phỏng bộ xử lý MIPS có tên là MiniSPIM.
– VHDL.
– Đường dữ liệu đơn chu kỳ.
 Đường dữ liệu và các tín hiệu điều khiển giống như bộ xử lý MIP
pdf 29 trang thamphan 27/12/2022 3120
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý nâng cao - Phần 2: Các hướng dẫn - Hướng dẫn 8: Thiết kế CPU đơn chu kỳ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_vi_xu_ly_nang_cao_phan_2_cac_huong_dan_huong_dan_8.pdf
  • pptHuongdan_08.ppt

Nội dung text: Bài giảng Vi xử lý nâng cao - Phần 2: Các hướng dẫn - Hướng dẫn 8: Thiết kế CPU đơn chu kỳ

  1. Bài giảng “Vi xử lý nâng cao” Phần 2: Các hướng dẫn Hướng dẫn 8: Thiết kế CPU đơn chu kỳ 1
  2. Các lệnh được mô phỏng . 22 lệnh. – Số học (3) • add, sub, addi – Logic (4) • and, or, andi, ori – Chuyển dữ liệu (6) • lw, sw, lbu, lb, sb, lui – Rẽ nhánh có điều kiện (6) • beq, bne, slt, slti, sltu, sltiu – Nhảy không điều kiện (3) • j, jr, jal . Để có thêm chi tiết, vui lòng tham khảo các slide bài giảng. 3
  3. processor.vhd . Định nghĩa thực thể của toàn bộ “bộ xử lý”. – Các port: • clk, rst, run, wen, addr, din, dout, fin, PCout, regaddr, regdout. – Hai thành phần: memtable processor_core – Các tín hiệu nội: • Để kết nối hai thành phần trên. 5
  4. Bộ nhớ . Kích thước bộ nhớ là 64kB (0x0000 – 0xFFFF). . Mọi chương trình đều bắt đầu ở vị trí nhớ 0x4000. . Mọi lệnh phải được sắp xếp theo từ (các địa chỉ trong lệnh phải là bội số của 4). 7
  5. Các thanh ghi . 32 thanh ghi nhiều mục đích. – $zero,$at,$v0,$v1,$a0 .,$ra – $1,$2,$3, ,$31 – add $t0,$t1,$t2 = add $8,$9,$10 9
  6. Các tín hiệu – Các tín hiệu giải mã lệnh. • opCode, rs, rt, rd, funct, offset, jsec – Các tín hiệu chọn kệnh. • regMux, memMux, ALUMux – Các tín hiệu điều khiển. • RegWrite, ALUSrc, MemWrite, ALUOp, MemToReg, Branch, RegDst, PCSrc, ALUCtrl – Thêm vào bất kỳ tín hiệu nào được cần đến. 13
  7. Các quá trình cơ bản cần được thực hiện • PC_update () – Cập nhật bộ đếm chương trình (PC). – PC = PC + 4. 15
  8. instruction_partition() • opCode, // inst[31-26] • rs, // inst[25-21] • rt, // inst[20-16] • rd, // inst[15-11] • funct, // inst[5-0] • offset, // inst[15-0] • jsec; // inst [25-0] 17
  9. Các quá trình cơ bản cần được thực hiện • register_read() – doutA = Reg[addrA] – doutB = Reg[addrB] 19
  10. Các quá trình cơ bản cần được thực hiện • sign_extend() – Thực hiện việc mở rộng dấu trên offset. – Offset/immediate 16-bit được mở rộng dấu thành 32 bit. 21
  11. Các quá trình cơ bản cần được thực hiện • rw_memory () – Xác định hoạt động ghi hoặc đọc bộ nhớ dựa trên giá trị của MemWrite hoặc MemRead. – Đọc nội dung của ô nhớ được định địa chỉ bởi ALUout đến MDR. – Ghi giá trị của doutB đến ô nhớ được định địa chỉ bởi ALUout. 23
  12. spimasm.pl . spimasm.pl – perl script dịch tập tin mã hợp ngữ (.asm) thành tập tin mã máy (.asc). – Lưu ý rằng trình mô phỏng của ta sử dụng tập tin mã máy làm đầu vào. – Lệnh • perl spimasm.pl sample.asm > sample.asc 25
  13. sample.asc 27
  14. Tập tin đầu ra • result_sample.txt • Chứa các giá trị của bộ nhớ và các giá trị của thanh ghi. 29