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

Hệ thống nhúng slide 2

32 54 0

Đ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

Định dạng
Số trang 32
Dung lượng 1,5 MB

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

Nội dung

Bài 2 3Giới thiệu 13:21:53 Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô tả phần cứng HDL như VHDL, Verilog, AHDL... 13:21:53 VHDL là ngôn ngữ mô tả phần cứ

Trang 1

Giới thiệu

13:21:53

FPGA (Field Programmable Gate Array) là vi mạch dùng cấu trúc

mảng phần tử logic mà người dùng có thể lập trình được

- Có thể tái cấu trúc lại khi đang sử dụng

- Công đoạn thiết kế đơn giản

- Chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử

Trang 2

Bài 2 3

Giới thiệu

13:21:53

Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn

ngữ mô tả phần cứng HDL như VHDL, Verilog, AHDL

13:21:53

Một số ứng dụng của Altera DE2

Trang 3

13:21:53

VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao

(VHDL: Very High Speed Integrated Circuits - Hardware Description Language)

được sử dụng để mô tả một hệ thống thiết kế logic

VHDL được chuẩn hóa từ 1987 bởi IEEE 1076-1987, nâng cấp năm 1993 Đa số

các phần mềm thiết kế hiện nay đều hỗ trợ VHDL

Trang 4

LIBRARY (thư viện)

Một thư viện là nơi lưu trữ các câu lệnh thường được sử dụng

Khai báo Library:

LIBRARY library_name;

USE library_name.package_name.package_parts;

Có 3 gói, từ 3 thư viện khác nhau thường được sử dụng trong thiết kế:

• ieee.std_logic_1164, ieee.std_logic_arith (ieee library),

• standard (std library)

• work (work library)

Trang 5

Bài 2 9

VHDL

16:13:14

Entity (thực thế)

Khai báo entity dùng để mô tả ngõ vào và ngõ ra của một thiết kế.

Mức cao nhất của bất kỳ một thiết kế VHDL là một khai báo entity đơn, tên của file

lưu trữ phải trùng với tên theo sau của từ khóa entity.

signal_mode: IN, OUT, INOUThoặc BUFFER

signal_type: BIT, STD_LOGIC,INTEGER, …

entity_name: tên bất kỳ,trừ các từ khóa của VHDL

Trang 6

 bit_vector: là là một vector của các giá trị bit, ví dụ: bit_vector (0 to 7)

 std_logic, std_logic_vector: có 9 giá trị chỉ ra giá trị và kích thước của một tín

hiệu

 boolean: có giá trị TRUE và FALSE

 integer: là một dãy giá trị integer

 Real: có là một dãy giá trị Real

 Time - để biểu thị thời gian

signal_type:

Trang 7

'1' và '0' có thể hiểu như là nốinguồn và nối đất.

Giá trị 'U'và 'W' được gọi là giá trị gầnluận lý, chủ yếu có chức năng môphỏng và không có ý nghĩa phầncứng

A = 0, B = H  0

A = Z, B = H  H

A = H, B = L  W

Trang 9

Architechture dạng cấu trúc (structure)

mô tả các phần tử con bên trong hệ thống và sự kết nối của các phần tử con đó

Port(L,M: in BIT; N: out BIT);

End component

BEGIN

X1: XOR2 port map (A,B,SUM);

A1: AND2 port map (A,B,CARRY);

END HA_STRUCTURE;

Trang 10

Kiểu mô tả hành vi bao gồm tập hợp thứ tự các phép gán tín hiệu

tuần tự được khai báo bên trong phát biểu process.

Biến được khai báo trong process là biến cục bộ Tín hiệu không

được khai báo trong process

ARCHITECTURE HA_STRUCTURE OF HALF_ADDER IS

Trang 11

If rising_edge(ck) thenQ<=D;

Trang 13

Bài 2 25

16:13:14

B4: Chọn VHDL File, nhập đoạn mã mô tả cho D-FF, sau đó nhấn nút Save

Lưu ý: tên ENTITY phải trùng với tên file.

16:13:14

B5: Trên cửa sổ Project Navigator (bên phải), chọn Tab File, nhấn

chuột phải vào file VHDL và chọn Set as Top-level Entity

B6: Chọn menu Processing > Start Compilation hay nhấn nút Start

Compilation

Trang 14

Bài 2 27

16:13:14

B7: Biên dịch thành công:

B8: Chọn File > New, sau đó chọn

University Program VWF để mô

Trang 15

Bài 2 29

16:13:14

B11: Nhấn vào Node Finder

B12: Nhấn vào List, sau đó nhấn vào >>

Trang 18

Bài 2 35

16:13:14

Lệnh If

16:13:14Viết mã VHDL cho:

Kết quả của phép so sánh ở ngõ vào sẽ được biểu thị bằng 3 bit ngõ ra cho 3 trường hợp so

sánh giữa A và B: AeqB(A equal B), AgtB(A greater B), AltB (A lighter B)

2.8.

2.9.

2.10.

Trang 19

Gán WHEN điều_kiện ELSE

Gán WHEN điều_kiện ELSE

Trang 20

