Tải bản đầy đủ (.pdf) (22 trang)

Chương 2 THIẾT KẾ MÁY TRẠNG THÁI BẰNG LƯU ĐỒ MÁY TRẠNG THÁI pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (633.41 KB, 22 trang )

Chương 2
THIẾT KẾ MÁY TRẠNG THÁI
BẰNG LƯU ĐỒ MÁY TRẠNG THÁI

I. LƯU ĐỒ MÁY TRẠNG THÁI:
Người ta còn gọi hệ tuần tự là máy trạng thái thuật toán (ASM - algorithmic
state machine) hay đơn giản hơn là máy trạng thái (SM - sate machine), ở đây ta
gọi tắt là SM. Lưu đồ SM được tạo bởi các khối SM; mỗi khối SM mô tả hoạt
động trong 1 trạng thái.
- Trạng thái của hệ thống được biểu diễn bằng một Hộp trạng thái (state
box). Hộp trạng thái có thể chứa một Danh sách xuất (output list), Mã
trạng thái (state code), Tên trạng thái (state name), Hộp quyết đònh
(decision box), Điều kiện trong hộp quyết đònh là một biều thức Boole, Hộp
xuất theo điều kiện (conditional ouput box) chứa danh sách các biến xuất
theo điều kiện.











Điều kiện
Mã trạng thái
Tên trạng thái
Hộp trạng thái
Danh sách xuất


ở trạng thái này
Danh sách xuất
theo điều kiện
Hộp điều kiện
xxx
X
Hộp xuất
theo điều kiện
Đường vào khối ASM
Các đường ra đến
các khối ASMkhác
T F
- Một khối SM chứa chính xác một hộp trạng thái cùng với các hộp quyết
đònh và các hộp xuất theo điều kiện liên hệ với trạng thái đó. Một khối
SM có chính xác một đường vào và một hoặc nhiều đường ra. Một
đường dẫn đi qua khối SM từ ngõ vào đến ngõ ra được gọi là đường dẫn
liên kết (link path).



Theo hình ta có: khi vào trạng thái S
1
, các giá trò ra Z
1
và Z
2
bằng 1.
Nếu các giá trò vào X
1
và X

2
đều bằng 0, Z
3
và Z
4
cũng bằng 1, và ở cuối thời
gian trạng thái, máy đi vào trạng thái kế qua đường ra 1. Ngược lại nếu X
1
=1
và X
3
=0, giá trò ra Z
5
=1 và đi vào trạng thái kế qua đường ra 3.



- Khối SM có thể được vẽ bằng nhiều dạng khác nhau.


- Một lưu đồ SM có thể biểu diễn một hệ tổ hợp khi chỉ có một trạng thái
và không có sự thay đổi trạng thái xảy ra.
Z
1
= A + A’BC = A + BC

- Ta phải tuân theo một số qui tắc nhất đònh khi xây dựng một khối SM.
* Với mọi kết hợp các biến vào hợp lệ phải có chính xác một đường ra
được đònh nghóa. Điều này là cần thiết vì mỗi tổ hợp vào được cho phép
phải dẫn đến một trạng thái kế duy nhất.

* Không cho phép có đường hồi tiếp nội trong một khối SM.

(a) Sai (b) Đúng

- Khối SM có 2 dạng: song song và nối tiếp

Ta có thể chuyển dễ dàng giản đồ trạng thái của máy tuần tự sang lưu
đồ SM tương đương.











Ta khảo sát giản đồ đònh thì cho lưu đồ SM ở hình trên với chuỗi vào
X=1, 1, 1, 0, 0, 0. Trong thí dụ này, tất cả các thay đổi trạng thái xảy ra ngay
sau cạnh lên của xung nhòp. Vì các biến ra Moore (Za, Zb, Zc) phụ thuộc vào
trạng thái, chúng chỉ có thể thay đổi sau một thay đổi trạng thái. Các biến ra
Mealy (Z
1
, Z
2
) có thể thay đổi ngay sau một thay đổi trạng thái hoặc một thay
đổi giá trò vào. Trong bất cứ trường hợp nào, tất cả các giá trò ra sẽ có giá trò
đúng của chúng ở cạnh tích cực của xung nhòp.


