Tải bản đầy đủ (.pdf) (117 trang)

THIẾT KẾ VÀ ỨNG DỤNG BỘ VI XỬ LÝ 32 BIT DÙNG NGÔN NGỮ VHDL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.44 MB, 117 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

HÀ MINH TÂN

THIẾT KẾ VÀ ỨNG DỤNG
BỘ VI XỬ LÝ 32 BIT DÙNG NGÔN
NGỮ VHDL
Chuyên ngành: VẬT LÝ VÔ TUYẾN VÀ ĐIỆN TỬ
( HƯỚNG KỸ THUẬT )
Mã số: 60 44 03 2
LUẬN VĂN THẠC SĨ VẬT LÝ VÔ TUYẾN VÀ ĐIỆN TỬ KỸ THUẬT
Cán bộ hướng dẫn :

PGS.TS. ĐINH SỸ HIỀN
TP. HCM - 2011


Trang 1

Lời cảm ơn
Xin gửi lời cảm ơn chân thành đến PGS. TS Đinh Sỹ Hiền, Thầy đã cung
cấp cho em rất nhiều tài liệu quý giá, người đã tận tình hướng dẫn, tạo điều kiện
thuận lợi cho em hoàn thành luận văn.
Xin gửi lời cảm ơn chân thành đến Thầy ThS Bùi Anh Đông, Thầy Nguyễn
Ngọc Hùng đã hỗ trợ tận tình em trong suốt quá trình làm thực nghiệm.
Xin gửi lời cảm ơn chân thành đến quý Thầy, Cô tham gia giảng dạy lớp
cao học chuyên ngành Vật Lý Vô Tuyến và Điện Tử khóa 17, trường Đại Học
Khoa học Tự nhiên, đã truyền đạt kiến thức quý giá cho em trong suốt khóa học.
Xin cảm ơn tất cả các bạn học viên lớp cao học khóa 17 đã đóng góp nhiều
ý kiến quý giá, đồng thời động viên tạo mọi điều kiện thuận lợi cho em để hoàn


thành đề tài
Xin gửi lời cảm ơn chân thành đến gia đình đã chia sẻ với em trong suốt
quá trình làm luận văn.

HVTH: Hà Minh Tân


Trang 2

MỤC LỤC
Lời cảm ơn .............................................................................................................. 1
MỤC LỤC ............................................................................................................... 2
DANH MỤC HÌNH ẢNH ...................................................................................... 5
DANH MỤC BẢNG BIỂU .................................................................................... 8
DANH MỤC CÁC TỪ VIẾT TẮT ....................................................................... 9
Mở đầu .................................................................................................................. 10
PHẦN 1: TỔNG QUAN ...................................................................................... 13
CHƯƠNG 1: TỔNG QUAN VỀ CÁC BỘ VI XỬ LÝ ..................................... 13
1.1 Giới thiệu về các bộ vi xử lý ...................................................................... 13
1.2. Các bộ vi xử lý 32 bit ................................................................................. 19
CHƯƠNG 2 : NGÔN NGỮ LẬP TRÌNH VHDL, PHẦN MỀM QUARTUS
VÀ KIT DE2 ......................................................................................................... 24
2.1 Giới thiệu môi trường thiết kế phần cứng và ngôn ngữ VHDL............. 24
2.1.1 Môi trường thiết kế phần cứng ( Hardware Design Environments) .. 24
2.1.2 Các ngôn ngữ mô tả phần cứng........................................................... 26
2.1.3 Ngôn ngữ lập trình VHDL ................................................................... 27
2.1.4 Ngôn ngữ VHDL cho thiết kế logic ..................................................... 29
2.1.5 Các phần mềm mô phỏng cho ngôn ngữ VHDL ................................ 31
2.2 Thực thể thiết kế của VHDL .................................................................... 32
2.2.1 Đặc điểm của VHDL ............................................................................ 32

2.2.2 Đặt điểm thiết kế ................................................................................... 33
2.2.3 Cấu trúc chương trình .......................................................................... 35
2.2.3.1 Phát biểu khai báo ......................................................................... 35
2.2.3.2 Phát biểu đồng thời ........................................................................ 36
2.2.3.3 Phát biểu tuần tự............................................................................ 36
2.3 Phần mềm Quartus II và kit DE2 của Altera .......................................... 37
2.3.1 Các thành phần cơ bản của Quartus II.............................................. 37

HVTH: Hà Minh Tân


Trang 3

2.3.2 Thiết kế và biên dịch, mô phỏng chương trình .................................. 38
2.3.3 Giới thiệu kit DE2 của Altera ............................................................. 47
2.3.4 Các thành phần cơ bản trong DE2 ..................................................... 47
PHẦN 2: THIẾT KẾ BỘ VI XỬ LÝ.................................................................. 50
CHƯƠNG 3: CẤU TRÚC BỘ VI XỬ LÝ ......................................................... 52
3.1 Cấu trúc tổng thể ........................................................................................ 53
3.1.1 Bộ đếm chương trình và bộ nhớ (Pcimem) ......................................... 53
3.1.1.1 Chức năng ...................................................................................... 53
3.1.1.2 Cấu trúc .......................................................................................... 54
3.1.1.3 Các tín hiệu giao tiếp ..................................................................... 54
3.1.2 Bộ điều khiển đường ống dẫn (Cntrpipe) ............................................ 54
3.1.2.1 Chức năng ...................................................................................... 55
3.1.2.2 Cấu trúc .......................................................................................... 55
3.1.2.3 Các tín hiệu giao tiếp ..................................................................... 56
3.1.3 Tập thanh ghi và vùng cache (Rfcache) ............................................ 56
3.1.3.1 Chức năng ...................................................................................... 56
3.1.3.2 Cấu trúc .......................................................................................... 56

3.1.3.3 Các tín hiệu giao tiếp ..................................................................... 57
3.1.4 Khối logic số học (ALU: Arithmetic Logic Unit ) ............................... 57
3.1.4.1 Chức năng ...................................................................................... 57
3.1.4.2 Cấu trúc .......................................................................................... 58
3.1.4.3 Chi tiết về các lệnh của ALU ......................................................... 58
CHƯƠNG 4: CÁC ĐẶC ĐIỂM THIẾT KẾ BỘ VI XỬ LÝ ........................... 59
4.1 Đặc điểm của vi xử lý ................................................................................. 59
4.2 Cấu trúc mã lệnh và chế độ ghi địa chỉ .................................................... 59
4.3 Cấu trúc mã lệnh (opcode) ........................................................................ 61
4.4 Mô tả các khối của bộ vi xử lý ................................................................... 62
4.4.1 Khối điều khiển: (The Controller) ....................................................... 62
4.4.2 Khối điều khiển đường ống dẫn (Control pipeline) ........................... 63
HVTH: Hà Minh Tân


