Chương 5:

Automata xuống Automata đẩyđẩy xuống utomata) own AAutomata) ((PPush ush DDown

Nội dung:

• Khái niệm về PDA

• PDA đơn định và không đơn định

• PDA chấp nhận chuỗi bằng Stack rỗng và PDA chấp

nhận chuỗi bằng trạng thái kết thúc

• Sự tương đương giữa PDA và CFL

1

PDAPDA

07/11/2011

(cid:1) Ngôn ngữ chính qui: – Văn Phạm chính qui – Automat hữu hạn (NFA, DFA)

– CFG – PDA

(cid:1) Ngôn ngữ phi ngữ cảnh:

2

(cid:1) Chỉ có nondeterministic PDA định nghĩa được tất cả CFL. (cid:1) Deterministic PDA chỉ đoán nhận được tập con, tuy nhiên cũng bao gồm phần lớn các ngôn ngữ lập trình.

1

PDAPDA

Ví dụ: xét L = {wcwR | w ∈∈∈∈ (0 + 1)*} được sinh ra từ CFG

S → 0S0 | 1S1 | c

Ta xây dựng PDA như sau:

• Bộ điều khiển có 2 trạng thái q1 và q2 • Stack có 3 ký hiệu: xanh (B), vàng (Y) và đỏ (R) • Quy tắc thao tác trên automata:

3

PDAPDA

Các khái niệm:

• Phân loại PDA: đơn định (DPDA) và không đơn định (NPDA) • Phép chuyển: có 2 kiểu

絃 Phụ thuộc ký hiệu nhập: với một trạng thái, một ký hiệu tại đỉnh Stack và một ký hiệu nhập, PDA lựa chọn trạng thái kế tiếp, thay thế ký hiệu trên Stack và di chuyển đầu đọc trên băng nhập. 絃 Không phụ thuộc ký hiệu nhập (ε – dịch chuyển): ký hiệu nhập không được dùng, đầu đọc không di chuyển.

• Ngôn ngữ được chấp nhận bởi PDA

絃 Bởi Stack rỗng 絃 Bởi trạng thái kết thúc

Một ngôn ngữ được chấp nhận bởi PDA khi và chỉ khi nó là một ngôn ngữ phi ngữ cảnh.

4

07/11/2011

2

PDAPDA

Định nghĩa: một PDA M là một hệ thống 7 thành phần

M (Q, Σ, Γ, δ, q0, Z0, F)

• Q : tập hữu hạn các trạng thái • Σ : bộ chữ cái nhập • Γ : bộ chữ cái Stack • δ : hàm chuyển Q x (Σ ∪ {ε}) x Γ → tập con của Q x Γ* • q0 : trạng thái khởi đầu • Z0 : ký hiệu bắt đầu trên Stack • F ⊆ Q : tập các trạng thái kết thúc (nếu PDA chấp nhận chuỗi bằng Stack rỗng thì F = Ø)

5

Hoạt động của PDA

Chuyển đến trạng thái p.

07/11/2011

Thay Z trên đỉnh stack bằng α.

6

(cid:1) Hoạt động của PDA phụ thuộc vào hàm chuyển δ (cid:1) Nếu δ(q, a, Z) có (p, α) là một trong các kết quả thì một trong các hành động mà PDA làm tại trạng thái q, với a ở đầu chuỗi nhập, và Z ở trên đỉnh stack là: 1. 2. Xóa a khỏi đầu chuỗi nhập ( a có thể là ε). 3.

3

PDAPDA

Hàm chuyển δ:

• Hàm chuyển phụ thuộc ký hiệu nhập

δ(q, a, Z) = { (p1, γ1), (p2, γ2), ..., (pm, γm) }

• Hàm chuyển không phụ thuộc ký hiệu nhập

δ(q, ε, Z) = { (p1, γ1), (p2, γ2), ..., (pm, γm) }

Ví dụ: PDA chấp nhận wcwR bằng Stack rỗng 1) δ(q1, 0, R) = {(q1, BR)} 2)δ(q1, 1, R) = {(q1, YR)} 3)δ(q1, 0, B) = {(q1, BB)} 4)δ(q1, 1, B) = {(q1, YB)} 5)δ(q1, 0, Y) = {(q1, BY)} 6)δ(q1, 1, Y) = {(q1, YY)}

7) δ(q1, c, R) = {(q2, R)} 8) δ(q1, c, B) = {(q2, B)} 9) δ(q1, c, Y) = {(q2, Y)} 10) δ(q2, 0, B) = {(q2, ε)} 11) δ(q2, 1, Y) = {(q2, ε)} 12) δ(q2, ε, R) = {(q2, ε)}

7

PDAPDA

Hình thái (ID - instantaneous description): dùng để ghi nhớ

trạng thái và nội dung của Stack

(q, aw, Zα) ⊢⊢⊢⊢

M (p, w, βα) nếu δ(q, a, Z) chứa (p, β)

Ngôn ngữ chấp nhận bởi PDA:

• Ngôn ngữ được chấp nhận bằng trạng thái kết thúc

L (M) = {w | (q0, w, Z0) ⊢* (p, ε, γ) với p ∈∈∈∈ F và γ ∈∈∈∈ Γ*}

• Ngôn ngữ được chấp nhận bởi Stack rỗng

N (M) = {w | (q0, w, Z0) ⊢* (p, ε, ε) với p ∈∈∈∈ Q}

Ví dụ: PDA chấp nhận wcwR bằng Stack rỗng với chuỗi nhập 001c100

(q1, 001c100, R) ⊢ (q1, 01c100, BR) ⊢ (q1, 1c100, BBR) ⊢ (q1, c100, YBBR) ⊢ (q2, 100, YBBR) ⊢ (q2, 00, BBR) ⊢ (q2, 0, BR) ⊢ (q2, ε, R) ⊢ (q2, ε, ε) : Chấp nhận

8

07/11/2011

4

(DPDA) PDA đơnđơn địnhđịnh (DPDA) PDA

Ví dụ: thiết kế PDA chấp nhận {wwR | w ∈∈∈∈ (0 + 1)*} bằng Stack rỗng • Không có ký hiệu c để biết thời điểm chuyển từ trạng thái q1 sang q2 • Bắt buộc phải đoán thử (khi thấy 2 ký hiệu liên tiếp giống nhau)

絃 Nếu ký hiệu thuộc chuỗi xuôi : giữ nguyên trạng thái q1 và push vào Stack 絃 Nếu ký hiệu thuộc chuỗi ngược : chuyển sang trạng thái q2 và pop khỏi Stack

• M({q1, q2}, {0, 1}, {R, B, Y}, δ, q1, R, Ø):

1) 2) 3) 4) 5)

6) δ(q1, 1, Y) = {(q1, YY),(q2, ε)} δ(q1, 0, R) = {(q1, BR)} δ(q1, 1, R) = {(q1,YR)} 7) δ(q2, 0, B) = {(q2, ε)} δ(q1, 0, B) = {(q1, BB), (q2, ε)} 8) δ(q2, 1, Y) = {(q2, ε)} 9) δ(q1, ε, R) = {(q2, ε)} δ(q1, 0, Y) = {(q1, BY)} 10) δ(q2, ε, R) = {(q2, ε)} δ(q1, 1, B) = {(q1, YB)}

9

(DPDA) PDA đơnđơn địnhđịnh (DPDA) PDA

Ví dụ: các phép chuyển hình thái của PDA chấp nhận chuỗi 001100

thuộc ngôn ngữ {wwR | w ∈∈∈∈ (0 + 1)*} bằng Stack rỗng

Khởi đầu

↓ (q1, 001100, R) ↓ (q1, 01100, BR) → (q2, 1100, R) → (q2, 1100, ε) : Không chấp nhận ↓ (q1, 1100, BBR) ↓ (q1, 100, YBBR) → (q2, 00, BBR) ↓ (q1, 00, YYBBR) (q2, 0, BR) → (q2, ε, R) → (q2, ε, ε) : Chấp nhận ↓ (q1, 0, BYYBBR) → (q2, ε, YYBBR) : Không chấp nhận ↓ (q1, ε, BBYYBBR) : Không chấp nhận

10

07/11/2011

5

