45
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 CHƯƠNG 3 NGÔN NGỮ MÔ TẢ PHẦN CỨNG

98710374-3-6-VHDL-FSM

Embed Size (px)

Citation preview

Page 1: 98710374-3-6-VHDL-FSM

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

CHƯƠNG 3 NGÔN NGỮ MÔ TẢ PHẦN CỨNG

Page 2: 98710374-3-6-VHDL-FSM

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

• 3.6.2. Mô tả FSM trong VHDL

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

Page 3: 98710374-3-6-VHDL-FSM

3

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

Page 4: 98710374-3-6-VHDL-FSM

4

• 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

Count=0

CE=0 CE=0

CE=0 CE=0

Count=1

CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

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

Page 5: 98710374-3-6-VHDL-FSM

5

Count=0

CE=0 CE=0

CE=0 CE=0

Count=1

CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

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

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

Count=0

CE=0 CE=0

CE=0 CE=0

Count=1

CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

Count=0

CE=0 CE=0

CE=0 CE=0

Count=1

CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

Count=0

CE=0 CE=0

CE=0 CE=0

Count=1

CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

Count=0

CE=0 CE=0

CE=0 CE=0

Count=1

CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

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

Page 6: 98710374-3-6-VHDL-FSM

6

Q1Q

0=00

CE=0 CE=0

CE=0 CE=0

Q1Q

0=01

CE=1

Q1Q

0=10

CE=1

Q1Q

0=11

CE=1

CE=1

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

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

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

Page 7: 98710374-3-6-VHDL-FSM

7

• 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

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

Page 8: 98710374-3-6-VHDL-FSM

8

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

Q1Q

0=00

CE=0 CE=0

CE=0 CE=0

Q1Q

0=01

CE=1

Q1Q

0=10

CE=1

Q1Q

0=11

CE=1

CE=1

Present state Next state

Q1Q

0 Q

1nQ

0n

CE=0 CE=1

00 00 01

01 01 10

10 10 11

11 11 00

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

Page 9: 98710374-3-6-VHDL-FSM

9

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

Q1Q

0Q

1nQ

0n

CE=0 CE=1

00 00 01

01 01 10

10 10 11

11 11 00

0 0 1 1

0 1 0 1 CE

Q1n

=D1

Q0

Q1

Q Q(next) D

0 0 0

0 1 1

1 0 0

1 1 1

Excitation table

for D flip-flop

D to be applied

is identical to Qn

0 1 1 0

1 0 0 1 CE

Q0n

=D0

Q0

Q1

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

Page 10: 98710374-3-6-VHDL-FSM

10

• Thực hiện:

0 0 1 1

0 1 0 1 CE

Q1n

=D1

Q0

Q1

0 1 1 0

1 0 0 1 CE

Q0n

=D0

Q0

Q1

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

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

Page 11: 98710374-3-6-VHDL-FSM

11

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

1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Clk

CE

Q1

Q0

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

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

Page 12: 98710374-3-6-VHDL-FSM

12

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:

Count=0

Y=0

CE=0 CE=0

CE=0 CE=0

Count=1

Y=0

CE=1

Count=2

Y=0

CE=1

Count=3

Y=1

CE=1

CE=1

Page 13: 98710374-3-6-VHDL-FSM

13

• Đặ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

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

FSM loại Moore

Page 14: 98710374-3-6-VHDL-FSM

14

Q1Q

0=00

Y=0

CE=0 CE=0

CE=0 CE=0

Q1Q

0=01

Y=0

CE=1

Q1Q

0=10

Y=0

CE=1

Q1Q

0=11

Y=1

CE=1

CE=1

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

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

2.3 Thiết kế mạch số tuần tự

FSM loại Moore

Page 15: 98710374-3-6-VHDL-FSM

15

• 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

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

FSM loại Moore

Page 16: 98710374-3-6-VHDL-FSM

16

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

Q1Q

0=00

Y=0

CE=0 CE=0

CE=0 CE=0

Q1Q

0=01

Y=0

CE=1

Q1Q

0=10

Y=0

CE=1

Q1Q

0=11