Trang 4

4.4.3 Tín hiệu điều khiển thời gian ............................................................... 66
4.4.4 Tín hiệu điều khiển lệnh nhảy ............................................................. 67
4.4.5 Kết quả tính toán và chốt dữ liệu vào thanh ghi ................................. 67
4.4.6 Tín hiệu lựa chọn dữ liệu trong cache (d_mux_to_rf) ....................... 68
4.4.7 Sơ đồ cấu trúc của khối tập các thanh ghi và bộ nhớ cache .............. 68
4.4.7.1 Khối tập các thanh ghi (Register File) .......................................... 69
4.4.7.2 Khối bộ nhớ Cache (The Data Cache) .......................................... 70
4.4.8 Khối logic số học (ALU) ...................................................................... 71
CHƯƠNG 5: MÔ PHỎNG BỘ VI XỬ LÝ SỬ DỤNG PHẦN MỀM
QUARTUS VÀ TRÊN KIT DE2 ........................................................................ 73
5.1 Kiến trúc mô phỏng bộ vi xử lý ................................................................. 73
5.2 Thực hiện các phép toán kiểm tra ............................................................ 78
5.2.1 Phép cộng .............................................................................................. 78

5.2.2 Phép trừ ................................................................................................. 80
5.2.3 Phép toán dịch trái................................................................................ 81
5.2.4 Phép toán dịch phải .............................................................................. 83
5.2.5 Phép toán AND ..................................................................................... 84
5.2.6 Phép toán OR ........................................................................................ 86
5.2.7 Phép toán XOR ..................................................................................... 87
5.2.8 Phép toán nhân ..................................................................................... 89
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .......................................................... 91
TÀI LIỆU THAM KHẢO ................................................................................... 93
PHỤ LỤC .............................................................................................................. 95

HVTH: Hà Minh Tân


Trang 5

DANH MỤC HÌNH ẢNH
Hình 1.1: Mô hình máy tính Von Neumann .......................................................... 13
Hình 1.2: Kiến trúc cơ bản bên trong vi xử lý ...................................................... 14
Hình 1.3: Sơ đồ bộ vi xử lý đa dụng ...................................................................... 18
Hình 2.1: Các đơn vị thiết kế của VHDL .............................................................. 34
Hình 2.2: Các khai báo chương trình con trong đơn vị thiết kế ........................... 36
Hình 2.3: Các phát biểu quá trình trong đơn vị thiết kế và các lời gọi chương
trình con trong đơn vị thiết kế hoặc thư viện ......................................................... 37
Hình 2.4: Tạo Project mới .................................................................................... 38
Hình 2.5: Khai báo thư mục chưa file ................................................................... 39
Hình 2.6: Thêm vào những file cần thiết ............................................................... 39
Hình 2.7: Chọn họ linh kiện cho thiết kế............................................................... 40
Hình 2.8: Hoàn tất quá trình tạo project .............................................................. 40
Hình 2.9: Tạo mới file mô phỏng .......................................................................... 41

Hình 2.10: Chọn file mô phỏng ............................................................................ 42
Hình 2.11: Lưu file với tên trùng với tên project .................................................. 42
Hình 2.12: Thêm vào các node............................................................................. 43
Hình 2.13: Hiện danh sách các node trong thiết kế .............................................. 43
Hình 2.14: Đưa các node vào mô phỏng .............................................................. 44
Hình 2.15: Chọn cài đặt ....................................................................................... 44
Hình 2.16: Lựa chọn cách mô phỏng .................................................................... 45
Hình 2.17: Tạo file netlist cho quá trình mô phỏng .............................................. 45
Hình 2.18: Bắt đầu mô phỏng ............................................................................... 46
Hình 2.19: Nạp chương trình xuống kit DE2 ........................................................ 47
Hình 2.20: Bo DE2 và các linh kiện đi kèm .......................................................... 48
Hình 3.1: Sơ đồ của bộ vi xử lý. ............................................................................ 52
Hình 3.2: Sơ đồ khối bộ vi xử lý ............................................................................ 53
Hình 3.3: Khối bộ đếm chương trình và bộ nhớ (PCIMEM) ................................ 54
HVTH: Hà Minh Tân


Trang 6

Hình 3.4: Khối điều khiển đường ống dẫn (Cntrpipe) .......................................... 56
Hình 3.5: Khối tập thanh ghi và vùng cache (RFCache) ...................................... 57
Hình 3.6: Khối logic sô học (ALU) ....................................................................... 58
Hình 4.1: Bộ điều khiển đường ống dẫn ............................................................... 63
Hình 4.2 Sơ đồ khối các thanh ghi và bộ nhớ cache ............................................. 69
Hình 4.3: Khối các thanh ghi (Register File)........................................................ 69
Hình 4.4: Khối bộ nhớ Cache .............................................................................. 70
Hình 4.5: Khối logic số học (ALU) ....................................................................... 71
Hình 5.1: Kiến trúc bộ vi xử lý trên Quartus ........................................................ 75
Hình 5.2: Các thông số kỹ thuật trong thiết kế ..................................................... 75
Hình 5.3: Các thông số về tần số hoạt động ......................................................... 76

