Tải bản đầy đủ (.docx) (31 trang)

THIẾT kế ALU 32BIT THỰC HIỆN các LỆNH AND, OR, XOR, NOR, ADD, SUB (có code)

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 (338.49 KB, 31 trang )

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB

1


MỤC LỤC
DANH MỤC CÁC HÌNH VẼ....................................................................................................IV
DANH MỤC CÁC BẢNG BIỂU................................................................................................V
DANH MỤC CÁC TỪ VIẾT TẮT...........................................................................................VI
CHƯƠNG 1. CƠ SỞ LÝ LUẬN..................................................................................................1
1.1 GIỚI THIỆU VỀ VERILOG..............................................................................................1
1.1.1 Quá trình phát triển....................................................................................................1
1.1.2 Những đặc tính của Verilog........................................................................................2
1.1.3 Ngôn ngữ Verilog........................................................................................................2
1.2 CÁC CỔNG LOGIC CƠ BẢN..........................................................................................3
1.2.1 Cổng AND (toán tử . “và”).........................................................................................5
1.2.2 Cổng OR (toán tử + “hoặc”)......................................................................................6
1.2.3 Cổng NOR...................................................................................................................7
1.2.4 Cổng X-OR..................................................................................................................7
1.3 ARITHMETIC LOGIC UNIT (ALU)................................................................................8
1.4 CENTRAL PROCESSING UNIT (CPU)..........................................................................9
1.4.1 Bộ điều khiển (CU-Control Unit)................................................................................9
1.4.2 Bộ số học – Logic......................................................................................................10
1.4.3 Tốc độ........................................................................................................................10
1.5 PHẦN MỀM QUARTUS II.............................................................................................10
CHƯƠNG 2. THIẾT KẾ............................................................................................................12
2.1 DẪN NHẬP THIẾT KẾ...................................................................................................12
2.2 TESTBENCH TRONG VERILOG.................................................................................12
2.3 MÔ PHỎNG....................................................................................................................12
2.4 QUÁ TRÌNH THIẾT KẾ.................................................................................................13


2.4.1 Sơ đồ khối..................................................................................................................13
2.4.2 Lưu đồ giải thuật.......................................................................................................14
2.5 NGUYÊN LÝ HOẠT ĐỘNG..........................................................................................15
CHƯƠNG 3. KẾT QUẢ MÔ PHỎNG.....................................................................................17
2


3.1 BỘ CỘNG........................................................................................................................17
3.2 MUX 5-1..........................................................................................................................18
3.3 ALU 1 BIT.......................................................................................................................19
3.4 ALU 4 BIT.......................................................................................................................20
3.5 ALU 8 BIT.......................................................................................................................20
CHƯƠNG 4. KẾT LUẬN...........................................................................................................21
CHƯƠNG 5. TÀI LIỆU THAM KHẢO..................................................................................22
PHỤ LỤC......................................................................................................................................23

3


DANH MỤC CÁC HÌNH VẼ
HÌNH 1-1:KÝ HIỆU GIẢN ĐỒ CỦA ALU.............................................................................17
HÌNH 1-2: GIAO DIỆN PHẦN MỀN QUARTUS II 9.0.......................................................20
HÌNH 2-1: BỘ CỘNG ĐẦY ĐỦ................................................................................................24
HÌNH 2-2: BỘ ALU 1BIT...........................................................................................................24
HÌNH 3-1: SƠ ĐỒ NGUYÊN LÝ CỦA BỘ CỘNG 1 BIT.....................................................27
HÌNH 3-2: SƠ ĐỒ NGUYÊN LÝ BỘ MUX 5-1.....................................................................28
HÌNH 3-3: SƠ ĐỒ NGUYÊN LÝ CỦA ALU 1 BIT................................................................28
HÌNH 3-4: SƠ ĐỒ NGUYÊN LÝ ALU 4 BIT.........................................................................29
HÌNH 3-5: SƠ ĐỒ NGUYÊN LÝ CỦA ALU 8 BIT................................................................29
HÌNH 3-6: SƠ ĐỒ NGUYÊN LÝ CỦA ALU 32 BIT..............................................................29


