Tải bản đầy đủ (.ppt) (45 trang)

ĐIỆN tử VIỄN THÔNG 3 6 VHDL FSM khotailieu

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 (516.26 KB, 45 trang )

CHƯƠNG 3
NGÔN NGỮ MÔ TẢ PHẦN CỨNG
 3.1. Giới thiệu VHDL
 3.2. Cấu trúc mã lệnh
 3.3. Các kiểu dữ liệu
 3.4. Các phép toán và thuộc tính
 3.5. Code song song/Code tuần tự
 3.6. Máy trạng thái hữu hạn FSM


3.6. Máy trạng thái hữu hạn FSM


3.6.1. Thiết kế mạch số tuần tự - FSM



3.6.2. Mô tả FSM trong VHDL


3.6.1. Thiết kế mạch số tuần tự - FSM


Máy trạng thái hữu hạn Finite State Machine (FSM)



FSM loại Moore (phụ thuộc vào trạng thái)




FSM loại Mealy (phụ thuộc vào trạng thái + tín hiệu vào)



Các bước thiết kế:

Bước 1: Vẽ sơ đồ trạng thái
Bước 2: Tối thiểu hoá số lượng các trạng thái
Bước 3: Mã hoá trạng thái
Bước 4: Lựa chọn flip-flop
Bước 5: Thực hiện mạch logic tổ hợp
Bước 6: Phân tích tín hiệu theo thời gian

3


3.6.1. Thiết kế mạch số tuần tự - FSM


Ví dụ: Thiết kế một bộ đếm 4. Bộ đếm sẽ đếm khi có tín hiệu CE=1 (Count Enable) và ngừng đếm khi CE= 0.



Bước 1: Vẽ sơ đồ trạng thái FSM

CE=0

CE=0
Count=0


CE=1

CE=1

CE=1
CE=0

Count=3

Count=2
CE=1

4

Count=1

CE=0


3.6.1. Thiết kế mạch số tuần tự - FSM
Chỉ chuyển trạng thái tại sườn lên của xung nhịp
Tại sườn lên của xung nhịp, chỉ được phép 1 điều kiện chuyển trạng thái xảy ra
CE=0
CE=0
Count=0

CE=1

CE=1


CE=1
CE=0

Count=1

Count=3

Count=2
CE=1

5

1. Ta đang ở trạng thái “Count=0”
2. CE = 0: đợi ở chân của sườn lên của xung nhịp
3. CE=1: đợi ở chân của 1 sườn lên khác nhưng chưa đếm
4. Sườn lên của xung nhịp: chuyển sang trạng thái “Count=1”, CE vẫn =1
5. CE = 0: đợi ở chân của 1 sườn lên khác
6. Sườn lên của xung nhịp: chyển sang “Count=1”, với CE=0

CE=0


3.6.1. Thiết kế mạch số tuần tự - FSM


Bước 2: Tối thiểu hoá số trạng thái



Bước 3: Mã hoá các trạng thái


CE=0

CE=0
Q1Q0=00

CE=1

CE=1

CE=1
CE=0

Q1Q0=11

Q1Q0=10
CE=1

6

Q1Q0=01

CE=0


3.6.1. Thiết kế mạch số tuần tự - FSM


Bước 4: Chọn loại flip-flop. Ở đây để đơn giản ta chọn loại D




Bước 5: Thực hiện mạch

7


3.6.1. Thiết kế mạch số tuần tự - FSM


Chuyển FSM sang bảng trạng thái kế tiếp

CE=0

CE=0
Q1Q0=00

CE=1

CE=1

CE=1
CE=0

Q1Q0=11

Q1Q0=10
CE=1

8


Q1Q0=01

CE=0


3.6.1. Thiết kế mạch số tuần tự - FSM


Xác định các hàm đầu vào flip-flop D

Present state
Q1Q0

Next state
Q 1nQ 0n
CE=0
CE=1
00
01
01
10
10
11
11
00

00
01
10