Hình 5.4a: Sơ đồ hệ thống mô phỏng .................................................................... 76
Hình 5.4b:Kết quả mô phỏng dạng sóng tín hiệu của CPU.................................. 77
Hình 5.5a: Nạp dữ liệu vào cache......................................................................... 78
Hình 5.5b: Nạp mã lệnh vào ROM ........................................................................ 79
Hình 5.5c: Kết quả hiển thị trên kit DE2 .............................................................. 79
Hình 5.6a: Nạp dữ liệu vào cache......................................................................... 80
Hình 5.6b: Nạp mã lệnh vào ROM ........................................................................ 81
Hình 5.6c: Kết quả hiển thị trên kit DE2 .............................................................. 81
Hình 5.7a: Nạp dữ liệu vào cache......................................................................... 81
Hình 5.7b: Nạp mã lệnh vào ROM ........................................................................ 82
Hình 5.7c: Kết quả hiển thị trên kit DE2 .............................................................. 82
Hình 5.8a: Nạp dữ liệu vào cache......................................................................... 83
Hình 5.8b: Nạp mã lệnh vào ROM ........................................................................ 83
Hình 5.8c: Kết quả hiển thị trên kit DE2 .............................................................. 84
Hình 5.9a: Nạp dữ liệu vào cache......................................................................... 84
Hình 5.9b: Nạp mã lệnh vào ROM ........................................................................ 85
Hình 5.9c: Kết quả hiển thị trên kit DE2 .............................................................. 86
Hình 5.10a: Nạp dữ liệu vào cache....................................................................... 86
HVTH: Hà Minh Tân


Trang 7

Hình 5.10b: Nạp mã lệnh vào ROM ...................................................................... 87
Hình 5.10c: Kết quả hiển thị trên kit DE2 ............................................................ 87
Hình 5.11a: Nạp dữ liệu vào cache....................................................................... 88
Hình 5.11b: Nạp mã lệnh vào ROM ...................................................................... 88
Hình 5.11c: Kết quả hiển thị trên kit DE2 ............................................................ 89
Hình 5.12a: Nạp dữ liệu vào cache....................................................................... 89
Hình 5.12b: Nạp mã lệnh vào ROM ...................................................................... 90

Hình 5.12c: Kết quả hiển thị trên kit DE2 ............................................................ 90

HVTH: Hà Minh Tân


Trang 8

DANH MỤC BẢNG BIỂU
Bảng 4.1: Tập lệnh với hai nguồn ......................................................................... 60
Bảng 4.2: Tập lệnh với một nguồn và short immediate ........................................ 60
Bảng 4.3: Tập lệnh với long immediate ................................................................ 60
Bảng 4.4: Tập lệnh có điều kiện ............................................................................ 60
Bảng 4.5: Một số chế độ định dạng địa chỉ được hổ trợ ....................................... 61
Bảng 4.6: Mã lệnh opcode..................................................................................... 62
Bảng 4.7: Mô tả chức năng các tín hiệu ............................................................... 64
Bảng 4.8: Tín hiệu điều khiển................................................................................ 67
Bảng 4.9: Mô tả tín hiệu trong tập thanh ghi (Register File) ............................... 70
Bảng 4.10: Mô tả tín hiệu trong khối data cache .................................................. 71
Bảng 4.11: Tín hiệu trên khối logic số học ........................................................... 71

HVTH: Hà Minh Tân


Trang 9

DANH MỤC CÁC TỪ VIẾT TẮT
ROM

Read Only Memory.


RAM

Ram Access Memory.

ALU

Arithmetic Logic Unit.

FSM

Finite State Machine.

SIMD

Single Instruction Multiple Data.

MMX

Multimedia Extensions.

VHSIC

Very High Speed Intergrated Circuit.

VHDL

VHSIC Hardware Description Language.

IEEE


Institute of Electrical and Electronic Engineers.

RTL

Register Transfer Level.

JTAG

Joint Test Action Group.

AS

Active Serial.

PLD

Programmable Logic Device.

CISC

Complex Instruction Set Computer.

RISC

Reduced Instruction Set Computer.

ASIC

Application Specific Intergrated Circuits.


CU

Control Unit.

PC

Program Counter.

RF

Register File.

CAD

Computer Aided Designed

FPGA

Field Programmable Gate Array

HVTH: Hà Minh Tân


Trang 10

Mở đầu
Vai trò của máy vi tính trong nửa cuối thế kỷ hai mươi được chứng minh
bởi đà phát triển chức năng theo hàm mũ của vi xử lý và mức độ thâm nhập của nó
trong xã hội. Máy tính dã thay đổi hoàn toàn công nghệ, thay đổi hình thức buôn
bán và thậm chí thay đổi cấu trúc xã hội loài người. Sang thế kỷ 21, máy tính còn

tiếp tục là động lực của phát triển công nghệ.
Trong năm 2006 ngành công nghiệp vi mạch, công nghiệp bán dẫn
(semiconductor industry) trên thế giới đã đạt doanh thu gần 261 tỷ USD, cung cấp
sản phẩm cho các ngành điện tử, như: máy tính và thiết bị lưu trữ (công nghệ
thông tin) khoảng 54%; viễn thông 26%; điện tử dân dụng 14%; cơ khí và tự động
hóa 5%; các ngành khác chiếm 1%. (điện tử quốc phòng, điện tử y tế...). Doanh
thu từ lĩnh vực vi mạch (bán dẫn) được dự đoán chiếm đến 35% trong doanh thu
toàn ngành điện tử vào năm 2010 (khoảng 350 tỷ USD/1.000 tỷ USD) và tiếp tục
gia tăng ở mức 6,1% trên năm.
Trong hệ thống hiện nay, phần lớn đều sử dụng vi xử lý làm bộ điều khiển
chính của hệ thống. Với sự phát triển của công nghệ điện tử, có nhiều vi xử lý của
các hãng khác nhau. Vi xử lý là bộ điều khiển chính của tất cả thiết bị thông minh,
dù là thiết bị điện hay các thiết bị khác. Sự khéo léo của nó được quyết định và
điều khiển trực tiếp bởi vi xử lý. Ví dụ, chúng ta thử nghĩ không xem 1 chiếc xe là
1 thiết bị điện. Tuy nhiên, nó chắc chắn có nhiều khối phức tạp, hệ thống điện
thông minh như hệ thống phanh chống va đập và hệ thống phun nhiên liệu. Mỗi hệ
thống được điều khiển bởi 1 vi xử lý.

HVTH: Hà Minh Tân


Trang 11

Bộ vi xử lý được chia làm 2 loại: bộ vi xử lý đa dụng (General-purpose
microprocessor), bộ vi xử lý chuyên dụng (Dedicated microprocessor). Bộ vi xử lý
đa dụng, như là Pentium CPU, có thể thực thi nhiều phép toán khác nhau dưới sự
điều khiển chỉ dẫn của phần mềm. Tất cả máy tính cá nhân sử dụng các bộ vi xử lý
đa dụng.
Bộ vi xử lý chuyên dụng, được biết như các mạch tích hợp ứng dụng đặc
biệt (ASICs). Ví dụ, bên trong điện thoại di động, có một vi xử lý chuyên dụng