4


DANH MỤC CÁC BẢNG BIỂU
BẢNG 1-1: GIẢN ĐỒ ĐIỆN THẾ CÁC MỨC LOGIC HỌC TTL.....................................13
BẢNG 1-2: BẢNG SỰ THẬT CỔNG AND.............................................................................14
BẢNG 1-3: BẢNG SỰ THẬT CỔNG OR................................................................................15
BẢNG 1-4: BẢNG SỰ THẬT CỔNG NOR.............................................................................16
BẢNG 1-5: BẢNG SỰ THẬT CỔNG X-OR...........................................................................17
BẢNG 3-1: BẢNG SỰ THẬT CỦA BỘ CỘNG 1 BIT...........................................................26
BẢNG 3-2: BẢNG SỰ THẬT CỦA MUX 5-1.........................................................................27

5


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

6


Trang 1/25

CHƯƠNG 1. CƠ SỞ LÝ LUẬN
1.1 Giới thiệu về Verilog
Khi kích thước và độ phức tạp của hệ thống thiết kế ngày một tăng cao, nhiều
công cụ hỗ trợ thiết kế trên máy tính được sử dụng rộng rãi vào quá trình thiết kế phần
cứng. Vào thời kì đầu, những công cụ mô phỏng và tạo ra phần cứng đã giúp đưa ra
phương pháp thiết kế, phân tích, kiểm tra, tổng hợp và tự động tọa ra phần cứng một
cách phức tạp. Sự phát triển không ngừng của những công cụ thiết kế một cách tự động

là do sự phát triển của những ngôn ngữ mô tả phần cứng HDLs và các phương pháp
thiết kế hệ thống số dựa trên ngôn ngữ này. Hiện nay người ta vẫn đang tiếp tục nghiên
cứu những ngôn ngữ mô tả phần cứng tốt hơn và một trong những ngôn ngữ được sử
dụng rộng rãi để mô tả phần cứng đó là ngôn ngữ Verilog HDL. Do sự phổ biến trong
ngành công nghiệp thiết kế số, Verilog đã trở thành một kiến thức đòi hỏi phải biết với
những sinh viên cũng như kĩ sư học tập và làm việc trong lĩnh vực phần cứng máy tính.

1.1.1 Quá trình phát triển
Được ra đời vào đầu năm 1984 bởi Gateway Design Automation. Ban đầu, ngôn
ngữ được dùng như một công cụ để mô phỏng và kiểm tra. Sau thời gian ngôn ngữ này
được chấp nhận bởi ngành công nghiệp điện tử, vào năm 1987 một công cụ tổng hợp
đã được xây dựng và phát triển dựa trên ngôn ngữ này.
Cũng trong năm 1987, VHDL đã trở thành một chuẩn ngôn ngữ môt tả phần
cứng của IEEE. Năm 1993, những nổ lực nhằm chuẩn hóa ngôn ngữ Verilog được bắt
đầu như trở thành chuẩn: IEEE, IEEE Std 1364-1995. Với những công cụ tổng hợp,
công cụ mô phỏng, công cụ thiết kế, công cụ phân tích thời gian dựa trên Verilog đã có
sẳn, chuẩn Verilog IEEE này nhanh chóng được sự chấp nhần sâu rộng trong cộng
đồng thiết kế điện tử.

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 2/25

Một phiên bản mới vào năm 2001 được chấp nhận bởi IEEE được dùng bởi hầu
hết người sử dụng và người phát triển công cụ. Những điểm mới đó là nó cho phép bên
ngoài có khả năng đọc và ghi dữ liệu, quản lý thư viện, xây dựng cấu hình thiết kế, hỗ
trợ những cấu trúc có mức độ trừu tượng cao hơn, cấu trúc mô tả sự lặp lại. Các quá
trình cải tiến chuẩn này vẫn đang được tiếp tục phát triển với sự tài trợ của IEEE.


