CHƯƠNG 1 CÁC THIẾT BỊ LƯU TRỮ 1. Giới thiệu Sự khác biệt giữa mạch tuần tự và mạch tổ hợp chính là ngõ ra của mạch tuần tự phụ thuộc vào cả tổ hợp ngõ vào hiện tại và tổ hợp ngõ vào trong quá khứ. Để có thể sử dụng được các tổ hợp ngõ vào trong quá khứ thì mạch tuần tự phải có khả năng lưu trữ thông tin, điều này dẫn đến sự khác nhau về cấu trúc giữa mạch tuần tự và mạch tổ hợp, đó là mạch tuần tự có thêm các thiết bị lưu trữ như trong Hình 1. Thiết bị lưu trữ IN Q Ngõ ra CLK Luận lý tổ hợp Ngõ vào Hình 1.1: Cấu trúc mạch tuần tự Trong đó, khối luận lý tổ hợp có chức năng xử lý thông tin tương tự như trong các mạch tổ hợp.
Còn lại, việc lưu trữ sẽ được khối thiết bị lưu trữ đảm trách và ngõ vào CLK sẽ quyết định việc lưu trữ có xảy ra hay không. Trong Giáo trình Thiết kế Luận lý Số đã trình bày các thiết bị lưu trữ bao gồm: Latch, flipflop, thanh ghi và bộ đếm. Tiếp nối trong giáo trình này, chúng ta sẽ cùng tìm hiểu thanh ghi và bộ đếm theo một hướng tiếp cận khác và tìm hiểu thêm các thiết bị lưu trữ mới, bao gồm: Register Files (tập thanh ghi), RAM (Random Access Memory - bộ nhớ truy cập ngẫu nhiên), ngăn xếp (stack) và hàng đợi (queue). Thanh ghi Về bản chất, thanh ghi chỉ là một mở rộng luận lý về khả năng lưu trữ của flipflop vì nó được cấu thành bởi các flipflop nối chung 1 CLK với nhau và cộng thêm một số cổng luận lý cơ bản để xử lý thông tin.
Các flipflop được sử dụng trong thanh ghi có thể là bất kỳ flipflop nào, nhưng phổ biến nhất vẫn là D flipflop.2 và Hình 1.3 lần lượt trình bày ký hiệu và cấu trúc một thanh ghi 4 bit sử dụng D flipflop. 4 I O 4 REG CLK Hình 1.2: Ký hiệu thanh ghi 4 bit D Q I3 O3 CLK I2 D Q O2 CLK I1 D Q O1 CLK I0 D Q O0 CLK CLK Hình 1.3: Cấu trúc thanh ghi 4 bit Ký hiệu và giao tiếp của một thanh ghi khá đơn giản, bao gồm: • Ngõ vào I được sử dụng để nhận dữ liệu từ bên ngoài, về tổng quát, I có thể có độ rộng n bit. 2 • Ngõ ra O được sử dụng để xuất dữ liệu ra bên ngoài, tương tự như ngõ vào I, ngõ ra O có thể có độ rộng n bit và đúng bằng độ rộng bit của ngõ vào I. • Ngõ vào CLK (tích cực theo cạnh) là ngõ vào xung clock được sử dụng để cập nhật giá trị ở ngõ ra.
Vì chúng ta đang sử dụng D flipflop nên O = I khi CLK tích cực. Cũng có thể bổ sung tính năng thiết lập giá trị ban đầu cho thanh ghi độc lập với clock bằng cách bổ sung các tín hiệu bất đồng bộ PRE và CLR như trong Hình 1. CLR PRE I3 D PRE Q O3 CLK CLR I2 D PRE Q O2 CLK CLR I1 D PRE Q O1 CLK CLR I0 D PRE Q O0 CLK CLK CLR Hình 1.4: Cấu trúc thanh ghi với các ngõ vào bất đồng bộ 3 Khi ngõ vào bất đồng bộ CLR tích cực (CLR = 0) thì ngõ ra của tất cả các D flipflop sẽ được xóa về 0. Khi ngõ vào bất đồng bộ PRE tích cực (PRE = 0) thì ngõ ra của tất cả các D flipflop sẽ được thiết lập lên 1.
Lưu ý là các ngõ vào bất đồng bộ CLR và PRE độc lập với ngõ vào CLK và có độ ưu tiên cao hơn CLK, vì thế nếu CLK và một trong các ngõ vào bất đồng bộ cùng tích cực thì mạch sẽ hoạt động theo ngõ vào bất đồng bộ. Hoạt động của thanh ghi với các ngõ vào bất đồng bộ được tóm tắt trong Bảng 1.1: Bảng hoạt động của thanh ghi với các ngõ vào bất đồng bộ CLR PRE CLK Oi Hoạt động 0 0 X X Không dự đoán được 0 1 X 0 Xóa 1 0 X 1 Thiết lập 1 1 ↑ Ii Lưu Lưu ý là trường hợp CLR và PRE cùng bằng 0 thì ngõ ra của các D flipflop không thể dự đoán được, tùy thuộc vào đặc tính của nhà sản xuất mà ngõ ra có thể bằng 0 hoặc 1. Chúng ta sẽ ký hiệu trong Hình 1.5 để biểu diễn thay cho thanh ghi trong Hình 1. 4 I PRE O 4 REG CLK CLR Hình 1.5: Ký hiệu thanh ghi với các ngõ vào bất đồng bộ Thanh ghi sẽ tự động cập nhật giá trị mỗi khi ngõ vào CLK tích cực.
Tuy nhiên, trong một số ứng dụng thì đòi hỏi dữ liệu cần phải được lưu trữ trong một khoảng thời gian nào đó trước khi được cập 4 nhật lại. Vì thế có thể bổ sung thêm một tín hiệu nạp hoặc cho phép để cho phép thanh ghi được cập nhật giá trị mỗi khi ngõ vào CLK tích cực hay không như trong Hình 1. Thanh ghi trong Hình 1.6 còn được gọi là thanh ghi nạp song song. Bằng cách bổ sung các bộ chọn, chúng ta có thể điều khiển việc thanh ghi được cập nhật giá trị mới (Nạp = 1) hoặc thanh ghi phải giữ nguyên giá trị cũ (Nạp = 0) mỗi khi ngõ vào CLK tích cực.
Hoạt động của thanh ghi với ngõ vào nạp trong Hình 1.6 được tóm tắt trong Bảng 1. Nạp 0 D Q O3 I3 1 CLK 0 D Q O2 I2 1 CLK 0 D Q O1 I1 1 CLK 0 D Q O0 I0 1 CLK CLK Hình 1.6: Cấu trúc thanh ghi với ngõ vào nạp Bảng 1.2: Bảng hoạt động của thanh ghi với ngõ vào nạp Nạp O Hoạt động 0 Q Không đổi 1 I Nạp dữ liệu 5 Chúng ta sẽ sử dụng ký hiệu trong Hình 1.7 để biểu diễn thanh ghi với ngõ vào nạp trong Hình 1. 4 I O 4 Nạp REG CLK Hình 1.7: Ký hiệu thanh ghi với ngõ vào nạp Ngoài ra, có thể kết hợp các ngõ vào bất đồng bộ và ngõ vào nạp cho thanh ghi để có thể có một thanh ghi đa năng hơn như ký hiệu trong Hình 1. Tùy thuộc vào ứng dụng mà có thể sử dụng thanh ghi với chức năng mong muốn như trong Hình 1.2 hoặc Hình 1.5 hoặc Hình 1.7 hoặc thậm chí là Hình 1.
4 I PRE O 4 Nạp REG CLK CLR Hình 1.8: Ký hiệu thanh ghi với ngõ vào bất đồng bộ và ngõ vào nạp 1. Thanh ghi dịch Trong nội dung 1.2 chúng ta đã tìm hiểu cách bổ sung các bộ chọn phía trước các D flipflop để điều khiển việc nạp giá trị song song cho thanh ghi. Bằng một số điều chỉnh nhỏ, chúng ta cũng có thể sử dụng các bộ chọn để điều khiển việc dịch dữ liệu được lưu trữ trong thanh ghi. Thanh ghi có chức năng này được gọi là thanh ghi dịch.9 và Hình 1.10 lần lượt trình bày cấu tạo và ký hiệu của một thanh ghi dịch phải 4 bit.
6 O3 O2 O1 O0 Dịch 0 0 0 0 D Q D Q D Q D Q IL 1 1 1 1 CLK CLK CLK CLK CLK Hình 1.9: Cấu tạo thanh ghi dịch phải 4 bit O 4 Dịch SHIFT REG CLK Hình 1.10: Ký hiệu thanh ghi dịch phải 4 bit Chức năng của thanh ghi dịch trong Hình 1.9 được trình bày trong Bảng 1.3: Bảng hoạt động của thanh ghi dịch phải 4 bit Dịch O[3:0] Hoạt động 0 Q3Q2Q1Q0 Không đổi 1 ILQ3Q2Q1 Dịch phải 1 bit Ngoài ra, có thể bổ sung tính năng dịch trái và nạp giá trị song song cho thanh ghi dịch bằng cách sử dụng các bộ chọn 4:1 như trong Hình 1.4 lần lượt trình bày ký hiệu và hoạt động của thanh ghi dịch này. I3 I2 I1 I0 IR S0 S1 0 0 0 0 1 D Q 1 D Q 1 D Q 1 D Q 2 2 2 2 IL 3 3 3 3 CLK CLK CLK CLK CLK O3 O2 O1 O0 Hình 1.11: Cấu tạo thanh ghi dịch đa năng 4 bit 7 4 I IL IR O S1 S0 SRwPL CLK Hình 1.12: Ký hiệu thanh ghi dịch đa năng 4 bit Bảng 1.4: Bảng hoạt động của thanh ghi dịch đa năng S1S0 O[3:0] Hoạt động 00 Q3Q2Q1Q0 Không đổi 01 I3I2I1I0 Nạp dữ liệu song song 10 Q2Q1Q0IR Dịch trái 11 ILQ3Q2Q1 Dịch phải Thanh ghi dịch đa năng có thể được sử dụng để chuyển một luồng dữ liệu nối tiếp thành một luồng dữ liệu song song và chuyển từ một luồng dữ liệu song song thành một luồng dữ liệu nối tiếp với các tùy chọn ngõ ra là bit có trọng số lớn nhất (MSB – Most Significant Bit) hoặc bit có trọng số nhỏ nhất (LSB – Least Significant Bit). Vì thế, những thanh ghi này thường được sử dụng trong các mạch truyền thông nối tiếp. Bộ đếm Bộ đếm là một loại thanh ghi đặc biệt có chức năng tự động chuyển giá trị lưu trữ theo một thứ tự đã được xác định trước mỗi khi ngõ vào CLK tích cực.13 và Hình 1.14 lần lượt trình bày ký hiệu và cấu tạo của một bộ đếm lên 4 bit.
O 4 Bộ đếm CLK Hình 1.13: Ký hiệu bộ đếm lên 4 bit 8 4 I O 4 Bộ tăng REG CLK Count CLK Hình 1.14: Cấu tạo bộ đếm lên 4 bit Phụ thuộc vào bộ tăng mà chúng ta sẽ có chuỗi giá trị đếm khác nhau, ví dụ nếu bộ tăng là bộ tăng 2 thì chúng ta sẽ có chuỗi giá trị đếm là 0, 2, 4, … 14, 0. Bộ đếm chỉ thay đổi giá trị đếm mỗi khi ngõ vào CLK tích cực. Ngoài ra có thể bổ sung thêm tính năng đếm xuống cho bộ đếm bằng cách bổ sung thêm một bộ giảm và một bộ chọn để lựa chọn tính năng đếm lên hay đếm xuống như Hình 1. D 4 I O 4 Bộ tăng REG 0 CLK CLK 1 Bộ giảm Count Hình 1.15: Cấu tạo bộ đếm lên/xuống 4 bit Hình 1.5 lần lượt trình bày ký hiệu và chức năng của bộ đếm lên/xuống 4 bit trong Hình 1.
O 4 D Bộ đếm lên/xuống CLK Hình1.16: Ký hiệu bộ đếm lên/xuống 4 bit 9 Bảng 1.5: Bảng hoạt động của bộ đếm lên/xuống 4 bit D Hoạt động 0 Đếm lên 1 Đếm xuống Để kiểm soát việc cho phép bộ đếm có được đếm hay không và thêm khả năng nạp giá trị ban đầu thì có thể bổ sung vào bộ đếm 2 bộ chọn như Hình 1. Trong đó E là tín hiệu cho phép đếm (E = 1) và Nạp là tín hiệu cho phép nạp giá trị song song. Nạp D E 0 4 I O Bộ tăng 4 A 4 1 REG 0 0 1 CLK CLK 1 Bộ giảm Count Hình 1.