S0 00
Za
X
S1 01
Zb
X
S2 11
Zc
X
Z1 Z2
0 1
0 1
0 1
S0
Za
S1
Zb
S2
Zc
1/0
0/0
0/0
1/0
0/Z1
1/Z2
II. CÀI ĐẶT LƯU ĐỒ MÁY TRẠNG THÁI:
Việc cài đặt (realization) lưu đồ SM là tìm được phương trình của các
biến ra và các biến trạng thái kế tiếp. Các bước thực hiện như sau:
- Thực hiện gán trạng thái cho các hộp trạng thái.

- Xác đònh phương trình của biến ra Z
i

• Tìm các trạng thái có xuất hiện biến ra (Z
i
= 1).
• Tại mỗi trạng thái, nếu là biến MOORE thì ta được tích số (AND)
của các biến trạng thái; còn nếu là biến MEALY thì ta có tích số
của các biến trạng thái và biến điều kiện vào.
• Phương trình của biến ra bằng tổng (OR) các tích số đã tìm thấy ở
các bước trên lại với nhau.
- Xác đònh phương trình các biến trạng thái kế Q
+
j

• Tìm ra tất cả các trạng thái trong đó Q
j
=1.
• Đối với mỗi trạng thái này, tìm ra tất cả các đường dẫn liên kết
(link path) mà dẫn đến trạng thái đó.
• Với mỗi đường dẫn liên kết này, tìm ra một số hạng là 1 khi đi
theo đường dẫn liên kết này. Nghóa là, với đường dẫn liên kết từ
Sa đến Sb, số hạng sẽ là 1 tích số của các biến trạng thái ở trạng
thái Sa và các biến điều kiện để có thể dẫn đến Sb.
• Biểu thức Q
+
j
được tạo thành bằng cách lấy tổng (OR) các tích số
được tìm thấy ở bước trên lại với nhau
Chú ý:

Các phương trình biến ra và biến trạng thái kết tiếp có thể được đơn giản hoá
bằng cách rút gọn bằng bìa Karnaugh với các trạng thái không sử dụng làm
điều kiện don’t care
Ví dụ: Thực hiện lưu đồ SM sau bằng cổng logic và kích cạnh lênD-FF

















+ Gán trạng thái: AB = 00 cho S
0
, AB = 01 cho S
1
, và AB = 11 cho S
2
.

+ Phương trình của các biến ra:

Biến ra Moore: Za = A’B’ (chỉ có trong trạng thái S
0
)
Zb = A’B (chỉ có trong trạng thái S
1
)
Zc = A B (chỉ có trong trạng thái S
2
)
Biến ra Mealy: Z
1
= A B X’ ø (tại trạng thái S
2
và điều kiện X = 0)
Z
2
= A B X (tại trạng thái S
2
và điều kiện X = 1)

+ Phương trình các biến trạng thái kế:
Có 3 đường dẫn liên kết (link1, link2 và link3) trạng thái có B =1:
B
+
= A’B’X (link 1) + A’BX (link 2) + ABX (link 3) = (A’ + B) X
Có 2 đường dẫn liên kết dẫn tới trạng thái có A=1:
A
+
= A’BX + ABX = BX
S0 00 = AB

Za
X
S1 01
Zb
X
S2 11
Zc
X
Z1 Z2
0 1
0 1
0 1
Link 1
Link 2
Link 3
Các phương trình biến ra và trạng thái kế có thể được đơn giản hóa hơn
bằng bảng Karnaugh với trạng thái không sử dụng (AB=10) làm điều kiện
“don’t care”, khi đó:
Za = A’B’ + (AB’) = B’
Zb = A’B
Zc = AB + (AB’) = A
Z
1
= ABX’ + (AB’X’) = AX’
Z
2
= ABX + (AB’X) = AX
A
+
= BX

B
+
= A’B’X + A’BX + ABX + (AB’X) = X























D
A
Q
A

CK Q
A
X

Z
1
Clock

