You are on page 1of 30

Chương 6

MẠCH SỐ TUẦN TỰ

6.1. KHÁI NIỆM CHUNG


Mạch số được chia thành hai nhóm: mạch số tổ hợp (xem chương 5) và mạch số tuần
tự. Mạch số tuần tự còn được gọi là hệ tuần tự hay mạch dãy (Sequential Circuits). Đặc
điểm của mạch tuần tự là trạng thái hiện tại của mạch i) vừa phụ thuộc vào tín hiệu vào
của mạch ở hiện tại, ii) vừa phụ thuộc vào trạng thái trước đó của mạch, nói cách khác
mạch tuần tự có thể ghi nhớ trạng thái. Chính do đặc điểm này, mạch tuần tự được thực
hiện dựa trên phần tử cơ sở là các Flip-Flop.
Mạch tuần tự được chia thành hai loại: mạch tuần tự đồng bộ và mạch tuần tự không
đồng bộ. Trong đa số các trường hợp sử dụng, mạch tuần tự được điều khiển bởi một tín
hiệu xung clock và được gọi là mạch tuần tự đồng bộ. Trong trường hợp mạch tuần tự
không có tín hiệu xung clock thì được gọi là mạch tuần tự không đồng bộ. Mạch tuần tự
đồng bộ dễ dàng thiết kế hơn so với mạch tuần tự không đồng bộ. Trong sách này, chúng
ta sẽ phân tích và thiết kế các mạch tuần tự đồng bộ.
Trong chương này, mô hình máy trạng thái hữu hạn FSM (Finite State Machine) sẽ
được xem xét trước tiên. Máy trạng thái hữu hạn là tên gọi thông dụng khi nói về các
mạch tuần tự có thể được biểu diễn bởi một tập hữu hạn các trạng thái. Các mạch tuần tự
khác như các bộ đếm song song, bộ đếm nối tiếp sẽ được giới thiệu tiếp theo. Các khái
niệm cơ bản về thanh ghi dịch sẽ được đề cập ở cuối chương.

6.2. MÁY TRẠNG THÁI HỮU HẠN

6.2.1. Đại cương

Hình 6.1. Mô hình tổng quát máy trạng thái hữu hạn FSM [1]

121
Hình 6.1 trình bày mô hình tổng quát của máy trạng thái hữu hạn FSM (Finite State
Machine), trong đó: W là (các) tín hiệu vào, Z là (các) tín hiệu ra, Q là trạng thái hiện tại
của máy và xung Clock để điều khiển đồng bộ hoạt động của máy [1]. Máy trạng thái hữu
hạn gồm ba khối chính:
• State Register: Khối Thanh ghi trạng thái gồm các FF được ghép song song với
nhau nhận cùng một tín hiệu xung clock đồng bộ, khối thanh ghi trạng thái xác
định trạng thái hiện tại Q. Máy sẽ chuyển (cập nhật) trạng thái mới tại mỗi chu
kỳ của xung Clock, trạng thái mới được xác định tùy thuộc vào các tín hiệu vào
của khối thanh ghi trạng thái, cũng chính là các đầu vào dữ liệu của các FF tương
ứng được sử dụng.
• Next State Logic: Khối Mạch logic tổ hợp xác định trạng thái kế tiếp. Trạng thái
kế tiếp được xác định dựa vào tín hiệu vào của mạch và trạng thái hiện tại Q.
• Output Logic: Khối Mạch logic tổ hợp xác định (các) tín hiệu ra Z của máy.
Tín hiệu ra Z phụ thuộc vào trạng thái hiện tại Q. Ngoài ta, tùy thuộc vào việc tín hiệu
ra Z có phụ thuộc vào (các) tín hiệu vào W hay không mà máy trạng thái có thể chia làm
hai loại:
• Máy trạng thái loại Moore (Moore FSM): là máy mà trong đó tín hiệu ra Z chỉ
phụ thuộc vào trạng thái hiện tại Q,
• Máy trạng thái loại Mealy (Mealy FSM): là máy mà trong đó tín hiệu ra Z phụ
thuộc vào cả trạng thái hiện tại Q và tín hiệu vào W.
6.2.2. Thiết kế máy trạng thái
Chúng ta xem xét quá trình thiết kế máy trạng thái hữu hạn thông qua một ví dụ đơn
giản sau đây, với già thiết mô hình máy trạng thái loại Moore được sử dụng. Máy trạng
thái loại Moore có đặc điểm là tín hiệu ra chỉ phụ thuộc duy nhất vào trạng thái hiện tại
của máy.

w z
Sequence
Ck Detector

Ck t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w 0 0 1 0 1 1 1 0 1 1 0
z 0 0 0 0 0 1 1 0 0 1 0

Hình 6.2. Sơ đồ khối và hoạt động của mạch phát hiện chuỗi bit

122
Hình 6.3. Giản đồ trạng thái mạch Sequence Detector [1]

Bài toán: Thiết kế mạch phát hiện chuỗi bit (Sequence Detector) có tín hiệu vào w,
tín hiệu ra z, xung clock đồng bộ Ck tích cực theo sườn lên. Mạch hoạt động như sau: tín
hiệu ra z=1 nếu tại ngõ vào w xuất hiện 2 bit 1 liên tiếp nhau, ngược lại tín hiệu ra z=0.
Sơ đồ khối mô tả mạch phát hiện chuỗi bit được cho trên hình 6.2 [1].
Quá trình thiết kế máy trạng thái hữu hạn thường được thực hiện theo các bước sau:
1) Biểu diễn giản đồ trạng thái của máy,
2) Tối thiểu hóa số trạng thái,
3) Mã hóa trạng thái,
4) Lựa chọn FF sử dụng,
5) Thực hiện mạch logic tổ hợp,
6) Phân tích tín hiệu theo thời gian

Bước 1. Biểu diễn giản đồ trạng thái của máy


Giản đồ trạng thái của mạch phát hiện chuỗi bit được trình bày trên hình 6.3. Giả
thiết xây dựng mô hình máy trạng thái loại Moore, trong đó tín hiệu ra z chỉ phụ thuộc
vào trạng thái hiện tại của máy mà không phụ thuộc vào tín hiệu vào. Mạch phát hiện
chuỗi bit có thể được biểu diễn bằng 3 trạng thái A, B, C như hình 6.3. Mỗi trạng thái
được biểu diễn bằng một hình elip (hoặc hình tròn), với A là trạng thái ban đầu của mạch
khi mạch được cấp nguồn hoặc thực hiện việc reset mạch, B là trạng thái tương ứng với

