1. Trang chủ
  2. » Giáo án - Bài giảng

Thiết kế và mô tả FSM trong VHDL

49 1K 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế và mô tả FSM trong VHDL
Người hướng dẫn Hoàng Văn Đông
Trường học Trường Đại học Công Nghệ Thông Tin và Truyền Thông Thái Nguyên
Chuyên ngành Kỹ Thuật Vi Điện Tử, Kỹ Thuật Vi Mạch, Thiết Kế Hệ Thống Nhúng
Thể loại Báo cáo thuyết trình
Thành phố Thái Nguyên
Định dạng
Số trang 49
Dung lượng 2,14 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thiết kế và mô tả FSM trong VHDL

Trang 1

Chào mừng thầy giáo và các bạn

Trang 2

Bài thuyết trình điện tử số 2

Thiết kế và mô tả FSM Thiết kế và mô tả FSM

Bùi Văn Tuy n ề

Students :

Trang 3

Sơ lược v ề

FSM

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

tự - FSM

Mô tả FSM trong VHD

phần mềm Xilinx

Trang 4

Sơ lược về FSM

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

FSM là một công nghệ mô hình hoá đặc biệt cho các mạch logic tuần tự

Đặc biệt những hệ thống có thao tác theo khuôn dạng tuần tự thì hoàn toàn có thể thiết kế bằng FSM

 Ví dụ :

Mạch chuyển trạng thái, bộ đếm tuần tự hay bộ điều khiển tín hiệu đèn giao thông…vv…vv

Trang 5

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

 Cũng như các loại mạch khác , các bước thiết kế chung như sau :

 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

Trang 6

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

 Xét 1 ví dụ đơn giản : 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 CE= 0

CE= 0

Trang 7

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

 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

CE= 1

Trang 10

Q0n

D1 Q1 Q’

D0 Q0 Q’

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

Trang 11

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

Q1n

Q0n

D1 Q1 Q’

D0 Q0 Q’

D0 Q0 Q’

Q1n

Q0n

D1 Q1 Q’

D0 Q0 Q’

Q1n

Q0n

D1 Q1 Q’

D0 Q0 Q’

Q1n

Q0n

D1 Q1 Q’

D0 Q0 Q’

Q1n

Q0n

D1 Q1 Q’

D0 Q0 Q’

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

Trang 12

Count= 0 Y= 0

Count= 3 Y= 1

Count= 2 Y= 0

CE= 1

CE= 1

CE= 1 CE= 1

CE= 0

CE= 0

CE= 0

CE= 0

Trang 13

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

Q1Q0=01 Y=0

Q1Q0=00 Y=0

Q1Q0=11 Y=1

Q1Q0=10 Y=0

CE= 1

CE= 1

CE= 1 CE= 1

CE= 0

CE= 0

CE= 0

CE= 0

Trang 14

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

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

FSM loại Moore

Trang 15

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

Q1Q0=01 Y=0

Q1Q0=00 Y=0

Q1Q0=11 Y=1

Q1Q0=10 Y=0

CE= 1

CE= 1

CE= 1 CE= 1

Trang 16

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

Trang 17

Q0n

D1 Q1 Q’

D0 Q0 Q’

FSM loại Moore

Trang 18

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

Q1n

Q0n

D1 Q1 Q’

D0 Q0 Q’

Y

Clk CE Q1 Q0 Y

Q1n

Q0n

D1 Q1 Q’

D0 Q0 Q’

D0 Q0 Q’

D0 Q0 Q’

D0 Q0 Q’

D0 Q0 Q’

Y

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

FSM loại Moore

Trang 19

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

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

FSM loại Mealy

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

Count= 1 Count= 0

CE= 1/ Y= 0

CE= 1/Y=0

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

CE= 0/ Y= 0

CE= 0/ Y=0

CE= 0/ Y= 0

CE= 0/ Y=0

Trang 20

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

Q1Q0=01 Y=0

Q1Q0=00 Y=0

Q1Q0=11 Y=1

Q1Q0=10 Y=0

CE= 1/Y=o

CE= 1/Y=0

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

CE= 0/Y= 0

CE= 0/Y=0

CE= 0/Y=0

CE= 0/Y=0

Trang 21

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

Trang 22

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