1.1.2 Những đặc tính của Verilog
Verilog là một ngôn ngữ mô tả phần cứng dùng để mô tả từ mức transistor đến
mức hành vi. Ngôn ngữ này hỗ trợ những cấu trúc định thời cho việc mô phỏng ở mức
đọ chuyển mạch và tức thời. Một mô tả thiết kế Verilog có thể bao gồm sự trộn lẫn giữa
những khối khác nhau với nhiều chi tiết.

1.1.3 Ngôn ngữ Verilog
Ngôn ngữ Verilog HDL có thể đáp ứng tất cả những yêu cầu cho việc thiết kế và
tổng hợp những hệ thống số. Ngôn ngữ này hỗ trợ mô tả cấu trúc phân cấp của phần
cứng từ mức độ hệ thống đến mức cổng hoặc đến cả mức công tắc chuyển mạch.
Verilog cũng hỗ trợ tất cả các mức độ mô tả việc định thời và phát hiện lỗi.
Trong Verilog, một linh kiện phần cứng được mô tả bằng một cấu trúc ngôn ngữ
“khai báo module”. Mô tả một module sẽ mô tả danh sách những ngõ vào và ngõ ra
của linh kiện cũng như thanh ghi và hệ thống bus trong linh kiện. Bên trong một
module, những phép gán đồng thời và những khối quy trình có thể được dùng đễ mô tả
phần cứng.
Nhiều mô dule có thể được gọi một cách phân cấp để hình thành những cấu trúc
mô tả phần cứng khác nhau. Những phần tử con của việc mô tả thiết kế phân cấp có thể
là những module, linh kiện cơ bản hoặc các linh kiện do người dùng tự định nghĩa. Để
mô phỏng cho thiết kế, những phần tử con trong cấu trúc phân cấp này nên được tổng
hợp một cách riêng lẻ.
Verilog thường được dùng để mô tả thiết kế ở bốn dạng:

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 3/25


-

Thuật toán (một số lệnh giống ngôn ngữ C như: if, case, for, while,..).

-

Chuyển đổi thanh ghi (kết nối bằng các biểu thức Boolean).

-

Các cổng kết nối (cổng: or, and, not,…).

-

Chuyển mạch (BJT, MOSTFET).

Cấu trúc chương trình dùng ngôn ngữ Verilog:
//khai báo module
Module tên chương trình (tên biến I/O); //tên chương trình trùng tên file.v
Input [msb:lsb] biến;
Output [msb:lsb] biến;
Reg [msb:lsb] biến reg;
Wire [msb:lsb] biến wire;
…Các lệnh…
Endmodule

1.2 Các cổng logic cơ bản
Cổng logic cơ sở là một bộ phận của ngôn ngữ Verilog. Có hai đặc tính được chỉ
rõ là: drive_strenght và delay.
Drive_strenght: chỉ sức bền của cổng. Độ bền đầu ra là sự kết nối một chiều đến

nguồn, kế đó tạo ra sự kết nối trong suốt transistor dẫn, kết thúc là tổng trở kéo lên
hoặc kéo xuống. Drive_trenght thường không được chỉ rõ trong trường hợp này độ bền
mặc định là strong1 và strong0.
Delay: nếu delay không được chỉ rõ thì khi đó cổng không có trì hoãn truyền tải,
nếu có hai delay được chỉ định, thì trước tiên là mô tả trì hoãn lên, sau đó là trì hoãn
xuống. nếu chỉ có một delay được chỉ định, thì khi đó trì hoãn lên xuống là như nhau.
Delay được bỏ qua khi tổng hợp. Các tham số cho các cổng cơ bản phải được định
nghĩa trước như delay.
Biểu diễn trạng thái Logic 1 và 0 người ta thường gán:

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 4/25

-

Logic dương: điện thế cao -> Logic 1; điện thế thấp -> Logic 0. Thực tế, mức
Logic 1 và mức Logic 0 tương ứng với một khoảng điện thế được xác định, có
một khoảng chuyển tiếp giữa mức cao và mức thấp được gọi là khoảng không
xác định (ngưỡng logic). Khoảng này tùy thuộc vào họ IC sử dụng và được cung
cấp trong bảng thông số kỹ thuật.

-

