Professional Documents
Culture Documents
MẠCH SỐ TUẦN TỰ
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
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.
124
Hình 6.4. Sơ đồ khối mạch phát hiện chuỗi bit (Sequence Detector)
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
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)
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.
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
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
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
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
Hình 6.15
Để 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
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
138
RESET
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
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 = XQ1 K2 = XQ1
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 = XQ1. 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.
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
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ố.
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
147
a) Thanh ghi dịch phải 4-bit
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