Y=1

CE=1

CE=1

Present state Next state Outputs

Q1Q

0Q

1nQ

0nY

CE=0 CE=1

00 00 01 0

01 01 10 0

10 10 11 0

11 11 00 1

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

Page 17: 98710374-3-6-VHDL-FSM

17

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

0 0 1 1

0 1 0 1 CE

Q1n

=D1

Q0

Q1

Q Q(next) D

0 0 0

0 1 1

1 0 0

1 1 1

Excitation table

for D flip-flop

D to be applied

is identical to Qn

0 1 1 0

1 0 0 1 CE

Q0n

=D0

Q0

Q1

Present state Next state Outputs

Q1Q

0Q

1nQ

0nY

CE=0 CE=1

00 00 01 0

01 01 10 0

10 10 11 0

11 11 00 1

0 0

0 1

Y

Q1

Q0

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

FSM loại Moore

Page 18: 98710374-3-6-VHDL-FSM

18

• Thực hiện mạch:

0 0 1 1

0 1 0 1 CE

Q1n

=D1

Q0

Q1

0 1 1 0

1 0 0 1 CE

Q0n

=D0

Q0

Q1

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

0 0

0 1

Y

Q1

Q0

Y

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

FSM loại Moore

Page 19: 98710374-3-6-VHDL-FSM

19

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

1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

Clk

CE

Q1

Q0

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

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

FSM loại Moore

Page 20: 98710374-3-6-VHDL-FSM

20

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:

Count=0

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

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

Count=1

CE=1/Y=0

Count=2

CE=1/Y=0

Count=3

CE=1/Y=0

CE=1/Y=1

Page 21: 98710374-3-6-VHDL-FSM

21

• Đặ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

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

FSM loại Mealy

Page 22: 98710374-3-6-VHDL-FSM

22

Q1Q

0=00

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

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

Q1Q

0=01

CE=1/Y=0

Q1Q

0=10

CE=1/Y=0

Q1Q

0=11

CE=1/Y=0

CE=1/Y=1

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

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

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

FSM loại Mealy

Page 23: 98710374-3-6-VHDL-FSM

23

• 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

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

FSM loại Mealy

Page 24: 98710374-3-6-VHDL-FSM

24

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

Q

1Q

0=00

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

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

Q1Q

0=01

CE=1/Y=0

Q1Q

0=10

CE=1/Y=0

Q1Q

0=11

CE=1/Y=0

CE=1/Y=1

Present state Next state/Outputs

Q1Q

0Q

1nQ

0n/Y

CE=0 CE=1

00 00/0 01/0

01 01/0 10/0

10 10/0 11/0

11 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

Page 25: 98710374-3-6-VHDL-FSM

25

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

0 0 1 1

0 1 0 1 CE

Q1n

=D1

Q0

Q1

Q Q(next) D

0 0 0

0 1 1

1 0 0

1 1 1

Excitation table

for D flip-flop

D to be applied

is identical to Qn

0 1 1 0

1 0 0 1 CE

Q0n

=D0

Q0

Q1

Present state Next state/Outputs

Q1Q

0Q

1nQ

0n/Y

CE=0 CE=1

00 00/0 01/0

01 01/0 10/0

10 10/0 11/0

11 11/0 00/1

0 0 0 0

0 0 1 0 CE

Y

Q0

Q1

2.3 Thiết kế mạch số tuần tự

FSM loại Mealy

Page 26: 98710374-3-6-VHDL-FSM

26

• Thực hiện mạch:

0 0 1 1

0 1 0 1 CE

Q1n

=D1

Q0

Q1

0 1 1 0

1 0 0 1 CE

Q0n

=D0

Q0

Q1

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

0 0 0 0

0 0 1 0 CE

Y

Q0

Q1

Y

2.3 Thiết kế mạch số tuần tự

FSM loại Mealy

Page 27: 98710374-3-6-VHDL-FSM

27

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

Clk

CE

Q1

Q0

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

CE Q1 Q

0

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

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

FSM loại Mealy

Page 28: 98710374-3-6-VHDL-FSM

28