D
B
Q
B
CK Q
B
Z
b
Z
2
Z
c
Z
a
Ví dụ: Thực hiện hệ tuần tự có bảng trạng thái sau bằng lưu đồ SM; sử
dụng PLA và JK-FF kích cạnh lên

Hiện tại Kế tiếp Ngõ ra (Z
1
Z
2
)

Q
1
Q
2
X
1
X
2
= 00 01 10 11 X
1
X
2
= 00 01 10 11
00 S
0
S
1
S
1
S
2
S
0
11 11 11 01
01 S
1
S
1
S
2

S
1
S
2
00 01 00 01
11 S
2
S
2
S
2
S
0
S
0
10 10 11 11

Thành lập lưu đồ SM




















Ta có:
Z
1
= Q
1
Q
2
X
1
+ Q
1
Q
2
X
1
X
2
+ Q
1
Q
2
X
1


Z
2
= Q
1
Q
2
+ Q
1
Q
2
X
2
+ Q
1
Q
2

Q
1
+

= Q
1
Q
2
X
1
+ Q
1

Q
2
X
2
+ Q
1
Q
2
X
1
X
2
+ Q
1
Q
2
X
1
+ Q
1
Q
2
X
1

Q
2
+

= Q

1
Q
2
X
1
X
2
+ Q
1
Q
2
X
2
+ Q
1
Q
2
X
1

Rút gọn với trạng thái không gán làm don’t care
S
0
00 = Q
1
Q
2
Z
2
X

1
0 1
Z
1

X
2
Z
1

S
1
10
X
2
Z
2

S
2
11
Z
1
0 1
X
1
Z
2

0

1
0
1






Z
1
= Q
2
+ Q
1
X
1
+ Q
1
X
2
Z
2
= Q
1
+ Q
2
X
1
+ Q

2
X
2








J
1
= X
1
+ X
2
J
2
= Q
1
X
2
+ Q
1
X
1
X
2


K
1
= Q
2
X
1
K
2
= X
1


Q
1
Q
2
X
1
X
2
Z
1
Z
2
J
1
K
1
J
2

K
2
- 1 - - 1 0 0 0 0 0
0 - 0 - 1 0 0 0 0 0
0 - - 0 1 0 0 0 0 0
0 - - - 0 1 0 0 0 0
- 1 1 - 0 1 0 0 0 0
- 0 - 1 0 1 0 0 0 0
- - 0 - 0 0 1 0 0 0
- - - 0 0 0 1 0 0 0
- 1 1 - 0 0 0 1 0 0
1 - - 1 0 0 0 0 1 0
0 - 1 0 0 0 0 0 1 0
- - 1 - 0 0 0 0 0 1
X
1
X
2
Z
1

00 01
X
X
1 00
1
0
1
11 10
1

1
X
X
11
1 10
1
1
Q
1
Q
2
X
1
X
2
Z
2
00 01
X
X
100
1
0
1
11 10
1


X
X

111
110
11
1
Q
1
Q
2
X
1
X
2
Q
1
+
00

0
1
X
X
1 00
1 01
11 1
0
1
1
1
1
X

X
11
1 10
1
1


Q
1
Q
2
X
1
X
2
00
0
1
X
X
00
01
11 1
0
1
1
1
X
X
11

110
1

Q
1
Q
2
Q
2
+

J
1
J
1
Q
1
J
2
Q
2
J
2
Q
1
Q
2
CK
X
2

PLA
K
2


K
2
K
1


K
1
X
1
Z
2
Z
1
KTS2-C2-Tr.11
* ĐƠN GIẢN HOÁ HÀM BOOLE BẰNG CÁCH THÊM BIẾN VÀO BÌA KARNAUGH
Khi dùng bảng Karnaugh, nếu ta có số biến vào lớn hơn 4 biến thì sự rút
gọn trên bảng Karnaugh bắt đầu hơi phức tạp. Để giải quyết vấn đề trên,
người ta đưa các biến vào trong bảng Karnaugh.
Nếu biến P
i
được đặt trong ô m
j
của bảng Karnaugh của hàm, có nghóa
là F = 1 khi P

