Thanh ghi dịch (shift register) là một nhóm các flip-flop được sử dụng để lưu trữ nhiều bit dữ liệu. Các bit được lưu trữ trong các thanh ghi này có thể được di chuyển bên trong thanh ghi và vào/ra khỏi thanh ghi bằng cách áp dụng các xung nhịp. Một thanh ghi dịch n-bit có thể được hình thành bằng cách kết nối n flip-flop, trong đó mỗi flip-flop lưu trữ một bit dữ liệu. Bộ đếm dịch vị (Shift Register As Counter) là một loại thanh ghi dịch đặc biệt, trong đó đầu ra được kết nối trở lại đầu vào để tạo ra các chuỗi cụ thể.
Có hai loại bộ đếm dịch vị chính: bộ đếm vòng (Ring Counter) và bộ đếm Johnson (Johnson Counter).
Bộ đếm vòng về cơ bản là một bộ đếm dịch vị trong đó đầu ra của flip-flop đầu tiên được kết nối với flip-flop tiếp theo, v.v. và đầu ra của flip-flop cuối cùng được đưa trở lại đầu vào của flip-flop đầu tiên, do đó có tên là bộ đếm vòng. Mô hình dữ liệu trong thanh ghi dịch sẽ lưu thông miễn là các xung nhịp được áp dụng.
Một bộ đếm vòng thường được sử dụng vì nó tự giải mã. Không cần mạch giải mã bổ sung để xác định trạng thái của bộ đếm.
Bộ đếm Johnson về cơ bản là một bộ đếm dịch vị, trong đó đầu ra của flip-flop đầu tiên được kết nối với flip-flop tiếp theo, v.v. và đầu ra đảo ngược của flip-flop cuối cùng được đưa trở lại đầu vào của flip-flop đầu tiên. Chúng còn được gọi là bộ đếm vòng xoắn.
Một bộ đếm Johnson n tầng tạo ra một chuỗi đếm gồm 2n trạng thái khác nhau, do đó còn được gọi là bộ đếm mod-2n. Ưu điểm chính của bộ đếm Johnson là nó chỉ cần n số flip-flop so với bộ đếm vòng để lưu thông một dữ liệu nhất định để tạo ra một chuỗi gồm 2n trạng thái.
Ngoài bộ đếm vòng và bộ đếm Johnson, còn có các loại bộ đếm dịch vị khác, chẳng hạn như bộ đếm tuyến tính phản hồi dịch chuyển (LFSR).
Bộ đếm dịch vị được sử dụng trong nhiều ứng dụng, bao gồm tạo chuỗi, đếm và chia tần số. Chúng cũng được sử dụng trong các hệ thống truyền thông để tạo ra các mẫu đồng bộ hóa. Việc hiểu rõ về nguyên lý hoạt động của shift register as counter rất quan trọng trong việc thiết kế và phân tích các mạch kỹ thuật số.