điều khiển toàn bộ hoạt động của điện thoại. Nhúng vi xử lý vào bên trong điện
thoại không gì ngoài điều khiển hoạt động của điện thoại. Vi xử lý chuyên dụng
thường sử dụng trong các thiết bị điện thông minh như là đồ chơi điện tử, TV, điện
thoại.
Để tiếp cận nhanh chóng và cập nhật các công nghệ mới trong lĩnh vực
thiết kế phần cứng, cần có các thiết bị phần mềm và phần cứng hỗ trợ. Chúng ta
dùng các ngôn ngữ mô tả phần cứng như Verilog HDL, VHDL, để xây dựng các
thiết kế và thông qua các chương trình phần mềm như Quartus, NIOS,
ModelSim,... thực hiện biên dịch chương trình, mô phỏng dạng sóng để kiểm tra
hoạt động của hệ thống có đúng như thiết kế đặt ra ban đầu hay không. Sau đó các
thiết kế sẽ được nạp vào các bo mạch ứng dụng (ví dụ như Kit DE2, UP2,... của
hãng Altera; Kit Virtex, Spartan... của hãng Xilinx), việc này giúp xây dựng thiết
kế của chúng ta như là một thiết bị phần cứng thực sự trong một hệ thống hoàn
chỉnh để kiểm tra hoạt động của thiết bị.
Trong thiết kế này, bộ vi xử lý đọc lệnh thông qua bộ nhớ ROM, dữ liệu
được đọc từ bộ nhớ cache, thông qua 4 giai đoạn của pipeline 4 “tầng”, thực hiện
các lệnh.
Nội dung đề tài bao gồm :
Phần 1 – Tổng quan :
HVTH: Hà Minh Tân


Trang 12

CHƯƠNG 1: TỔNG QUAN VỀ CÁC BỘ VI XỬ LÝ
Giới thiệu tổng quan về các bộ vi xử lý và giới thiệu các bộ vi xử lý 32 bit
thông dụng.
CHƯƠNG 2 : NGÔN NGỮ LẬP TRÌNH VHDL, PHẦN MỀM QUARTUS
VÀ KIT DE2
Giới thiệu về ngôn ngữ lập trình VHDL, cách sử dụng phần mềm, các tính

năng hỗ trợ, các thực hiện lập trình, biên dịch và mô phỏng, giới thiệu về cấu trúc
của Kit DE2.
Phần 2 – Thiết kế bộ vi xử lý :
CHƯƠNG 3: CẤU TRÚC BỘ VI XỬ LÝ
Trong chương 3 sẽ trình bày khái quát về mô hình thiết kế của bộ vi xử lý,
phân loại bộ vi xử lý, cấu trúc và chức năng của từng khối trong bộ vi xử lý, các
tín hiệu giao tiếp, và điều khiển của chúng và đưa ra mô hình thiết kế của từng bộ
phận.
CHƯƠNG 4: CÁC ĐẶC ĐIỂM THIẾT KẾ BỘ VI XỬ LÝ
Trình bày nguyên lý, tổ chức hoạt động bên trong của bộ vi xử lý, cấu trúc
của tập lệnh, mã lệnh, đường đi của dữ liệu của bộ vi xử lý. Mô tả diễn tiến thi
hành một lệnh mã máy đây là cơ sở để hiểu được các hoạt động xử lý lệnh trong
kỹ thuật ống dẫn.
CHƯƠNG 5: MÔ PHỎNG BỘ VI XỬ LÝ SỬ DỤNG PHẦN MỀM
QUARTUS VÀ TRÊN KIT DE2
Thực hiện mô phỏng bộ vi xử lý dùng phần mềm Quartus đưa ra sơ đồ cấu
trúc, tính được tần số hoạt động của bộ vi xử lý, mô phỏng dạng sóng tín hiệu của
bộ vi xử lý, tiến hành kiểm tra trên Kit DE2.
Kết luận và hướng phát triển
Đưa ra các kết quả đạt được, kết luận sau cùng của luận văn, qua đó nêu ra
hướng phát triển của các đề tài tiếp theo.
Tài liệu tham khảo.
Phụ lục.
HVTH: Hà Minh Tân


Trang 13

PHẦN 1: TỔNG QUAN
CHƯƠNG 1:

TỔNG QUAN VỀ CÁC BỘ VI XỬ LÝ
1.1 Giới thiệu về các bộ vi xử lý
Theo mô hình Von Neumann của một máy tính, bao gồm bốn thành phần
chính: ngõ vào, ngõ ra, bộ nhớ, bộ vi xử lý. Trong bộ vi xử lý được chia làm hai
thành phần khối đơn vị điều khiển và khối dữ liệu.

Hình 1.1: Mô hình máy tính Von Neumann
Bộ vi xử lý (microprocessor) là một khối vi mạch có khả năng làm các phép
tính toán số học và logic, khả năng giao tiếp với bên ngoài, khả năng lưu và xử lý
dữ liệu…. Một chip đơn có vi xử lý cộng thêm các ngoại vi như memory, IO
controller, interrupt controller…gọi là vi điều khiển. Một vi xử lý có thể thuộc một
trong 2 loại:
Dedicated microprocessor hay tạm dịch là vi xử lý đặc chủng (còn gọi là
ASIC). Nó được thiết kế và tối ưu để chạy một thuật toán duy nhất, chương trình
hoạt động được cứng hóa và gắn liền trên phần cứng chip. Một khi đã sản xuất ra

HVTH: Hà Minh Tân


Trang 14

