You are on page 1of 47

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG


NGHỆ TP. HỒ CHÍ MINH

BÁO CÁO MÔN HỌC: THỰC HÀNH HỆ THỐNG NHÚNG

NGÀNH: KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA

GIẢNG VIÊN HƯỚNG DẪN: ThS. PHẠM HÙNG KIM KHÁNH

Sinh viên thực hiện: MSSV: Lớp:

Trần Anh Vũ 2180500958 21DTDA2

Tôn Quốc Trọng 2180500927 21DTDA2


Đỗ Nguyễn Nhật Hào 2180500263 21DTDA2

TP. Hồ Chí Minh, ngày 7 tháng 1 năm 2024

1
LỜI CẢM ƠN

Trước tiên với tình cảm sâu sắc và chân thành nhất, cho phép em được
bày tỏ lòng biết ơn đến tất cả các cá nhân và tổ chức đã tạo điều kiện
hỗ trợ, giúp đỡ em trong suốt quá trình học tập và nghiên cứu môn học
này. Trong suốt thời gian từ khi bắt đầu học tập tại trường đến nay, em
đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô và bạn
bè.
Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở Viện Kĩ
Thuật đã truyền đạt vốn kiến thức quý báu cho em trong suốt thời gian
học tập tại trường. Nhờ có những lời hướng dẫn, dạy bảo của Thầy
Phạm Hùng Kim Khánh nên môn học thực hành hệ thống nhúng của
nhóm em mới có thể hoàn thiện tốt đẹp.

2
MỤC LỤC

BÀI 1: NGÔN NGỮ MÔ TẢ PHẦN CỨNG.............................................................


Bài 1.1: Viết mã VHDL cho mạch giải mã 3->8 và gán chân S0->S2: SW[0]-
SW[2], E: SW[10], D0-D7 : LEDG[0] – LEDG[7].....................................................
Hình 1.1 Mã VHDL......................................................................................................
Hình 1.2 Sơ đồ thiết kế.................................................................................................
Bài 1.2 Viết mã VHDL cho mạch mã hóa 8->3 và gán chân D0-D7........................
Hình 1.3 Mã VHDL......................................................................................................
Hình 1.4 Sơ đồ thiết kế.................................................................................................
Bài 1.3 Viết mã Verilog cho mạch giải mã 3->8 và gán chân S0-S2........................
Hình 1.5 Mã Verilog....................................................................................................
Hình 1.6 Sơ đồ thiết kế................................................................................................
Bài 1.4 Viết mã Verilog cho mạch giải mã 8->3 và gán chân D0-D7.......................
Hình 1.7 Mã Verilog....................................................................................................
Hình 1.8 Sơ đồ thiết kế...............................................................................................
Bài 1.5 Thực hiện máy trạng thái sau......................................................................
Hình 1.9 Sơ đồ trạng thái..........................................................................................
Hình 1.10 Mô tả trạng thái........................................................................................
Hình 1.11 State Machine Wizard..............................................................................
Bài 1.6 Thực hiện máy trạng thái cho 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........................................
Hình 1.12 Sơ đồ trạng thái........................................................................................
Hình 1.13 Mô tả trạng thái........................................................................................
Hình 1.14 State Machine Wizard..............................................................................
Bài 2 THIẾT KẾ HỆ THỐNG NHÚNG ĐƠN GIẢN.............................................

3
Bài 2.1 Viết lại đoạn mã để LEDR sáng dần từ LEDR0-LEDR7 khi SW0 on,
tắt dần từ LEDR0-LEDR7 khi SW1 on( SW0 ưu tiên hơn SW1)..........................
Hình 2.1 Thực hiện kết nối các xung clock với nhau..............................................
Hình 2.2 Nios II Processor.........................................................................................
Hình 2.3 Bộ nhớ RAM on_chip 32K.........................................................................
Hình 2.4 Pio ngõ vào 2 bit gán cho SW[1..0]............................................................
Hình 2.5 Pio ngõ ra 8 bit gán cho LEDR[7..0].........................................................
Hình 2.6 System ID Peripheral (1337)......................................................................
Hình 2.7 Sơ đồ thiết kế...............................................................................................
Hình 2.8 Đoạn mã.......................................................................................................
Bài 2.2 Viết lại đoạn mã để LEDR sáng dần từ LEDR0-LEDR7 khi SW0 on,
tắt dần từ LEDG0-LEDG7 khi SW1 on( SW0 ưu tiên hơn SW1).........................
Hình 2.9 Sơ đồ thiết kế...............................................................................................
Hình 2.10 Đoạn mã.....................................................................................................
Bài 2.3 Thiết kế phần cứng và viết phần mềm:.......................................................
Hình 2.11 Kết nối các xung clock với nhau..............................................................
Hình 2.12 Pio ngõ vào 1 bit gán cho SW[0]..............................................................
Hình 2.13 Pio ngõ vào 1 bit gán cho KEY[0]...........................................................
Hình 2.14 Pio ngõ ra 2 bit gán cho LEDR[1..0].......................................................
Hình 2.15 Sơ đồ thiết kế.............................................................................................
Hình 2.16 Đoạn mã.....................................................................................................
Bài 2.4 Thiết kế phần cứng và viết phần mềm để hiện giá trị tăng dần từ 0 –
9 trên HEX[0].............................................................................................................
Hình 2.17 Kết nối các xung clock với nhau..............................................................
Hình 2.18 Pio ngõ ra 7 bit gán cho hex0[6..0]..........................................................
Hình 2.19 Sơ đồ thiết kế.............................................................................................
Hình 2.20 Đoạn mã.....................................................................................................
Bài 2.5 Thiết kế phần cứng và viết phần mềm:.......................................................

