1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

THIẾT kế CPU RISC 32 BITS đơn CHU kỳ THỰC HIỆN LỆNH SLT (có code)

47 460 6

Đ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

Định dạng
Số trang 47
Dung lượng 1,4 MB

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

Nội dung

THIẾT kế CPU RISC 32 BITS đơn CHU kỳ THỰC HIỆN LỆNH SLT (có code) THIẾT kế CPU RISC 32 BITS đơn CHU kỳ THỰC HIỆN LỆNH SLT (có code) THIẾT kế CPU RISC 32 BITS đơn CHU kỳ THỰC HIỆN LỆNH SLT (có code) THIẾT kế CPU RISC 32 BITS đơn CHU kỳ THỰC HIỆN LỆNH SLT (có code) THIẾT kế CPU RISC 32 BITS đơn CHU kỳ THỰC HIỆN LỆNH SLT (có code)

Trang 1

CHU KỲ THỰC HIỆN LỆNH SLT

Trang 2

DANH MỤC CÁC BẢNG BIỂU IX DANH MỤC CÁC TỪ VIẾT TẮT X

CHƯƠNG 1 TÌM HIỂU NGÔN NGỮ THIẾT KẾ VERILOG 1

1.1 TÌM HIỂU VỀ NGÔN NGỮ ĐẶC TẢ PHẦN CỨNG (HDLS) 1

1.2 NGÔN NGỮ THIẾT KẾ VERILOG HDL 1

1.2.1 Lịch sử phát triển 1

1.2.2 Quy ước về từ khóa 2

1.2.2.1 Chú thích 2

1.2.2.2 Toán tử 3

1.2.2.2.1 Toán tử số học 3

1.2.2.2.2 Toán tử so sánh và quan hệ 3

1.2.2.2.3 Toán tử logic 4

1.2.2.2.4 Toán tử dịch 4

1.2.2.2.5 Toán tử điều kiện 5

1.2.2.3 Số học 5

1.2.2.3.1 Hằng số nguyên 5

1.2.2.3.2 Hằng số thực 6

1.2.2.4 Ký tự gạch dưới 6

1.2.2.5 Từ định danh 6

1.2.3 Mô tả module 7

1.2.4 Khối always 7

1.2.5 Khai báo kiểu dữ liệu 9

1.2.5.1 Kiểu dữ liệu Net 9

1.2.5.2 Kiểu dữ liệu Register 9

1.2.5.3 Kiểu dữ liệu Parameter 10

1.2.6 Phép gán 11

Trang 3

CHƯƠNG 2 CPU RISC 32 BITS 14

2.1 GIỚI THIỆU 14

2.2 LỊCH SỬ RA ĐỜI VÀ PHÁT TRIỂN CỦA CPU RISC 15

2.3 CẤU TRÚC CÁC KHỐI TRONG CPU RISC 32 BITS 16

2.3.1 Khối IM (Instruction Memory) 17

2.3.1.1 Khuôn dạng lệnh R 18

2.3.1.2 Khuôn dạng lệnh I 19

2.3.1.3 Khuôn lệnh dạng J 20

2.3.2 Khối RF (Register File) 20

2.3.3 Khối ALU 22

2.3.4 Các khối phụ khác 22

2.3.4.1 Khối Data Memory 22

2.3.4.2 Bộ Sign Extend 23

2.4 CÁC LỆNH ĐƯỢC SỬ DỤNG TRONG 3 KHUÔN DẠNG LỆNH 24

CHƯƠNG 3 THIẾT KẾ CPU RISC 32 BITS ĐƠN CHU KỲ THỰC HIỆN LỆNH SLT 26

3.1 TÌM HIỂU VỀ LỆNH SLT 26

3.2 THIẾT KẾ ĐƯỜNG DỮ LIỆU VÀ ĐƯỜNG ĐIỀU KHIỂN THỰC HIỆN LỆNH SLT 27

3.3 NGUYÊN LÝ HOẠT ĐỘNG CỦA CPU RISC 32 BITS ĐƠN CHU KỲ THỰC HIỆN LỆNH SLT 27

CHƯƠNG 4 CODE VÀ KẾT QUẢ MÔ PHỎNG 29