123
sự xuất hiện của bit 1 ở đầu vào w khi trước đó là (các) bit 0, và C là trạng thái tương ứng
với sự xuất hiện của 2 bit 1 liên tiếp. Việc chuyển giữa các trạng thái tùy thuộc vào tín
hiệu vào w, và dưới sự điều khiển đồng bộ của tín hiệu xung clock Ck.
Vì là mô hình máy trạng thái loại Moore nên tín hiệu ra z chỉ phụ thuộc duy nhất vào
trạng thái hiện tại, do vậy z được biểu diễn nằm bên trong elip biểu diễn trạng thái. Ở
trạng thái A và B thì z=0, và ở trạng thái C thì z=1.
Bước 2. Tối thiểu hóa số trạng thái
Trong trường hợp tổng quát, việc tối thiểu hóa số lượng trạng thái là cần thiết, giúp
loại bỏ những trạng thái dư thừa hay tương đương nhau, và vì vậy việc thực hiện mạch
điện tử sẽ đơn giản hơn. Đối với mạch và giản đồ trạng thái đã cho ở các hình 6.2 và 6.3
có thể nhận thấy số lượng trạng thái đã tối thiểu nên có thể bỏ qua bước này.
Bước 3. Mã hóa trạng thái
Tiếp theo, cần thực hiện mã hóa trạng thái, chuyển biểu diễn ở dạng (trừu tượng) quen
thuộc với con người của các trạng thái A, B, C thành các tổ hợp mã nhị phân để có thể
thực hiện bằng mạch điện tử số. Có nhiều phương pháp khác nhau để mã hóa trạng thái
của FSM, ví dụ: mã hóa thông thường (straight-forward) dùng mã 8421, mã hóa
minimum-bit-change dùng mã Gray, hay mã hóa one-hot/one-cold. Mỗi phương pháp mã
hóa khác nhau sẽ cho độ phức tạp của mạch thực hiện khác nhau.
Trong ví dụ này để đơn giản chúng ta sử dụng cách mã hóa thông thường (straight-
forward) với các tổ hợp mã nhị phân 2 bit: gán trạng thái A tương ứng “00”, trạng thái B
tương ứng “01” và trạng thái C tương ứng “10”.
Bước 4. Lựa chọn FF sử dụng
Cả 4 loại FF (T, D, SR, JK) đều có thể sử dụng để thiết kế FSM. Lựa chọn sử dụng FF
khác nhau sẽ dẫn đến mạch tổ hợp được thiết kế có độ phức tạp khác nhau. Trong ví dụ
này, để đơn giản chúng ta lựa chọn sử dụng DFF. Với cách mã hóa straight-forward đã
lựa chọn ở bước 3, chúng ta cần 2 DFF với các ngõ ra Q2Q1 để mã hóa cho 3 trạng thái
A, B, C. Bảng đầu vào kích của DFF sẽ được sử dụng để thiết kế mạch logic tổ hợp trong
bước tiếp theo.

Bảng 6.1. Bảng đầu vào kích DFF

124
Hình 6.4. Sơ đồ khối mạch phát hiện chuỗi bit (Sequence Detector)

Bước 5. Thực hiện mạch logic tổ hợp


Với việc lựa chọn sử dụng hai DFF, sơ đồ khối mạch cần thiết kế được cho như trên
hình 6.4. Tiếp theo cần tìm phương trình logic của hai khối mạch tổ hợp xác định trạng
thái kế tiếp và tín hiệu ra. Từ giản đồ chuyển trạng thái của máy ở hình 6.1, lập bảng trạng
thái biểu diễn sơ đồ chuyển trạng thái của máy như sau (Bảng 6.2):
Bảng 6.2.
Tín hiệu vào w Trạng thái Trạng thái Tín hiệu ra z
hiện tại tiếp theo
0 A A 0
0 B A 0
0 C A 1
1 A B 0
1 B C 0
1 C C 1
Thay thế các trạng thái A, B, C với các từ mã tương ứng đã lựa chọn ở bước 3, đồng
thời mở rộng bảng trạng thái với các tín hiệu đầu vào kích (tín hiệu vào) của các FF tương
ứng, ta có được bảng trạng thái mô tả hoạt động của máy như ở bảng 6.3.

Trong ví dụ này, chúng ta sử dụng 2 DFF với các ngõ ra Q2 và Q1 để lưu giữ trạng thái
của mạch. Tổ hợp “11” không được sử dụng để gán cho bất kỳ trạng thái nào nên các giá
trị trạng thái tiếp theo, giá trị đầu vào kích và giá trị tín hiệu ra z tương ứng sẽ được gán

125
là “X” (tùy định). Giá trị của các cột D2 và D1 được hoàn thành dựa vào bảng đầu vào
kích của DFF.

Bảng 6.3.
Tín hiệu Trạng thái Trạng thái tiếp Đầu vào kích Tín hiệu
vào hiện tại theo ra
w Q2 n Q1 n Q2 n+1
Q1n+1 D2 D1 z
A 0 0 0 0 0 0 0 0
B 0 0 1 0 0 0 0 0
C 0 1 0 0 0 0 0 1
0 1 1 X X X X X
A 1 0 0 0 1 0 1 0
B 1 0 1 1 0 1 0 0
C 1 1 0 1 0 1 0 1
1 1 1 X X X X X

Tiếp theo, chúng ta tìm các phương trình của các mạch logic tổ hợp xác định trạng thái
kế tiếp và mạch logic tổ hợp xác định tín hiệu ra:
D1 = f1 (w, Q2n, Q2n)
D2 = f2 (w, Q2n, Q2n)
z = g (Q2n, Q2n)

D2 wQ2 D1 wQ2 z Q2
00 01 11 10
Q1 Q1 00 01 11 10 Q1 0 1
0 0 0 1 0 0 0 0 0 1 0 0 1
1 0 X X 1 1 0 X X 0 1 0 X

Lập bảng Karnaugh và tối thiểu hóa để tìm các phương trình của D1, D2 và z, ta có:
̅̅̅̅1 ̅̅̅
D1 = wQ Q ̅2 = w(̅̅̅̅̅̅̅̅̅̅̅
Q1 + Q 2)
D2 = wQ1 +wQ 2 = w(Q1 + Q 2 )
z = Q2
Bước 6. Phân tích tín hiệu theo thời gian
Sơ đồ logic thực hiện mạch phát hiện chuỗi bit và dạng sóng của mạch khi thực hiện
mô phỏng bằng phần mềm được cho trên hình 6.5 và 6.6.

126
Hình 6.5. Sơ đồ mạch phát hiện chuỗi bit

Hình 6.6. Phân tích dạng sóng mạch phát hiện chuỗi bit

6.3. BỘ ĐẾM

6.3.1. Đại cương


Bộ đếm được xây dựng trên cơ sở các FF ghép với nhau để hoạt động theo một bảng
trạng thái (qui luật đếm) cho trước. Bộ đếm thường được sử dụng để đếm số chu trình
thực hiện phép tính, để tạo ra một dãy địa chỉ của lệnh điều khiển, và trong nhiều ứng
dụng khác.
Có thể phân loại bộ đếm theo nhiều cách:
- Phân loại theo cơ sở các hệ đếm: bộ đếm nhị phân (số lượng trạng thái là 2n), bộ
đếm thập phân (số lượng trạng thái khác 2n).