4
Hình 2.21 Kết nối các xung clock với nhau..............................................................
Hình 2.22 Pio ngõ ra 7 bit gán cho hex0[6..0]..........................................................
Hình 2.23 Pio ngõ ra 7 bit gán cho hex1[6..0]..........................................................
Hình 2.24 Sơ đồ thiết kế.............................................................................................
Hình 2.25 Đoạn mã.....................................................................................................
BÀI 3 HỎI VÒNG VÀ NGẮT...................................................................................
Bài 3.1 Viết chương trình kiểm tra 4 công tắc KEY0-KEY3, nếu có 1 phím
được nhấn thì nội dung của các công tắc SW0-SW7, hiển thị giá trị tương
ứng trên các LED xanh..............................................................................................
Hình 3.1 Đoạn mã.......................................................................................................
Bài 3.3 Viết chương trình như bài 3.1 nhưng sử dụng ngắt...................................
Hình 3.2 Đoạn mã.......................................................................................................
BÀI 4 LCD..................................................................................................................
Bài 4.1 Nhập đoạn mã hiện giá trị trên LCD:.........................................................
Hình 4.1 Kết nối các xung clock với nhau................................................................
Hình 4.2 Pio ngõ vào 2 bit gán cho KEY[1..0].........................................................
Hình 4.3 Pio ngõ ra 1 bit gán cho lcd_on.................................................................
Hình 4.4 Altera Avalon LCD 16207..........................................................................
Hình 4.5 Bộ nhớ RAM on_chip 128K.......................................................................
Hình 4.6 System ID Peripheral (1338)......................................................................
Hình 4.7 Đoạn mã.......................................................................................................
Bài 4.2 Viết chương trình hiện chuỗi trên LCD:.....................................................
Hình 4.8 Đoạn mã.......................................................................................................

5
BÀI 1: NGÔN NGỮ MÔ TẢ PHẦN CỨNG
Bài 1.1: Viết mã VHDL cho mạch giải mã 3->8 và gán chân S0->S2: SW[0]-
SW[2], E: SW[10], D0-D7 : LEDG[0] – LEDG[7]

Hình 1.1: Mã VHDL

6
Hình 1.2 : Sơ đồ thiết kế

Bài 1.2: Viết mã VHDL cho mạch mã hóa 8->3 và gán chân D0-D7
:SW[10]-SW[17], Q0-Q2: LEDR[10] – LEDR[12]

Hình 1.3: Mã VHDL

7
Hình 1.4: Sơ đồ thiết kế

Bài 1.3 Viết mã Verilog cho mạch giải mã 3->8 và gán chân S0-S2
:SW[10]-SW[12], E: SW[0], D0-D7: LEDR[0] – LEDR[7]

Hình 1.5: Mã Verilog

8
Hình 1.6 : Sơ đồ thiết kế

Bài 1.4 Viết mã Verilog cho mạch giải mã 8->3 và gán chân D0-D7
:SW[1]-SW[8], Q0-Q2: LEDG[5]-LEDG[7]

Hình 1.7 : Mã Verilog

9
Hình 1.8: Sơ đồ thiết kế

Bài 1.5 Thực hiện máy trạng thái sau

Hình 1.9: Sơ đồ trạng thái

10
Hình 1.10: Mô tả trạng thái

Hình 1.11: State Machine Wizard

11
RESET EN Dir Clk Signal
SW[0] SW[1] SW[2] KEY[0] LEGG[0..3]
1 1 1 0000
0 1 Nhấn 1000
0 0 Nhấn 0000
0 1 0 Nhấn 0001
0 1 0 Nhấn 0010
0 1 0 Nhấn 0100
0 1 0 Nhấn 1000
0 1 1 Nhấn 0100
0 1 1 Nhấn 0010
0 1 1 Nhấn 0001
0 1 1 Nhấn 1000

Bảng 1.1: Kiểm tra trạng thái

Bài 1.6 Thực hiện máy trạng thái cho 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

12
Hình 1.12: Sơ đồ trạng thái

Hình 1.13: Mô tả trạng thái

13
Hình 1.14: State Machine Wizard

