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
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
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:
- bai_giang_vi_xu_ly_nang_cao_phan_2_cac_huong_dan_huong_dan_8.pdf
- Huongdan_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ỳ
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Các quá trình cơ bản cần được thực hiện • register_read() – doutA = Reg[addrA] – doutB = Reg[addrB] 19
- 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
- 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
- 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
- sample.asc 27
- 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