127
- Phân loại theo hướng đếm gồm: Mạch đếm lên (đếm tiến hay đếm thuận), mạch
đếm xuống (đếm lùi hay đếm nghịch), mạch đếm thuận nghịch (vừa đếm lên vừa đếm
xuống tùy thuộc tín hiệu điều khiển), mạch đếm vòng.
- Phân loại mạch đếm theo cách ghép các FF: bộ đếm nối tiếp, bộ đếm song song,
bộ đếm hỗn hợp.
Mặc dù có rất nhiều cách phân loại nhưng chỉ có ba loại bộ đếm chính: Bộ đếm nối
tiếp (đếm không đồng bộ), Bộ đếm song song (đếm đồng bộ), Bộ đếm hỗn hợp.
6.3.2. Bộ đếm nối tiếp
a. Đặc điểm và cách thiết kế
Bộ đếm nối tiếp là bộ đếm trong đó các TFF hoặc JKFF thực hiện chức năng của mạch
chia tần số (với ngõ vào T=1 hoặc J=K=1), theo đó các FF được ghép nối tiếp với nhau
sao cho ngõ ra của FF đứng trước trở thành ngõ vào xung clock cho FF đứng sau. Bộ đếm
nối tiếp chỉ hoạt động theo một loại mã duy nhất là mã 8421. Do đặc điểm về cấu trúc
mạch, các ngõ ra của bộ đếm nối tiếp thay đổi trạng thái không đồng thời với tín hiệu
xung clock (không nhận sự điều khiển của cùng một tín hiệu xung clock Ck), do đó mạch
đếm nối tiếp còn gọi là mạch đếm không đồng bộ.
Bộ đếm nối tiếp có thể thực hiện các chức năng đếm sau đây:
- Đếm lên.
- Đếm xuống.
- Đếm lên /xuống (đếm nối tiếp thuận nghịch).
- Đếm Modulo M.
Việc ghép nối các FF để thực hiện quy luật đếm nối tiếp phụ thuộc vào hai yếu tố: 1)
tín hiệu xung clock Ck và 2) hướng đếm, và tuân theo quy luật trong bảng sau:

Bảng 6.4. Cách ghép các FF thực hiện bộ đếm nối tiếp
Clock tích cực sườn xuống Clock tích cực sườn lên
Đếm lên
Ck i+1 = Q i Ck i+1 = ̅̅̅
Qi
(Đếm thuận)
Đếm xuống
Ck i+1 = ̅̅̅
Qi Ck i+1 = Q i
(Đếm nghịch)

b. Đếm nối tiếp đếm lên


Xét ví dụ thiết kế bộ đếm nối tiếp, đếm 4, đếm lên, dùng TFF có xung clock Ck tác
động tích cực sườn xuống. Số lượng TFF cần dùng để thực hiện đếm 4 trạng thái: 4 = 22
→ cần dùng 2 TFF.

128
Các trạng thái của bộ đếm lần lượt là: “00” → “01” → “10” → “11” và tuần hoàn theo
quy luật này, với trạng thái ban đầu là “00”. Vì mạch đếm nối tiếp dùng TFF đóng vai trò
như bộ chia tần số nên các ngõ vào T của các FF được nối lên mức logic 1 (T=1). Cách
ghép các TFF tuân theo quy luật: Ck i+1 = Q i nghĩa là ngõ ra không đảo Q i của FF đứng
trước trở thành nguồn xung clock cho FF đứng sau: Ck 2 = Q1 và Ck1 nhận tín hiệu clock
toàn mạch.
Sơ đồ thực hiện bộ đếm được cho trên hình 6.7a. Trong sơ đồ mạch này Clr (Clear) là
ngõ vào xóa của TFF. Ngõ vào Clr tác động tích cực mức thấp, khi Clr = 0 thì các ngõ ra
Q của các FF đều bị xóa về 0 để thiết lập trạng thái ban đầu. Giản đồ thời gian của mạch
được biểu diễn ở hình 6.7b, và hoạt động của mạch được cho trong bảng 6.5 bên dưới.
Bảng 6.5
Xung vào Trạng thái hiện tại Trạng thái kế tiếp
Ck Q2 Q1 Q2 Q1
1 0 0 0 1
2 0 1 1 0
3 1 0 1 1
4 1 1 0 0

Ck
Q1 Q2

1 1
T T

Ck1 Ck2
Ck

Clr
Hình 6.7a

1 2 3 4 5 7 8

Ck

Q1 0 1 0 1 0 1 0
1

Q2 0 0 1 1 0 1 1
0
Hình 6.7b. Giản đồ thời gian mạch hình 6.7a

129
c. Đếm xuống
Tiếp theo, chúng ta xét ví dụ thiết kế bộ đếm nối tiếp thực hiện đếm xuống, số trạng
thái bộ đếm là 4, sử dụng TFF.
Số lượng TFF cần dùng để thực hiện đếm 4 trạng thái là 2 TFF với các ngõ vào T của
các FF được nối lên mức logic 1 (T=1). Đây là bộ đếm có nội dung đếm giảm dần nên
các trạng thái của bộ đếm lần lượt là “00” → “11” → “10” → “01” và tuần hoàn theo quy
luật này, với trạng thái ban đầu là “00”. Bảng 6.6 trình bày trạng thái hoạt động của mạch
đếm xuống.
Bảng 6.6
Xung vào Trạng thái hiện tại Trạng thái kế tiếp
Ck Q2 Q1 Q2 Q1
1 0 0 1 1
2 1 1 1 0
3 1 0 0 1
4 0 1 0 0

Để xác định cách ghép các FF thực hiện quy luật đếm chúng ta xét 2 trường hợp của
tín hiệu xung clock: Ck tác động tích cực sườn xuống và Ck tác động tích cực sườn lên.
Trong trường hợp dùng TFF có Ck tác động tích cực sườn xuống: Cách ghép các TFF
tuân theo quy luật: Ck i+1 = ̅̅̅
Q i nghĩa là ngõ ra đảo ̅̅̅
Q i của FF đứng trước trở thành nguồn
̅̅̅̅
xung clock cho FF đứng sau: Ck 2 = Q1 và Ck1 nhận tín hiệu clock toàn mạch. Sơ đồ
mạch thực hiện và dạng sóng theo thời gian của mạch được cho trên hình 6.8a và 6.8b
tương ứng.
Trong trường hợp dùng TFF có Ck tác động tích cực sườn lên: Cách ghép các TFF
tuân theo quy luật: Ck i+1 = Q i nghĩa là ngõ ra không đảo Q i của FF đứng trước trở thành
nguồn xung clock cho FF đứng sau: Ck 2 = Q1 và Ck1 nhận tín hiệu clock toàn mạch. Sơ
đồ mạch thực hiện và dạng sóng theo thời gian của mạch được cho trên hình 6.9a và 6.9b
tương ứng.