14
Bài 2: THIẾT KẾ HỆ THỐNG NHÚNG
ĐƠN GIẢN
Bài 2.1 Viết lại đoạn mã để LEDR sáng dần từ LEDR0-LEDR7 khi SW0 on,
tắt dần từ LEDR0-LEDR7 khi SW1 on( SW0 ưu tiên hơn SW1)
- Xây dựng phần cứng

Hình 2.1: Thực hiện kết nối các xung clock với nhau

15
Hình 2.2: Nios II Processor

16
Hình 2.3: Bộ nhớ RAM on_chip 32K

17
Hình 2.4: Pio ngõ vào 2 bit gán cho SW[1..0]

18
Hình 2.5: Pio ngõ ra 8 bit gán cho LEDR[7..0]

19
Hình 2.6: System ID Peripheral (1337)

20
Hình 2.7: Sơ đồ thiết kế

21
- Xây dựng phần mềm

Hình 2.8: Đoạn mã

22
Bài 2.2 Viết lại đoạn mã để LEDR sáng dần từ LEDR0-LEDR7 khi SW0 on,
tắt dần từ LEDG0-LEDG7 khi SW1 on( SW0 ưu tiên hơn SW1)
- Xây dựng phần cứng:

Hình 2.9: Sơ đồ thiết kế

23
- Xây dựng phần mềm:

Hình 2.10: Đoạn mã

24
Bài 2.3: Thiết kế phần cứng và viết phần mềm:
- Nhấn KEY[0]:
+ Nếu SW[0] on: LEDR[0] nhấp nháy, thời gian delay là 300ms
+ Nếu SW[1] off: LEDR[1] nhấp nháy, thời gian delay là 500ms
Ghi chú: Đối với KEY[0]: khi nhấn = 0, khi không nhấn = 1

- Xây dựng phần cứng

Hình 2.11: Kết nối các xung clock với nhau

25
Hình 2.12: Pio ngõ vào 1 bit gán cho SW[0]

Hình 2.13: Pio ngõ vào 1 bit gán cho KEY[0]

26
Hình 2.14: Pio ngõ ra 2 bit gán cho LEDR[1..0]

27
Hình 2.15: Sơ đồ thiết kế

- Xây dựng phần mềm:

28
Hình 2.16: Đoạn mã

29
Bài 2.4: Thiết kế phần cứng và viết phần mềm để hiện giá trị tăng dần từ 0 –
9 trên HEX[0]
- Xây dựng phần cứng

Hình 2.17: Kết nối các xung clock với nhau

30
Hình 2.18: Pio ngõ ra 7 bit gán cho hex0[6..0]

31
Hình 2.19: Sơ đồ thiết kế

- Xây dựng phần mềm:

32
Hình 2.20: Đoạn mã

33
Bài 2.5: Thiết kế phần cứng và viết phần mềm:
- Nhấn KEY[0]: hiện giá trị tăng dần từ 00 – 99 trên HEX[1], HEX[0]
- Nhấn KEY[1]: hiện giá trị giảm dần từ 99 – 00 trên HEX[1],
HEX[0]
- Xây dựng phần cứng

Hình 2.21: Kết nối các xung clock với nhau

34
Hình 2.22: Pio ngõ ra 7 bit gán cho hex0[6..0]

35
Hình 2.23: Pio ngõ ra 7 bit gán cho hex1[6..0]

Hình 2.24: Sơ đồ thiết kế

36
- Xây dựng phần mềm:

Hình 2.25: Đoạn mã

37
BÀI 3: HỎI VÒNG VÀ NGẮT
Bài 3.1: Viết chương trình kiểm tra 4 công tắc KEY0-KEY3, nếu có 1 phím
được nhấn thì nội dung của các công tắc SW0-SW7, hiển thị giá trị tương
ứng trên các LED xanh

Hình 3.1: Đoạn mã

38
Bài 3.3: Viết chương trình như bài 3.1 nhưng sử dụng ngắt

Hình 3.2: Đoạn mã

39
BÀI 4: LCD
Bài 4.1: Nhập đoạn mã hiện giá trị trên LCD:
- Xây dựng phần cứng:

Hình 4.1: Kết nối các xung clock với nhau

40
Hình 4.2: Pio ngõ vào 2 bit gán cho KEY[1..0]

41
Hình 4.3: Pio ngõ ra 1 bit gán cho lcd_on

42
Hình 4.4: Altera Avalon LCD 16207

43
Hình 4.5: Bộ nhớ RAM on_chip 128K

Hình 4.6: System ID Peripheral (1338)

44
Sơ đồ thiết kế
- Xây dựng phần mềm

Hình 4.7: Đoạn mã

45
Bài 4.2 Viết chương trình hiện chuỗi trên LCD:
- Dòng 1: counter 1=xxx
- Dòng 2: counter 2=yyy
- Nhấn KEY0: tăng giá trị xxx từ 123-456
- Nhấn KEY1: giảm giá trị yyy từ 456-123

46
Hình 4.8: Đoạn mã

47

You might also like