Q1Q0=01 Y=0

Q1Q0=00 Y=0

Q1Q0=11 Y=1

Q1Q0=10 Y=0

CE= 1/Y=o

CE= 1/Y=0

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

Trang 23

Present state Next state/Outputs

Trang 24

Q0n

D1 Q1 Q’

D0 Q0 Q’

Y

Trang 25

D0 Q0 Q’

D0 Q0 Q’

D0 Q0 Q’

D0 Q0 Q’

D0 Q0 Q’

D0 Q0 Q’

D0 Q0 Q’

Trang 26

Mô tả FSM trong VHDL

Giới thiệu

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

Trang 27

input output

Pr_state Nx_state

clk Reset

FSM gồm 2 phần

Phần mạch tổ hợp:

2 đầu vào: input và Pr_state

2 đầu ra: output và Nx_state

Phần mạch tuần tự:

3 đầu vào: Nx_state , clk , Reset

1 đầu ra: Pr_state

Trang 28

Mô tả FSM trong VHDL Nguyên lý hoạt động chung :

Logic tuần tự

Trang 29

Mô tả FSM trong VHDL

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

(Thiết kế theo otomat Moore)

Logic tuần tự

Pr_state Nx_state

Reset clk

 Đặc điểm:

- Hai phần thiết kế tách biệt nhau

- Tất cả các trạng thái được khai báo theo kiểu liệt kê

Trang 30

 Đoạn mã dưới đây thực hiện 2 công việc chính

-Gán giá trịcho đầu ra

-Thiết lập trang thái tiếp theo

Trang 31

PORT ( input: IN <data_type>;

reset, clock: IN STD_LOGIC;

output: OUT <data_type>);

END <entity_name>;

-

ARCHITECTURE <arch_name> OF <entity_name> IS

TYPE state IS (state0, state1, state2, state3, );

SIGNAL pr_state, nx_state: state;

BEGIN CASE pr_state IS WHEN state0 =>

IF (input = ) THEN output <= <value>;

Trang 32

Mô tả FSM trong VHDL

Ví dụ: Thiết kế bộ đếm 10

Phân tích :

 Ở đây chúng ta sẽ có 10 trạng thái: Zero,One, Two……, Nine => Sẽ có 4 biến để mô tả

 Các trạng thái sẽ chuyển lần lượt từ Zero  Nine khi có tín hiệu Clk

 Khi có tín hiệu Reset thì trạng thái lúc đó là Zero

Đồ hình mô tả bộ đếm:

Zero 0000

Nine 1001

One 0001

Two 0010

Six 0110

Four 0100

Five 0101

Three 0011

Seven 0111

Eight 1000

Reset

Trang 33

Mô tả FSM trong VHDL Code như sau :

ARCHITECTURE state_machine OF Bodem10 IS

TYPE state IS (zero, one, two, three, four,

five, six, seven, eight, nine);

SIGNAL pr_state, nx_state: state;

Trang 35

-Mô tả FSM trong VHDL

 Kết quả mô phỏng :

Chương trình này bị lỗi trên hệ thống của em và em thử trên máy một số bạn cũng bị lỗi tương tự nên em không có kết quả, mong thầy thông cảm

Trang 36

Mô tả FSM trong VHDL

Ví Dụ 2 : Mô tả máy chuyển trạng thái

FSM

a b

d

x

State A (x= a)

State B (x= b)

 Hệ thống có 2 trạng thái : State A và State B

 Khi d= 1 chuyển trang thái

d= 0 thì giữ nguyên trạng thái

 Đầu ra x= a khi ở trạng thái A

x= b khi ở trạng thái B

 Khi có tín hiệu reset thì đầu ra x= a

Chương trình hoàn chỉnh như sau

Trang 37

TYPE state IS (stateA, stateB);

SIGNAL pr_state, nx_state: state;

x <= a;

IF (d='1') THEN nx_state <= stateB;

ELSE nx_state <= stateA;

END IF;

WHEN stateB =>

x <= b;

IF (d='1') THEN nx_state <= stateA;

ELSE nx_state <= stateB;

Trang 38

-Mô tả FSM trong VHDL

 Kết quả mô phỏng như sau :