4.1 CODE MÔ PHỎNG TRÊN QUARTUS: 29

Trang 4

CHƯƠNG 5: KẾT LUẬN 38

5.1 ƯU VÀ NHƯỢC ĐIỂM CỦA ĐỀ TÀI 38

5.1.1 Ưu điểm 38

5.1.2 Nhược điểm 38

5.2 HƯỚNG PHÁT TRIỂN 38

TÀI LIỆU THAM KHẢO 39

Trang 5

HÌNH 2-1: CPU RISC ARM710.

HÌNH 2-2: SƠ ĐỒ TỔNG THỂ CÁC KHỐI TRONG MỘT CPU RISC 32 BITS HÌNH 2-3: CẤU TRÚC KHỐI IM.

HÌNH 2-4: KHỐI RF.

HÌNH 2-5: KHỐI ALU.

HÌNH 2-6: KHỐI DATA MEMORY.

HÌNH 2-7: KHỐI SIGN EXTEND.

HÌNH 3-1: ĐƯỜNG DỮ LIỆU VÀ ĐIỀU KHIỂN THỰC HIỆN LỆNH SLT HÌNH 4-1: CODE CỦA BỘ CỘNG

HÌNH 4-2: CODE KHỐI ĐẦU VÀO PC.

HÌNH 4-3: CODE KHỐI IM.

HÌNH 4-4: CODE KHỐI RF.

HÌNH 4-5: CODE KHỐI ALU.

HÌNH 4-6: CODE KHỐI CONTROL.

HÌNH 4-7: CODE KHỐI DATACONTROL.

HÌNH 4-8: CODE KHỐI ALUDECODER.

HÌNH 4-9: CODE CPU.

HÌNH 4-10: CODE CHO ĐƯỜNG DỮ LIỆU

HÌNH 4-11: KẾT QUẢ MÔ PHỎNG (1).

Trang 7

BẢNG 1-1: Ý NGHĨA CỦA CÁC TOÁN TỬ SỐ HỌC.

BẢNG 1-2: Ý NGHĨA CỦA CÁC TOÁN TỬ SO SÁNH VÀ QUAN HỆ.

BẢNG 1-3: Ý NGHĨA CỦA CÁC TOÁN TỬ LOGIC.

BẢNG 1-4: Ý NGHĨA CỦA CÁC TOÁN TỬ DỊCH.

BẢNG 1-5: Ý NGHĨA CÁC SỐ HỌC.

BẢNG 2-1: CÁC LỆNH ĐƯỢC SỬ DỤNG TRONG 3 KHUÔN DẠNG LỆNH (1) BẢNG 2-2: CÁC LỆNH ĐƯỢC SỬ DỤNG TRONG 3 KHUÔN DẠNG LỆNH (2).

Trang 8

CPU Central Proccessing Unit.

RISC Reduced Instructions Set Computer.

SLT Set on less time.

HDLs Hardware Description Languages.

ALU Arithmetic Logic Unit.

ARM Advanced RISC Machine.

VHDL Very High Speed Intergrated Circuit Hardware Description

Language.

CISC: Complex Instruction Set Computer.

Trang 9

CHƯƠNG 1 TÌM HIỂU NGÔN NGỮ THIẾT KẾ VERILOG

1.1 Tìm hiểu về ngôn ngữ đặc tả phần cứng (HDLs)

Ngày nay, trong thời đại khoa học kỹ thuật, nền công nghiệp vi mạch không ngừng phát triển, khi kích thước của những vi mạch và con chip ngày càng nhỏ và độ phức tạp của hệ thống thiết kế ngày càng tăng thì mà các phương pháp thiết kế mạch truyền thống như dùng tối thiểu hóa hàm Boolean hay dùng sơ đồ các phần tử không còn đáp ứng được các yêu cầu đặt ra khi thiết kế Hơn nữa các mạch thiết kế ra yêu cầu phải được thử nghiệm kỹ lưỡng trước khi đưa vào chế tạo hàng loạt Trước những đòi hỏi đó, ngôn ngữ đặc tả phần cứng HDLs (Hardware Description Languages) ra đời