thì không thay đổi được nữa. Loại này có đặc tính là chạy nhanh, ít tốn tài nguyên.
Do các lệnh đã được gắn chết nên sẽ không có bộ nhớ chương trình, cũng không
tốn thời gian đọc lệnh từ bộ nhớ. Thời gian sản xuất loại này thường cao, chi phí
lớn (chỉ rẻ nếu sản xuất hàng loạt).
Multi purpose processor hay còn gọi là CPU. Nó có khả năng linh hoạt cao,
do có thể đọc lệnh từ bộ nhớ để thi hành các lệnh, khi thay đổi bộ nhớ mã lệnh thì
công việc của CPU cũng thay đổi. Dễ dàng thấy rằng không phải mọi tài nguyên
của CPU đều được sử dụng, nó cũng chậm hơn ASIC.
Bàn phím, chuột là ví dụ của thiết bị nhập. Màn hình CRT (Cathode ray

tube) và loa là ví dụ của thiết bị xuất. Thiết bị nhớ như là ROM (Read-only
memory), RAM (Random Access Memory), cache, đĩa cứng HDD. Trong đề tài
này không tập trung vào các thiết bị nhập, xuất và bộ nhớ mà chỉ tập trung vào
thiết kế bộ vi xử lý. Mạch logic của vi xử lý có thể được chia làm 2 phần:
Datapath (khối dữ liệu) và Control Unit (khối điều khiển):

Hình 1.2: Kiến trúc cơ bản bên trong vi xử lý

HVTH: Hà Minh Tân


Trang 15

Khối dữ liệu (Datapath):. Khối này làm nhiệm vụ thao tác dữ liệu. Đó là
các thao tác số học, logic, giao tiếp bộ nhớ, IO… Datapath bao gồm các khối hàm
như cộng, trừ, so sánh, ALUs; thanh ghi và bộ nhớ để tạm thời lưu dữ liệu; bus và
các bộ đa hợp (multiplexer), giải đa hợp (demultiplexer) nhằm chuyển vận data
đúng lúc, đúng nơi giữa các phần của datapath. Datapath cũng xuất ra các status
signal để Control Unit biết đường mà điều khiển phù hợp (ví dụ như giá trị lệnh
vừa lấy được từ ROM…).
Khối điều khiển (Control Unit – CU). Phần này đảm nhiệm tạo các tín hiệu
điều khiển (control signal) phù hợp vào thời điểm thích hợp để điều khiển
Datapath hoạt động chính xác. Tại một thời điểm, khối điều khiển ở vào một trạng
thái nhất định, trạng thái này xác định bởi giá trị của bộ nhớ trạng thái. Khối điều
khiển sẽ tạo ra các tín hiệu điều khiển để điều khiển khối dữ liệu (Datapath) hoạt
động chính xác. Các tín hiệu điều khiển được tạo ứng với mỗi trạng thái nhất định
thông qua các mạch tổ hợp. Từ phân tích này ta thấy khối điều khiển rất giống
như một bộ máy trạng thái hữu hạn ( Finite State Machine FSM), sau này ta cũng
sẽ dùng FSM để thiết kế CU. Tất nhiên là có loại CU không dựa trên FSM. Nó bao
gồm RAM chứa các control signal, một bộ đếm (counter) để tăng lần lượt địa chỉ

và các “nút chặn” phục vụ lệnh nhảy và gọi chương trình con. Ta sẽ tìm hiểu loại
khối điều khiển này khi thiết kế CPU “mềm” ở phần sau. Khối điều khiển gồm có
3 phần:
• Next-state logic: là mạch dùng để xác định trạng thái kế tiếp của máy trạng
thái.
• Status memory register : nhớ trạng thái hiện tại của FSM trong nó
• Output logic: phát ra tín hiệu để điều khiển đường dữ liệu.
Mọi mạch logic số, bất chấp nó thuộc khối điều khiển hay khối dữ liệu
được phân chia là mạch tổ hợp (combinational circuit) hay là mạch tuần tự
(sequential circuit).
Mạch tổ hợp: Mạch có ngõ ra chỉ phụ thuộc vào ngõ vào hiện tại của
mạch. Ví dụ, mạch cộng là một mạch tổ hợp.
HVTH: Hà Minh Tân


Trang 16

Trong mạch số, mạch tổ hợp là mạch mà trị số ổn định của tín hiệu ra ở thời
điểm bất kỳ chỉ phụ thuộc vào tổ hợp các giá trị tín hiệu ngõ vào ở thời điểm đó.
Trong mạch tổ hợp, trạng thái mạch điện trước thời điểm xét, tức trước khi có tín
hiệu ngõ vào, không ảnh hưởng đến tín hiệu đầu ra. Đặc điểm cấu trúc mạch tổ
hợp là được cấu trúc từ các cổng logic.
Mạch tuần tự : Ngõ ra không những phụ thuộc vào trạng thái ngõ vào
hiện tại mà còn phụ thuộc tất cả trạng thái vào trước đó. Nói cách khác, mạch tuần
tự là mạch phải có tính nhớ để nhớ trạng thái trước của mạch. Ví dụ, nút chuyển
kênh trên bộ điều khiển tivi là một phần của mạch tuần tự. Nhấn nút chuyển kênh
là ngõ vào của mạch. Tuy nhiên, chỉ cần có đầu vào này là không đủ cho các mạch
để xác định xem những gì kênh truyền hình để hiển thị kế tiếp.
Khi mạch tuần tự phụ thuộc vào trạng thái trước đó, ta phải chứa các phần
tử nhớ để nhớ trạng thái, trong khi mạch tổ hợp lại không có phần tử nhớ. Ví dụ

của mạch tổ hợp trong vi xử lý bao gồm next-state logic, output logic trong khối
điều khiển và ALU, bộ đa hợp, đệm 3 trạng thái, mạch so sánh trong khối dữ liệu.
Ví dụ của mạch tuần tự bao gồm thanh ghi cho trạng thái nhớ trong khối điều
khiển và thanh ghi trong khối dữ liệu. Bộ nhớ trong mô hình máy tính Von
Neuman cũng là một mạch tuần tự.
Mạch tuần tự được biết như là một trạng thái hữu hạn (FSM) bởi vì kích
thước của trạng thái nhớ (state memory) là hữu hạn và vì vậy số lượng các trạng
thái khác nhau cũng hữu hạn.
Bất chấp một mạch là tuần tự hay tổ hợp, nó được tạo ra từ 3 cổng logic cơ
bản: AND, OR, NOT. Từ 3 cổng cơ bản, hầu hết máy tính có thể được tạo ra. Hơn
nữa, những cổng cơ bản được xây dựng trên transistor. Transistor là một công tắc
điện nhị phân có thể được đóng hoặc mở. Trạng thái đóng và mở của transistor
được sử dụng để biểu diễn 2 giá trị nhị phân : 0 và 1.
Những bộ vi xử lý hay vi điều khiển đều được thiết kế theo kiến trúc máy
tính với tập lệnh phức tạp (CISC-Complex Instruction Set Computer) hoặc máy
tính với tập lệnh đơn giản hóa (RISC-Reduced Instruction Set Computer).
HVTH: Hà Minh Tân