d. Đếm nối tiếp thuận nghịch


Đây là mạch vừa thực hiện chức năng đếm lên, vừa thực hiện chức năng đếm xuống
tùy theo tín hiệu điều khiển. Gọi X là tín hiệu điều khiển chiều đếm và quy ước:
+ Nếu X = 0 thì mạch đếm lên.
+ Nếu X = 1 thì đếm xuống.
Ta xét 2 trường hợp của tín hiệu Ck để xác định quy luật ghép nối các FF:

130
Ck Q1
Q2
1 1
T T
Ck1 Ck2
̅̅̅
Qi
Ck

Clr

Hình 6.8a

1 2 3 4 5 7 8

Ck

Q1 0 1 1 0 1 0
0 1 0

̅̅̅
Qi

Q2 0 1 1 0 0 1 1 0 0

Hình 6.8b. Giản đồ thời gian mạch hình 6.8a

- Xét tín hiệu Ck tác động sườn xuống:


Lúc đó ta có phương trình logic:
Ck i+1 = X.Qi + XQi = X  Qi
- Xét tín hiệu Ck tác động sườn lên:
Lúc đó ta có phương trình logic:
Ck i+1 = X.Qi + X.Qi = X  Qi
Như vậy để thực hiện mạch đếm thuận nghịch cần sử dụng thêm các cổng XOR
hoặc cổng XNOR với tín hiệu điều khiển X và tín hiệu xung clock là các đầu vào của
cổng, tùy thuộc vào đặc điểm tác động tích cực của xung clock.

131
Ck
Q1
Q2
1 1
T T
Ck2
Ck1
Ck

Clr

Hình 6.9a
1 2 3 4 5 7 8

Ck

Q1 0 1 0 1 0 1 0 1

Q2 0 1 1 0 0 1 1 0

Hình 6.9b. Giản đồ thời gian mạch hình 6.9a

e. Đếm modulo M
Đây là bộ đếm nối tiếp, theo mã 8421, tuy nhiên có dung lượng đếm khác 2n.
Ví dụ: Xét mạch đếm 5, đếm lên, đếm nối tiếp dùng TFF có xung clock tác động tích
cực tại sườn xuống.
Số lượng TFF cần dùng: vì 22 = 4 < 5 < 8 = 23  cần dùng 3 TFF, bộ đếm này sẽ có
3 đầu ra. Bảng trạng thái hoạt động của mạch ở bảng 6.7.
Bảng 6.7. Bảng trạng thái mạch đếm 5, đếm modulo
Xung vào Trạng thái hiện tại Trạng thái kế tiếp
Ck Q3 Q2 Q1 Q3 Q2 Q1
1 0 0 0 0 0 1
2 0 0 1 0 1 0
3 0 1 0 0 1 1
4 0 1 1 1 0 0
5 1 0 0 1/0 0 1/0

132
Q1 Q2 Q3

1 1 1
T T T
Ck1 Ck2 Ck3
Ck

Clr
Hình 6.10. Mạch đếm nối tiếp, đếm 5, đếm lên (đếm modulo)

1 2 3 4 5 6 7 8 9 10
Ck

0 1 0 1 0 0 1 0 1 0
Q1

0 0 1 1 0 0 0 1 1 0
Q2
0 0 0 0 1 0 0 0 0 1
Q3

Hình 6.11. Giản đồ thời gian mạch đếm 5, đếm lên (đếm modulo)

Đối với mạch đếm nối tiếp, nếu dùng 3 FF mạch có thể đếm được 8 trạng thái phân
biệt “000” → “111” tương ứng các số thập phân từ 0→7, và đếm tuần hoàn theo đúng
chu kỳ này. Do đó, để sử dụng mạch đếm nối tiếp thực hiện chức năng đếm 5, đếm lên,
thì sau xung Ck thứ 5 ta tìm cách đưa tổ hợp “101” về “000”, có nghĩa là mạch thực hiện
việc đếm lại từ tổ hợp ban đầu. Như vậy, bộ đếm sẽ đếm từ “000” → “100”, khi chuyển
sang “101” thì được điều khiển để quay về trạng thái ban đầu “000”, nói cách khác đã
đếm được 5 trạng thái phân biệt.
Để xóa bộ đếm về “000” tiến hành phân tích như sau. Do tổ hợp “101” có 2 ngõ ra Q1,
Q3 đồng thời bằng 1 (khác với các tổ hợp trước đó) nên để xóa bộ đếm về 000:
- Đối với FF có ngõ vào Clr tác động mức 0 thì ta dùng cổng NAND 2 ngõ vào.
- Đối với FF có ngõ vào Clr tác động mức 1 thì ta dùng cổng AND có 2 ngõ vào.
Như vậy sơ đồ mạch đếm 5 là sơ đồ cải tiến từ mạch đếm 8 bằng cách mắc thêm phần
tử cổng NAND (hoặc cổng AND) có hai ngõ vào (tùy thuộc vào chân Clr tác động mức
logic 0 hay mức logic 1) được nối đến ngõ ra Q1 và Q3, và ngõ ra của cổng NAND (hoặc
AND) sẽ được nối đến ngõ vào Clr của bộ đếm (cũng chính là ngõ vào Clr của các FF).

133
Trong trường hợp Clr tác động mức thấp sơ đồ mạch thực hiện đếm modulo 5 như
trên hình 6.10 và giản đồ dạng sóng ngõ ra bộ đếm theo thời gian được cho trên hình 6.11.

Thiết lập trạng thái ban đầu cho bộ đếm (mạch reset bộ đếm):
Do trạng thái của ngõ ra là không biết trước nên để mạch
có thể đếm từ trạng thái ban đầu là 000 ta phải dùng thêm mạch
xóa tự động ban đầu để xóa bộ đếm về 0 (còn gọi là mạch
RESET ban đầu). Phương pháp thực hiện là dùng hai phần tử
thụ động R và C.
Trên hình 6.12 là mạch Reset tác động tích cực mức 0.
Mạch hoạt động như sau: Do tính chất điện áp trên tụ C không
đột biến được nên ban đầu mới cấp nguồn Vcc thì VC=0 
ngõ ra Clr=0 và mạch có tác dụng reset để xóa bộ đếm, sau đó
tụ C được nạp điện từ nguồn qua điện trở R với thời hằng nạp Hình 6.12. Mạch
là  = RC nên điện áp trên tụ tăng dần, cho đến khi tụ C nạp Reset mức 0
đầy thì điện áp trên tụ xấp xỉ bằng Vcc  ngõ ra Clr = 1, mạch
không còn tác dụng reset.
Lưu ý rằng với từng loại FF sử dụng, thời gian xóa được cho trước (có trong datasheet
của nhà sản xuất), do đó cần tính toán sao cho thời gian tụ C nạp điện từ giá trị ban đầu
đến giá trị điện áp ngưỡng để xóa FF phải lớn hơn thời gian xóa cho phép thì mạch mới
đảm bảo xóa được các FF.
Các sơ đồ mạch cho phép xóa bộ đếm tự động và xóa bằng tay lần lượt được cho trong
hình 6.13 và 6.14.
Ưu nhược điểm của bộ đếm nối tiếp
Bộ đếm nối tiếp có ưu điểm là đơn giản, dễ thiết kế.