11
Excitation table
for D flip-flop
Q
0
0
1
1

9

Q(next) D
0
1
0
1

0
1
0
1

⇒ D to be applied
is identical to Qn

Q0
Q1n=D1

CE


Q0
Q1

0

0

1

1

0

1

0

1

Q0n=D0

CE

Q1
0

1

1


0

1

0

0

1


3.6.1. Thiết kế mạch số tuần tự - FSM


Thực hiện:

Q0
Q1n=D1

CE

Q0
Q1

0

0

1


1

0

1

0

1

Q0n=D0

CE

Q1
0

1

1

0

1

0

0

1


CE Q1 Q0
Q1n

Q1
D1
Q’

Q0n

Q0
D0
Q’

10


3.6.1. Thiết kế mạch số tuần tự - FSM


Bước 6: Phân tích tín hiệu theo thời gian

CE Q1 Q0
Q1n

Q1
D1
Q’

Q0n


Q0
D0
Q’

Clk
CE
Q1
Q0
11


3.6.1. Thiết kế mạch số tuần tự
FSM loại Moore


Ví dụ: Thiết kế bộ đếm 4, đếm đến 3 thì báo



Bước 1: Vẽ sơ đồ trạng thái FSM:

CE=0

CE=0
Count=0
Y=0

CE=1


CE=1

CE=1
CE=0

12

Count=3
Y=1

Count=1
Y=0

CE=1

Count=2
Y=0

CE=0


3.6.1 Thiết kế mạch số tuần tự
FSM loại Moore


Đặc điểm:

Tín hiệu đầu ra được xác định tại mỗi trạng thái
Tín hiệu ra chỉ phụ thuộc vào trạng thái hiện tại
mà không phụ thuộc vào tín hiệu vào

Do đó, giá trị tín hiệu ra được ghi ở bên trong
vòng tròn biểu diễn trạng thái

13


2.3 Thiết kế mạch số tuần tự
FSM loại Moore


Bước 2: Tối thiểu hoá số lượng trạng thái



Bước 3: Mã hoá trạng thái

CE=0

CE=0
Q1Q0=00
Y=0

CE=1

CE=1

CE=1
CE=0

14


Q1Q0=11
Y=1

Q1Q0=01
Y=0

CE=1

Q1Q0=10
Y=0

CE=0


3.6.1. Thiết kế mạch số tuần tự
FSM loại Moore


Bước 4: Chọn loại flip-flop. Ở đây để đơn giản ta chọn loại D



Bước 5: Thực hiện mạch

15


3.6.1.Thiết kế mạch số tuần tự
FSM loại Moore



Chuyển FSM sang bảng trạng thái kế tiếp

CE=0

CE=0
Q1Q0=00
Y=0

CE=1

Q1Q0=01
Y=0

CE=1

CE=1
CE=0

Present state
Q1Q0

16

00
01
10
11


Q1Q0=11
Y=1

Next state
Q 1nQ 0n
CE=0
CE=1
00
01
01
10
10
11
11
00

CE=1

Q1Q0=10
Y=0

Outputs
Y
0
0
0
1

CE=0


Y chỉ phụ thuộc trạng thái
hiện tại, không phụ
thuộc vào tín hiệu vào


3.6.1. Thiết kế mạch số tuần tự
FSM loại Moore


Xác định các hàm đầu vào flip-flop D

Present state
Q1Q0

Next state
Q 1nQ 0n
CE=0
CE=1
00
01
01
10
10
11
11
00

00
01
10

11

Excitation table
for D flip-flop
Q
0
0
1
1

17

0
1
0
1

⇒ D to be applied
is identical to Qn

0
0
0
1

Q0
Q1n=D1

Q(next) D
0

1
0
1

Outputs
Y

CE

Q0
Q0n=D0

Q1
0

0

1

1

0

1

0

1

Y

Q1

Q0
0

0

0

1

CE

Q1
0

1

1

0

1

0

0

1



3.6.1. Thiết kế mạch số tuần tự
FSM loại Moore