Trang 17

Chip CISC được thiết kế nhằm tạo thuận lợi cho các nhà lập trình ứng dụng
bằng cách rút gắn nhiều câu lệnh đơn giản, thông dụng thành một câu lệnh thực thi
dài. Điều này làm cho CISC xử lý chậm hơn nhưng lại đạt yếu tố thân thiện. Ở mặt
khác RISC nhanh nhưng kém thân thiện, mỗi câu lệnh đơn giản trong RISC phức
vụ cho một mục đích hẹp rất cụ thể, thực thi nhanh hơn và lệnh được tiến hành
song song.
RISC là phương pháp thiết kế các bộ vi xử lý theo hướng đơn giản hóa tập
lệnh, trong đó thời gian thực thi các lệnh đều như nhau. Hiện nay các bộ vi xử lý
RISC phổ biến là ARM, superH, MIPS, SPARC, DEC Alpha, PA-RISC, PIC và

PowerPC của IBM…
Trong vi xử lý, đơn vị điều khiển Control Unit (CU) là phần quan trọng
nhất. Trong lịch sử phát triển máy tính có 2 cách tiếp cận khác nhau để thiết kế
một CU. Cách thứ nhất là tạo nên một CU như một máy tính trong máy tính. Tức
là biến đổi các lệnh máy thành một số các lệnh sơ khai gọi là vi lệnh rồi mới thực
hiện chuỗi các vi lệnh này. Quá trình biển đổi này gọi là giải mã vi lệnh, khác với
giải mã lệnh máy thông thường. Cách tiếp cận thứ hai là tìm ra một chuỗi các phép
toán logic cần thiết cho việc thực hiện một lệnh máy rồi thiết kế mạch điện tử
logic thích hợp thực hiện ngay lệnh đó. Cách thứ nhất là tiền đề để xây dựng các
đơn vị điều khiển được vi chương trình hóa (microprogrammable control unit),
còn cách tiếp cận thứ hai cho các đơn vị điều khiển kiểu logic ngẫu nhiên (random
logical control unit).
Trong những thập kỷ trước, do tốc độ truy cập bộ nhớ còn chậm nên vi xử
lý có đủ thời gian để giải mã lệnh. Vì vậy kiến trúc CISC được sử dụng rộng rãi.
Tuy nhiên, hiện nay các bộ nhớ chính có thời gian truy cập ngắn hơn đã làm cho
các ưu điểm của vi chương trình không những biến mất mà còn gây cản trở hệ
thống.
Để giải quyết vấn đề này các nhà thiết kế đã tìm ra một giải pháp trung gian
làm tiền đề cho ra đời một vi xử lý mới. Hoạt động theo phương pháp sử dụng
kiến trúc với tập lệnh rút gọn RISC cho các lệnh chính yếu cần thiết trong số 20%
HVTH: Hà Minh Tân


Trang 18

lệnh nói trên và phần cứng được thiết kế sao cho các phần tử RISC hiểu ngay được
lệnh máy do chương trình cung cấp mà không cần giải mã vi lệnh. Nhiều lệnh còn
lại nhưng ít được sử dụng thì được thực hiện bởi phần tử CISC qua giải mã vi
lệnh. Các vi xử lý RISC có tập lệnh gồm toàn các lệnh rất đơn giản và cho phép
thực hiện một mã thao tác chỉ trong một chu kì máy.

Việc thiết kế RISC có các bước:
• Phân tích các ứng dụng để tìm ra thao tác chính.
• Thiết kế đường dữ liệu tối ưu cho các thao tác chính.
• Thiết kế các đường chỉ thị thực hiện các thao tác chính bằng cách dùng
đường dữ liệu.
• Thêm những chỉ thị mới khi chúng không làm chậm tốc độ máy.
• Lặp lại quá trình này cho các tài nguyên khác.

Hình 1.3: Sơ đồ bộ vi xử lý đa dụng
Để thiết kế một vi xử lý, đầu tiên chúng ta phải xác định tập lệnh của vi xử
lý đó và các lệnh đó được mã hóa thực thi ra sao. Cần thực hiện những bước sau:
• Muốn có bao nhiêu lệnh?
• Những lệnh đó là gì?

HVTH: Hà Minh Tân


Trang 19

• Mã thực hiện (opcode)?
• Dùng bao nhiêu bit để mã hóa?
Để giải quyết hết các câu hỏi trên thì bộ vi xử lý có thể được thiết kế gồm
các bước như sau:
Liệt kê tập lệnh cần thiết, đây là việc rất quan trọng. Cần tính toán kỹ,
lưỡng số lượng lệnh, các chức năng cần có, các chế độ định địa chỉ hỗ trợ. Ở đây,
chúng ta quyết định xây dựng một bộ vi xử lý có đủ khả năng để thực hiện lệnh
nhân. Vì thế, chúng ta kết thúc với 15 tập lệnh bao gồm lệnh nhảy (JMP) và lệnh
gọi (CALL).
• Phác thảo kiến trúc vi xử lý: sau khi xác định được tập lệnh, chúng ta cần
phác thảo một kiến trúc hiệu quả có thể hoạt động như yêu cầu được đề ra.