Q1 Q2 Q3

1 1 1
T T T
Ck1 Ck2 Ck3
Ck

Clr

Hình 6.13. Mạch cho phép xóa bộ đếm tự động

134
Q1 Q2 Q3

1 1 1
T T T
VCC Ck1 Ck2 Ck3
Y
Ck
1

R1

Clr
C1
1

Y
1

Y
Hình 6.14. Mạch cho phép xóa bộ đếm tự động và bằng tay

Nhược điểm của bộ đếm nối tiếp là sự tích lũy thời gian trễ, đặc biệt xảy ra khi thực
hiện đếm với dung lượng đếm lớn với số lượng FF sử dụng càng nhiều thì thời gian trễ
tích lũy càng tăng, nhược điểm này hạn chế tần số hoạt động của bộ đếm nối tiếp. Ngoải
ra, do tín hiệu xung clock được chuyển nối tiếp qua các tầng FF nên bộ đếm tạo ra những
trạng thái trung gian không mong muốn. Do đó, để khắc phục các nhược điểm này, người
ta có thể sử dụng bộ đếm song song.
6.3.3. Bộ đếm song song
a. Khái niệm về đếm song song
Bộ đếm song song là loại bộ đếm trong đó các FF mắc song song với nhau và nhận
cùng một tín hiệu xung clock điều khiển, vì vậy các ngõ ra của các FF sẽ chuyển đổi trạng
thái cùng một lúc dưới sự điều khiển của một nguồn tín hiệu clock chung. Bộ đếm song
song do vậy còn được gọi là bộ đếm đồng bộ.
Bộ đếm song song thực chất là một trường hợp đặc biệt của mô hình máy trạng thái
hữu hạn, do vậy thiết kế bộ đếm song song hoàn toàn tuân theo trình tự thiết kế máy trạng
thái hữu hạn. Do vậy, bộ đếm song song có thể được thực hiện bằng loại FF bất kỳ, và có
thể đếm theo qui luật bất kỳ. Đối với bộ đếm song song dù đếm lên hay đếm xuống, hoặc
là đếm Modulo M đều có trình tự thiết kế chung, và sơ đồ mạch thiết kế không phụ thuộc
vào tín hiệu xung Ck.
Sau đây chúng ta lần lượt phân tích các trường hợp thiết kế và thực hiện các bộ đếm
song song đếm lên, đếm song song đếm xuống và đếm song song thuận nghịch.
b. Bộ đếm song song thực hiện đếm lên
Xét ví dụ thiết kế mạch đếm song song (đồng bộ), đếm 5 (Kđ=5), đếm lên, đếm theo
mã (quy luật) 8421, dùng JKFF.

135
Trước hết xác định số JKFF cần dùng: Vì 22 = 4 < 5 < 8 = 23  cần dùng 3 JKFF để
biểu diễn được 5 trạng thái của bộ đếm, các ngõ ra tương ứng là Q1, Q2, Q3.
Giản đồ chuyển trạng thái của bộ đếm được trình bày trên hình 6.15, trong đó trạng
thái ban đầu của bộ đếm là “000” được xác lập ban đầu hay khi mạch được RESET.
Trong bài toán này số lượng trạng thái bộ đếm theo yêu cầu đã là tối thiểu, bộ mã được
lựa chọn sử dụng là mã 8421 và FF được lựa chọn sử dụng là JKFF.

RESET

000 001 010 011 100

Hình 6.15

Bảng 6.8. Bảng đầu vào kích của 4 loại FF


Qn Qn+1 Sn Rn Jn Kn Tn Dn
0 0 0 X 0 X 0 0
0 1 1 0 1 X 1 1
1 0 0 1 X 1 1 0
1 1 X 0 X 0 0 1

Bảng 6.9. Bảng trạng thái bộ đếm


Trạng thái hiện tại Trạng thái kế tiếp Các đầu vào kích
Q3 Q2 Q1 Q3 Q2 Q1 J3 K3 J2 K2 J1 K1
0 0 0 0 0 1 0 X 0 X 1 X
0 0 1 0 1 0 0 X 1 X X 1
0 1 0 0 1 1 0 X X 0 1 X
0 1 1 1 0 0 1 X X 1 X 1
1 0 0 0 0 0 X 1 0 X 0 X

Để thực hiện mạch logic tổ hợp cho trạng thái kế tiếp của bộ đếm chúng ta lập bảng
trạng thái của bộ đếm và mở rộng bảng trạng thái này với các tín hiệu đầu vào kích tương
ứng của các JKFF, lưu ý rằng giá trị tín hiệu đầu vào kích được hoàn thành dựa vào bảng
đầu vào kích của JKFF. Bảng trạng thái bộ đếm sau khi mở rộng được cho trên bảng 6.9.

136
J1 Q3 Q2 K 1 Q3 Q2
Q1 00 01 11 10 Q1 00 01 11 10

0 1 1 X 0 0 X X X X
X
1 X X X X 1 1 1 X X

̅3
J1 = Q K1 = 1 (hoặc K1 = Q1,
hoặc K1 = Q̅ 3)
J2 Q3 Q 2 K 2 Q3 Q2
Q1 00 01 11 10 Q1 00 01 11 10

0 0 X X 0 0 X 0 X X

1 1 X X X 1 X 1 X X

J2 = Q1 K2 = Q1

J3 Q3 Q 2 K3 Q3 Q2
Q1 00 01 11 10 Q1 00 01 11 10
0 0 0 X X 0 X X X 1

1 0 1 X X 1 X X X X

J3 = Q1Q2 K3 = 1 (hoặc K3 = Q1)

Tiếp theo, chúng ta cần tìm phương trình logic của các đầu vào kích là hàm theo các
ngõ vào ở trạng thái hiện tại. Để thực hiện, ta lập bảng Karnaugh để thực hiện tối thiểu
hóa và tìm được các phương trình đầu vào kích như sau:
̅ 3 , K1 = 1 (hoặc K1 = Q1, hoặc K1 = Q
J1 = Q ̅ 3)
J2 = Q1, K2 = Q1
J3 = Q1Q2, K3 = 1 (hoặc K3 = Q1)
Sơ đồ mạch thực hiện bộ đếm lên đếm 5 trạng thái được cho trên hình 6.16. Chúng ta
có nhận xét rằng các tín hiệu K1 và K3 có nhiều cách thực hiện khác nhau, người thiết kế
có thể lựa chọn một cách thực hiện phù hợp nhất để giảm thiểu độ phức tạp của việc thực
hiện mạch trong thực tế.

137
Hình 6.16. Sơ đồ mạch đếm song song, đếm lên 5 trạng thái dùng JKFF