i
= 1 và các biến được chọn để m
j
=1.
Cho trước một bảng với các biến P
1
, P
2
, … được đưa vào một số ô, dạng
tối thiểu tổng các tích của F có thểm được tìm như sau:
F = MS
0
+ P
1
MS
1
+ P
2
MS
2
+ …
+ MS
0
là tổng tối thiểu (Minimum Sum) có được bằng cách đặt
P
1
= P
2
= … = 0.
+ MS

1
là tổng tối thiểu có được bằng cách đặt P
1
=1, các P
j
= 0 (j ≠ 1), và
thay thế tất cả các 1 trên bảng bằng các “don’t care” (X).
+ MS
2
là tổng tối thiểu có được bằng cách đặt P
2
=1, các P
j
= 0 (j ≠ 2), và
thay thế tất cả các 1 trên bảng bằng các “don’t care” (X).
Biểu thức này sẽ là tối thiểu miễn là các giá trò của các biến được đưa
vào bảng có thể được gán một cách độc lập.
Ví dụ: Cho hàm sau:
G(A, B, C, D, E, F) = m
0
+ m
2
+ m
3
+ E m
5
+ E m
7
+ F m
9

+ m
11
+ m
15

+ (m
1
+ m
11
+ m
13
)

Ta có kết quả: G = A’B’ + A C D + E A’D + F A D
KTS2-C2-Tr.12
Ví dụ: F(A, B, C, D) = A’B’C + A’BC + A’BC’D + ABCD + (AB’C)

F = A’C + D (C + A’B) = A’C + C D + A’B D
Ví dụ: F(A, B, C, D, E) = m(0, 4, 5, 7, 9) + d(6, 11) + E (m
1
+ m
15
)








F(A, B, C, D, E) = A’B + A’C’D’ + A B’D + A’C E + B C D E
Ví dụ: F(A, B, C, D, E) = A’B D’ + A’B’C’D’E + (A B)
Biến đưa vào bìa K có thể là hàm của nhiều biến.
Với P = C’E, ta có F (A, B, D, P) = m
2
+ P m
0
+ (m
6
+ m
7
)




F = B D’ + A’D’P = B D’ + A’C’D’E

CD

F
00 01
1
1
1
00

E01
11 10
1

1
X
11
10
XE
AB

D

F
00 01
1P
0

1
11 10
X
X

AB

KTS2-C2-Tr.13
III. THÀNH LẬP LƯU ĐỒ MÁY TRẠNG THÁI:
Ví dụ 1: Lập lưu đồ SM cho bộ chia nhò phân song song
Ta xét thiết kế bộ chia song song cho các số nhò phân dương. Thí dụ ta
sẽ thiết kế 1 hệ chia số bò chia (dividend) 6 bit cho số chia (divisor) 3 bit để có
được thương số 3 bit.
Minh họa cho quá trình chia:

Ta nhận thấy việc chia có thể thực hiện được bằng các phép toán trừ và

dòch. Để xây dựng bộ chia ta sẽ dùng thanh ghi số bò chia 7 bit và thanh ghi số
chia 3 bit có sơ đồ khối như sau:


Tín hiệu vào St (Start): St = 1 cho phép bắt đầu chạy hệ thống. Nó sẽ là 1
trong thời gian 1 xung nhòp, và rồi sẽ giữ là 0 cho đến khi hệ điều khiển quay
về trạng thái ban đầu.
KTS2-C2-Tr.14
Tín hiệu vào C: là ngõ ra của bộ so sánh; nếu “số chia” lớn hơn 4 bit tận
cùng bên trái của “số bò chia” thì C = 0, ngược lại C=1. Mạch điều khiển tạo
ra chuỗi các tín hiệu “dòch” và “trừ” mong muốn. Bất cứ khi nào C=1, tín
hiệu “trừ” được tạo ra và bit thương số được đặt lên 1.
Tín hiệu ra V (Overflow): Nếu ban đầu x
7
x
6
x
5
x
4
≥ y
3
y
2
y
1
(nghóa là nếu 4 bit
trái của thanh ghi “số bò chia” vượt quá hoặc bằng số chia), thương số sẽ lớn
hơn 7 và xảy ra tràn trên (overflow).