// Khai báo module

Module tên chương trình (tên biến I/O);

// tên chương trình trùng tên file.v

Input [msb:lsb] biến;

Output [msb:lsb] biến;

Reg [msb:lsb] biến reg;

Wire [msb: lsb] biến wire;

// Khai báo khối always, hoặc khối initial

… các lệnh …

Trang 21

Thực hiện trên Quartus:

Quá trình tương tự như VHDL, trong B4,

chọn Verilog HDL thay cho VHDL

Trang 22

- Mô tả dây dẫn trong mạch, dùng để kết nối các cổng hay các module.

- Giá trị của Wire có thể đọc, nhưng không được gán trong hàm hoặc khối

- Wire không lưu trữ giá trị nhưng vẫn phải được thực thi bởi 1 lệnh gán kế tiếp hay

bởi sự kết nối Wire với ngõ ra của 1 cổng hoặc 1 module

Những dạng đặc biệt khác của Wire:

Wand (wired_and): giá trị phụ thuộc vào mức logic And toàn bộ điều khiển kết nối

Trang 23

Bài 2 45

Cú pháp:

Wire [msb:lsb] tên biến wire.

Wand [msb:lsb] tên biến wand.

Wor [msb:lsb] tên biến wor.

Tri [msb:lsb] tên biến tri.

Assign d= b;// giá trị d là mức logic của phép And a và b.

Wire [9:0] A; // vectơ A có 10 wire.

Trang 24

Bài 2 47

16:13:14Mạch đếm lên không đồng bộ 4 bit có ngõ vào xóa (clr) tích cực mức thấp

16:13:14

Reg:

Reg (register) là một đối tượng dữ liệu chứa giá trị từ một thủ tục gán kế tiếp,

chỉ được dùng trong hàm và khối thủ tục

Reg là một loại biến Verilog và không nhất thiết là thanh ghi tự nhiên

Cú pháp:

Reg [msb:lsb] tên biến reg

Ví dụ:

Reg a; // biến thanh ghi đơn giản 1 bit

Reg [7:0] A; // một vector 8 bit

Reg [5:0]b, c; // hai biến thanh ghi 6 bit

Trang 25

Bài 2 49

Khối always:

là trạng thái tồn tại được thực thi liên tục khi mô phỏng Tất cả các khối always

trong một module thực thi liên tục

Khối always có thể được dùng trong chốt, flip flop hay các kết nối logic Nếu

các lệnh của khối always nằm trong phạm vi khối begin… end thì được thực

thi liên tục, nếu nằm trong khối fort… join, chúng được thực thi đồng thời (chỉ

trong mô phỏng)

Khối always thực hiện bằng mức, cạnh lên hoặc cạnh xuống của một hay nhiều

tín hiệu (các tín hiệu cách nhau bởi từ khóa OR)

Trang 26

Bài 2 51

16:13:14

Lệnh if

Thực hiện một lệnh hoặc một khối

lệnh phụ thuộc vào kết quả của

biểu thức theo sau mệnh đề if

c = #10 0: sau 10 đơn vị thời gian, c = 0

c = #11 1: sau 11 đơn vị thời gian sau khi đã thực hiện lệnh trên, c = 1  c = 1

tại thời điểm 21

d <= #10 0: sau 10 đơn vị thời gian, d = 0

d <= #11 1: sau 11 đơn vị thời gian, d = 1  c = 1 tại thời điểm 11

Trang 28

Reset

Khi có xung clock: chuyển sang trạng thái kế, nếu Reset = 1 thì

chuyển về trạng thái S0 (ngõ ra là 0000)

Trang 30

Bài 2 59

16:13:14

2.21.

Viết mã Verilog và VHDL cho sơ đồ máy trạng thái sau:

Sơ đồ trạng thái bộ điều khiển động cơ bước

16:13:14

Thiết kế mạch tuần tự với đầu vào x là luồng bit nối tiếp và đầu ra y là 1 khi

đầu vào xuất hiện chuỗi “111”, và 0 trong các trường hợp còn lại

+ Trạng thái S0 là trạng thái chờ bit 1 đầu tiên (y = 0)

+ Trạng thái S1 là trang thái đã có bit 1 và chờ bit 1 thứ 2 (y = 0)

+ Trạng thái S2 là trạng thái đã có 11 và đang chờ bit 1 thứ 3 (y = 0)

+ Trạng thái S3 là trạng thái thu được chuỗi 111 (y = 1)

S2S3

Reset

x=1

x=0

x=1x=0

x=1

x=0x=1

x=0

Trang 31

Bài 2 61

Trang 32

Bài 2 63

16:13:14

Thiết kế mạch tuần tự với đầu vào x là luồng bit nối tiếp và đầu ra y là 1 khi

đầu vào xuất hiện chuỗi “1101”, và 0 trong các trường hợp còn lại

S4

1/00/0

1/0

0/1

1/10/0

Reset

1/1

2.22 Viết mã Verilog và VHDL cho sơ đồ máy trạng thái sau:

Ngày đăng: 24/10/2020, 08:31

TỪ KHÓA LIÊN QUAN

w