Với những ưu điểm như dễ quản lý những mạch lớn và phức tạp, uyển chuyển và độc lập với công nghệ, cho phép tái sử dụng những thiết kế sẵn có, mạch có thể được tổng hợp tự động từ đặc tả nên nó dần trở thành ngôn ngữ được sử dụng rộng rãi trong ngành công nghiệp thiết kế số.

HDLs đã trở thành một kiến thức được đòi hỏi cần phải biết đối với những kĩ sư cũng như sinh viên đang làm việc và học tập trong lĩnh vực phần cứng Hiện tại, những ngôn ngữ mô tả phần cứng được sử dụng rộng rãi nhất

đó là ngôn ngữ Verilog HDL, VHDL, System Verilog, …

1.2 Ngôn ngữ thiết kế Verilog HDL

1.2.1 Lịch sử phát triển

Verilog là một trong hai ngôn ngữ mô tả phần cứng chính (gồm VHDL và Verilog HDL) được người thiết kế phần cứng sử dụng phổ biến để mô tả, thiết kế các

Trang 10

hệ thống số ở nhiều mức khác nhau ở mức cao như các mô hình đặc trưng đến các mức thấp như mô hình bố trí dây, điện trở, transistor trên một mạch tích hợp, các cổng logic, flip flop trong hệ thống số, thanh ghi và sự di chuyển dữ liệu giữa các thanh ghi Ban đầu, Verilog HDL được phát minh bởi Getway Design Automation vàđược giới thiệu lần đầu vào năm 1984 Năm 1989 được mua lại bởi Cadence, sau đó Verilog được phát hành miễn phí Tổ chức Open Verilog International (OVI) đã được thành lập nhằm kiểm soát các đặc tả ngôn ngữ Năm 1995, OVI Verilog đã được thông qua bởi IEEE như một chuẩn mới của hiệp hội Năm 2001, IEEE đã giới thiệu phiên bản mới của Verilog và hiện tại đang là phiên bản được sử dụng rộng rãi nhất – Verilog HDL 2001 Năm 2005, System Verilog được giới thiệu như là một sự

mở rộng của Verilog với các kỹ thuật kiểm tra hướng đối tượng Năm 2009, IEEE kết hợp chuẩn Verilog với System Verilog thành một chuẩn duy nhất IEEE 1800-2009

So với ngôn ngữ VHDL thì Verilog khá giống với ngôn ngữ C nên người có kiến thức căn bản về C tốt thì khá dễ học và sử dụng Verilog

1.2.2 Quy ước về từ khóa

Là những ký tự đặc biệt gồm có ký tự dấu cách (Space), ký tự Tab và ký tự xuống dòng (Enter)

Trang 11

/* Thiet ke CPU RISC 32 bits don chu ky thuc hien lenh SLT */

Trang 12

< > <= >= == !=

Trang 13

Bảng 1-2: Ý nghĩa của toán tử so sánh và quan hệ

1.2.2.2.5 Toán tử điều kiện

Trang 14

Trong các trường hợp xét điều kiện đơn giản, ta không cần phải sử dụng đến cấu trúc điều kiện If … else hay Case.

Cú pháp : Condition ? result 1 : result 2

Ý nghĩa : Nếu biến điều kiện Condition bằng 1 thì cho ra kết quả result 1, ngược lại thì cho ra kết quả result 2

8’hAB số thập lục phân AB có số bit là 8

16’o34 số bát phân 34 có 16 bit

4’bxxxx số nhị phân tùy định lưu trong 4 bit

Trang 15

 Chuỗi số hoặc ký tự đi sau phần định dạng là giá trị của số đó.

Vd: 10’d123 //giá trị của số thập phân này là 123.

Ký tự “_” có thể được dùng để chèn vào các chuỗi bit trong trường hợp chuỗi

đó quá nhiều bit mà không làm thay đổi giá trị của chuỗi bit

Vd: 16’b_1000_1001_1010_1011

1.2.2.5 Từ định danh

Dùng để gán cho một đối tượng một tên duy nhất để nó có thể được gọi tới khi Nguyên tắc đặt là bắt đầu bằng chữ cái hoặc dấu gạch dưới “_” , không bắt đầu

