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 3640
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