3.6.1. Thiết kế mạch số tuần tự Mô hình FSM loại Moore

D

Clk

Q

S*=F(S,I)

Mạch logic

tổ hợp

cho trạng

thái kế

tiếp

O=H(S)

Mạch logic

tổ hợp

cho tín

hiệu ra

D

Clk

Q

D

Clk

Q

Clock Next

State S*

Current

State S

Outputs

O

Inputs I

Page 29: 98710374-3-6-VHDL-FSM

29

3.6.1. Thiết kế mạch số tuần tự Mô hình FSM loại Mealy

D

Clk

Q

S*=F(S,I)

Mạch logic

tổ hợp

cho trạng

thái kế

tiếp

O=H(S,I)

Mạch logic

tổ hợp

cho tín

hiệu ra

D

Clk

Q

D

Clk

Q

Clock Next State S* Current

State S

Outputs

O

Inputs I

Page 30: 98710374-3-6-VHDL-FSM

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

• 3.6.2. Mô tả FSM trong VHDL

Giới thiệu

Kiểu thiết kế thứ nhất

Kiểu thiết kế thứ hai

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

Page 31: 98710374-3-6-VHDL-FSM

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

3.6.2. Mô tả FSM trong VHDL

3.6.2.1. Giới thiệu

3.6.2.2. Kiểu thiết kế thứ nhất

3.6.2.3. Kiểu thiết kế thứ hai

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

Page 32: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

3.6.2.1. Giới thiệu

FSM gồm 2 phần

Phần mạch tổ hợp

Có 2 đầu vào: Pr_state , Input

Và 2 đầu ra: Nx_state, Output

Phần mạch tuần tự

Có 3 đầu vào: Nx_state, clock, reset

Và 1 đầu ra: Pr_state

Chứa các trigger

Logic

tổ hợp

Logic

tuần tự

Output Input

Nx_state Pr_state

clock

reset

Page 33: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

Logic

tổ hợp

Logic

tuần tự

Output Input

Nx_state Pr_state

clock

reset

3.6.2.1. Giới thiệu Phần mạch tổ hợp: Thường không

dùng process

Phần mạch tuần tự: Có một process với

danh sách nhạy chứa clock và reset

Hoạt động của mạch

- Khi reset thì Pr_state trở về trạng

thái khởi tạo của hệ thống.

- Ngược lại, khi có clock khối tuần tự sẽ

lưu trữ trạng thái Nx_state và chuyển

tới đầu ra trạng thái Pr_state

Page 34: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

3.6.2.2. Kiểu thiết kế thứ nhất

• Đặc điểm

- Đầu ra của mạch không phụ thuộc vào clk

- Thiết kế của hai phần tách rời nhau

- Tất cả các trạng thái được khai báo rõ ràng sử dụng kiểu dữ liệu liệt kê

• Thiết kế phần mạch dãy: Sử dụng một process

PROCESS (reset, clock)

BEGIN

IF (reset = „1‟) THEN

pre_state <= state0;

ELSIF (clock‟event AND clock =„1‟) THEN

pre_state <= nx_state;

END IF;

END PROCESS

Logic

tuần tự

Nx_state Pr_state

clock

reset

Page 35: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

3.6.2.2. Kiểu thiết kế thứ nhất •Thiết kế phần mạch tổ hợp: Có thể dùng các câu lệnh song song hoặc câu lệnh tuần tự theo mẫu sau

PROCESS(input, pr_state)

BEGIN

CASE pr_state IS

WHEN state0 =>

IF (input = …) THEN

output <= <value>;

nx_state <=state1;

ELSE…

END IF;

WHEN state1 =>

IF (input = …) THEN

output <= <value>;

nx_state <=state1;

ELSE…

END IF;

…..

END CASE

END PROCESS;

Logic

tổ hợp

Output Input

Nx_state Pr_state

Page 36: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

3.6.2.2. Kiểu thiết kế thứ nhất

Page 37: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

3.6.2.2. Kiểu thiết kế thứ nhất

Page 38: 98710374-3-6-VHDL-FSM

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY counter IS

