TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
LỚP CE118.H12.1
--------------------------------
BÁO CÁO THỰC HÀNH LAB 3
THIẾT KẾ LUẬN LÝ SỐ
NHÓM THỰC HIỆN
9
Trương Hoàng Minh_14520536
Nguyễn Văn Nam_14520559
1
LAB : THIẾT KẾ ALU
I. MỤC TIÊU
Trong bài lab này sinh viên sẽ tham khảo thiết kế một ALU 8-bit trên phần mềm mô phỏng
LogiSim. Sinh viên sẽ thiết kế một ALU 4-bit trên phần mềm LogiSim. Sau đó, thiết kế và
kiểm chứng hoạt động của ALU này trên KIT DE2.
II. NỘI DUNG THỰC HÀNH
Thiết kế bộ ALU 4-bit có sơ đồ khối và các chức năng như bên dưới
Chú ý: Lệnh Add (cộng) và Subtract (trừ) được thực hiện trên 2 số có dấu 4-bit A và B. Kết
quả sẽ được biểu diễn trong số có dấu 4-bit (R). Cờ báo add_sub_overflow sẽ được bật lên 1
khi mạch phát hiện có overflow xảy ra.
Hỏi: tầm biểu diễn của 2 toán hạng A, B và kết quả Add và Subtract ở trên?
Trả lời :Đối với số nhị phần n bit biểu diễn là số có dấu ( theo kiểu bù thì tầm biểu diễn là từ
sẽ từ -2(mũ n – 1) đến +2(mũ n – 1) – 1. Cho nên tầm biểu diễn của A và B R sẽ là từ -8 đến
+7
III. THỰC HIỆN
1. Thiết kế ALU 1-bit
Ta thấy bài toán chia làm phép toán số học và phép toán logic. Với các phép toán
logic. Ta chỉ cần sử dụng các cộng logic 2 bit ngõ vào And, Or, Xor, Not để thực
hiện. Đối với phép toán cộng, trừ, tăng, giảm ta cần tiến hành thiết kế.
2
Bộ cộng 1-bit : Có sẵn trên LogiSim. Thiết kế trên Quartus: Mạch có 3 ngõ vào. 2 ngõ
vào 2 số 1-bit vào 1 ngõ vào số nhớ. 2 ngõ ra 1-bit là tổng S và số nhớ COUT. Khi lắp
thành bộ cộng 4-bit. Ta cho bit nhớ đầu tiên của bộ cộng bằng 0. Số nhớ của các bit
tiếp theo sẽ là bit nhớ (COUT) của phép cộng trước đó.
BẢNG THUỘC TÍNH MẠCH CỘNG
MẠCH CỘNG TRÊN QUARTUS
3
Tương tự bộ trừ 1-bit có sẵn trên LogiSim. Thiết kế bộ trừ 1-bit có chức năng tương
tự bộ cộng đã nêu trên.
BẢNG THUỘC TÍNH MẠCH TRỪ
MẠCH TRỪ THIẾT KẾ TRÊN QUARTUS
4
Thiết kế mạch tăng giảm A: Nhận thấy tăng A đồng nghĩa với việc cộng A với 1.
Giảm A là trừ A với 1. Ta có bộ tăng giảm như sau :
MẠCH TĂNG
MẠCH GIẢM
Mọi chân B sẽ được nối đất tức là A + 0 hoặc A – 0; Cin sẽ được tăng 1. Khi nối thánh mạch
tăng 4-Bit. Đối với bit đầu tiên của mạch tăng giảm, Cin được mặc định là 1. Các đầu vào
Cin của các bit sau được lấy từ Output Cout và Carry của bit trước như các chân trong hình.
Khối MUX 8-1 có sẵn trong LogiSim và được thiết kế trong Quartus. Với 3 tín hiệu
điều khiển là MS1S0. Thực hiện chọn các chức năng như yêu cầu bài ra
=>>>> Kết nối các khối và các cổng. Thiết kế ALU 1 bit .
5
LOGISIM 1 BIT
6
QUARTUS 1 BIT
ĐÓNG GÓI
7
2. Thiết kế ALU-4bit
ALU 4 BIT TRÊN LOGISIM
HOẠT ĐỘNG:
Chân CD: Cin Decrement : bit nhớ cho phép giảm A. Bit đầu nhớ đầu tiên sẽ được
gán = 0. Các bit nhớ tiếp theo chính bằng bit nhớ ra của phép giảm A là DOC :
DecrementOutCarry
Tương tự ta có chân CA: CinAdd là bit nhớ phép cộng. hoạt động như chân CD. Bit
nhớ ra tương ứng là AC: AddCarry
Tương tự là chân CS: CinSub, bit nhớ phép trừ; Tương ứng ngõ ra là SC: SubCarry
Chân CI: CinInCrement, bit nhớ vào phép tăng A; Tương ứng ngõ ra là IOC:
IncOutCarry;
Cờ ZeroFlag: Bật lên 1 khi kết quả ngõ ra sau cùng R = 0;
Cờ OverFlow sẽ được bật khi thực hiện phép cộng hoặc trừ mà kết quả vượt qua giới
hạn của số có dấu 2bit
8
MẠCH ALU 4-BIT TRÊN QUARTUS
MẠCH KHỐI ALU 4BIT
9
IV.
THỰC HIỆN MÔ PHỎNG
Lưu ý: Khi thực hiện mô phỏng trên Kit. Các chân được gán như yêu cầu bài ra
1. Ngõ điều khiển có giá trị 000
Mạch thực hiện chức năng ComplementA có nghĩa là đảo các bit của A. bit 0 chuyển
thành 1. Bit 1 chuyển thành 0. Thực hiện như bên trong hình
KẾT QUẢ MÔ PHỎNG TRÊN KIT
A = 0010. Kết quả trả về là 1101
10
2. Ngõ điều khiển có giá trị 001
Thực hiện chức năng AND từng bit A và B. Bit trả về là 1 nếu cả bit A và B đều là 1
MÔ PHỎNG TRÊN KIT
A = 0010, B = 0011, kết quả trả về là 0010
11
3. Ngõ điều khiển có giá trị 010
Thực hiện chức năng Xor từng bit của A và B. Bit trả về là 1 khi Bit A và B khác
nhau. Giống nhau sẽ trả về 0
MÔ PHỎNG TRÊN KIT
A = 0110, B = 0011. Kết quả trả về là 0101
4. Ngõ điều khiển có giá trị 011
Thực hiện chức năng OR từng bit của A và B. Kết quả chỉ trả về 0 khi cả 2 bit của A
và B đồng thời là 0.
12
MÔ PHỎNG TRÊN KIT
A = 0010, B = 0011. Kết quả trả về là 0011
5. Ngõ điều khiển có giá trị 100
Thực hiện chức năng giảm A xuống 1
MÔ PHỎNG TRÊN KIT
A = 0110. Kết quả trả về là 0101.
13
6. Ngõ điều khiển có giá trị 101
Thực hiện chức năng cộng 2 số có dấu A B ( theo kiểu bù 2). Cờ OverFlow sáng báo
kết quả bị tràn.
14
15
MÔ PHỎNG TRÊN KIT
A=0110(6), B = 1111 (-1). Kết quả là 0101 ( 5)
A = 0110(6), B = 0001(1). Kết quả là 0111(7)
A= 0110(6), B = 0111(7). Kết quả là 1101(sai). Cờ tràn bật lên
16
7. Ngõ điều khiển có giá trị 110
Thực hiện chức năng trừ 2 số có dấu A B ( theo kiểu bù 2). Cờ OverFlow sáng báo
kết quả bị tràn.
17
18
MÔ PHỎNG TRÊN KIT
A= 0011, B = 0001. Kết quả là 0010
A = 0011(2), B = 1001(-7). Kết quả là 1010(sai). Cờ báo tràn (-9)
8. Ngõ điều khiển có giá trị 111
Thực hiện IncrementA. Tăng A lên 1.
19
MÔ PHỎNG TRÊN KIT
A = 0010. Kết quả khi tăng là 0011
A = 1111(-1). Kết quả khi tăng là 0000
END
20