c. Bộ đếm song song thực hiện đếm xuống


Thiết kế mạch đếm song song (đồng bộ), đếm 6 (Kđ=6), đếm xuống theo mã 8421
dùng JKFF.
Trong ví dụ này, trình tự thiết kế được tiến hành tương tự như trong ví dụ trước. Trước
hết xác định số JKFF cần dùng: cần dùng 3 JKFF để biểu diễn được 6 trạng thái của bộ
đếm, các ngõ ra tương ứng là Q1, Q2, Q3.
Giản đồ chuyển trạng thái của bộ đếm được trình bày trên hình 6.17, trong đó trạng
thái ban đầu của bộ đếm là “000”. Số lượng trạng thái bộ đếm theo yêu cầu đã là tối thiểu,
bộ mã được lựa chọn sử dụng là mã 8421 và FF được lựa chọn sử dụng là JKFF.
Để thực hiện mạch logic tổ hợp cho trạng thái kế tiếp của bộ đếm, ta lập bảng trạng
thái của bộ đếm và mở rộng bảng trạng thái này với các tín hiệu đầu vào kích tương ứng
của các JKFF, lưu ý rằng giá trị tín hiệu đầu vào kích được hoàn thành dựa vào bảng đầu
vào kích tương ứng của JKFF.

138
RESET

000 001 010

101 100 011

Hình 6.17. Giản đồ chuyển trạng thái đếm 6, đếm xuống

Bảng 6.10. Bảng trạng thái bộ đếm 6, đếm xuống, dùng JKFF
Trạng thái hiện tại Trạng thái kế tiếp Các đầu vào kích
Q3 Q2 Q1 Q3 Q2 Q1 J3 K3 J 2 K2 J1 K1
0 0 0 1 0 1 1 X 0 X 1 X
0 0 1 0 0 0 0 X 0 X X 1
0 1 0 0 0 1 0 X X 1 1 X
0 1 1 0 1 0 0 X X 0 X 1
1 0 0 0 1 1 X 1 1 X 1 X
1 0 1 1 0 0 X 0 0 X X 1

Tiếp theo, ta lập bảng Karnaugh để thực hiện tối thiểu hóa và tìm được các phương
trình đầu vào kích của các JKFF là hàm theo các ngõ ra ở trạng thái hiện tại, và tìm được
phương trình các đầu vào kích. Sơ đồ mạch thực hiện bộ đếm đồng bộ, đếm xuống 6 trạng
thái được cho trên hình 6.18.

J1 = K1 = 1
̅ 1 Q3, K2 = Q
J2 = Q ̅1
̅ 1Q
J3 = Q ̅ 2 , K3 = Q
̅1

139
Hình 6.18. Sơ đồ mạch đếm song song, đếm xuống 6 trạng thái dùng JKFF

d. Bộ đếm song song thực hiện đếm thuận nghịch


Chúng ta cũng có thể thực hiện bộ đếm song song thuận nghịch, vừa đếm lên và đếm
xuống, việc thiết kế bộ đếm song song đếm thuận nghịch cũng tương tự như các trường
hợp trước.
Xét ví dụ sau: Thiết kế bộ đếm song song thuận nghịch, đếm 4 trạng thái (0, 1, 2, 3)
sử dụng JKFF, với giả thiết X là tín hiệu điều khiển chiều đếm, và quy ước quy luật điều
khiển bộ đếm như sau: X = 0 mạch thực hiện đếm lên và X = 1 mạch thực hiện đếm
xuống.
Trước hết xác định số JKFF: cần dùng 2 JKFF để biểu diễn được 4 trạng thái của bộ
đếm, các ngõ ra tương ứng là Q1, Q2. Giản đồ trạng thái bộ đếm được biểu diễn trên hình
6.19. Từ giản đồ chuyển trạng thái, bảng trạng thái của mạch đếm thuận nghịch được thiết
lập như ở bảng 6.11.

140
RESET

X=0
00 01
X=1
X=0 X=1 X=1 X=0
X=1
11 10
X=0
Hình 6.19

Bảng 6.11. Bảng trạng thái bộ đếm 4, đếm thuận nghịch, dùng JKFF
Chiều Trạng thái Trạng thái
Các đầu vào kích
đếm hiện tại tiếp theo
X Q2 Q1 Q2 Q1 J2 K2 J1 K1
0 0 0 0 1 0 X 1 X
Đếm 0 0 1 1 0 1 X X 1
lên 0 1 0 1 1 X 0 1 X
0 1 1 0 0 X 1 X 1
1 0 0 1 1 1 X 1 X
Đếm 1 0 1 0 0 0 X X 1
xuống 1 1 0 0 1 X 1 1 X
1 1 1 1 0 X 0 X 1
J2 K2
XQ2 XQ2
Q1 00 01 11 10 Q1 00 01 11 10
0 0 X X 1 0 X 0 1 X

1 1 X X 0 1 X 1 0 X

J2 = XQ1 K2 = XQ1

Trong trường hợp đếm thuận nghịch, trạng thái kế tiếp của bộ đếm vừa phụ thuộc vào
trạng thái hiện tại vừa phụ thuộc vào tín hiệu điều khiển chiều đếm X, do đó để thực hiện
mạch logic tổ hợp xác định trạng thái kế tiếp của bộ đếm chúng ta cần tìm phương trình
các đầu vào kích là hàm theo các ngõ ra ở trạng thái hiện tại Q2, Q1 và tín hiệu điều khiển
chiều đếm X.
Từ bảng trạng thái nhận thấy hai cột J1 và K1 có các giá trị logic luôn bằng ‘1’ và ‘X’
(tùy định), do đó dễ dàng suy ra: J1 = K1 = 1. Để tìm phương trình logic của J2 và K2, tiến
hành biểu diễn và rút gọn bằng bảng Karnaugh, kết quả: J2 = K2 = XQ1. Sơ đồ mạch

141
Hình 6.20. Sơ đồ mạch đếm song song thuận nghịch 4 trạng thái dùng JKFF
(X = 0 mạch đếm lên, X = 1 mạch đếm xuống)

thực hiện bộ đếm đồng bộ, đếm thuận nghịch 4 trạng thái dùng JKFF được cho trên hình
6.20.
6.3.4. Giới thiệu một số vi mạch đếm
a) Bộ đếm 7490: là vi mạch đếm không đồng bộ họ TTL có hệ số đếm lớn nhất Kđ =
10, cấu tạo bên trong của vi mạch 7490 bao gồm 2 bộ đếm: bộ đếm 2 và bộ đếm 5. Tùy
thuộc vào việc ghép hai bộ đếm này mà vi mạch thực hiện việc đếm thập phân với hệ số
đếm bất kỳ nhỏ hơn hoặc bằng 10, hoặc thực hiện chia tần số.