• Xây dựng một bộ fetch và giải mã lệnh từ bộ nhớ. Cần có một thanh ghi
để tạm chứa lệnh đọc từ ROM, một thanh ghi PC để chỉ tới vị trí chứa mã lệnh
trong ROM và một bộ ROM để chứa mã lệnh.
• Thiết kế hệ thống bus phù hợp để kết nối các linh kiện lại.
• Xây dựng Control Unit, khối điều khiển (CU) của vi xử lý.
• Kết hợp các khối lại tạo nên CPU hoàn chỉnh.
1.2. Các bộ vi xử lý 32 bit
Intel 386 gồm các họ 386DX, 386SX và 386SL. Intel386DX là bộ vi xử lý
(BXL) 32 bit đầu tiên Intel giới thiệu vào năm 1985, được dùng trong các PC của
IBM và PC tương thích. Intel 386 là một bước nhảy vọt so với các BXL trước đó.
Đây là BXL 32 bit có khả năng xử lý đa nhiệm, nó có thể chạy nhiều chương trình
khác nhau cùng một thời điểm. Intel 386 sử dụng các thanh ghi 32 bit, có thể
truyền 32 bit dữ liệu cùng lúc trên bus dữ liệu và dùng 32 bit để xác định địa chỉ.
Cũng như BXL 80286, 80386 hoạt động ở 2 chế độ real mode và protect mode.
386DX sử dụng công nghệ 1,5 μm, 275.000 transistor, bộ nhớ mở rộng tới
4GB. Các phiên bản của 386DX gồm 16, 20, 25 và 33 MHz (công nghệ 1 μm).

HVTH: Hà Minh Tân


Trang 20

386SX (năm1988) sử dụng công nghệ 1,5 μm, 275.000 transistor, kiến trúc
32 bit bên trong, 16 bit bus dữ liệu ngoài, 24 bit bus địa chỉ, bộ nhớ mở rộng
16MB; gồm các phiên bản 16, 20, 25 và 33 MHz.
386SL (năm1990) được thiết kế cho thiết bị di động, sử dụng công nghệ 1
μm, 855.000 transistor, bộ nhớ mở rộng 4GB; gồm các phiên bản 16, 20, 25 MHz.
486DX ra đời năm 1989 với cấu trúc bus dữ liệu 32 bit. 486DX có bộ nhớ
sơ cấp (L1 cache) 8 KB để giảm thời gian chờ dữ liệu từ bộ nhớ đưa đến, bộ đồng
xử lý toán học được tích hợp bên trong. Ngoài ra, 486DX được thiết kế hàng lệnh

(pipeline), có thể xử lý một địa chỉ lệnh trong một xung nhịp.
486DX sử dụng công nghệ 1 μm, 1,2 triệu transistor, bộ nhớ mở rộng 4GB;
gồm các phiên bản 25 MHz, 35 MHz và 50 MHz (0,8 μm).
486SX (năm 1991) dùng trong dòng máy tính cấp thấp, có thiết kế giống hệ
486DX nhưng không tích hợp bộ đồng xử lý toán học. 486DX sử dụng công nghệ
1 μm (1,2 triệu transistor) và 0,8 μm (0,9 triệu transistor), bộ nhớ mở rộng 4GB;
gồm các phiên bản 16, 20, 25, 33 MHz.
486SL (năm 1992) là BXL ưu tiên dành cho máy tính xách tay (MTXT), sử
dụng công nghệ 0,8 μm, 1,4 triệu transistor, bộ nhớ mở rộng 4GB; gồm các phiên
bản 20, 25 và 33 MHz.
Intel Pentium, BXL thế hệ kế tiếp 486 ra đời năm 1993. Cải tiến lớn nhất
của Pentium là thiết kế hai hàng lệnh (pipeline), dữ liệu bên trong có khả năng
thực hiện hai lệnh trong một chu kỳ, do đó Pentium có thể xử lý lệnh nhiều gấp
đôi so với 80486 DX trong cùng thời gian. Bộ nhớ sơ cấp 16KB gồm 8 KB chứa
dữ liệu và 8 KB khác để chứa lệnh. Bộ đồng xử lý toán học được cải tiến giúp tăng
khả năng tính toán đối với các trình ứng dụng. Pentium sử dụng công nghệ 0,8 μm
chứa 3,1 triệu transistor, có các tốc độ 60, 66 MHz (socket 4 273 chân, PGA). Các
phiên bản 75, 90, 100, 120 MHz sử dụng công nghệ 0,6 μm chứa 3,3 triệu
transistor (socket 7, PGA). Phiên bản 133, 150, 166, 200 sử dụng công nghệ 0,35
μm chứa 3,3 triệu transistor (socket 7, PGA)

HVTH: Hà Minh Tân


Trang 21

Pentium MMX (năm 1996), phiên bản cải tiến của Pentium với công nghệ
MMX được Intel phát triển để đáp ứng nhu cầu về ứng dụng đa phương tiện và
truyền thông. MMX kết hợp với SIMD (Single Instruction Multiple Data) cho
phép xử lý nhiều dữ liệu trong cùng lệnh, làm tăng khả năng xử lý trong các tác vụ

đồ họa, đa phương tiện. Pentium MMX sử dụng công nghệ 0,35 μm chứa 4,5 triệu
transistor, có các tốc đô 166, 200, 233 MHz (Socket 7, PGA).
Pentium Pro. Nối tiếp sự thành công của dòng Pentium, Pentium Pro được
Intel giới thiệu vào tháng 9 năm 1995, sử dụng công nghệ 0,6 và 0,35 μm chứa 5,5
triệu transistor, socket 8 387 chân, hỗ trợ bộ nhớ RAM tối đa 4GB. Điểm nổi bật
của Pentium Pro là bus hệ thống 60 hoăc 66 MHz, bộ nhớ đệm L2 (cache L2)
256KB hoặc 512KB (trong một số phiên bản). Pentium Pro có các tốc độ
150,166,180,200 MHz.
Pentium II (năm 1997), phiên bản cải tiến từ Pentium Pro được sử dụng
trong những dòng máy tính cao cấp, máy trạm (workstation) hoặc máy chủ
(server). Pentium II có bộ nhớ đệm L1 32KB, L2 512KB, tích hợp công nghệ
MMX được cải tiến giúp việc xử lý dữ liệu video, audio và đồ họa hiệu quả hơn.
Pentium II có đế cắm dạng khe - Single-Edge contact (SEC) 242 chân, còn gọi là
Slot 1. BXL Pentium II ưu tiên, tên mã Klamath, sản xuất trên công nghệ 0,35 μm,
có 7,5 triệu transistor, bus hệ thống 66 MHz, gồm các phiên bản 233, 266,
300MHz. Pentium II, tên mã Deschutes, sử dụng công nghệ 0,25 μm, 7,5 triệu
transistor, gồm các phiên bản 333 MHz (bus hệ thống 66 MHz),350,400,450 MHz
(bus hệ thống 100 MHz).
Celeron (năm 1998) được rút gọn từ kiến trúc BXL Pentium II, dành cho
dòng máy cấp thấp. Phiên bản ưu tiên, tên mã Covington không có bộ nhớ đệm L2
nên tốc độ xử lý khá chậm, không gây được ấn tượng với người dùng. Phiên bản
sau, tên mã Mendocino, đã khắc phục khuyết điểm này với bộ nhớ đệm L2
128KB. Covington sử dụng công nghệ 0,25 μm, 7,5 triệu transistor, bộ nhớ đệm
L1 32KB, bus hệ thống 66 MHz, đế cắm 242 chân Slot 1 SEPP (Single Edge
Processor Package), tốc độ 266, 300 MHz. Mendocino cũng sử dụng công nghệ
HVTH: Hà Minh Tân


