DIV nguồn (Unsigned Divide)
G A8 A7 A6 A5 A4 A3 A2 A1 A0 O0 O1 O2 O3 O4 O5 O6 O7 00010110000111
4.3.2. Giải mã địa chỉ cho thiết vị vào/ra
Việc giải mã địa chỉ cho thiết bị vào/ra (I/O) cũng gần giống như giải mã địa chỉ cho bộ nhớ. ở đây, nhấn mạnh việc giải mã địa chỉ cho các cổng. Thơng thường các cổng có địa chỉ là 8 bits (A7 – A0), trong một số hệ vi xử lý khác (như máy IBM PC hoặc các máy tính tương thích IBM PC) thì các cổng có địa chỉ 16 bits (A15 – A0, nhưng vì với 16 bits => có 64K cổng mà thực tế ít có máy sử dụng hết khơng gian này => thường chỉ dùng 12 bits). Tuỳ theo độ dài toán hạng trong lệnh là 8 hay 16 bits mà ta có 1 cổng 8 bits hay 2 cổng 8 bits có địa chỉ liền nhau (tại mỗi địa chỉ cổng là một thanh ghi đệm/chốt 8 bit. Điều này không cịn đúng đối với các hệ vi xử lý có bộ vi xử lý 32 bits hoặc cao hơn, mỗi cổng có thể có số bits cực đại bằng số bits của bus dữ liệu). để tạo nên word có độ dài tương ứng. Trong thực tế ít có hệ vi xử lý nào sử dụng hết 256 địa chỉ cổng I/O khác nhau nên để đơn giản ta
1MB 00000h FFFFFh 64K 0000h FFFFh 64K 0000h FFFFh I/O Addr Memory 00000h FFFFFh
chỉ xét các bộ giải mã địa chỉ 8 bits (A7 – A0) và các mạch giải mã thơng dụng sẵn có (như 74LS138 chẳng hạn) để tạo ra các xung chọn cho thiết bị ngoại vi.
Các mạch giải mã đơn giản có thể được tạo từ các mạch NAND và một số gates logic phụ như hình vẽ.
Trong trường hợp cần nhiều xung chọn thiết bị ở đầu ra mạch giải mã cho các cổng có địa chỉ liên tiếp, ta có thể sử dụng mạch giải mã có sẵn 74LS138 nhs sau:
Mạch giải mã này có thể giải mã cho 8 cổng vào (ISP) hoặc 8 cổng ra (OSP) tương ứng việc sử dụng tín hiệu điều khiển RD hoặc WR. Trên cơ sở của mạch giải mã này ta cũng có thể phối ghép cả 2 tín hiệu đọc (RD) và ghi (WR) để tạo ra tín hiệu chọn cho việc
đọc/ghi từng cổng vào/ra cụ thể. Ta cũng có thể sử dụng 74LS138 để giải mã cho 4 cổng vào và 4 cổng ra như sau:
Do tín hiệu điều khiển RD và WR là ngược pha nhau nên khi đọc cổng (RD = 0) => C = 0 => A1, A0 chọn ra 1 trong 4 cổng thấp (y0 – y3). Ngược lại khi ghi cổng (WR = 0) => RD = 1 => C = 1 => A1, A0 chọn ra 1 trong 4 cổng cao (y4 – y7).