Bảng 6.12. Các chế độ hoạt động của vi mạch đếm 7490
Tín hiệu vào Trạng thái ngõ ra
R01 R02 R91 R92 QD QC QB QA
1 1 0 X 0 0 0 0
1 1 X 0 0 0 0 0
X X 1 1 1 0 0 1
X 0 X 0 Đếm
0 X 0 X Đếm
0 X X 0 Đếm
X 0 0 X Đếm

Sơ đồ khối của vi mạch 7490 được trình bày trên hình 6.21. Các chế độ hoạt động của
vi mạch 7490 được mô tả trong bảng 6.12. Vi mạch được cấu tạo gồm một JKFF riêng
biệt A (tương ứng ngõ ra QA) hoạt động trong vai trò của một TFF để chia tần số, và một

142
Hình 6.21. Sơ đồ khối chức năng vi mạch đếm 7490
bộ đếm với hệ số đếm Kđ = 5 được xây dựng trên cơ sở ba JKFF (tương ứng các đầu ra
QB, QC và QD). Hai bộ đếm này được điều khiển độc lập bởi hai tín hiệu xung đồng bộ
tích cực tại sườn xuống là CKA và CKB. Ngoài ra, vi mạch còn có các ngõ vào R0 và R9
để thiết lập trạng thái 0 (“0000”) và trạng thái 9 (“1001”) tại các ngõ ra. Mỗi ngõ vào này
(R0 hay R9) có hai chân vào, hoạt động theo chức năng của hàm AND, tích cực mức 1.
Tiếp theo, chúng ta xem xét một số trường hợp sử dụng vi mạch đếm 7490.
Trường hợp 1. Dùng vi mạch 7490 thực hiện đếm 10.

Hình 6.22. Mạch đếm 10 với vi mạch 7490

143
Trong ví dụ này, ngõ ra QA của bộ đếm 2 giữ vai trò xung nhịp đầu vào cho bộ đếm 5,
với sơ đồ mạch thực hiện như trên hình 6.22 và giản đồ dạng song theo thời gian trên hình
6.23. Bảng trạng thái của mạch được cho ở bảng 6.13.

Bảng 6.13. Bảng trạng thái mạch đếm 10 sử dụng vi mạch 7490
Xung vào Trạng thái bộ đếm
Ck QD QC QB QA
1 0 0 0 0
2 0 0 0 1
3 0 0 1 0
4 0 0 1 1
5 0 1 0 0
6 0 1 0 1
7 0 1 1 0
8 0 1 1 1
9 1 0 0 0
10 1 0 0 1

1 2 3 4 5 6 7 8 9 10
Ck

0 1 0 1 0 1 0 0 0 1
QA

0 0 1 1 0 0 1 1 0 0
QB
0 0 0 0 1 1 1 1 0 0
QC
0 0 0 0 0 0 0 0 1 1
QD
Hình 6.23. Giản đồ dạng sóng thời gian mạch đếm 10 dùng vi mạch 7490

Trường hợp 2. Dùng vi mạch 7490 thực hiện đếm 7


Có thể dùng vi mạch 7490 thực hiện bộ đếm với số trạng thái nhỏ hơn 10. Trong ví dụ
này, để trạng thái bộ đếm thay đổi từ trạng thái 0 đến trạng thái 6 (tương ứng các ngõ ra
CBA là “000” đến “110”) sau đó quay về trạng thái 0 ban đầu chúng ta cần sử dụng ngõ
vào điều khiển R0 để thiết lập trạng thái 0. Việc này được thực hiện như sau: khi bộ đếm
chuyển từ trạng thái 6 sang trạng thái 7 (từ “110” sang “111”) chúng ta sử dụng trạng thái

144
Hình 6.24. Mạch đếm 7 với vi mạch 7490

“111” này để tác động điều khiển ngõ vào R0 xóa bộ đếm về trạng thái 0, suy ra phương
trình logic R0 = QAQBQC. Do ngõ vào R0 chỉ có hai đường vào nên đầu ra QA được nối
với đường vào R01, và hai đầu ra QBQC được nối với đường vào R02 thông qua một cổng
AND. Sơ đồ mạch thực hiện đếm 7 dùng vi mạch 7490 được cho trên hình 6.24.

Trường hợp 3. Dùng vi mạch 7490 thực hiện chia tần số.
Trong ví dụ này, ngõ ra QD của bộ đếm 5 giữ vai trò xung nhịp đầu vào cho bộ đếm 2,
với sơ đồ mạch thực hiện như trên hình 6.25 và giản đồ dạng song theo thời gian trên hình
6.26. Lưu ý trong cách ghép này (5 song song + 2 nối tiếp) được sử dụng để chia tần số.

b) Các vi mạch đếm khác


Các vi mạch đếm 7492 và 7493 có chức năng tương tự như vi mạch 7490. Vi mạch
7492 gồm một bộ đếm 2 và một bộ đếm 6, cho phép đếm tối đa 12 trạng thái. Vi mạch
7493 gồm một bộ đếm 2 và một bộ đếm 8, cho phép đếm tối đa 16 trạng thái.
Các vi mạch 74160, 74161, 74162, 74163 là các vi mạch đếm đồng bộ 4-bit cho phép
định trước trạng thái đếm với các ngõ vào dữ liệu song song.
Các vi mạch 74192 và 74193 là các bộ đếm đồng bộ cho phép đếm thuận nghịch (vừa
đếm lên, vừa đếm xuống), cho phép định trước trạng thái đếm với các ngõ vào dữ liệu
song song. Vi mạch 74192 thực hiện bộ đếm thập phân với 10 trạng thái, trong khi vi
mạch 74193 thực hiện bộ đếm nhị phân 16 trạng thái.

145
Hình 6.25. Mạch chia tần số với vi mạch 7490

1 2 3 4 5 6 7 8 9 10

Ck

0 1 0 1 0 0 1 0 1 0 0
QB

0 0 1 1 0 0 0 1 1 0 0
QC

QD 0 0 0 0 1 0 0 0 0 1 0

0 0 0 0 0 1 1 1 1 1 0
QA
Hình 6.26. Giản đồ thời gian mạch chia tần số sử dụng vi mạch 7490

6.4. THANH GHI DỊCH

6.4.1. Khái niệm