Trang 22


0,25 μm có đến 19 triệu transistor, bộ nhớ đệm L1 32KB, L2 128KB, bus hệ thống
66 MHz, đế cắm Slot 1 SEPP hoặc socket 370 PPGA, tốc độ 300, 333, 366, 400,
433, 466, 500, 533 MHz.
Pentium III (năm 1999) bổ sung 70 lệnh mới (Streaming SIMD Extensions
- SSE) giúp tăng hiệu suất hoạt động của BXL trong các tác vụ xử lý hình ảnh,
audio, video và nhận dạng giọng nói. Pentium III gồm các tên mã Katmai,
Coppermine và Tualatin. Katmai sử dụng công nghệ 0,25 μm, 9,5 triệu transistor,
bộ nhớ đệm L1 32KB, L2 512KB, đế cắm Slot 1 SECC2 (Single Edge Contact
cartridge 2), tốc độ 450, 500, 550, 533 và 600 MHz (bus 100 MHz), 533, 600
MHz (bus 133 MHz). Coppermine sử dụng công nghệ 0,18 μm, 28,1 triệu
transistor, bộ nhớ đệm L2 256 KB được tích hợp bên trong nhằm tăng tốc độ xử
lý. Đế cắm Slot 1 SECC2 hoặc socket 370 FC-PGA (Flip-chip pin grid array), có
các tốc độ như 500, 550, 600, 650, 700, 750, 800, 850 MHz (bus 100 MHz), 533,
600, 667, 733, 800, 866, 933, 1000, 1100 và 1133 MHz (bus 133 MHz) Tualatin
áp dụng công nghệ 0,13 μm có 28,1 triệu transistor, bộ nhớ đệm L1 32KB, L2 256
KB hoặc 512 KB tích hợp bên trong BXL, socket 370 FC-PGA (Flip-chip pin grid
array), bus hệ thống 133 MHz. Có các tốc độ như 1133, 1200, 1266, 1333, 1400
MHz.
Celeron Coppermine (năm 2000) được rút gọn từ kiến trúc BXL Pentium
III Coppermine, còn gọi là Celeron II,được bổ sung 70 lệnh SSE. Sử dụng công
nghệ 0,18 μm có 28,1 triệu transistor, bộ nhớ đệm L1 32KB, L2 256 KB tích hợp
bên trong BXL, socket 370 FC-PGA, có các tốc độ như 533, 566, 600, 633, 667,
700, 733, 766, 800 MHz (bus 66 MHz), 850, 900, 950, 1000, 1100, 1200, 1300
MHz (bus 100 MHz).
Tualatin Celeron (Celeron S) (năm 2000) được rút gọn t kiến trúc BXL
Pentium III Tualatin, áp dụng công nghệ 0,13 μm, bộ nhớ đệm L1 32KB, L2 256
KB tích hợp, socket 370 FC-PGA, bus hệ thống 100 MHz, gồm các tốc độ 1,0;
1,1; 1,2;1,3 và 1,4 GHz.

HVTH: Hà Minh Tân



Trang 23

Pentium 4 được Intel giới thiệu vào năm 2000 đã mở ra một kỷ nguyên
mới của BXL máy tính. Người sử dụng hệ thống máy tính Pentium 4 có thể tạo ra
những bộ phim mang tính chuyên nghiệp, liên kết thời gian thực giữa video và
thoại, chồng hình đồ họa 3D, nhanh chóng mã hóa nhạc và chạy các ứng dụng đa
phương tiện... Bộ vi xử lý sử dụng công nghệ 0,18 micron. Pentium 4 có tốc độ
3,0 GHz, 1,40 GHz, 1,50 GHz, 1,70 GHz và 1,80 GHz với 42 triệu transistor.

HVTH: Hà Minh Tân


Trang 24

CHƯƠNG 2 :
NGÔN NGỮ LẬP TRÌNH VHDL,
PHẦN MỀM QUARTUS VÀ KIT DE2
2.1 Giới thiệu môi trường thiết kế phần cứng và ngôn ngữ VHDL:
2.1.1 Môi trường thiết kế phần cứng ( Hardware Design Environments)
Để đáp ứng sự phát triển kỹ thuật số, các công cụ thết kế được trợ giúp bởi
máy tính (CAD – computer Aided Design) được đưa vào quá trình thiết kế phần
cứng. Hỗ trợ mạnh mẽ cho phương pháp thiết kế này là những ngôn ngữ mô tả
phần cứng (HDLs – Hardware Description Languages). Khái niệm HDLs được
ứng dụng rộng rãi trong thiết kế hệ thống số trong thời gian gần đây, dựa vào
HDLs, công cụ hỗ trợ cho thiết kế hệ thống số đã phát triển và được sử dụng nhiều
trong thiết kế phần cứng.
Quá trình thiết kế hệ thống số:
Ý tưởng thiết kế:

Trước tiên người thiết kế phần cứng phải có ý tưởng thiết kế. Sau đó, phát
triển ý tưởng thiết kế thành sơ đồ khối, lưu đồ, ngôn ngữ tự nhiên. Người thiết kế
chỉ ra toàn bộ chức năng từ đầu vào đến đầu ra mà không cần chi tiết phần cứng
hoặc kiến trúc của hệ thống dưới thiết kế.
Thiết kế đường dữ liệu:
Trong giai đoạn này người thiết kế chỉ rõ thanh ghi và các đơn vị logic.
Những thành phần này được kết nối bằng các bus một hay hai chiều rồi điều khiển
hoạt động dữ liệu giữa các thanh ghi và các đơn vị logic thông qua các bus.

HVTH: Hà Minh Tân


×