Logic âm ngược lại.
Bảng 1-1: Giản đồ điện thế các mức Logic học TTL.
5V
2.4V


Mức 1
Không xác định

0.7V
0V

Mức 0

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 5/25

1.2.1 Cổng AND (toán tử . “và”)
Chức năng: Dùng thực hiện phép nhân Logic giữa 2 hay nhiều biến nhị phân.
Cổng AND có 2 hay nhiều ngõ vào và có 1 ngõ ra.
Kí hiệu:

-

Giản đồ thời gian:

Bảng 1-2: Bảng sự thật cổng AND.

A

B


Y=A.B

0
0
1
1

0
1
0
1

0
0
0
1

Note: Ngõ ra cổng AND ở mức cao khi tất cả ngõ vào ở mức cao.

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 6/25

1.2.2 Cổng OR (toán tử + “hoặc”)
Chức năng: Dùng thực hiện phép cộng logic giữa 2 hay nhiều biến nhị phân.
Cổng OR có hay hay nhiều ngõ vào và có 1 ngõ ra.
Ký hiệu:


Giản đồ thời gian:

Bảng 1-3: Bảng sự thật cổng OR.

A

B

Y=A+B

0
0
1
1

0
1
0
1

0
1
1
1

Note: Ngõ ra cổng OR ở mức thấp khi tất cả ngõ vào ở mức thấp.

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB



Trang 7/25

1.2.3 Cổng NOR
Chức năng: Thực hiên cùng lúc 2 chức năng OR và NOT. Cổng NOR có 2 hay
nhiều ngõ vào và có 1 ngõ ra.
Ký hiệu:

Bảng 1-4: Bảng sự thật cổng NOR.

A

B

0
0
1
1

0
1
0
1

1
0
0
0

Note: Ngõ ra ở mức cao khi tất cả ngõ vào ở mức thấp.


1.2.4 Cổng X-OR
Chức năng: Thực hiện phép toán cộng trừ - cộng bỏ qua nhớ giữa 2 biến nhị
phân. Cổng X-OR có 2 ngõ vào và một ngõ ra.
Hàm:
Ký hiệu:

= AB

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 8/25

Bảng 1-5: Bảng sự thật cổng X-OR.

A

B

0
0
1
1

0
1
0
1


0
1
1
0

Note: Khi có một ngõ vào nối lên mức cao thì cổng X-OR = Cổng NOT. Khi có một
ngõ vào nối xuống mức thấp thì cổng X-OR = Cổng ĐỆM.

1.3 Arithmetic Logic Unit (ALU)
Chức năng: Thực hiện các phép toán số học và Logic sau đó trả lại kết quả cho
các thanh ghi hoặc bộ nhớ.
Trong CPU, một bộ số học và Logic là một mạch điện tử thực hiện các phép
tính số học và Logic cơ bản. ALU là một phần cơ bản của CPU của một máy tính, bộ vi
xử lý chứa rất nhiều và phức tạp các ALU.
Lý thuyết về ALU được nhà toán học John Von Neumann phát minh vào năm
1945, khi viết một báo cáo cho EDVAC.

Hình 1-1:Ký hiệu giản đồ của ALU.

Năm 1946, John Von Neumann nghiên cứu cùng các sinh viên để thiết kế một
chiếc máy tính IAS, và nó đã trở thành tiền than cho nhiều máy tính thế hệ sau.
Neumann tin rằng một ALU cần thiết cho một máy tính bởi vì máy tính chỉ tính các
phép tính bao gồm: cộng, trừ, nhân và chia.
THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 9/25


Thông thường, một phép toán được thực hiện bởi một hay nhiều ALU. Một
ALU load dữ liệu từ thanh ghi, một điều khiển. ALU sẽ tính toán rồi lưu kết quả vào
một thanh ghi kết quả. Một hệ thống khác sẽ di chuyển dữ liệu giữa các thanh ghi vào
bộ nhớ.
Phần lớn các ALU có thể thực hiện các phép toán sau:
-

Số nguyên (cộng, trừ, nhân, chia).

-

Bit Logic (AND, OR, NOT, XOR,..)

-

