Có thể định nghĩa các máy trạng thái bằng các giản đồ trạng thái, hoặc một kiểu lưu đồ đặc biệt được gọi là lưu đồ máy trạng thái hay lưu đồ SM State Machine dùng để mô tả đặc tính làm v
Trang 14.6 MÁY TRẠNG THÁI
Hệ tuần tự còn có tên gọi khác là máy trạng thái (State Machine), tên này
thường sử dụng khi dùng một hệ tuần tự để điều khiển 1 hệ thống số thực hiện
một thủ tục hoặc một thuật toán từng bước một Có thể định nghĩa các máy
trạng thái bằng các giản đồ trạng thái, hoặc một kiểu lưu đồ đặc biệt được gọi là
lưu đồ máy trạng thái hay lưu đồ SM (State Machine) dùng để mô tả đặc tính
làm việc của một máy trạng thái
Trong thiết kế số, thường sử dụng từ máy trạng thái để chỉ các mạch đồng bộ
như mạch đếm… ở đó các giá trị ra thay đổi từ một trạng thái nhị phân này sang
một trạng thái nhị phân khác khi mạch được cung cấp xung clock
SM có hai loại: Moore và Mealy
4.6.1 Máy trạng thái kiểu MOORE
Sơ đồ khối máy trạng thái kiểu Moore và một mạch counter nhị phân 2bit là một
ví dụ cho máy trạng thái kiểu Moore
ngõ ra
Các t/hiệu
ngoài
Clock
Giải mã t.thái kế Lưu trữ t.thái hiện tại
+ k
Q
+ 2
Q
+ 1
Mạng tổ hợp
X1
X2
Xm
Q1
Q2
Qk
D1 CK Q2 D2 CK
Qk Dk CK
Clock
Hệ tổ hợp (cho các ngõ ra)
Z2
Z1
Zn
Trang 24.6.2 Máy trạng thái kiểu MEALY
Sơ đồ khối máy trạng thái Mealy
4.7 LƯU ĐỒ MÁY TRẠNG THÁI
Các lưu đồ SM còn được gọi là lưu đồ ASM (Algorithmic State Machine) Lưu
đồ SM cho nhiều thuận lợi trong việc dễ hiểu hơn hoạt động của một hệ thống
số bằng cách quan sát thay vì là giản đồ trạng thái tương đương Có thể chuyển
một lưu đồ SM cho trước thành nhiều dạng tương đương, và mỗi dạng dẫn trực
tiếp đến một cài đặt phần cứng
Ba thành phần chính của một lưu đồ SM
Logic trạng thái kế
Bộ nhớ trạng thái Ngõ CK
Logic ra
G
Clock
Trạng thái hiện hành
Kích thích
Các giá trị
ra (Output)
Giá trị
vào
Q1
Z2
HỆ TỔ HỢP
X1
X2
Xm
Q1
Q2
Qk
Z1
Zn
CK Q2 D2
CK
Qk Dk
CK
Clock
+ 1
Q
+ 2
Q
+ k
Q
D1
Mã trạng thái
tên trạng
thái
(a) Hộp trạng thái
điều kiện
nhánh đúng 1
nhánh sai 0
(b) Hộp quyết định
danh sách xuất theo điều kiện
(c) Hộp xuất theo đk
Trang 3• Trạng thái của một hệ thống được biểu diển bằng hộp trạng thái (state box),
hộp trạng thái có thể chứa một danh sách giá trị ra Mã trạng thái có thể đặt
bên cạnh hộp ở phần trên Tên trạng thái được đặt trong hình tròn bên trái
hộp trạng thái
• Hộp quyết định (decision box) được biểu diễn bằng một ký hiệu hình thoi
với các nhánh đúng và sai Điều kiện đặt trong hộp là một biểu thức
Boolean được xác định để lấy nhánh nào
• Hộp xuất theo điều kiện (conditional output box) chứa danh sách và các giá
trị ra theo điều kiện phụ thuộc vào cả trạng thái của hệ thống và các giá trị
vào
Một lưu đồ SM được xây dựng từ các khối SM (SM block) mỗi 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 và mô tả
hoạt động của máy trong thời gian mà máy đang trong trạng thái
Khi một hệ thống số đi vào trạng thái liên hệ với một khối SM cho trước, các
giá trị ra ở danh sách xuất trong hộp trạng thái sẽ trở thành đúng Các điều kiện
trong các hộp quyết định sẽ được định trị để xác định xem đường nào đi theo
qua khối SM Khi trên đường đi có gặp một hộp xuất theo điều kiện thì các giá
trị ra tương ứng sẽ trở thành đúng Một đường dẫn qua khối SM từ ngõ vào đến
ngõ ra được gọi là đường dẫn nối ghép (link path)
Ví dụ, một khối SM
khi vào trạng thái S1, các giá trị ra Z1 và Z2 = 1 Nếu giá trị vào X1 và X2 đều
bằng 0 thì Z3 và Z4 bằng 1 và ở cuối thời gian trạng thái, máy đi vào trạng thái
Z1, Z2
S1
X1
X3
Z3, Z4
Z5
X3
n đường ra
Trang 4kế qua đường ra 1, ngược lại nếu X1 =1 và X3 = 0, giá trị ra Z5 = 1 và đi vào
trạng thái kế qua đường ra 3
Tổng quát thì một khối SM có thể được vẽ bằng nhiều dạng khác nhau Hai khối
SM sau là tương đương
Ví dụ, Vẽ một khối SM tương đương với khối SM sau
`
Phải tuân theo một số quy tắc nhất định khi xây dựng một khối SM:
Thứ nhất, 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 1 trạng thái kế duy nhất
Thứ hai, không cho phép có đường hồi tiếp nội trong một khối SM
A
Z1
1 C
B
0
0
1
0 1
Z1
S1
X3
Z2
0 1
Z1
S1
X2
Z2
0 1
X1
0
1
Z2
X1
1 0
X1
Trang 5Ví dụ, 1 cách vẽ sai và 1 cách vẽ đúng đối với 1 khối SM có đường hồi tiếp
Một khối SM có thể có nhiều đường song song mà dẫn đến cùng một đường ra,
và hơn một đường trong các đường này có thể tích cực đồng thời Ngoài ra cũng
có thể biểu diễn bằng một khối SM nối tiếp tương đương Trong khối nối tiếp
này có thể có một đường dẫn nối ghép tích cực duy nhất giữa ngỏ vào và ra Với
bất cứ tổ hợp nào của các giá trị vào, các giá trị ra sẽ giống như trong dạng song
song tương đương
Ví dụ,
Z1
X2
X1
Z2
1
1
Z4
1
0
X 3
(a) dạng song song
Z1
X1
Z2
X2
Z3
X3
Z3
(b) dạng nối tiếp
Trang 6Có thể chuyển một giản đồ trạng thái của máy tuần tự sang lưu đồ SM tương
đương một cách dễ dàng
Ví dụ, Giản đồ trạng thái
Và lưu đồ SM tương đương
Giản đồ định thì cho lưu đồ SM
S0
Za
S1
Zb
S2
Zc
1/0 0/0
1/0
0/Z1
Za
X
Zb
X
Zc
X
00
01
11
link 1
link 2
S0
S1
S1
link 3
clock
trạng thái
X
Za
Zb
Zc
Z1
Z2
Trang 7Ở giản đồ trạng thái, có cả 2 giá trị ra Moore và Mealy, lưu đồ SM tương đương
có 3 khối, một khối ứng với một trạng thái Các giá trị ra Moore (Za, Zb, Zc)
được đặt trong các hộp trạng thái, từ đó chúng không phụ thuộc vào giá trị vào
Các giá trị ra Mealy (Z1, Z2) xuất hiện trong các hộp xuất theo điều kiện, chúng
phụ thuộc vào cả trạng thái và giá trị vào Trong ví dụ này, mỗi khối SM chỉ có
một hộp quyết định, do đó chỉ phải kiểm tra 1 biến vào Đối với cả hai giản đồ
trạng thái và lưu đồ SM, Zc luôn bằng 1 trong trạng thái S2 Nếu X=0 trong trạng
thái S2, Z=1 và trạng thái kế là S0 Nếu X=1, Z2 =1 và trạng thái kế là S2
Ở giản đồ định thì cho lưu đồ SM, với chuỗi vào X=1,1,1,0,0,0 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 giá trị Moore phụ
thuộc vào trạng thái và chỉ có thể thay đổi tức thời sau 1 thay đổi trạng thái hoặc
một thay đổi giá trị vào Nói chung, 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
Ví dụ, Lập lưu đồ SM cho bộ chia nhị phân song song cho các số nhị phân
dương, số bị chia (dividend) 6 bit cho số chia (divisor) 3 bit để có được thương 3
bit
Minh họa quá trình chia
Phép chia có thể thực hiện bằng phép toán trừ và dịch để xây dựng bộ chia sẽ
sử dụng thanh ghi số bị chia 7 bit và thanh ghi số chia 3 bit như sau
Trong quá trình chia thay vì dịch số chia sang phải trước mỗi lần trừ, ở đây sẽ
dịch số bị chia sang trái Chú ý là cần thêm 1 bit ở đầu bên trái thanh ghi số bị
x7 x6 x5 x4 x3 x2 x1
Thanh ghi số bị chia
Bộ trừ và so sánh
y3 y2 y1
Số chia
Điều khiển
Sh
Su
C (so sánh)
clock
V Chỉ báo tràn trên start
101
000
1010
110
100
Trang 8chia để cho không mất 1 bit khi dịch trái số bị chia Thay vì dùng 1 thanh ghi để
chứa thương số, có thể đưa thương số từng bit một vào đầu bên phải của thanh
ghi số bị chia khi dịch trái số bị chia
Nếu ban đầu x7x6x5x4 ≥ y3y2y1 (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 8 và tràn trên xảy ra Chú ý là
nếu
8 y
y y
8 x x x x y
y y
0000 x x x x y
y y
x x x x x x x
1 2 3
4 5 6 7 1
2 3
4 5 6 7 1
2 3
1 2 3 4 5 6
báo tràn vì thương số chỉ có 3 bit (tối đa bằng 7)
Tín hiệu dịch (Sh = shift) sẽ dịch số bị chia sang trái một vị trí Tín hiệu trừ (Su
= Subtract) 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 thanh ghi số bị chia) lên 1 Nếu số chia
lớn hơn 4 bit tận cùng bên trái của số bị chia, ngõ ra của bộ so sánh là 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ứ lúc nào C=1, tín hiệu trừ được tạo ra và bit thương số được đặt lên
Giản đồ trạng thái của mạch điều khiển
Ban đầu số bit chia 6 bit và số chia 3 bit được đưa vào các thanh ghi thích hợp
Mạch vẫn ở trạng thái dừng Stop (S0) cho đến khi có tín hiệu Start Nếu giá trị
ban đầu của C=1, thương số sẽ cần 4 bit trở lên Vì không gian chỉ cung cấp cho
thương số 3 bit, điều kiện này làm tràn trên do đó bộ chia dừng và bộ chỉ tràn sẽ
đặt lên 1 bằng ngõ ra tràn trên
Bình thường giá trị ban đầu của C=0, vì vậy dịch sẽ xảy ra đầu tiên và mạch sẽ
đi vào trạng thái S1 Rồi nếu C=1 thì xảy ra trừ Sau khi hoàn tất trừ C sẽ luôn
luôn bằng 0 vì vậy xung nhịp kế sẽ tạo ra dịch Quá trình này tiếp tục cho đến
khi xảy ra 3 lần dịch và điều khiển ổ trong trạng thái S3 Rồi phép trứ cuối cùng
xảy ra nếu cần, và điều khiển quay về trạng thái dừng Với vd này sẽ giả sừ là
khi tín hiệu bắt đầu (start) xảy ra nó sẽ là 1 trong thời gian 1 clock và rồi giữ là
0 cho đến khi hệ điều khiển quay về trạng thái S0 Do đó Start sẽ luôn là 0 trong
các trạng thái S1, S2, S3
S0
Stop
S1
S2
S3
C.Start/V Start’/0
C’/0
C’.Start/Sh
C/Su C’/Sh
C/Su C’/Sh
C/Su
Trang 9Từ đó suy ra lưu đồ SM như sau
S0 là trạng thái bắt đầu, nếu Start=1, tín hiệu so sánh C được kiểm tra, nếu C=1,
thương số lớn hơn 3 bit, vì vậy báo tràn V=1 được tạo ra và không có sự thay đổi
xảy ra Nếu C=0, Sh=1, ở xung nhịp kế số bị chia được dịch sang trái và trạng
thái chuyển sang S1 C được kiểm tra trong trạng thái S1 Nếu C=1 có thể có
phép trừ, Su=1 và không có sự thay đổi trạng thái Nếu C=0, Sh=1 và số bị chia
được dịch khi trạng thái chuyển sang S2 Hoạt động ở S2 thì giống S1 Trong
trạng thái S3 trạng thái kế luôn là S0, và C=1 làm cho phép trừ xảy ra
Ví dụ, Lập lưu đồ Sm cho điều khiển bộ nhân song song cho các số nhị phân
dương
Nhân nhị phân chỉ cần phép toán dịch và cộng Thay vì ban đầu tạo ra tất cả các
tích bộ phận rồi cộng lại, thì mỗi tích bộ phận (partial product) được cộng mỗi
khi được tạo ra và do đó không cần cộng một lần hơn 2 số nhị phân
Nhân 2 số 4 bit cần 1 thanh ghi số bị nhân (multiplicant register) 4bit, một thanh
ghi số nhân 4 bit và thanh ghi 8bit cho số hạng tích Thanh ghi tích số làm việc
như thanh ghi tích lũy là tích lũy tổng các tích bộ phận Thay vì dịch số bị nhân
sang trái trước khi cộng, ở đây sẽ dịch thanh ghi tích sang phải
S0
Start
C
V
0
1 1 0
Sh
S1
C
Su
0
1 Sh
S2
C
Su
Sh
S3
C Su
0
1
00
01
10
11
Trang 10Số bị nhân
Số nhân
→
→ 1101 1011 Các tích bộ phận 1101
1101
10111
0000
100111
1101
Sơ đồ khối của bộ nhân song song
Ví 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 t.ghi tích
lũy (cộng số bị nhân vì M=1)
000001011
1101
M(11) (13) Sau khi cộng
Sau khi dịch phải Cộng số bị nhân vì M=1
011011011
001101101
Sau khi cộng Sau khi dịch phải 100111101 010011110 M=0 Bỏ qua cộng vì M=0
Sau khi dịch cộng số bị nhân vì M=1 001001111 1101 M=1 Sau khi cộng
Sau khi dịch (đáp số) 100011111 010001111 Đường chấm chấm là đường chia giữa bộ nhân và tích số
Mạch điều khiển phải được thiết kế để cho ra chuỗi các tín hiệu cộng và dịch
đúng
Thanh ghi tích lũy
Bộ cộng
Số bị nhân
Điều khiển Ad
N
PC
C
Thanh ghi tích số
Số nhân
PC
Sh
M=1: cộng &dịch M=0: dịch
Ad: tín hiệu cộng Sh: tín hiệu dịch
PC: xung clock M: bit bộ nhân N: tín hiệu start C: số nhớ
Trang 11Giản đồ trạng thái cho điều khiển bộ nhân, SV giải thích tương tự như mạch chia
Lập lưu đồ SM cho điều khiển bộ nhân, điều khiển này tạo ra chuỗi các xung
cộng và dịch mong muốn của bộ nhân nhị phân Bộ đếm sẽ đếm số lần dịch và
xuất K=1 trước khi lần dịch cuối cùng xảy ra Lưu đồ SM cho điều khiển bộ
nhân tương ứng với giản đồ trạng thái hình (c)
S0
S2
S6
S4
S3
S5
MN/Ad
- /Sh
M/Ad
- /Sh M/Ad
- /Sh M/Ad
- /Sh
N’/0
M’N/Sh
M’N/Sh M’N/Sh
M’N/Sh
Điều khiển Cộng - dịch
N
PC
Ad
Sh
Bộ đếm K=1 nếu n-1 lần dịch
S0
M’N/Sh MN/Ad
N’/0
M/Ad
- /Sh
M’/Sh
(a) Điều khiển bộ nhân
(b) Giản đồ trạng thái của điều khiển cộng dịch
S0
M’N/Sh MN/Ad
N’/0
K/Sh
(c) Giản đồ trạng thái cuối của điều khiển cộng dịch M’K/Sh
M/Ad
Trang 12N
M
Sh
Ad Sh
M
0
1