Toàn bộ chương trình em chạy đều ra thế này mà không ra dạng sóng và không có hiển thị nút Play để tạo ra dạng sóng, cái này bọn em không hiểu mong thầy giải thích them ạ ?

Trang 39

Mô tả FSM trong VHDL

Kiểu thiết kế thứ hai

(Thiết kế theo otomat Mealy)

 Đặc điểm:

- Hai phần thiết kế tách biệt nhau

- Tất cả các trạng thái được khai báo theo kiểu liệt kê

 Giống với thiết kế kiểu thứ nhất

 Điểm khác biệt:

- Cần sử dụng thêm tín hiệu trung gian để tính toán giá trị ở đầu ra

Khuôn mẫu máy trạng thái được thiết kế theo kiểu thứ 2 như sau

Trang 40

PORT (input: IN <data_type>;

reset, clock: IN STD_LOGIC;

output: OUT <data_type>);

END <ent_name>;

-ARCHITECTURE <arch_name> OF <ent_name> IS

TYPE states IS (state0, state1, state2, state3, );

SIGNAL pr_state, nx_state: states;

SIGNAL temp: <data_type>;

BEGIN

- Phan mach day:

PROCESS (reset, clock)

Trang 42

Mô tả FSM trong VHDL

• Ta sẽ xét lại ví dụ “Mô tả máy chuyển trạng thái” ở trên

• Nhưng ở đây ta muốn đầu ra là đồng bộ nên ta sẽ thiết kế theo kiểu 2

FSM

a b

d

x

State A (x= a)

State B (x= b)

reset

d= 1

d= 1

Phần khai báo LIBRARY và ENTITY giống với thiết kế kiểu 1, chỉ khác là trong ARCHITECTURE có thêm tín

hiệu trung gian

Chương trình đầy đủ như sau:

Trang 43

-Mô tả FSM trong VHDL

ARCHITECTURE VD_FSM2 OF VD_FSM2 IS

TYPE state IS (stateA, stateB);

SIGNAL pr_state, nx_state: state;

SIGNAL temp: BIT;

Trang 44

-Mô tả FSM trong VHDL

 Kết quả mô phỏng như sau :

Trang 45

Mô tả FSM trong VHDL

 Xét bộ phát hiện chuỗi:

Zero q= 0

One q= 0

Three q= 1

Two q= 0

- Đầu ra là 1 khi phát hiện chuỗi 111

- Đầu ra là 0 trong các trường hợp còn lại

- Có 4 trạng thái: Zero, One, Two, Three

+ Trạng thái 0 là trạng thái chờ số 1 đầu tiên

+Trạng thái 1 là trạng thái đã có 1 và chờ số 1 thứ 2

+Trạng thái 2 là trạng thái đã có 2 số 1 và chờ số 1 thứ 3

+Trạng thái 3 là trạng thái xuất hiện 3 số 1 : 111

Trang 46

ARCHITECTURE state_machine OF Bo_doan_xau IS

TYPE state IS (zero, one, two, three);

SIGNAL pr_state, nx_state: state;

q <= '0';

IF (d='1') THEN nx_state <= one;

ELSE nx_state <= zero;

END IF;

WHEN one =>

q <= '0';

IF (d='1') THEN nx_state <= two;

ELSE nx_state <= zero;

END IF;

WHEN two =>

q <= '0';

IF (d='1') THEN nx_state <= three;

ELSE nx_state <= zero;

END IF;

WHEN three =>

q <= '1';

IF (d='0') THEN nx_state <= zero;

ELSE nx_state <= three;

END IF;

END CASE;

END PROCESS;

END state_machine;

Trang 47

Mô tả FSM trong VHDL

 Kết quả mô phỏng như sau :

Trang 48

Còn một phần là Trải nghiệm mô tả FSM trong phần mềm Xilinx ISE, nhưng do thời gian gấp quá bọn em chưa làm được, bọn em sẽ hoàn thành sớm ạ

Ngày đăng: 25/05/2014, 22:51

HÌNH ẢNH LIÊN QUAN

Bảng kích của DFF - Thiết kế và mô tả FSM trong VHDL
Bảng k ích của DFF (Trang 9)
Bảng kích của DFF - Thiết kế và mô tả FSM trong VHDL
Bảng k ích của DFF (Trang 16)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w