Dịch bit.
Một kỹ sư hoặc một sinh viên có thể thiết kế một ALU để tính toán, tuy nhiên

vấn đề ở chỗ phép toán các phức tạp, ALU càng đắt, bộ xử lí càng lớn và càng tốn
nhiều năng lượng, vân vân. Bởi vậy, các kỹ sư thường xuyên phải tính toán sao cho cân
bằng, cung cấp cho bộ xử lí một ALU đủ mạnh để nó chạy nhanh, nhưng không quá
phức tạp. Đó được gọi là software emulation.

1.4 Central Processing Unit (CPU)
Được định nghĩa là bộ xữ lý trung tâm. CPU có thể được xem như não bộ một
trong những phần tử cốt lõi quan trọng nhất của máy tính. Nhiệm vụ chính là xữ lý các
chương trình vi tính và dữ liệu. CPU có nhiều kiểu dáng khác nhau, ở hình thức đơn
giản nhất, CPU là một con chip với vài chục chân. Phức tạp hơn, CPU được ráp sẳn
tron các bộ vi mạch với hàng tram con chip khác. CPU là một mạch xữ lý dữ liệu
transistor trên một bảng mạch nhỏ. Bộ xữ lý trung tâm bao gồm: bộ tính toán và bộ

điều khiển.

1.4.1 Bộ điều khiển (CU-Control Unit)
Là các vi xữ lý có nhiệm vụ biên dịch các lệnh của chương trình và điều khiển
hoạt động xử lý, được điều tiết chính xác bởi xung nhịp đồng hồ hệ thống. Mạch xung
nhip dùng để đồng bộ các thao tác xử lý trong và ngoài CPU theo các khoảng thời gian
không đổi. Khoảng thời gian chờ giữa 2 xung được gọi là chu kỳ xung nhịp. Tốc độ

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 10/25

xung nhịp hệ thống tạo ra các xung tính hiệu chuẩn thời gian gọi là tốc độ xung nhịp,
tốc độ đồng hồ tính bằng triệu đơn vị mỗi giây-Mhz. Thanh ghi là phần tử nhớ tạm
trong bộ vi xử lý dùng lưu dữ liệu và địa chỉ nhớ có trong máy tính khi đang thực hiện
các tác vụ.

1.4.2 Bộ số học – Logic
Arthmetic Logic Unit (ALU) có chức năng thực hiện các lệnh của bộ điều khiển
và xử lý tín hiệu. Theo tên gọi ALU dùng để thực hiện các phép tính số học (cộng, trừ,
nhân, chia) hay các phép tính Logic (AND, OR, …)

1.4.3 Tốc độ
Tốc độ xử lý của máy tính phụ thuộc vào tốc độ của CPU, nhưng nó cũng phụ
thuộc vào các phần tử khác như bộ nhớ ROM, RAM hay bo mạch đồ họa.
Theo thời gian có nhiều công nghệ giúp tăng tốc độ xử lý của CPU, ví dụ như
Core hay Nehalem. Tốc độ CPU có liên hệ với tần số đồng hồ làm việc của nó, đối với
các CPU cùng loại, tần số càng cao thì tốc độ xử lý càng nhanh. Đối với CPU khác

loại, điều này chưa chắc đúng ví dụ: CPU Core 2 Duo có tần số 2,6GHz có thể xử lý
nhanh hơn CPU 3,4GHz một nhân. Tốc độ CPU còn phụ thuộc vào bộ nhớ đệm của nó,
như Intel Core 2 Duo sử dụng chung cache L2 giúp cho tốc độ xử lý của hệ thống 2
nhân này nhanh hơn so với hệ thống 2 nhân thế hệ 1 Intel Pentium D với mỗi core từng
cache riêng biệt. Hiện nay công nghệ sản xuất CPU mới nhất là 32nm.

1.5 Phần mềm Quartus II
Quartus II là công cụ phần mềm được phát triển bởi hang Altera, cung cấp môi
trường thiết kết toàn diện cho các thiết kế SOPC (system on a programmable chip).
Đây là phần mềm tích hợp đầy đủ các công cụ để phục vụ thiết kết Logic với các linh
kiện Logic PLD, FPGA của Altera, gồm các dòng Apex, Cyclone, Flex, Max,….
Quartus II cung cấp các khả năng thiết kế sau:

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 11/25