Trang 16

bằng một chữ số hay ký tự “$” Trong Verilog có phân biệt chữ in hoa với chữ thường.

module phepcong (x,y,z); //đặt tên cho module

input x,y; // khai báo input

output z; // khai báo output

assign z = x + y; // chức năng của module

endmodule // kết thúc module

Trang 17

1.2.4 Khối always

Khối always là khối chức năng được dùng trong thực hiện các câu lệnh điều kiện if else hay case Gồm khối always hoạt động dựa trên tín hiệu xung clock vàkhối always hoạt động dựa vào các biến ở trong khối always đó

 Khối always hoạt động dựa trên tín hiệu xung clock: có 2 trạng thái tích cực ở xung clock mức 1 là posedge và tích cực ở xung clock mức

 Khối always hoạt động dựa vào các biến ở trong nó, Các biến được gánphải được khai báo kiểu Reg

Vd:

Trang 18

module example (x,y,z)input [31:0] x,y;

output [31:0] z;

reg [31:0] w;

always @(x,y,z,w)begin

w = x & y;

z = w ^ x;

endendmodule

1.2.5 Khai báo kiểu dữ liệu

Gồm 3 kiểu dữ liệu: Net, Register và Parameter

1.2.5.1 Kiểu dữ liệu Net

Net là dữ liệu dùng để mô tả sợi dây kết nối vật lý các tín hiệu Net sẽ kết nối những linh kiện ở mức cổng được gọi ra, những module được gọi ra và những phép gán nối tiếp Kiểu Net được dùng trong phép gán trực tiếp, trong các module còn được lấy ra dùng từ module chính

Được dùng phổ biến trong kiểu Net là wire Wire là loại dữ liệu đơn giản để kết nối giữa hai linh kiện, được điều khiển bởi một cổng linh kiện đơn hay trong phéo gán nối tiếp

Cú pháp: Wire [msb:lsb] variable;

Vd:

Trang 19

module example1 (x,y,z);

input [31:0] x,y;

output [31:0] z;

wire [31:0] w; //tạo 1 sợi dây có biến là w có độ rộng 32 bit

assign w = x&y; //gán w bằng x AND y

assign z = w^y; //gán z bằng w XOR y

endmodule;

1.2.5.2 Kiểu dữ liệu Register

Nếu kiểu Net được dùng để gán trực tiếp trong các khối module chính thì kiểuRegister được dùng để gán trong các khối always hay initial

Kiểu dữ liệu Register lưu giữ giá trị từ một phát biểu gán thủ tục đến phát biểugán thủ tục kế tiếp và có ý nghĩa là đối tượng này lưu giữ giá trị trên các chu kỳ mô phỏng Phép gán thủ tục là một phép gán cho một kiểu dữ liệu của register và không hàm ý rằng một thanh ghi vật lý sẽ được tổng hợp , mạc dù phép gán được sử dụng cho mục đích này Phép gán được sử dụng để gán giá trị dưới những điều kiện kích khởi, như các phát biểu if và case Phép gán thủ tục lưu giữ giá trị trong một kiểu dữ liệu của register và được duy trì cho đến phép gán thủ tục kế tiếp cho kiểu dữ liệu của register đó

Cú pháp: reg [msb:lsb] variable;

Vd:

module example2 (x,clk,y);

Trang 20

1.2.5.3 Kiểu dữ liệu Parameter

Trong Verilog HDL, loại dữ liệu tham số (parameter) không thuộc loại dữ

liệu biến Reg cũng như loại dữ liệu net (wire, ) Dữ liệu tham số Parameter

không phải là biến mà chúng là hằng số Có hai loại tham số trong Verilog đó là:

Tham số module (module parameter): parameter và localparam.

Tham số đặc tả (specify parameter): specparam.

Cả hai loại tham số trên đều được phép khai báo độ rộng Mặc định, parameter

và specparam sẽ có độ rộng đủ để chứa giá trị của hằng số, ngoại trừ khi tham số đó

có khai báo độ rộng Việc khai báo trùng tên giữa net, biến hay tham số là không

được phép

Cú pháp: Parameter [msb:lsb] variable;

Vd:

Trang 21