Do vậy, nếu giá trò ban đầu của C là 1, thương số sẽ cần 4 bit trở lên. Do
đó bộ chia dừng và báo hiệu tràn trên bằng cách cho biến V=1.
Tín hiệu dòch Sh (Shift): khi Sh = 1 sẽ dòch “số bò chia” sang trái một vò
trí.
Tín hiệu trừ Su (Subtract): Bất cứ khi nào C = 1, tín hiệu Su = 1. Khi đó
hệ sẽ trừ “số chia” cho 4 bit tận cùng bên trái của thanh ghi “số bò chia” và
đặt bit thương số (bit tận cùng bên phải trong thanh ghi “số bò chia”) lên 1.

KTS2-C2-Tr.15

Lửu ủo SM cuỷa boọ chia nhũ phaõn.



00 = AB
01
10
11
KTS2-C2-Tr.16
Ví du 2ï: Thành lập lưu đồ SM cho phần điều khiển bộ nhân.
Ta sẽ thiết kế bộ nhân song song cho các số nhò phân dương, nhân nhò
phân chỉ cần các phép toán dòch và cộng.
Minh hoạ cho bài toán nhân nhò phân:

Nhân hai số 4 bit cần 1 thanh ghi “số bò nhân” (multiplicand register) 4
bit, 1 thanh ghi “số nhân” (multiplier) 4 bit và thanh ghi 8 bit dành cho số
hạng tích. Thanh ghi tích số làm việc như thanh ghi tích lũy là tổng tích lũy
các “tích từng phần”. Thay vì phải dòch “số bò nhân” sang trái trước khi
cộng, người ta sẽ dòch thanh ghi tích sang phải.
Ta có sơ đồ khối của bộ điều khiển nhân


Ad: tín hiệu cộng; Sh: tín hiệu dòch; Clk: xung nhòp; M: bit của số nhân;
St: tín hiệu bắt đầu; Done: thực hiện xong; C: số nhớ (carry)
Số bò nhân
Số nhân
KTS2-C2-Tr.17
Thí dụ nhân (13 x 11) được làm lại sau đây chỉ vò trí các bit trong các
thanh ghi ở mỗi thời điểm xung nhòp.

Nội dung ban đầu của thanh ghi tích:
(Cộng “số bò nhân” vì M=1)
Sau khi cộng
Sau khi dòch
(Cộng “số bò nhân” vì M=1)
Sau khi cộng
Sau khi dòch
(bỏ qua cộng vì M=0)
Sau khi dòch
(Cộng “số bò nhân” vì M=1)
Sau khi cộng
Sau khi dòch (Đáp số):




Giản đồ trạng thái cho phần điều khiển bộ nhân.
Đ
ường chia giữa số nhân và tích so
á


KTS2-C2-Tr.18
Trong trường hợp tổng quát hơn, nếu cần nhân số bit lớn, người ta chia
hệ điều khiển thành bộ đếm và điều khiển “cộng - dòch”.
- Phần điều khiển “cộng - dòch” có trạng thái S
1
là trạng thái sau khi
dòch, và trạng thái S
2
là trạng thái sau khi cộng.
- Phần bộ đếm tạo ra tín hiệu K.
Tín hiệu hoàn tất (K) có từ bộ đếm để làm dừng bộ nhân sau khi đã
hoàn tất đủ số lần dòch. Để xác đònh xem khi nào hoàn tất việc “nhân”, mỗi
lần tín hiệu “dòch” được tạo ra sẽ làm tăng bộ đếm. Nếu bộ nhân có n bit,
tổng số lần dòch cần là n. Ta sẽ thiết kế bộ đếm để tín hiệu hoàn tất (K) được
tạo ra sau khi xảy ra (n-1) lần dòch.

(a) Điều khiển bộ nhân (b) Giản đồ trạng thái cộng-dòch