-

Môi trường thiết kế gồm các: sơ đồ khối, bản vẻ, công cụ soạn thảo các ngôn
ngữ như: AHDL, VHDL và Verilog HDL.

-

Thiết kế Logic, tổng hợp Logic.

-


Mô phỏng chức năng và thời gian.

-

Phân tích thời gian, phân tích Logic nhúng.

-

Cho phép xuất, tạo và kết nối các file nguồn để tạo ra các file chương trình lớn.

-

Tự động định vị lỗi, khả năng lập trình và nhận diện linh kiện.

Hình 1-2: Giao diện phần mền Quartus II 9.0.

Quartus II còn cho phép làm việc với nhiều file ở cùng một thời điểm, soạn thảo
file thiết kế trong khi vẫn có thể chạy mô phỏng hay biên dịch các dự án khác. Công cụ
biên dịch cung cấp quy trình thiết kế mạnh, cho phép tùy biến để đạt được thiết kế tối
ưu trong dự án. Công cụ định vị lỗi tự đông và các cảnh báo giúp việc phát hiện và sửa
lỗi trở nên đơn giản hơn.

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 12/25

CHƯƠNG 2. THIẾT KẾ
2.1 Dẫn nhập thiết kế

Bước đầu tiên trong thiết kế hệ thống số là bước dẫn nhập thiết kế. Trong bước
này, thiết kế được mô tả bằng Verilog theo phong cách phân cấp từ cao xuống thấp.
một thiết kế hoàn chỉnh có thể bao gồm nhiều linh kiện ở mức cổng hoặc transistor.
Những module phần cứng có chức năng phức tạp hơn được mô tả ở mức độ hành vi
hoặc những linh kiện được liệt kê bởi cấu trúc bus.
Những phát biểu gọi sử dụng khối Verilog đã được thiết kế sẳn được dùng cho
những linh kiện với mức thấp trong một thiết kế ở mức độ cấp cao hơn. Thay vì mô tả
ở mức độ hành vi, bus hoặc chức năng của môt hệ thống, chúng ta có thể mô tả một hệ
thống bằng Verilog bằng cách kết nối những linh kiện ở mức độ thấp hơn. Những linh
kiện này có thể nhỏ nhu là transistor hay cổng Logic, hoặc có thể lớn hơn như một bộ
vi xử lý hoàn chỉnh.

2.2 Testbench trong Verilog
Một hệ thống được thiết kế dùng Verilog phải được mô phỏng và kiểm tra xem
thiết kế đã đúng chức năng hay chưa trước khi tạo ra phần cứng. trong quá trình chạy
mô phỏng này, những lỗi thiết kế và sự không tương thích giữa các linh kiện dung
trong thiết kế có thể được phát hiện. Chạy mô phỏng một thiết kế đòi hỏi việc tạo ra
một dữ liệu ngõ vào để kiểm tra và quá trình quan sát kết quả sau khi chạy mô phỏng,
dữ liệu dùng để kiểm tra này được gọi là testbench.

2.3 Mô phỏng
Chạy mô phỏng nằm trong việc đánh giá thiết kế được thực hiên trước khi thiết
kế được tổng hợp. Bước chạy mô phỏng được hiểu như mô phỏng ở mức độ hành vi,
RTL hay tiền tổng hợp. Ở mức độ RTL, một thiết kế bao gồm xung thời gian nhưng

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 13/25


không bao gồm trì hoãn thời gian trên cổng và dây kết nối. Thời gian chạy mô phỏng ở
mức độ RTL sẽ chính xác theo tín hiệu xung clock, không quan tâm đến vấn đề khác
như: nguy hiểm tìm ẩn khiến thiết bị lỗi, vi phạm về thời gian, hold giữa những tín hiệu
ngõ vào và những vấn đề liên quan đến định thời khác. Ưu điểm của việc mô phỏng
này là tốc độ chạy mô phỏng nhanh so với chạy mô phỏng ở mức cổng hoặc mức
transistor.

