Sinh viên thực hiện:
1. Họ và tên: ... MSSV: ... 2. Họ và tên: ... MSSV: ... Thời gian thực hiện: 4 tiết.
Mục tiêu
Bài thực tập này nhằm mục đích giúp sinh viên tìm hiểu cách xây dựng 2 hệ thống độc lập trên chip FPGA thông qua việc tích hợp 2 hệ thống đã tạo trong lab1 và lab2.
Yêu cầu
Sinh viên dựa vào kết quả đạt được ở 2 bài thực tập trước bao gồm các thao tác thực hiện, code, chương trình để thực hiện xây dựng 2 hệ thống độc lập tương tự trên cùng một chip FPGA. Trong đó:
Hệ thống thứ nhất có chức năng cộng 2 chữ số thập lục phân như ở lab1 đã xây dựng.
Hệ thống thứ hai có chức năng giao tiếp, điều khiển LCD 16x2 như ở lab2 đã xây dựng.
Các bước thực hiện 4.3.3.1 Sơ đồ hệ thống
55
4.3.3.2 Các bước thực hiện
Bước 1: Tạo hệ thống mới
Sinh viên tiến hành tạo project mới tương tự như đã tiến hành ở các bài thực tập trước.
Sinh viên có thể đặt tên thư mục và tên project tương tự như Hình 4.3.2
Hình 4.3.2 Tạo project mới
Hình 4.3.3 Chọn dòng vi xử lý và chip
Bước 2: Xây dựng hệ thống trên QSys
Sinh viên tiến hành tạo một hệ thống mới tương tự như đã tiến hành ở các bài thực tập trước. Ở bài thực tập này, sinh viên tiến hành xây dựng 2 hệ thống lần lượt như sau:
1. Hệ thống thứ nhất:
CPU_1: cấu hình sử dụng Nios II Processor Nios II/s, JTAG Debug Module_level2.
RAM_1: On_Chip Memory có dung lượng 32768 (bytes).
56
HEX3_0: Parallel Port, mục I/O device chọn Seven Segment Dispalys, mục Seven Segment Digits chọn 3 to 0.
HEX7_4: Parallel Port, mục I/O device chọn Seven Segment Dispalys, mục Seven Segment Digits chọn 7 to 4.
2. Hệ thống thứ hai:
CPU_2: cấu hình sử dụng core Nios II processor Nios II/s, JTAG Debug Module-lever 2.
RAM_2: On_Chip Memory có dung lượng 32768 (bytes).
LCD: 16x2 Character Displays để mặc định.
Thực hiện nối dây ở cột “Connection” để tạo địa chỉ cho hệ thống vừa tạo:
Nối tất cả “Clock input” của các thành phần đã tạo với nguồn xung “clk”.
Hình 4.3.4 Kết nối thành phần xung clock
57
Hình 4.3.5 Kết nối thành phần reset
Nối tất cả các thành phần “Avalon Memory mappel Slave” của RAM_1, SW, HEX3_0, HEX7_4 với “Avalon memory mapple Master” (data_master) của CPU_1 (Hình 4.3.5).
Nối thành phần “Avalon Memory mappel Slave”của RAM_1 với “Avalon memory mapple Master” (Intruction_master) của CPU_1.
Nối tất cả các thành phần “Avalon Memory mappel Slave” của RAM_2, LCD với “Avalon memory mapple Master” (data_master) của CPU_2 (Hình 4.3.5).
Nối thành phần “Avalon Memory mappel Slave”của RAM_2 với “Avalon memory mapple Master” (Intruction_master) của CPU_2.
58
Ở cột Export: tiến hành nhấp đúp vào hàng tương ứng với extemal_interface của SW, HEX3_0, HEX7_4, LCD để lấy chân thiết bị.
Các bước còn lại như cấp địa chỉ nền cho hệ thống, lưu file hệ thống với tên nios_sys.qip, biên dịch v. v.. sinh viên thực hiện tương tự như các bài thực tập trước.
Hình 4.3.6 Kết nối thành phần “Avalon Mapped Slave” và lấy chân external_connection
Bước 3: Gán chân hệ thống
Tương tự như các bài thực tập trước sinh viên thực hiện gán file hệ thống
nios_sys.qip đã tạo ở trên và thư viện
altera_up_character_lcd_communication,
altera_up_character_initialzation cho LCD từ file cài đặt. Sinh viên có thể tham khảo đường dẫn sau trong thư mục đã càu đặt chương trình
59
(C:\altera\11.0sp1\ip\University_Program\Audio_Video\altera_up_valo n_character_lcd\hdl). Chú ý tùy vào file cài đặt được lưu ở đâu mà đường dẫn trên có thể thay đổi.
Hình 4.3.7 Kết quả sau khi add file
Sinh viên vào Symbol Tool để lấy sơ đồ khối hệ thống (nios_sys) đã tạo ra từ QSys.
Hình 4.3.8 Cửa sổ lấy sơ đồ khối hệ thống
Sau đó, tiến hành gán chân bằng các công cụ có sẵn trong Pin Tool tương tự như các bài thực tập trước.
60
Hình 4.3. 9 Kết quả sau khi gán chân
Lưu lại với tên LAB3.bdf, biên dịch kiểm tra đến khi không còn báo lỗi.
Nạp file LAB3.sof xuống board bằng công cụ Programmer trong menu Tool.
Bước 4: Viết chương trình ứng dụng cho hệ thống
Mở chương trình Nios II 11.0 Software Buil Tools for Eclipse, chọn đường dẫn nơi lưu trữ phần mềm ứng dụng (Hình 4.3.10).
Tạo project mới, vào File New Nios II Application and BSP from Template (Hình 4.3.11).
Cửa sổ tiếp theo chọn đường dẫn đến file nios_sys.sopcinfo thiết lập như hình 4.3.12 cho hệ thống thứ nhất.
61
Hình 4.3.11 Tạo ứng dụng mới
Hình 4.3.12 Thiết lập phần mềm cho hệ thống thứ 1.
62
Hình 4.3.13 Thiết lập phần mềm cho hệ thống thứ 2.
Hình 4.3.14 Hai hệ thống vừa tạo xong
Click phải vào CPU_1_bsp[nios_sys] chọn Properties Nios II BSP properties và thiết lập như hình 4.3.15.
63
Hình 4.3.15 Thiết lập properties cho CPU_1_bsp
o Mở chương trình hello_world_small.c của CPU_1 xóa chương trình mẫu và gõ đoạn chương trình điều khiển vào và thực hiện các bước biên dịch hệ thống như đã thực hiện ở các bài thực hành trước đây.
o Đoạn chương trình điều khiển: Sinh viên sử dụng code của Lab1
64
Hình 4.3.17 Nạp chương trình ứng dụng xuống phần cứng.
o Ở cửa sổ Run Cofigurations ta thiết lập như hình (Hình 4.3.16) và (Hình 4.3.17).
65
Hình 4.3.19 Nạp chương trình ứng dụng xuống phần cứng.
Bước 5: Demo hệ thống
Sau khi đã biên dịch và nạp thành công tất cả các quá trình trên, tiến hành chạy thử để kiểm tra chương trình.
o Đối với hệ thống thứ nhất: tiến hành thực hiện thử các phép toán để kiểm tra xem đúng với mục tiêu đề ra hay chưa.
Ví dụ: 0x01 + 0x03 = 0x04 o Đối với hệ thống thứ 2: Thay các chuỗi : Text1 = HUYENTRAN_1118031 Text2 = YENNHI_1117997 Text3 = TRAN Text4 = NHI
Sau đó quan sát kết quả thu được trên màn hình LCD.
Kết quả đạt được
Chương trình đã tích hợp được cả 2 hệ thống ở lab 1 và lab 2 trên cùng một chip FPGA với 2 vi xử lí hoàn toàn độc lập nhau.
Kết quả hiển thị của bài thực tập này là kết quả tổng hợp của 2 bài thực tập sinh viên đã thực hiện trước đó.
66