PORT ( clk,rst: IN STD_LOGIC;

count: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

END counter;

ARCHITECTURE state_machine OF counter IS

TYPE state IS (zero, one, two, three, four, five, six, seven, eight, nine);

SIGNAL pr_state, nx_state: state;

BEGIN

-------------Phần mạch tuần tự bên dưới------------

PROCESS (rst, clk)

BEGIN

IF (rst = „1‟) THEN

pr_state <= zero;

ELSIF (clk‟EVENT AND clk = „1‟) THEN

pr_state <= nx_state;

END IF;

END PROCESS;

3.6.2. Mô tả FSM trong VHDL

Page 39: 98710374-3-6-VHDL-FSM

-------------Phần mạch tổ hợp bên trên------------

PROCESS (pr_state)

BEGIN

CASE pr_state IS

WHEN zero =>

count <= “0000”;

next_state <= one;

WHEN one =>

count <= “0001”;

next_state <= two;

WHEN two =>

count <= “0010”;

next_state <= three;

WHEN three =>

count <= “0011”;

next_state <= four;

WHEN four =>

count <= “0100”;

next_state <= five;

3.6.2. Mô tả FSM trong VHDL

WHEN five =>

count <= “0101”;

next_state <= six;

WHEN six =>

count <= “0110”;

next_state <= seven;

WHEN seven =>

count <= “0111”;

next_state <= eight;

WHEN eight =>

count <= “1000”;

next_state <= nine;

WHEN nine =>

count <= “1001”;

next_state <= zero;

END state_machine;

Page 40: 98710374-3-6-VHDL-FSM

`

• Hệ có hai trạng thái là STATE0 và STATE1

• Đầu ra x = a khi hệ ở trạng thái STATE0

• Đầu ra x = b khi hệ ở trạng thái STATE1

• d = 0 hệ giữ nguyên trạng thái

• d = 1 hệ chuyển trạng thái

3.6.2. Mô tả FSM trong VHDL

FSM

a

b

d

x

clk rst

x=a x=b

Page 41: 98710374-3-6-VHDL-FSM

ENTITY FSM2 IS

PORT ( a,b,d : IN BIT;

rst, clk : IN STD_LOGIC;

x : OUT BIT );

END FSM2;

ARCHITECHTURE FSM OF FSM2 IS

TYPE STATE IS ( STATE0, STATE1);

SIGNAL pr_state, nx_state : STATE;

BEGIN

PROCESS(rst, clk)

BEGIN

IF (rst = „1‟) THEN

pr_state = STATE0;

ELSIF (clk‟event and clk =„1‟) THEN

pr_state <=nx_state;

END IF;

END PROCESS;

3.6.2. Mô tả FSM trong VHDL

PROCESS (a,b,d,pr_state)

BEGIN

CASE pr_state IS

WHEN STATE0 =>

x <= a;

IF (d=„1‟) THEN nx_state <= STATE1;

ELSE nx_state <= STATE0;

END IF;

WHEN STATE1 =>

x <= b;

IF (d=„1‟) THEN nx_state <= STATE0;

ELSE nx_state <= STATE1;

END IF;

END CASE;

END PROCESS;

END FSM;

Page 42: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

3.6.2.3. Kiểu thiết kế thứ hai

• Đặc điểm

- Đầu ra của mạch phụ thuộc vào clk

- Thiết kế của hai phần tách rời nhau

- Tất cả các trạng thái được khai báo rõ ràng sử dụng kiểu dữ liệu liệt kê

- Cần sử dụng thêm một số tín hiệu trung gian để tính toán giá trị ở đầu ra của mạch tổ hợp, nhưng chỉ gán giá trị này cho đầu ra của hệ khi có tín hiệu đồng hồ tích cực.

Page 43: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

Page 44: 98710374-3-6-VHDL-FSM

3.6.2. Mô tả FSM trong VHDL

Page 45: 98710374-3-6-VHDL-FSM

`

• Thiết kế FSM như hình biết đầu ra chỉ thay đổi khi

CLK tích cực

3.6.2. Mô tả FSM trong VHDL

FSM

a

b

d

x

clk rst

x=a x=b