Thanh ghi dịch là phần tử không thể thiếu trong đơn vị xử lý trung tâm (CPU) của các
hệ vi xử lý. Thanh ghi dịch có khả năng ghi nhớ dữ liệu và dịch chuyển dữ liệu sang trái
hoặc sang phải.
Thanh ghi dịch được cấu tạo gồm một dãy phần tử nhớ được mắc liên tiếp với nhau và
một số cổng logic hỗ trợ. Thông thường, thanh ghi dịch được xây dựng trên cơ sở các
146
DFF (hoặc các FF khác thực hiện chức năng của DFF). Một DFF có thể lưu trữ được 1
bit dữ liệu. Muốn ghi (nhớ) và dịch chuyển một từ nhị phân n-bit cần n phần tử nhớ, tương
ứng n DFF.
6.4.2. Phân loại
Phân loại theo hướng dịch chuyển dữ liệu trong thanh ghi: thanh ghi dịch trái, thanh
ghi dịch phải, thanh ghi vừa dịch phải vừa dịch trái, thanh ghi dịch vòng.
Phân loại theo ngõ vào dữ liệu: ngõ vào dữ liệu nối tiếp, ngõ vào dữ liệu song song.
Phân loại theo ngõ ra dữ liệu: ngõ ra dữ liệu nối tiếp, ngõ ra dữ liệu song song.
Như vậy, tùy theo sự kết hợp giữa cách đưa dữ liệu vào và lấy dữ liệu ra có thể có
những loại thanh ghi sau đây:
- Vào nối tiếp, ra song song – SIPO (Serial Input, Parallel Output)
- Vào song song, ra song song – PIPO (Parallel Input, Parallel Output)
- Vào nối tiếp, ra nối tiếp – SISO (Serial Input, Serial Output)
- Vào song song, ra nối tiếp – PISO (Parallel Input, Serial Output)
6.4.3. Thanh ghi dịch phải
Xét cấu tạo và nguyên lý hoạt động của thanh ghi dịch phải 4-bit trên hình 6.27a. Trong
thanh ghi này, ngõ ra Q của DFF đứng bên trái được nối với ngõ vào D của DFF đứng
tiếp theo bên phải, cho phép dữ liệu có thể dịch chuyển sang phải. Các ngõ vào Ck của
các FF nối chung với nhau để điều khiển hoạt động của thanh ghi.
Trong sơ đồ này:
- In: ngõ vào dữ liệu nối tiếp.
- Q1, Q2, Q3, Q4: các ngõ ra song song.
- Out: ngõ ra nối tiếp.
Để giải thích hoạt động dịch chuyển dữ liệu của thanh ghi, ta dựa vào phương trình
trạng thái của DFF: Qn+1 = Dn. Hoạt động dịch phải dữ liệu được minh họa trên hình
6.27b, với giả thiết chuỗi dữ liệu đầu vào là “10111000” và giả thiết ban đầu tất cả các
DFF đều bị xóa. Sau mỗi sườn lên của xung clock Ck, bit dữ liệu ở đầu vào In được nạp
vào thanh ghi đồng thời dữ liệu bên trong thanh ghi được dịch chuyển một vị trí sang bên
phải.

147
a) Thanh ghi dịch phải 4-bit

b) Dịch phải với chuỗi dữ liệu đầu vào “10111000”

Hình 6.27. Thanh ghi dịch phải 4-bit: Sơ đồ mạch và hoạt động [1]

6.4.4. Thanh ghi dịch phải cho phép nạp dữ liệu vào song song
Trong máy tính và các hệ thống số thường có nhu cầu truyền những khối dữ liệu n-bit.
Việc này có thể thực hiện theo phương thức song song hoặc nối tiếp. Trong cách truyền
song song tất cả các bit dữ liệu được truyền đi cùng một lúc sử dụng n đường dây riêng
biệt. Trong cách truyền nối tiếp chỉ cần sử dụng một đường dây đơn để truyền n-bit dữ
liệu một cách tuần tự, mỗi lần một bit trên đường dây, và do vậy việc truyền n-bit nối tiếp
được thực hiện trong n chu kỳ đồng hồ liên tiếp.
Thanh ghi dịch đóng vai trò như một bộ chuyển đổi dữ liệu từ song song sang nối tiếp
và ngược lại trong các mạch truyền nhận dữ liệu nối tiếp, như sau:

148
Hình 6.28. Thanh ghi dịch phải 4-bit, nạp dữ liệu vào song song [1]

+ Để truyền n-bit dữ liệu theo cách nối tiếp, ở phía truyền dữ liệu, đầu tiên n-bit dữ
liệu sẽ được nạp song song vào thanh ghi (trong một chu kỳ đồng hồ). Sau đó trong n chu
kỳ đồng hồ tiếp theo, nội dung thanh ghi lần lượt được dịch ra để truyền nối tiếp.
+ Ở phía nhận dữ liệu, quá trình nhận dữ liệu nối tiếp được thực hiện ngược lại, các
bit được lần lượt dịch vào thanh ghi trong n chu kỳ đồng hồ, sau đó sẽ được đọc ra song
song.
Hình 6.28 trình bày sơ đồ nguyên lý của thanh ghi dịch phải 4-bit cho phép nạp dữ liệu
vào song song. Để thực hiện hoạt động dịch phải hoặc nạp dữ liệu vào song song, ngõ
vào D của mỗi DFF được nối với hai nguồn tín hiệu đầu vào: tín hiệu thứ nhất là ngõ ra
của DFF đứng bên trái và tín hiệu thứ hai là ngõ vào dữ liệu song song từ bên ngoài. Việc
lựa chọn nguồn tín hiệu đầu vào được thực hiện bởi khối mạch chọn kênh từ 2 sang 1
(MUX) gồm tổ hợp các cổng logic OR, AND và NOT. Khối mạch chọn kênh được điều
khiển bởi tín hiệu ̅̅̅̅̅̅̅̅̅
SHIFT∕LOAD: 0 để dịch phải dữ liệu và 1 để nạp dữ liệu vào song
song, các hoạt động dịch phải hay nạp dữ liệu vào song song xảy ra tại sườn lên tín hiệu
xung clock Ck. Các ngõ ra Q3, Q2, Q1, Q0 cũng có thể được truy cập trực tiếp để đọc dữ

149
liệu ra nên còn gọi là các ngõ ra song song. Ngõ ra Q0 cũng đồng thời là ngõ ra nối tiếp
hay còn gọi là ngõ ra dữ liệu dịch phải.
6.4.5. Ứng dụng của thanh ghi dịch
Các thanh ghi dịch có rất nhiều ứng dụng trong máy tính và các hệ thống số. Các ứng
dụng tiêu biểu bao gồm: ghi nhớ dữ liệu, là đơn vị lưu trữ dữ liệu trong quá trình thực
hiện tính toán của CPU, thực hiện chuyển đổi dữ liệu từ song song sang nối tiếp và ngược
lại, làm trễ, thiết kế bộ đếm, tạo các dãy tín hiệu nhị phân tuần hoàn ..v...v.
Các vi mạch ghi dịch tiêu biểu trong thực tế như [5]:
+ 74164: thanh ghi dịch 8-bit, vào nối tiếp - ra song song
+ 74165: thanh ghi dịch 8-bit, vào nối tiếp/song song - ra nối tiếp
+ 74194: thanh ghi dịch 4-bit, dịch theo hai hướng
+ 74195: thanh ghi dịch 4-bit, vào nối tiếp/song song - ra song song
+ 74198: thanh ghi dịch 8-bit, dịch theo hai hướng
+ 74199: thanh ghi dịch 8-bit, vào nối tiếp/song song - ra song song.

150

You might also like