(DPDA) PDA đơnđơn địnhđịnh (DPDA) PDA

Định nghĩa: một PDA M(Q, Σ, Γ, δ, q0, Z0, F) được gọi là đơn định

nếu:

• ∀q ∈∈∈∈ Q và Z ∈∈∈∈ Γ: nếu δ(q, ε, Z) ≠ Ø thì δ(q, a, Z) = Ø với ∀a ∈∈∈∈ Σ • Không có q ∈∈∈∈ Q, Z ∈∈∈∈ Γ và a ∈∈∈∈ (Σ ∪ {ε}) mà δ(q, a, Z) chứa nhiều hơn một phần tử

Chú ý: đối với PDA thì dạng đơn định và không đơn định là không

tương đương nhau.

Ví dụ: wwR được chấp nhận bởi PDA không đơn định, nhưng không

được chấp nhận bởi bất kỳ một PDA đơn định nào.

11

07/11/2011

Định lý 6.1: Nếu một ngôn ngữ phi ngữ cảnh L được chấp nhận bởi một PDA chấp nhận chuỗi bởi trạng thái kết thúc M2 thì L cũng được chấp nhận bởi một PDA chấp nhận chuỗi bởi Stack rỗng M1

Cách xây dựng:

Đặt M2(Q, Σ, Γ, δ, q0, Z0, F) và M1(Q ∪ {qe, q0'}, Σ, Γ, δ', q0', X0, Ø) • δ'(q0', ε, X0) = {(q0, Z0X0)} • δ'(q, a, Z) chứa mọi phần tử của δ(q, a, Z) với a ∈∈∈∈ (Σ ∪ {ε}) • δ'(q, ε, Z) chứa (qe, ε) với ∀q ∈∈∈∈ F và Z ∈∈∈∈ (Γ ∪ {X0}) • δ'(qe, ε, Z) chứa (qe, ε) với ∀Z ∈∈∈∈ (Γ ∪ {X0})

12

Tương đương Tương đương giữagiữa PDA Stack rỗngrỗng vàvà PDA PDA vớivới PDA vớivới Stack thúc thái kếtkết thúc trạng thái trạng

6

07/11/2011

Định lý 6.2: Nếu một ngôn ngữ phi ngữ cảnh L được chấp nhận bởi

một PDA chấp nhận chuỗi bởi Stack rỗng M1 thì L cũng được chấp nhận bởi một PDA chấp nhận chuỗi bởi trạng thái kết thúc

M2Cách xây dựng:

Đặt M1(Q, Σ, Γ, δ, q0, Z0, F) và M2(Q ∪ {q0', qf}, Σ, Γ ∪ {X0}, δ', q0', X0, {qf})

• δ'(q0', ε, X0) = {(q0, Z0X0)} • δ'(q, a, Z) = δ(q, a, Z) với a ∈∈∈∈ (Σ ∪ {ε}) • δ'(q, ε, X0) chứa (qf, ε) với ∀q ∈∈∈∈ Q

13

Tương đương Tương

đương giữagiữa PDA

PDA vàvà CFLCFL

Định lý 6.4: Nếu L được chấp nhận bởi một PDA chấp nhận chuỗi

bởi Stack rỗng thì L là ngôn ngữ phi ngữ cảnh

Cách xây dựng:

Đặt PDA M(Q, Σ, Γ, δ, q0, Z0, Ø) chấp nhận L với Stack rỗng Đặt G(V, T, P, S) là CFG, trong đó:

• V là tập các đối tượng dạng [q, A, p] • S là ký hiệu bắt đầu mới được thêm vào • P là tập các luật sinh dạng

1. S → [q0, Z0, q] với ∀q ∈∈∈∈ Q 2. [q, A, qm+1] → a [q1, B1, q2][q2, B2, q3]...[qm, Bm, qm+1]

sao cho δ(q, a, A) có chứa (q1, B1B2...Bm) Nếu m = 0 thì luật sinh có dạng [q, A, q1] → a

14

Tương đương Tương đương giữagiữa PDA Stack rỗngrỗng vàvà PDA PDA vớivới PDA vớivới Stack thúc thái kếtkết thúc trạng thái trạng

7

Tương đương Tương

đương giữagiữa PDA

PDA vàvà CFLCFL

Ví dụ: xây dựng CFG tương đương sinh ra ngôn ngữ được chấp nhận bởi PDA M({q0, q1}, {0, 1}, {Z0, X}, δ, q0, Z0, Ø) với δ như sau:1. δ(q0, 0, Z0) = {(q0, XZ0)} 2. δ(q0, 0, X) = {(q0, XX)} 3. δ(q0, 1, X) = {(q1, ε)}

4. δ(q1, 1, X) = {(q1, ε)} 5. δ(q1, ε, X) = {(q1, ε)} 6. δ(q1, ε, Z0) = {(q1, ε)}

Xây dựng: CFG G(V, {0, 1}, P, S) 1. Tập các biến V = [q, A, p] ∪ S

= { S, [q0, X, q0], [q0, X, q1], [q1, X, q0], [q1, X, q1],

[q0, Z0, q0], [q0, Z0, q1], [q1, Z0, q0], [q1, Z0, q1]

}

2. Tập các luật sinh P

S → [q0, Z0, q0] | [q0, Z0, q1]

δ1) [q0, Z0, q0] → 0 [q0, X, q0] [q0, Z0, q0] | 0 [q0, X, q1] [q1, Z0, q0] [q0, Z0, q1] → 0 [q0, X, q0] [q0, Z0, q1] | 0 [q0, X, q1] [q1, Z0, q1]

15

Tương đương Tương

đương giữagiữa PDA

PDA vàvà CFLCFL

δ3) [q0, X, q1] → 1 δ4) [q1, X, q1] → 1

δ2) [q0, X, q0] → 0 [q0, X, q0] [q0, X, q0] | 0 [q0, X, q1] [q1, X, q0] [q0, X, q1] → 0 [q0, X, q0] [q0, X, q1] | 0 [q0, X, q1] [q1, X, q1] δ5) [q1, X, q1] → ε δ6) [q1, Z0, q1] → ε

Đặt: [q0, X, q0] = A, [q0, X, q1] = B, ..., [q0, Z0, q0] = E, ..., [q1, Z0, q1] =

H

S → 0B B → 0B | 0B1 | 1

Giản lược văn phạm: S → F F → 0BH B → 0BD | 1 D → ε | 1 H → ε

Ta có luật sinh: S → E | F E → 0AE | 0BG F → 0AF | 0BH A → 0AA | 0BC B → 0AB | 0BD | 1 D → ε | 1 H → ε

16

07/11/2011

8

07/11/2011

17

CÂU HỎI VÀ BÀI TẬP CHƯƠNG 05 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 05

9

Chương 6:

Turing MáyMáy Turing achine) uring MMachine)