module example3 (x,y);

input [31:0] x;

output [31:0] y;

reg y;

parameter z = 4; //gán cho hằng số z bằng 4always @(x)

begin

if (x > z) y = 32b’1;

else y = 32b’0end

endmodule

1.2.6 Phép gán

Phép gán assignment dùng để gán kết quả trả về của 1 biểu thức

 Phép gán đồng thời (phép gán liên tục): dùng để gán giá trị ở bên ngoàicác block

Cú pháp: assign signal1 = signal2;

Vd:

module example (a,b,c);

input a,b;

output c;

Trang 22

đó khi thực hiện lệnh tiếp theo.

 Gán non-blocking: phép gán phía sau sẽ không phụ thuộc vào giá trị của phép gán trước nó mà sẽ lấy giá trị được gán ban đầu

để tiếp tục tính toán

1.2.7 Toán tử điều kiện

Các điều kiện này nằm trong khối always

1.2.7.1 Điều kiện If else

Cú pháp: If (variable == condition) statement 1;

else statement 2;

Nếu biến giống với điều kiện đang xét, câu lệnh 1 sẽ được thực hiện, nếu sai câu lệnh 2 sẽ được thực hiện

Trong trường hợp có nhiều hơn 2 điều kiện thì ta dùng “else if”

1.2.7.2 Điều kiện với case

Trong trường hơp có nhiều hơn 2 điều kiện thay vì dùng “else if” sẽ dài dòng

và phức tạp hơn thì xét điều kiện vs case sẽ là tối ưu hơn cả

Cú pháp: Case (variable)

Trang 23

Condition 1: result = statement 1;

Condition 2: result = statement 2;Condition … : result = statement …;

Trang 24

CHƯƠNG 2 CPU RISC 32 BITS

2.1 Giới thiệu

RISC - viết tắt của Reduced Instructions Set Computer - Máy tính với tập lệnhđơn giản hóa là một phương pháp thiết kế các bộ vi xử lý (VXL) theo hướng đơn giản hóa tập lệnh, trong đó thời gian thực thi tất cả các lênh đều như nhau. Tất cả cáclệnh có cùng chiều dài, điều này làm cho chúng dễ dàng xắp xếp gọn gàng trong RAM Với bộ vi xử lý bên trong nó đã được giảm nhỏ tập lệnh, nói cách khác RISC

là một dạng cắt giảm, thu nhỏ của một con vi xử lý

Hình 2-1: CPU RISC ARM710Triết lý cho phát triển RISC đó là cắt giảm bộ vi xử lý để chỉ còn lại những bộphận thiết yếu của nó Những gì không thực sự cần thiết sẽ bị vứt bỏ Với các nhà lập

Trang 25

trình thì đó có nghĩa là các chip RISC thường không thể thực hiện một phép nhân đơn giản Lý thuyết của phép nhân là thực hiện liên tiếp nhiều phép cộng, do đó lệnh ADD là đủ

Một ý khác của RISC đó là các chức năng phức tạp thích hợp thực hiện bằng phần mềm hơn là bằng phần cứng Phần mềm thì dễ thay đổi, dễ cập nhật, và tạo ra nhanh hơn Viết mã mới nhanh hơn là thiết kế và xây dựng một chip mới Do đó các máy tính dựa trên RISC có thể được nâng cấp nhanh hơn Các chương trình và các thuật toán có thể điều chỉnh và cải tiến, quan trọng là phần cứng RISC được đơn giảnhóa, tối ưu hóa sao cho nó chạy nhanh hơn

2.2 Lịch sử ra đời và phát triển của CPU RISC

Trong những năm đầu, các dự án chủ yếu chỉ được biết đến trong các trường đại học Đến năm 1986, tất cả các dự án về RISC mới bắt đầu cho ra đời sản phẩm Ngày nay hầu hết các chip RISC, đều được thiết kế dựa trên kiến trúc RISC-II của Berkeley Sun Microsystems với SPARC, hoặc Pyramid Technology Chính Sun là công ty đầu tiên chứng minh sức mạnh của RISC là có thật trong những hệ thống mới của mình, và cũng nhờ đó họ nhanh chóng chiếm lĩnh thị trường workstation lúcbấy giờ

