3. 1.GIỚI THIỆU FILE THANH GHI:
• Cấu tạo 1 file thanh ghi bao gồm:
+ 32 thanh ghi 32 bit, riêng thanh ghi đầu tiên( Reg0)
thì luôn mang giá trị 0.
+ Có 2 ngõ vào chọn thanh ghi đọc (Read Register 1
và Read Register 2) và 2 ngõ ra dữ liệu (Read Data 1
và Read Data 2) khi đọc file thanh ghi
+ Có 1 ngõ vào chọn thanh ghi để ghi dữ liệu (Write
register) , 1 ngõ vào cho phép ghi (RegWrite) và1
ngõ vào dữ liệu (Write Data) khi ghi vào file thanh
ghi.
5. KHỐI 1: DECODER
Decoder(bộ giải mã 5:32) có 32 ngõ ra
dùng để xuất ra tín hiệu điều khiển ghi
dữ liệu vào các thanh ghi, với 5 bits
Write Register để chọn thanh ghi, và tín
hiệu điều khiển ghi RegWrite.
Để thiết kế bộ giải mã 5:32, ta xây
dựng từ các bộ giãi mã 2:4 và 3:8
7. KHỐI 1: DECODER
• Mạch giải mã 3:8:
3→8
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
8. KHỐI 1: DECODER
• Mạch giải mã 5:32:
Ghép các bộ giải mã 2:4 và 3:8
Ta được bộ giải mã 5:32
9. KHỐI 2: 32 REGISTER
Dùng thanh ghi 32 bit có sẵn trong logisim
Data in Data out
Write Enable
Clock
Zero
10. KHỐI 3: MULTIPLEXOR
Multiplexor(Mux) có 32 ngõ dữ
liệu đầu vào, mỗi ngõ dữ liệu có
32 bits. Dữ liệu ngõ ra ReadData
có 32 bits bằng một trong số các
ngõ vào. 5 bits của ReadRegister
sẽ quyết định ngõ dữ liệu đầu vào
nào sẽ được truyền đến đầu ra.
Để thiết kế bộ Mux 32-1 32 bit, ta
xây dựng từ các bộ Mux 2-1
32bit, Mux 4-1 và 8-1.
17. YÊU CẦU THIẾT KẾ
Các phép toán yêu cầu: ADD, SUB, XOR, SLT
Cấu tạo MIPS ALU:
2 ngõ vào BusA và BusB 32 bit
1 ngõ ra Output 32 bit
Các cờ ngõ ra: zero, overflow,
carryout, negative
18. • Cờ zero: được set khi kết quả bằng 0
• Cờ overflow (tràn khi thực hiện cộng trừ
với số có dấu): được set khi xảy ra tràn
• Cờ carryout (tràn khi thực hiện cộng trừ
với số không dấu): xảy ra khi có nhớ
(mượn) từ MSB
• Cờ negative: được set nếu kết quả âm
• Ngõ vào điều khiển (ALU control)
00 Add
01 Xor
10 Sub
11 SLT
19. THIẾT KẾ BỘ CỘNG 32 BIT
• Thiết kế bộ CỘNG 1 BIT
Input Output
a b Cin sum Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
+ sum= a xor b xor cin
+ cout = ab + cin(a+b)
27. CỜ ZERO
• Khi kết quả bằng 0 thì cờ zero được set lên 1
• Dùng lệnh nor tất cả các bit từ 0 đến 31 của kết quả để kiểm tra cờ Zero
28. CỜ CARRYOUT
Chỉ xét đối với phép cộng trừ.
• Cờ carry chính là cout của phép cộng hoặc phép trừ.
29. CỜ OVERFLOW
• Overflow (tràn có dấu –xảy ra khi kết quả phép toán vượt quá dải giới hạn tính
toán).
• Vì vậy, có thể phát hiện overflow bằng cách so sánh cin và cout của bit thứ 31, nếu
trái dấu thì xảy ra overflow
31. CỜ NEAGTIVE
Cờ Negative: gán cờ Negative bằng bit thứ 31 của kết quả.
• + Bit thứ 31 = 1 (kết quả âm): cờ được set
• + Bit thứ 31 = 0 (kết quả dương): cờ không được set
32. XÁC ĐỊNH NGÕ RA
• Sau khi có được 4 kết quả của ADD,XOR,SUB,SLT căn cứ vào 2bit điều
khiển của ALUControl để xác định dữ liệu nào được đưa ra port ngõ ra.
• Sử dụng bộ mux 4-1 32bit