((TTuring

Nội dung:

• Mô hình TM

• TM nhận dạng ngôn ngữ

• TM tính toán hàm số nguyên

• Các kỹ thuật xây dựng TM

1

MôMô hìnhhình TMTM

Định nghĩa: TM là một hệ thống gồm 7 thành phần

M (Q, Σ, Γ, δ, q0, B, F)

● Q : tập hữu hạn các trạng thái ● Σ : bộ ký hiệu nhập ● Γ : tập hữu hạn các ký hiệu được viết trên băng ● δ : hàm chuyển Q x Γ → Q x Γ x {L, R, Ø} ● q0 : trạng thái khởi đầu ● B : ký hiệu dùng để chỉ khoảng trống trên băng ● F ⊆ Q : tập các trạng thái kết thúc

Hình thái: α1qα2 với q là trạng thái hiện hành của TM, α1α2 là nội

dung của băng tính từ đầu băng cho đến ký hiệu khác Blank bên phải nhất

2

07/11/2011

1

chuyển PhépPhép chuyển

Định nghĩa: Đặt X1X2...Xi-1qXi...Xn là một hình thái (ID)

Giả sử : δ(q, Xi) = (p, Y, L) • Nếu i - 1 = n thì Xi là B • Nếu i = 1 thì không có ID kế tiếp (đầu đọc không được phép vượt qua cận trái của băng. • Nếu i > 1 ta viết:

⊢ X1X2...Xi-2pXi-1YXi+1...Xn

X1X2...Xi-1qXi...Xn Tương tự : δ(q, Xi) = (p, Y, R) X1X2...Xi-1qXi...Xn

⊢ X1X2...Xi-2Xi-1YpXi+1...Xn

Và với : δ(q, Xi) = (p, Y, Ø)

X1X2...Xi-1qXi...Xn

⊢ X1X2...Xi-2Xi-1pYXi+1...Xn

3

TM TM nhậnnhận dạngdạng ngônngôn ngữngữ

Định nghĩa: ngôn ngữ được chấp nhận bởi TM M là

L(M) = {w | w∈∈∈∈ Γ* và q0w ⊢ α1pα2 với p∈∈∈∈ F}

Ví dụ: thiết kế TM chấp nhận L = {0n1n | n > 0}

Đặt TM M(Q, Σ, Γ, δ, q0, B, F) với Q = {q0, q1, q2, q3, q4}, Γ = {0, 1, X, Y, B}, F = {q4}

⊢⊢⊢⊢ XXYYq4

Xét chuỗi 0011 ta có: q00011 ⊢⊢⊢⊢ Xq1011 ⊢⊢⊢⊢ X0q111 ⊢⊢⊢⊢ X q20Y1 ⊢⊢⊢⊢ q2X0Y1 ⊢⊢⊢⊢ X q00Y1 ⊢⊢⊢⊢ XXq1Y1 ⊢⊢⊢⊢ XXY q11 ⊢⊢⊢⊢ XX q2YY ⊢⊢⊢⊢ X q2XYY ⊢⊢⊢⊢ XX q0YY ⊢⊢⊢⊢ XXYq3Y ⊢⊢⊢⊢ XXYYq3

4

07/11/2011

2

nguyên TM TM nhưnhư làlà máymáy tínhtính hàmhàm sốsố nguyên

Quy ước: một số nguyên trong TM được viết dưới dạng nhất phân

là một chuỗi số 0, cách nhau bởi 1 số 1.

000001001000B = 5, 2, 3

Ví dụ: thiết kế TM tính toán phép trừ riêng

• Nếu m < n thì m \ n = 0 • Ngược lại thì m \ n = m – n • Input: 0m10nB

Output: 0m\nB

Đặt TM M(Q, Σ, Γ, δ, q0, B, F) với • Q = {q0, q1, q2, q3, q4, q5, q6}, Γ = {0, 1, B}, F = {q6}

5

KỹKỹ thuật

thuật lưulưu trữtrữ trong

khiển trong bộbộ điềuđiều khiển

Ví dụ: thiết kế TM kiểm tra ký tự đầu tiên của một chuỗi không xuất

hiện ở bất kỳ vị trí nào khác trong chuỗi.

Xây dựng: TM M(Q, {0, 1}, {0, 1, B}, δ, [q0, B], B, F)

trong đó các trạng thái thuộc Q là một cặp {q0, q1} x {0, 1, B} F = {[q1, B]}

Phép chuyển:

δ([q0, B], 0) = ([q1, 0], 0, R) δ([q1, 0], 0) = ([q1, 0], 0, R) δ([q1, 0], B) = ([q1, B], B, Ø) δ([q0, B], 1) = ([q1, 1], 1, R) δ([q1, 1], 1) = ([q1, 1], 1, R) δ([q1, 1], B) = ([q1, B], B, Ø)

6

07/11/2011

3

KỹKỹ thuật

qua (Shifting over) thuật dịchdịch qua (Shifting over)

Ví dụ: thiết kế máy Turing để dịch một chuỗi các ký hiệu khác B sang

phải 2 ô

Xây dựng: TM M(Q, Σ, Γ, δ, q0, B, F)

trong đó Q chứa các phần tử dạng [q, A1, A2] với q = q1 hoặc q2; A1 và A2 thuộc Γ. Trạng thái bắt đầu là [q1, B, B]

Phép chuyển:

δ([q1, B, B], A1) = ([q1, B, A1], X, R) (X là ký hiệu đặc biệt nào đó) δ([q1, B, A1], A2) = ([q1, A1, A2], X, R) δ([q1, A1, A2], A3) = ([q1, A2, A3], A1, R) ... δ([q1, Ai-2, Ai-1], Ai) = ([q1, Ai-1, Ai], Ai-2, R) ... δ([q1, An-1, An], B) = ([q2, An, B], An-1, R) δ([q2, An, B], B) = ([q2, B, B], An, L)

7

KỹKỹ thuật

thuật chương

chương trình

trình concon

Ví dụ: thiết kế TM thực hiện phép nhân 2 số nguyên dương m và n

• Input: 0m10nB • Output: 0m*nB • Ý tưởng: đặt số 1 sau 0m10n (0m10n1), sau đó chép n số 0 sang phải m lần, mỗi lần xóa đi 1 số 0 bên trái của m • Sau khi m đã được xóa, phép nhân đã được thực hiện xong, xóa tiếp 10n1. Kếu quả còn lại sẽ là B0m*nB

Phân tích:

• Xóa 1 số 0 bên trái của m, dịch đầu đọc sang số n để chuẩn bị cho việc copy n số 0: q00m10n1 ⊢⊢⊢⊢ B0m-11q10n1 • Copy n số 0 sang phải: B0m-11q10n1 ⊢⊢⊢⊢ B0m-11q50n10n • Quay lại trạng thái bắt đầu: B0m-11q50n10n ⊢⊢⊢⊢ Bq00m-110n10n • Chuẩn bị cho việc copy kế tiếp:

B0m-11q50n10n ⊢⊢⊢⊢ B20m-21q10n10n

• Copy n số 0 sang phải ...

8

07/11/2011

4

KỹKỹ thuật

thuật chương

chương trình

trình concon

Thủ tục copy n số 0:

δδδδ(q6, 1) = (q1, 1, R)

Biến đổi hình thái q00m10n1 ⊢⊢⊢⊢ B0m-11q10n1: δδδδ(q6, 0) = (q6, 0, R) δδδδ(q0, 0) = (q6, B, R) Biến đổi hình thái Bi0m-i1q50n10n*i ⊢⊢⊢⊢ Bi+10m-i-11q10n10n*i:

9

07/11/2011

10

CÂU HỎI VÀ BÀI TẬP CHƯƠNG 06 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 06

5

Chương 7:

Ứng dụng automat trong Ứng dụng automat trong ngôn ngữ và thiết kế số ngôn ngữ và thiết kế số

Nội dung:

• Ứng dụng trong trình biên dịch

• Ứng dụng trong thiết kế số

1

Ứng dụng automat trong trong Ứng dụng automat trong trong biên dịch thiết kế trình biên dịch thiết kế trình

Khoa KTMT

Vũ Đức Lung

2

07/11/2011

1

07/11/2011

Xây dựng văn phạm cho ngôn ngữ lập trình

(cid:1)(cid:1) Văn Văn phạphạm đệ qui m đệ qui (cid:2) Cho văn phạm PNC G, với A là ký hiệu không kết thúc và

(cid:3) Nếu α = ∈, đệ qui trái (cid:3) Nếu β = ∈, đệ qui phải

nếu tồn tại A → αAβ thì A là ký hiệu đệ qui và G là văn phạm đệ qui

Khoa KTMT - UIT

TS. Vũ Đức Lung

3

(cid:1)(cid:1) Loại bỏ đệ quy trái: Loại bỏ đệ quy trái: (cid:2) Các phương pháp phân tích từ trên xuống không thể nào xử lý văn phạm đệ qui trái, do đó cần phải dùng một cơ chế biến đổi tương đương để loại bỏ các đệ qui trái.

Khoa KTMT - UIT

TS. Vũ Đức Lung

4

Xây dựng văn phạm cho ngôn ngữ lập trình

2

07/11/2011

Xây dựng văn phạm cho ngôn ngữ lập trình

(cid:1) Ví dụ 2: Loại bỏ đệ quy trái cho văn phạm:

E → TE’ E’ → +TE’ | ∈ T → FT’ T’ → *FT’ | ∈

Khoa KTMT - UIT

TS. Vũ Đức Lung

5

E -> E + T | T T -> T * F | F F -> (E) | id

Xây dựng văn phạm cho ngôn ngữ lập trình

(cid:1) Giải thuật 4.1: Loại bỏ đệ quy trái

Khoa KTMT - UIT

TS. Vũ Đức Lung

6

Nhập: Văn phạm G không có vòng lặp hoặc luật sinh rỗng. Xuất: Văn phạm tương đương G’ không có đệ quy trái. Phương pháp: G’ không còn đệ quy trái nhưng có thể có luật sinh rỗng.

3

07/11/2011

Khoa KTMT - UIT

TS. Vũ Đức Lung

7

Xây dựng văn phạm cho ngôn ngữ lập trình

Xây dựng văn phạm cho ngôn ngữ lập trình

(cid:1) Ví dụ 3: Áp dụng giải thuật 4.1 vào văn phạm sau để loại bỏ

đệ quy trái. S ->Aa | b A -> Ac | Sd | ∈ Các bước thực hiện: - - - Sắp xếp: S, A Thay S vào A: A -> Ac | Aad | bd | ∈ Loại bỏ đệ qui trái:

Khoa KTMT - UIT

TS. Vũ Đức Lung

8

S (cid:4) Aa | b A (cid:4) bdA’ | ∈A’ A’ (cid:4) cA’ | adA’ | ∈

4

Thừa số trái

07/11/2011

(cid:1) Ví dụ 4: Có hai luật sinh:

stmt -> if exp then stmt else stmt | if exp then stmt

Khoa KTMT - UIT

TS. Vũ Đức Lung

9

Tạo văn phạm có thừa số trái

(cid:1) Cả hai luật sinh đều có if dẫn đầu nên ta sẽ không biết chọn luật sinh nào để triển khai. Vì thế để làm chậm lại quyết định lựa chọn ta sẽ tạo ra thừa số trái.

Nhập: Cho văn phạm G. Xuất: Văn phạm G’ có thừa số trái tương đương. Phương pháp: Tìm chuỗi dẫn đầu chung của các vế phải luật sinh, ví dụ:

Khoa KTMT - UIT

TS. Vũ Đức Lung

10

γ là chuỗi không bắt đầu bởi α. Ta thay các luật trên bằng các luật A -> αA’ | γ A’-> β1 | β2 | β3 … | βn

5

Thừa số trái

07/11/2011

(cid:1) Ví dụ 5 : Cho văn phạm như sau

S -> iEtS | iEtSeS | a E -> b

(cid:1) Áp dụng giải thuật trên cho văn phạm phát biểu if, ta có văn

Khoa KTMT - UIT

TS. Vũ Đức Lung

11

Phân tích cú pháp từ trên xuống

phạm yếu tố trái như sau. S -> iEtSS’ | a S’-> eS | ∈ E -> b

Khoa KTMT - UIT

TS. Vũ Đức Lung

12

(cid:1) Phân tích cú pháp đệ quy. (cid:1) Phân tích cú pháp không đệ quy.

6

Phân tích cú pháp đệ quy đi xuống

07/11/2011

(cid:1) Ví dụ 6 : Cho văn phạm G:

S -> cAd A -> ab | a

Khoa KTMT - UIT

TS. Vũ Đức Lung

13

Phân tích cú pháp đoán ỨỨng ng dụdụng ng 11: : Phân tích cú pháp đoán nhận trước đệ quy nhận trước đệ quy

(cid:1) Các bước phân tích cú pháp từ trên xuống:

(cid:1) Loại bỏ đệ quy trái cho văn phạm mà ta thiết kế. (cid:1) Tạo văn phạm có thừa số trái nếu cần thiết. (cid:1) Sơ đồ dịch cho bộ phân tích đoán nhận trước.

token đó.

(cid:2) Nếu có sự truyền trên ký hiệu không kết thúcA thì ta thực hiện một

lệnh gọi thủ tục A.

Khoa KTMT - UIT

TS. Vũ Đức Lung

14

Sơ đồ này có đặc điểm như sau: (cid:2) Mỗi ký hiệu không kết thúc có một sơ đồ. (cid:2) Tên các cạnh là token và các ký hiệu không kết thúc. (cid:2) Sự truyền trên token sẽ được thực hiện nếu ký hiệu nhập trùng với

7

Phân tích cú pháp đoán Phân tích cú pháp đoán nhận trước đệ quy nhận trước đệ quy

07/11/2011

(cid:1) Để xây dựng sơ đồ ta sẽ tiến hành các bước sau đây:

Khoa KTMT - UIT

TS. Vũ Đức Lung

15

(cid:2) Tạo trạng thái bắt đầu và kết thúc. (cid:2) Với mỗi luật sinh có dạng: A -> X1X2…Xn ta xây dựng đường đi từ trạng thái bắt đầu đến trạng thái kết thúc sao cho các cạnh có tên X1, X2, X3…Xn.

Ví dụ 7: Tạo sơ đồ dịch cho văn phạm G

(cid:1)

(cid:1)

Cơ chế hoạt động của bộ phân tích cú pháp đoán nhận trước đệ quy

Khoa KTMT - UIT

TS. Vũ Đức Lung

16

E → E + T | T T → T * F | F F → (E) | id Loại bỏ đệ quy trái trong văn phạm, ta được văn phạm tương đương sau : E -> TE’ E’-> + TE’| ∈ T -> FT’ T’-> *FT’| ∈ F -> (E) | id Sơ đồ dịch của các ký hiệu không kết thúc của G

8

Bộ phân tích cú pháp đoán Bộ phân tích cú pháp đoán nhận trước đệ quy nhận trước đệ quy

07/11/2011

Sơ đồ dịch của các ký hiệu không kết thúc của G

Khoa KTMT - UIT

TS. Vũ Đức Lung

17

Bộ phân tích cú pháp đoán Bộ phân tích cú pháp đoán nhận trước đệ quy nhận trước đệ quy

Ví dụ: phân tích câu id*(id + id)

Khoa KTMT - UIT

TS. Vũ Đức Lung

18

(cid:5) Sơ đồ dịch của các ký hiệu không kết thúc của G đã được thu giảm

9

Giải thuật

Khoa KTMT - UIT

TS. Vũ Đức Lung

19

Bộ phân tích cú pháp LR ỨỨng ng dụdụng ng 22: : Bộ phân tích cú pháp LR

(cid:1)

(cid:1)

(cid:1)

(cid:1)

07/11/2011

Khoa KTMT - UIT

TS. Vũ Đức Lung

20

Các tính chất của phương pháp phân tích LR: Bộ phân tích LR có thể nhận dạng được cấu trúc cú pháp của các ngôn ngữ lập trình do văn phạm phi ngữ cảnh tạo ra. Phương pháp LR là phương pháp tổng quát nhất của phương pháp phân tích đẩy và thu giảm, không bị quay lui từ trước đến giờ. Lớp văn phạm được phân tích bằng phương pháp LR là lớp văn phạm cha, bao trùm lớp văn phạm được phân tích bởi phương pháp đoán nhận trước. Bộ phân tích có khả năng phát hiện lỗi sớm nhất khi nó rà đến ký hiệu nhập từ trái sang phải.

10

Cấu tạo bộ phân tích cú pháp LR

Khoa KTMT - UIT

TS. Vũ Đức Lung

21

Hoạt động

07/11/2011

(cid:1) Stack được dùng để chứa chuỗi ký hiệu có dạng

s0X1s1X2…Xmsm, với sm nằm trên đỉnh stack, Xi được gọi là ký hiệu văn phạm, si là trạng thái. Cặp(si, Xi) sẽ xác định một trị được lưu chứa trong bảng phân tích. Bảng phân tích gồm hai phần biểu thị bởi hàm action và goto. (cid:1) Cấu hình (configuration) của bộ phân tích LR là một cặp (nội dung stack nội dung còn lại của chuỗi nhập)

Khoa KTMT - UIT

TS. Vũ Đức Lung

22

(cid:1) Ví dụ: (s0X1s1…Xisi…Xmsm, aiai+1…an$).

11

Phân tích cú pháp LR

07/11/2011

(cid:1) Nhập: chuỗi nhập w, bảng phân tích action goto của văn phạm G.

(cid:1) Xuất: nếu w thuộc L (G), nó tạo ra sự phân tích từ dưới lên. Ngược lại, bộ phân tích sẽ báo lỗi.

(cid:1) Phương pháp:

Khoa KTMT - UIT

TS. Vũ Đức Lung

23

Phân tích cú pháp LR

Khoa KTMT - UIT

TS. Vũ Đức Lung

24

Thời điểm ban đầu stack có trạng thái s0. Chuỗi w$ nằm trên bộ đệm nhập. Bộ phân tích đặt đầu đọc (con trỏ ip) vào ký hiệu nhập đầu tiên của w.

12

Ví dụ

07/11/2011

Khoa KTMT - UIT

TS. Vũ Đức Lung

25

Bảng phân tích cho văn phạm G

Khoa KTMT - UIT

TS. Vũ Đức Lung

26

Cho văn phạmG (1) E -> E + T (2) E -> T (3) T -> T * F (4) T -> F (5) F -> (E) (6) F -> id Phân tích câu w = id *id + id

13

Ví dụ

Khoa KTMT - UIT

TS. Vũ Đức Lung

27

Xây dựng bảng phân tích SLR

07/11/2011

Định nghĩa: thực thể LR (0) gọi tắt là thực thể của văn phạm G là luật sinh của G với các điểm chấm ở các vị trí nào đó của vế phải. Thí dụ: G có luật sinh A -> XYZ, sẽ cho bốn thực thể: A->•XYZ A->X•YZ A->XY•Z A->XYZ• Nếu A -> ∈ sẽ cho ta thực thể A ->•

Định nghĩa văn phạm gia tố: nếu G là văn phạm có S là ký hiệu

Khoa KTMT - UIT

TS. Vũ Đức Lung

28

mục tiêu, thì G’ là văn phạm gia tố có S’ là ký hiệu mục tiêu và có thêm luật sinh S’->S ngoài các luật sinh trong G

14

Giải thuật tính bao đóng–Closure.

Function closure (I : item) : item; begin J := I; repeat

sinh

for với mỗi thực thể A -> a.Bß trong J và với mỗi luật B -> γ trong G sao cho thực thể B -> •γ chưa có trong J do thêm B -> •γ vào J; until không thể thêm thực thể mới vào J;

closure := J;

end;

Khoa KTMT - UIT

TS. Vũ Đức Lung

29

Ví dụ

07/11/2011

(cid:1) Xét văn phạm gia tố của biểu thức:

Khoa KTMT - UIT

TS. Vũ Đức Lung

30

E' → E E → E + T | T T → T * F | F F → (E) | id

15

Ví dụ

07/11/2011

Khoa KTMT - UIT

TS. Vũ Đức Lung

31

Giải thuật tính goto

Nếu I là tập hợp chỉ gồm văn phạm { E'→ • E } thì closure(I), gọi là I0 bao gồm: E' → • E E → • E + T E → • T T → • T * F T → • F F → • (E) F → • id

(cid:1) Goto(I, X), trong đó I là một tập các mục và X là một ký

hiệu văn phạm là bao đóng của tập hợp các mục A → αX•β sao cho A → α•Xβ € I.

(cid:1) Cách tính goto(I, X): 1. Tạo một tập I' = ∅. 2. Nếu A → α•Xβ € I thì đưa A→ αX•β vào I', tiếp tục quá trình này cho đến khi xét hết tập I.

Khoa KTMT - UIT

TS. Vũ Đức Lung

32

3. Goto(I, X) = closure(I')

16

Ví dụ

07/11/2011

(cid:1) Giả sử I = { E' → E•, E → E • + T }.

Tính goto (I, +) ?

(cid:1) Ta có I' = { E→ E + • T } (theo luật 2)

goto (I, +) = closure(I') bao gồm các mục :

Khoa KTMT - UIT

TS. Vũ Đức Lung

33

E → E + • T (Luật 1) T → • T * F (Luật 2) T → • F (Luật 2) F → • (E) (Luật 2) F → • id (Luật 2)

Giải thuật tính tập tuyển các tập thực thể

Procedure items (G’); begin

C := {closure ({S’->•S}}} repeat for với mỗi tập thực thể I trong C và với mỗi ký hiệu văn phạm X sao cho phép goto(I, X) không rỗng và không có trong C do thêm goto(I, X) vào C; until không thể thêm tập thực thể mới vào C;

Khoa KTMT - UIT

TS. Vũ Đức Lung

34

end;

17

Xây dựng bảng phân tích

(cid:1) (cid:1) (cid:1)

Nhập: văn phạm gia tố G’ Xuất: bảng phân tích SLR với hàm action và goto cho văn phạm G’ Phương pháp:

1. Xây dựng C = {Io, I1, …In}. 2. i là trạng thái đại diện cho tập thực thể Ii.

a. Nếu A -> α•aß là thực thể ở trong Ii và goto(Ii, a) = Ij thì phần tử action[i, a] = shift(j), với a phải là ký hiệu kết thúc. b. Nếu A -> α• ở trong Ii thì action[i, a] = reduce(A -> α) với a là tất cả các ký hiệu nằm trong follow(A). A không phải là S’(ký hiệu mục tiêu mới).

Khoa KTMT - UIT

TS. Vũ Đức Lung

35

Xây dựng bảng phân tích

07/11/2011

c. Nếu S’->S• ở trong Ii thì action [i, $] = accept. 3. Cho tất cả các ký hiệu không kết thúc A. Nếu goto[Ii, A] = Ij thì hàm goto[i, A] = j.

4. Tất cả các phần tử của bảng phân tích không được xác định bằng quy tắc 2 và 3, chúng ta coi là lỗi.

Khoa KTMT - UIT

TS. Vũ Đức Lung

36

5 Trạng thái bắt đầu của bộ phân tích là tập thực thể có chứa thực thể S’-> •S.

18

Ví dụ

Cho văn phạm gia tố G’

E’-> E E -> E + T E -> T T -> T* F T -> F F -> (E) F -> id

Hãy tìm tập C và sơ đồ DFA. Xây dựng bảng phân tích SLR

Khoa KTMT - UIT

TS. Vũ Đức Lung

37

Ví dụ

07/11/2011

(cid:1) Văn phạm gia tố G’:

Khoa KTMT - UIT

TS. Vũ Đức Lung

38

(0) E'→ E (1) E → E + T (2) E → T (3) T → T * F (4) T → F (5) F → (E) (6) F → id

19

Xây dựng tập C

I0 : E'→ • E

E → • E + T E → • T T → • T * F T → • F F → • (E) F → • id

Khoa KTMT - UIT

TS. Vũ Đức Lung

39

Xây dựng tập C

(cid:5) Ban đầu sẽ xét trạng thái I0 cho tập C vừa tạo Tập ký hiệu văn phạm cho I0: “E,T,F,(,id “ (các ký hiệu theo sau dấu • là goto

được=>chọn)

Goto(I0,E) I1= E’->E•

(tìm những luật sinh có •E và đổi thành E•)

E->E•+T

Tính closure(E’->E•) không có kết quả do sau • không có ký hiệu Tính closure(E->E•+T) không có kết quả do sau • là +: ký hiệu kết

thúc, không có luật sinh

=>closure(I1) = Rỗng

Goto(I0,T) I2= E->T•

T->T•*F closure(I2) = rỗng

Goto(I0,F) I3= T->F•

Khoa KTMT - UIT

TS. Vũ Đức Lung

40

07/11/2011

20

Xây dựng tập C

07/11/2011

Goto(I0,() I4= F->(•E)

closure(I4) = closure(F->(•E)) E->•E+T

Khoa KTMT - UIT

TS. Vũ Đức Lung

41

Xây dựng tập C

E->•T T->•T*F T->•F F->•(E) F->•id Goto(I0,id) I5= F->id•

E->E+•T closure(I6) = closure(E+•T)

T->•T*F T->•F F->•(E) F->•id

(cid:5) Xét trên tập I1: Goto(I1,+) I6=

Goto(I2,*) I7=

E->T*•F closure(I6) = closure(T*•F)

F->•(E) F->•id

Khoa KTMT - UIT

TS. Vũ Đức Lung

42

(cid:5) Xét tiếp I2: tập ký tự văn phạm: *

21

Xây dựng bảng phân tích

Tính action của các trạng thái

(cid:1) (cid:5) Tính shift (cid:5) Xét I0: E’->•E E->•E+T E->•T T->•T*F T->•F F->•(E) F->•id Tìm các luật sinh có dạng: A -> α•aß (a là ký tự kết thúc) để tính action. Ở I0 có luật:

F->•(E) có ( là ký tự kết thúc. Ta có goto(I0,() = I4 nên action[0,(] = s4 (shifft(4)) F->•id mà goto(I0,id) = I5 =>action[0,id]=s5

(cid:5) Xét I1: E’->E• E->E•+T

Khoa KTMT - UIT

TS. Vũ Đức Lung

43

Xây dựng bảng phân tích

Xét I2:

E->T• E->T•*F Ta có goto(I2,*)=I7 => action[2,*]=s7

Xét I3: không có dạng A -> α•aß Xét I4:

F->(•E) E->•E+T E->•T T->•T*F T->•F F->•(E) F->•id goto(I4,()=I4 =>action[4,(]=s4 goto(I4,id)=I5 =>action[4,id]=s5

Khoa KTMT - UIT

TS. Vũ Đức Lung

44

07/11/2011

22

Xây dựng bảng phân tích

(cid:5) Xét I5: không có dạng: A -> α•aß (cid:5) Xét I6:

E->E+•T T->•T*F T->•F F->•(E) F->•id goto(I6,()=I4=> action[6,(]=s4 goto(I6,id)=I5=> action[6,id]=s5

(cid:5) Xét I7: E->T*•F F->•(E) F->•id goto(I7,() = I4 =>action[7,(]=s4 goto(I7,id) = I5 =>action[7,id]=s5

Khoa KTMT - UIT

TS. Vũ Đức Lung

45

Xây dựng bảng phân tích

07/11/2011

(cid:5) Xét I8: F->(E•) E->E•+T goto(I8,)) = I10=>action[8,)]=s10 goto(I8,+)=I6=>action[8,+]=s6

E->E+T• T->T•*F goto(I9,*) =I7=>action[9,*]=s7 Xét I10: không có dạng A -> α•aß Xét I11: không có dạng A -> α•aß

Khoa KTMT - UIT

TS. Vũ Đức Lung

46

Xét I9:

23

Tính Follow

(cid:1) FOLLOW(E) = {+, ), $} (cid:1) FOLLOW(T) = {*, +, ), $} (cid:1) FOLLOW(F) = {*, +, ), $}

Khoa KTMT - UIT

TS. Vũ Đức Lung

47

Xây dựng bảng phân tích

(cid:5) Tính Reduce:

Xét các trạng thái mà có luật sinh dạng: A -> α• I0: không có luật sinh dạng A -> α• I1: Có E’->E• thuộc dạng A -> α• mà cũng thuộc dạng: S’->S• vì E là ký hiệu mục

tiêu nên ta có: action[1,$]=accept I2: có E->T• là luật sinh thứ 2 trong G Tính follow(E)={+,),$} =>action[2,+] = action[2,)]= action[2,$] = r2 I3: có T->F• là luật sinh thứ 4 trong G follow(T) = {*,$} U folow(E) = {+,),*,$} Nên action[3,+] = action[3,)] = action[3,*] = action[3,$] = r4 I4: không có luật sinh dạng A -> α• I5: có F->id• là luật sinh thứ 6 trong G follow(F) = follow(T) = {+,),*,$} action[5,+] action[5,)] = action[5,*] = action[5,$] = r6

Khoa KTMT - UIT

TS. Vũ Đức Lung

48

07/11/2011

24

Xây dựng bảng phân tích

07/11/2011

I6,I7,I8 không có luật sinh dạng A -> α• I9: E->E+T• là luật sinh thứ 1 trong G Tính follow(E)={+,),$} action[9,+] = action[9,)] = action[9,$] = r1 I10: E->T*F• là luật sinh 4 Tính follow(E)={+,),$} action[9,+] = action[9,)] = action[9,$] = r4 I11: F-> (E)• là luật sinh 5 follow(F) = {+,),*,$}Các ký hiệu kết thúcCác ký hiệu không kết thúcDò action[0,id] = s5goto(I0,E) =>I1

Khoa KTMT - UIT

TS. Vũ Đức Lung

49

trong thiết Ứng dụng automat trong thiết Ứng dụng automat kế số kế số

Khoa KTMT

Vũ Đức Lung

50

action[11,+] = action[11,)] = action[11,*] = action[11,$] = r5

25

Giới thiệu

07/11/2011

Electronics Systems

Analog Systems Digital Systems

Sequential Combinational

Khoa KTMT

Vũ Đức Lung

51

Giới thiệu (tt)

Synchronuos Asynchronuos

Ngõ vào

Ngõ ra

MẠCH TỔ HỢP

PHẦN TỬ NHỚ

Khoa KTMT

Vũ Đức Lung

52

(cid:5) Mạch logic tuần tự là mạch có các ngõ ra tùy thuộc không chỉ vào trạng thái hiện tại của các ngõ vào mà còn tùy thuộc vào một chuỗi các ngõ vào trước đó.

26

Các mạch chốt

07/11/2011

(cid:5) Flip_Flop: là mạch tuần tự mà nó thường lấy mẫu các ngõ vào và làm thay đổi các ngõ ra tại những thời điểm xác định bởi xung clock.

(cid:5) Latch (chốt): là mạch tuần tự mà nó liên tục xem xét các ngõ

LATCH

Ungated latch

Gated latch

Khoa KTMT

Vũ Đức Lung

53

Ungated SR Latch

vào và làm thay đổi các ngõ ra bất cứ thời điểm nào không phụ thuộc vào xung clock.

S

Q(t+1)

R

Q

.

1

0

0 Q(t) No change

R (Reset)

0

1

0 Clear to 0

1

0

1 Set to 1

Q

.

2

1

1 X Indeterminate

S (Set)

S

Q

R

Q

Khoa KTMT

Vũ Đức Lung

54

(cid:5) Dùng cổng NOR:

27

Ungated SR-Latch (tt)

07/11/2011

S R

Qt+1Qt+1

Q

(cid:5) Dùng cổng NAND:

.

1

S (Set)

Cấm

Q

0 0 0 1 1 0 1 1

1 1 1 0 0 1 Qt Qt

.

2

R (Reset)

S

Q

R

Q

Khoa KTMT

Vũ Đức Lung

55

Gated SR-latch

Ngõ vào cho phép C còn được gọi là ngõ vào xung clock (CK).

Khoa KTMT

Vũ Đức Lung

56

Chốt SR này còn được gọi là chốt SR có ngõ vào xung clock tích cực cao.

28

D latch

Q

D

D D

Q(t+1) Q(t+1)

0 0

0 Clear to 0 0 Clear to 0

Q

C

1 1

1 Set to 1 1 Set to 1

U1

2

U3

D

1

2

3

1

3

_ Q

AND2

NOR2

C

U4

2

U2

2

1

U5

Q

1

3

3

2

1

NOR2

AND2

NOT

Khoa KTMT

Vũ Đức Lung

57

JK latch

07/11/2011

KJ KJ

Q(t+1) Q(t+1)

Q

J

0 0

0 0

Q(t) No change Q(t) No change

C

0 0

1 1

0 Clear to 0 0 Clear to 0

Q

1 1

0 0

1 Set to 1 1 Set to 1

K

)(tQ

1 1

1 1

Complement Complement

Khoa KTMT

Vũ Đức Lung

58

(cid:5) Từ mạch lật SR (cid:5) Khắc phục nhược điểm của SR

29

T latch

07/11/2011

T

Q

T T 0 0

Q(t+1) Q(t+1) Q(t) No change Q(t) No change

Q

C

)(tQ

1 1

Complement Complement

Khoa KTMT

Vũ Đức Lung

59

Flip-flop Chủ tớ

(cid:5) Từ JK latch (cid:5) Nối J với K

(cid:5) Gated latch có nhược điểm: xung clock phải đủ ngắn để đảm bảo nội dung của linh kiện nhớ chỉ cập nhật một lần cho mỗi xung

Master Latch

Slave Latch

S

Sm

Q

Ss

Q

C

S Q C

S Q C

Rs

R

Q

Rm

Q

R

R

Q

Q

Khoa KTMT

Vũ Đức Lung

60

(cid:5) Giải pháp: điều khiển theo cấu hình chủ tớ

30

Flip-flop kích cạnh

07/11/2011

D D

Q Q

Q Q

C C

Q+ Q+ 1 0 0 1

Khoâng ñoåi Khoâng ñoåi

CK D 0 1 x 0 x 1

Clock

Output cannot change

Chuyển tiếp lề dương

Khoa KTMT

Vũ Đức Lung

61

D-FF kích cạnh lên

Biểu đồ trạng thái

Time

Khoa KTMT

(cid:5) Flip-flop D với chuyển tiếp dương:

62

Đồ thị dạng tín hiệu Vũ Đức Lung

31

D-FF kích cạnh xuống

07/11/2011

D

Q

C

Q

Khoa KTMT

Vũ Đức Lung

63

T-FF kích cạnh

Khoa KTMT

Vũ Đức Lung

64

(cid:5) Flip-flop D với chuyển tiếp âm

32

T-FF kích cạnh xuống

Khoa KTMT

Vũ Đức Lung

65

Bảng kích thích của bốn mạch Flip-flop

Q(t)

Q(t+1)

S R

Q(t)

Q(t+1)

D

07/11/2011

0

0

0 X

0

0

0

0

1

1

0

0

1

1

1

0

0

1

1

0

0

1

1

X 0

1

1

1

Q(t)

Q(t+1)

J K

Q(t)

Q(t+1)

T

0

0

0 X

0

0

0

D SR

0

1

1

0

1

1

x

1

0

1

1

0

x

1

1

1

0

1

1

X 0

Khoa KTMT

Vũ Đức Lung

66

JK T

33

Các ngõ vào bất đồng bộ

07/11/2011

(cid:5) Preset (Pr) và Clear (Cl): Các ngõ vào này sẽ làm thay đổi giá

trị ngõ ra tức thời, bất chấp xung clock – Khi ngõ vào Preset tích cực thì ngõ ra Q được set lên 1. – Khi ngõ vào Clear tích cực thì ngõ ra Q được xóa về 0.

Pr

D

Q

CK

Q

Cl

Khoa KTMT

Vũ Đức Lung

67

Chuyển đổi giữa các loại Flip-flops

(cid:5) Vd: IC 74LS47 gồm 2 D-FF

Q(t) là các biến của hàm

– Rút gọn hàm – Vẽ Mạch

(cid:5) Đa số trên thực tế các loại flip-flop được sản xuất: D và JK (cid:5) Quá trình chuyển đổi gồm các bườc sau: – Lập bảng kích thích của cả 2 loại flip-flop – Coi các ngõ vào của FF nguồn là hàm, còn các ngõ vào của FF đích +

– Chuyển đổi Flip-flop JK thành T – JK thành D – RS thành JK

Khoa KTMT

Vũ Đức Lung

68

(cid:5) Ví dụ:

34

Ứng dụng của các Flip-flop

07/11/2011

Khoa KTMT

Vũ Đức Lung

69

Bộ Đếm (COUNTER)

(cid:5) Công tắc triệt tiêu bounce (cid:5) Các bộ ghi (cid:5) Các bộ đếm (cid:5) Bộ nhớ truy cập ngẫu nhiên

(cid:5) Bộ đếm là hệ tuần tự có 1 ngõ vào xung clock và nhiều ngõ ra. Bộ đếm bao gồm nhiều Flip-Flop ghép lại với nhau, và các ngõ ra của FF chính là các ngõ ra của bộ đếm

Q2Q1Q0

000

(cid:5) Khái niệm: Trạng thái của bộ đếm, modulo của bộ đếm. (cid:5) Nếu m = 2n thì ta có bộ đếm đầy đủ, ngược lại nếu m < 2n thì ta có bộ đếm không đầy đủ

100

001

m = 5

011

101

Khoa KTMT

Vũ Đức Lung

70

(cid:5) Vd: Bộ đếm nhị phân 3 bit có giản đồ trạng thái sau:

35

Bộ đếm nối tiếp (Asynchronous Counter)

07/11/2011

Q0 (LSB)

Q1

Q2 (MSB)

T

Q

T

Q

T

Q

1

1

1

(cid:5) Bộ đếm lên (Count Up):

.

.

CK

Q

CK

Q

CK

Q

CK

CK

(LSB) Q0

Q1

(MSB) Q2

Vũ Đức Lung

71

Khoa KTMT

Bộ đếm nối tiếp (tt)

Q0 (LSB)

Q1

Q2 (MSB)

J

J

J

Q

Q

Q

1

1

1

.

.

.

.

.

CK

CK

CK

CK

K

Q

Q

K

Q

K

CK

(LSB) Q0

Q1

(MSB) Q2

Khoa KTMT

Vũ Đức Lung

72

(cid:5) Bộ đếm xuống (Count Down):

36

Bộ đếm nối tiếp (tt)

07/11/2011

Q0 (LSB)

Q1

Q2 (MSB)

.

1

1

1

Pr

Pr

Pr

T

Q

T

Q

T

Q

1

1

1

.

.

.

CK

Q

CK

Q

CK

Q

Cl

Cl

Cl

CK

.

Khoa KTMT

Vũ Đức Lung

73

Bộ đếm song song (Synchronous Counter)

(cid:5) Bộ đếm không đầy đủ (m < 2n): Dùng trạng thái cuối để tạo ra tín hiệu tác động tích cực vào các ngõ vào bất đồng bộ Preset hoặc Clear để đưa bộ đếm trở về trạng thái ban đầu (cid:5) Vd: Sử dụng T-FF có ngõ vào Preset và Clear tích cực mực thấp, thiết kế bộ đếm từ giá trị 0 đến 4 (m=5).

- Từ phát biểu bài toán xác định số FF cần dùng và dãy đếm. - Lập bảng chuyển trạng thái chỉ rõ mối quan hệ giữa trạng thái hiện tại và

trạng thái kế tiếp (dựa vào dãy đếm).

- Tìm các giá trị ngõ vào FF cần phải có từ giá trị hiện tại Q(t) và kế tiếp

Q(t+1) của từng FF (dựa vào bảng kích thích của mỗi loại FF).

- Tìm biểu thức rút gọn của mỗi ngõ vào FF phụ thuộc vào các biến trạng

thái hiện tại.

- Thực hiện sơ đồ logic.

(cid:5) Các bước thiết kế:

Khoa KTMT

Vũ Đức Lung

74

(cid:5) Vd: Sử dụng T-FF kích theo cạnh lên, thiết kế bộ đếm có dãy đếm sau: Q2Q1Q0 = 010, 101, 110, 001, 000, 111, 100, 011, 010, …

37

Bộ đếm song song (tt)

07/11/2011

(cid:5) Bộ đếm không đầy đủ (m < 2n): (cid:5) Khi thiết kế bộ đếm không đầy đủ, thì các trạng thái có trong

Q2Q1Q0

000

100

001

m = 5

vòng đếm sẽ thiết kế như bộ đếm đầy đủ; còn các trạng thái dư không có trong vòng đếm sẽ giải quyết theo 2 cách sau: * Cách 1: Các trạng thái dư không có vòng đếm có trạng thái kế tiếp là tùy định.

011

101

Khoa KTMT

Vũ Đức Lung

75

Bộ đếm song song (tt)

(cid:5) Vd: Thiết kế bộ đếm dùng D-FF cạnh lên, có ngõ vào Pr và CL tích cực cao, có giản đồ trạng thái sau:

Q2Q1Q0

000

010

111

100

001

m = 5

110

011

101

Khoa KTMT

Vũ Đức Lung

76

(cid:5) * Cách 2: Cho các trạng thái dư không có vòng đếm có trạng thái kế tiếp là 1 trong những trạng thái có trong vòng đếm. (cid:5) Vd: Cho 3 trạng thái dư không có trong vòng đếm có trạng thái kế tiếp như hình vẽ

38

Phân tích bộ đếm song song

07/11/2011

(cid:5) Từ sơ đồ logic của bộ đếm xác định hàm kích thích (biểu thức của các ngõ vào) của từng FF phụ thuộc vào các ngõ ra Qi. (cid:5) Lập bảng trạng thái: từ trạng thái hiện tại Qi và giá trị ngõ vào ta xác định được trạng thái kế tiếp của FF Q+i.

Khoa KTMT

Vũ Đức Lung

77

Phân tích bộ đếm song song (tt)

(cid:5) Từ bảng chuyển trạng thái xác định được giản đồ trạng thái hoặc khảo sát giản đồ xung của bộ đếm.

Q1

Q0 (LSB)

Q2 (MSB)

.

.

J2

Q2

J1

Q1

J0

Q0

. . .

CK2

CK1

CK2

.

CK

K2

Q2

K1

Q1

K0

Q0

1

1

.

.

Khoa KTMT

Vũ Đức Lung

78

(cid:5) Vd: Hãy xác định giản đồ trạng thái của bộ đếm sau:

39

Bộ Đếm Thanh Ghi Dịch (Shift Register Counter)

07/11/2011

(cid:5) Bộ đếm vòng (Ring Counter): ngõ ra của thanh ghi dịch hồi

Q1

Q0

D2

Q2

D1

Q1

D0

Q0

.

.

.

CK2

Q2

CK1

Q1

CK0

Q0

.

CK

.

Khoa KTMT

Vũ Đức Lung

79

Bộ Đếm Thanh Ghi Dịch (tt)

tiếp về ngõ vào FF. Q2

(cid:5) Bộ đếm vòng xoắn (Twisted-ring Counter): còn gọi bộ đếm

Q1

Q0

Q2

D2

Q2

D1

Q1

D0

Q0

Johnson Giống như bộ đếm vòng nhưng lấy ngõ ra đảo hồi tiếp về ngõ vào FF.

.

.

CK2

Q2

CK1

Q1

CK0

Q0

.

CK

.

Khoa KTMT

Vũ Đức Lung

80

40

Máy trạng thái Máy trạng thái

07/11/2011

Khoa KTMT

Vũ Đức Lung

81

Khái niệm máy trạng thái

(cid:5) Máy trạng thái kiểu Moore (cid:5) Máy trạng thái kiểu Mealy

(cid:5) Hệ tuần tự ~ Máy trạng thái thuật toán (algorithmic state

machine) ~ Máy trạng thái (State Machine - SM) – Giản đồ trạng thái – Lưu đồ SM

State Machine

MOORE Q+ = f(Q,X) Z = g(Q)

MEALY Q+ = f(Q,X) Z = g(Q, X)

Khoa KTMT

Vũ Đức Lung

82

(cid:5) Dùng điều khiển một HTS thực hiện từng bước một

41

Máy MOORE

07/11/2011

FF

Mạch Logic Mạch Logic tổ hợp tổ hợp

Mạch Logic tổ hợp

Clock

Khoa KTMT

Vũ Đức Lung

83

Máy MEALY

XX ZZ

Mạch Logic tổ hợp

FF

Mạch Logic tổ hợp

Clock

Khoa KTMT

Vũ Đức Lung

84

ZZ XX

42

Lưu đồ máy trạng thái

07/11/2011

010

Output list

Output List

S0

Hộp xuất theo điều kiện

Hộp trạng thái

0

1

Điều kiện X

Hộp điều kiện

Khoa KTMT

Vũ Đức Lung

85

Lưu đồ máy trạng thái (tt)

(cid:5) Các thành phần chính của lưu đồ SM

X2

Khoa KTMT

Vũ Đức Lung

86

(cid:5) Gồm các khối SM (cid:5) VD:

43

Lưu đồ máy trạng thái (tt)

07/11/2011

???

X2

Khoa KTMT

Vũ Đức Lung

87

Lưu đồ máy trạng thái (tt)

(cid:5) Một khối SM có thể có nhiều cách tương đương

S0

1

S0

0

1

0

1

0

Khoa KTMT

Vũ Đức Lung

88

(cid:5) Khối song song khối nối tiếp

44

Chuyển giản đồ trạng thái sang lưu đồ SM

07/11/2011

(cid:5) Ví dụ cho giản đồ sau:

Khoa KTMT

Vũ Đức Lung

89

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

(cid:5) Hãy chuyển giản đồ sang lưu đồ SM

(cid:5) Các bước thành lập: – Xác định bài toán – Xác định tín hiệu vào và ra – Xây dựng lưu đồ SM

Khoa KTMT

Vũ Đức Lung

90

(cid:5) Ví dụ: Vẽ lưu đồ SM của hệ kiểm tra chẵn lẻ số bit nhận được ở ngõ vào x, nếu số bit 1 nhận được từ ngõ vào x là số lẻ thì Z=1, là số chẵn thì Z=0.

45

Thiết kế SM bằng lưu đồ SM

07/11/2011

Thiết kế một mạch dãy đồng bộ thực hiện nhiệm vụ kiểm tra dãy tín hiệu vào ở dạng nhị phân có độ dài bằng 3 được đưa vào liên tiếp vào x. Nếu dãy tín hiệu vào có dạng 010 hoặc 011 hoặc 110 hoặc 111 thì tín hiệu ra Z=1 để báo hiệu là mạch đã nhận được một trong các dãy tín hiệu vào đó

Khoa KTMT

Vũ Đức Lung

91

Thiết kế SM bằng lưu đồ SM

(cid:5) Các bước thiết kế: – Xác định bài toán – Xác định tín hiệu vào và ra – Xây dựng lưu đồ SM, bảng trạng thái và tín hiệu ra – Tối thiểu các trạng thái dùng phương pháp Caldwell – Mã hóa trạng thái – Tìm hệ phương trình của mạch dựa vào bảng trạng thái rút gọn – Vẽ sơ đồ (cid:5) Ví dụ thiết kế:

Thiết kế một mạch dãy đồng bộ nhận biết dãy tín hiệu vào, tín hiệu vào được đưa liên tiếp ở đầu vào X của mạch theo dạng nhị phân, mỗi lần dãy tín hiệu vào là 101, mạch sẽ cho ra tín hiệu Z=1, các bít dữ liệu vào được đồng bộ với xung nhịp Clock.

Khoa KTMT

Vũ Đức Lung

92

(cid:5) Ví dụ 2: Thiết kế bằng hai loại Moore và Mealy

46

Các ví dụ thiết kế

07/11/2011

Lối đi vào

Lối đi ra

X1 X2

Khoa KTMT

Vũ Đức Lung

93

Các ví dụ thiết kế (tt)

(cid:5) VD1: Thiết kế mạch đếm để đếm số người vào thăm một viện bảo tàng và hiển thị số người hiện đang bên trong bảo tàng , mạch gồm 2 LED sáng X1 và X2 được bố trí như hình vẽ. Mạch thiết kế sao cho mỗi lần đếm được một người

bơm nước vào một ống nước nhờ 2 bơm p1 và P2, cả 2 bơm được mở để bơm nước khi mực nước ở dưới mức 1 và vẫn mở cho đến khi chưa đạt mức 2. Khi vừa đạt mức 2 thì bơm P1 ngắt, còn P2 vẫn bơm. Và P1 vẫn ngắt cho đến khi nước lại ở dưới mức 1, P2 vẫn mở, chỉ khi nước đạt mức3 thì P2 mới ngắt. Và P2 vẫn ngắt, chỉ mở khi nuớc lại xuống dưới mức 1

Khoa KTMT

Vũ Đức Lung

94

(cid:5) VD2: Thiết kế mạch điều khiển

47

Điều khiển bơm nước

07/11/2011

Khoa KTMT

Vũ Đức Lung

95

(cid:5) Mã hoá trạng thái: + a=1 khi mức nước lớn hơn huặc bằng mức 1, trường hợp khác a=0 + b=1 khi mức nước lớn hơn huặc bằng mức 2, trường hợp khác b=0 + c=1 khi mức nước lớn hơn huặc bằng mức 3, trường hợp khác c=0 + P=1 : Bơm mở; P=0 : bơm đóng

96

CHƯƠNG 07 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 07 CÂU HỎI VÀ BÀI TẬP

48