Thực hiện mạch:

Q0
Q1n=D1

CE

Q0
Q1

0

0

1

1

0

1

0

1


Q0n=D0

CE

Q1
0

1

1

0

1

0

0

1

Y
Q1

Q0
0

0


0

1

CE Q1 Q0
Q1n

Q1
D1
Q’

Q0n

Q0
D0
Q’

18

Y


3.6.1. Thiết kế mạch số tuần tự
FSM loại Moore


Bước 6: Phân tích tín hiệu theo thời gian

CE Q1 Q0
Q1n


Q1
D1
Q’

Q0n

Q0
D0
Q’

Clk
CE
Q1
Q0
19

Y

Y


3.6.1.Thiết kế mạch số tuần tự
FSM loại Mealy


Ví dụ: Thiết kế bộ đếm 4, nếu tín hiệu đếm CE=1 và giá trị đếm =3 thì tín hiệu ra Y=1




Bươc 1: Vẽ sơ đồ trạng thái FSM:

CE=0/Y=0

CE=0/Y=0
Count=0

CE=1/Y=0

CE=1/Y=0

CE=1/Y=1
CE=0/Y=0

Count=2 CE=0/Y=0

Count=3
CE=1/Y=0

20

Count=1


3.6.1. Thiết kế mạch số tuần tự
FSM loại Mealy


Đặc điểm:


 Tín hiệu ra được xác định cho mỗi trạng thái và
các tín hiệu vào tại trạng thái đó
 Tín hiệu ra phụ thuộc vào trạng thái đầu hiện tại
và các giá trị đầu vào tại trạng thái đó
 Do đó giá trị tín hiệu ra được ghi tại mũi tên
chuyển trạng thái

21


3.6.1. Thiết kế mạch số tuần tự
FSM loại Mealy


Bước 2: Tối thiểu hoá số lượng trạng thái



Bước 3: Mã hoá trạng thái

CE=0/Y=0

CE=0/Y=0
Q1Q0=00

CE=1/Y=0

CE=1/Y=0

CE=1/Y=1

CE=0/Y=0

Q1Q0=10 CE=0/Y=0

Q1Q0=11
CE=1/Y=0

22

Q1Q0=01


3.6.1. Thiết kế mạch số tuần tự
FSM loại Mealy


Bước 4: Chọn loại flip-flop. Ở đây để đơn giản ta chọn loại D



Bước 5: Thực hiện mạch

23


2.3 Thiết kế mạch số tuần tự
FSM loại Mealy


Chuyển FSM sang bảng trạng thái kế tiếp


CE=0/Y=0

CE=0/Y=0
Q1Q0=00

CE=1/Y=0

Q1Q0=01

CE=1/Y=0

CE=1/Y=1
CE=0/Y=0 Q1Q0=11

Q1Q0=10 CE=0/Y=0

CE=1/Y=0
Present state
Q1Q0

24

00
01
10
11

Next state/Outputs
Q 1nQ 0n/Y

CE=0
CE=1
00/0
01/0
01/0
10/0
10/0
11/0
11/0
00/1

Y phụ thuộc vào trạng thái
hiện tại, và phụ
thuộc vào cả tín hiệu vào


2.3 Thiết kế mạch số tuần tự
FSM loại Mealy


Xác định các hàm đầu vào flip-flop D

Present state
Q1Q0

Next state/Outputs
Q 1n Q 0n/Y
CE=0
CE=1
00/0

01/0
01/0
10/0
10/0
11/0
11/0
00/1
Q0

00
01
10
11
Excitation table
for D flip-flop
Q
0
0
1
1

25

Q1n=D1

Q(next) D
0
1
0
1


0
1
0
1

⇒ D to be applied
is identical to Qn

CE

Q1
0

0

1

1

0

1 0
Q0

1

Y

CE


Q1
0

0

0

0

0

0

1

0

Q0

Q0n=D0

CE

Q1
0

1

1


0

1

0

0

1


×