2.4 Quá trình thiết kế
2.4.1 Sơ đồ khối
Mô tả phần cứng bằng Verilog

Dùng testbench để tạo dạng sóng

Tổng hợp đưa về hàm boole, rút gọn
biểu thức

Kiểm tra chức năng

Nạp lên kit để kiểm tra

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 14/25

2.4.2 Lưu đồ giải thuật
Thiết kế đầu vào


Tổng hợp

Mô phỏng chức năng

Đúng/Sai

sai

Nạp lên kit

Mô phỏng

đúng

Kiểm tra chức năng

Đúng/Sai

sai
Lập trình
Tạo layout để chế tạo chip
đúng

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 15/25

2.5 Nguyên lý hoạt động

Mục tiêu đầu tiên là thiết kế ALU 32-bit có thực hiện phép toán AND, OR,
XOR, NOR, ADD, SUB. Ta sẽ bắt đầu với bộ cộng đầy đủ (full adder) như hình bên
dưới.

Hình 2-1: Bộ cộng đầy đủ.

Để có thể lựa chọn kết quả cho đúng cho các phép toán, ta đưa ngõ ra các mạch
đến MUX và tín hiệu được chọn lựa được trích từ mã lệnh của lệnh hiện tại (ADD,
AND, OR, XOR, NOR). Ta được khối ALU dùng tính cho 1 bit.

Hình 2-2: Bộ ALU 1BIT.

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 16/25

Về phần ý nghĩa của các tên tín hiệu thì như sau:
A: toán hạng 1
B: toán hạng 2
Cin: giá trị của cờ nhớ vào (Carry In)
Cout: giá trị của cờ nhớ ra (Carry Out)
Result: kết quả sau khi tính toán
ALU có thể hỗ trợ phép trừ ý tưởng để giải quyết là thực hiện cộng với bù 2.
A - B = A + (bù 2 của B ) = A + (bù B + 1)
Ta có được bù B bằng cách cho B qua cổng NOT, giá trị +1 thêm vào nhận từ
CarryIn ngõ vào 1-bit ALU hỗ trợ các phép toán ADD, SUB, AND, OR, XOR, NOR.
Để thực hiện phép trừ 1-bit thì gán tín hiệu ADD/SUB giá trị 1. Thực hiện ALU
32-bit thì tương tự ghép 32 khối ALU 1-bit lại với nhau.





Để trừ gán B-invert và Cin giá trị 1.
Để thực hiện cộng thì cho ADD/SUB giá trị 0.
Để AND, OR, XOR, NOR thì gán ADD/SUB giá trị 0 còn Cin thì không cần
quan tâm.

Như vậy ta đã hoàn tất ALU 32-bit có hỗ trợ ADD, SUB, AND, OR, XOR và NOR.

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 17/25

CHƯƠNG 3. KẾT QUẢ MÔ PHỎNG
3.1 Bộ cộng
Bảng 3-1: Bảng sự thật của bộ cộng 1 BIT.

A

B

CIN

CO

S


0

0

0

0

0

0

0

1

0

1

0

1

0

0

1


0

1

1

1

0

1

0

0

0

1

1

0

1

1

0


1

1

0

1

0

1

1

1

1

1

S=A^B^CIN
CO=(A&B)|(A&CIN)|(B&CIN)

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


Trang 18/25


Hình 3-1: Sơ đồ nguyên lý của bộ cộng 1 BIT.

3.2 MUX 5-1
Bảng 3-2: Bảng sự thật của MUX 5-1.

S2
0
0
0
0
1

S1
0
0
1
1
0

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB

S0
0
1
0
1
0

Z

Z0
Z1
Z2
Z3
Z4


Trang 19/25

Hình 3-2: Sơ đồ nguyên lý bộ MUX 5-1.

3.3 ALU 1 BIT

Hình 3-3: Sơ đồ nguyên lý của ALU 1 BIT.

THIẾT KẾ ALU 32BIT THỰC HIỆN CÁC
LỆNH AND, OR, XOR, NOR, ADD, SUB


×