Ngày nay CPU RISC (và microcontrollers) chiếm 1 lượng lớn CPU được sử dụng Kỹ thuật thiết kế RISC đem đến sức mạnh ngay cả ở những kích thước nhỏ, do

đó nó nhanh chóng chiếm lĩnh hoàn toàn thị trường CPU nhúng công suất thấp Đây

là một thị trường cực kỳ lớn của CPU, có thể tìm thấy chúng trong xe hơi, điện thoại

di động, thậm chí một số thiết bị khác có thể chứa hàng tá CPU loại này

Trang 26

2.3 Cấu trúc các khối trong CPU RISC 32 bits

Hình 2.2: Sơ đồ tổng thể các khối trong một CPU RISC 32 bits

CPU RISC 32 bits gồm có 3 khối chính:

Trang 27

Instruction MemoryRead Address

Read DataWrite Data

2.3.1 Khối IM (Instruction Memory)

Hình 2-3: Cấu trúc khối IMKhối IM (Instruction Memory) là khối chứa các thanh ghi có cấu trúc theo cáckhuôn dạng lệnh R, I, J Ứng với 32 bit địa chỉ Program Counter đầu vào, khối IM cóthể chứa tới 232 thanh ghi lệnh

 Lệnh sẽ thực hiện trong khối ALU

 Địa chỉ của 2 thanh ghi trong khối RF

Trang 28

 Địa chỉ của thanh ghi trong khối RF sẽ lưu kết quả khối ALU thực hiệntính toán.

2.3.1.1 Khuôn dạng lệnh R

Khuôn dạng lệnh R có 6 trường:

 Trường op (bit 26  31): Dạng lệnh

 Trường rs (bit 21  25) : Địa chỉ của thanh ghi thứ nhất trong khối RF

sẽ xuất ra giá trị qua khối ALU

 Trường rt (bit 16  20) : Địa chỉ của thanh ghi thứ hai trong khối RF

sẽ xuất ra giá trị qua khối ALU

 Trường rd (bit 11  15) : Địa chỉ của thanh ghi lưu kết quả khối ALU

 Trường shamt (bit 6  10) : Lệnh dịch bits

 Trường funt (bit 0  5) : Dạng lệnh cụ thể sẽ thực thi ở khối ALU.Vd: Khuôn dạng lệnh cho lệnh AND

Ý nghĩa:

 Trường op = 000000 và funt = 011000 là dạng lệnh AND

 Trường rs = 00000 và rd = 00001 là địa chỉ chỉ đến thanh ghi thứ nhất

và thứ 2 trong khối RF xuất giá trị ra khối ALU để tính toán

 Trường rd = 00010 là địa chỉ chỉ đến thanh ghi thứ 3 trong khối RF để lưu kết quả sau khi thực thi lệnh

 Trường shamt = 00000: Không dịch bit

Trang 29

2.3.1.2 Khuôn dạng lệnh I

Khuôn dạng lệnh I có 4 trường:

 Trường op (bit 26  31) : Dạng lệnh cụ thể sẽ thực thi ở khối ALU

 Trường rs (bit 21  25) : Địa chỉ của thanh ghi trong khối RF sẽ xuất

ra giá trị qua khối ALU

 Trường rt (bit 16  20) : Địa chỉ của thanh ghi lưu kết quả khối ALU

 Trường immediate (bit 0  15) : Giá trị sẽ dùng trong lệnh

Vd: Khuôn dạng lệnh cho lệnh BEQ

Ý nghĩa:

 Trường op = 000100 là dạng lệnh BEQ (so sánh bằng)

 Trường rs = 00000 là địa chỉ chỉ đến thanh ghi thứ nhất trong khối RF xuất giá trị ra khối ALU để tính toán

 Trường rt = 00001 là địa chỉ chỉ đến thanh ghi thứ 2 trong khối RF để lưu kết quả sau khi thực thi lệnh

 Trường immediate = 1000100110101011 là giá trị sẽ dùng để so sánh với giá trị của thanh ghi được chọn

Ngày đăng: 21/01/2018, 20:25

TỪ KHÓA LIÊN QUAN

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

w