(c) Giản đồ trạng thái cuối cùng của bộ điều khiển cộng dòch
KTS2-C2-Tr.19
Ở trạng thái S
1
, là trạng thái có được sau khi dòch, nếu K = 0 thì hoạt
động bình thường. Nếu K=1, ta kiểm tra M: nếu M = 0, ta xuất tín hiệu dòch
cuối cùng và dừng lại; còn nếu M=1, ta cộng trước khi “dòch” và đi vào trạng
thái S
2
.
Ở trạng thái S2, nếu K=1, ta xuất ra thêm 1 tín hiệu dòch nữa và rồi đi

vào trạng thái S
3
. Tín hiệu “dòch” cuối cùng sẽ reset bộ đếm về 0, đồng thời
điều khiển “cộng-dòch” quay về trạng thái dừng.
Bộ đếm đếm số lần dòch và xuất K=1 vừa trước khi lần dòch cuối cùng
xảy ra.
















Lưu đồ SM của bộ nhân nhò phân.
S
3
10
S
0
00 = Q
1

Q
2

S
t
0 1
S
2
01
S
h
M

A
d

0
0
Load
S
1
11

S
h
1
K

K


1
1 0
Done
KTS2-C2-Tr.20
Ví dụ 3: Thiết kế trò chơi xúc xắc điện tử.

Sơ đồ khối trò chơi xúc xắc.
Như vậy sau khi gieo xúc xắc (roll), tổng của các giá trò trong 2 bộ đếm
nằm trong dãi từ 2 đến 12. Các qui tắc chơi như sau:
1. Sau lần gieo xúc xắc (roll) lần thứ nhất, người chơi thắng nếu tổng là 7
hoặc 11. Người chơi thua nếu tổng là 2, 3, hoặc 12. Ngược lại tổng có
được trong lần “roll” thứ nhất được xem như “điểm” của người chơi và
phải “roll” xúc xắc lần nữa.
2. Ở lần “roll” thứ hai hoặc kế tiếp, người chơi thắng nếu tổng bằng
“điểm” của người chơi và thua nếu tổng là 7. Ngược lại người chơi phải
“roll” lần nữa cho đến khi cuối cùng người chơi thắng hoặc thua.
3. Sau khi thắng hoặc thua, người chơi phải ấn nút Reset để bắt đầu trò
chơi mới.
Có 2 nút nhấn: Rb (Roll button=nút gieo) và Reset. Reset được dùng để
khởi động trò chơi mới. Khi ấn nút “roll” (giữ Rb), các bộ đếm xúc xắc đếm ở
tốc độ cao, vì vậy không thể đọc được trên hiển thò. Khi nhả nút Rb, các giá
trò trong 2 bộ đếm được hiển thò và trò chơi có thể tiến hành. Nếu đèn “Win”
(thắng) hoặc đèn “Lose” (thua) không sáng, người chơi ấn nút “roll” lần nữa.
KTS2-C2-Tr.21
Các tín hiệu vào hệ điều khiển được đònh nghóa như sau:
D
7
= 1 nếu tổng của xúc xắc là 7.
D
11

= 1 nếu tổng của xúc xắc là 11.
D
2312
= 1 nếu tổng của xúc xắc là 2, 3, hoặc 12.
Eq=1 nếu tổng của xúc xắc bằng số điểm cất trong thanh ghi điểm.
Rb = 1 khi ấn nút gieo xúc xắc Rb.
Reset = 1 khi ấn nút Reset.
Các biến ra của hệ điều khiển được đònh nghóa như sau:
Roll = 1 cho phép các bộ đếm xúc xắc.
Sp = 1 sẽ cất tổng vào thanh ghi điểm (Sp=Save points).
Win = 1 làm cho đèn “Win” sáng (thắng).
Lose = 1 làm cho đèn “Lose” sáng (thua).

Lưu đồ trò chơi xúc xắc.
KTS2-C2-Tr.22


























Lửu ủo SM cuỷa troứ chụi xuực xaộc
D
711
S
4
100
S
0
000 = ABC


R
b
0 1
S
3
011
Lose

R

b
1
1
Roll
S
1
001

S
h
0
R
b
0

D
2312
0
0
1
S
2
010
Win

Reset

0 1
Reset


0 0
S
5
101
R
b
1

Roll
E
q
1
D
7
0
0
0
1

×