Hướng Dẫn Thực Hành Hệ Thống Nhúng: Tích Hợp QSYS và NIOS II

Thực hành hệ thống nhúng: Hướng dẫn chi tiết tích hợp QSYS và NIOS II. Tìm hiểu VHDL, Verilog HDL và cách lập trình hệ thống nhúng hiệu quả.

Trường đại học

Hutech

Chuyên ngành

Hệ Thống Nhúng

Người đăng

Ẩn danh

Thể loại

Hướng dẫn
44
3
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hệ Thống Nhúng là Gì Tổng Quan và Ứng Dụng Hiện Đại

Hệ thống nhúng đang len lỏi vào mọi ngóc ngách của cuộc sống hiện đại, từ chiếc lò vi sóng trong bếp đến hệ thống lái tự động trên xe hơi. Hệ thống nhúng không chỉ là một máy tính thu nhỏ; đó là một hệ thống chuyên dụng được thiết kế để thực hiện một hoặc một vài chức năng cụ thể, thường là trong thời gian thực. Chúng khác biệt so với máy tính đa năng thông thường ở chỗ chúng thường được tích hợp chặt chẽ vào phần cứng mà chúng điều khiển. Điều này đòi hỏi sự tối ưu hóa cao về hiệu năng, kích thước và tiêu thụ năng lượng. Các thiết bị sử dụng hệ thống nhúng rất đa dạng, từ các thiết bị điện tử tiêu dùng như điện thoại thông minh, máy tính bảng, đến các thiết bị công nghiệp phức tạp như robot, hệ thống điều khiển máy bay và thiết bị y tế. Ứng dụng của chúng ngày càng mở rộng trong lĩnh vực IoT (Internet of Things), nơi các thiết bị kết nối và trao đổi dữ liệu với nhau, tạo ra một mạng lưới thông minh và tự động hóa. Việc hiểu rõ về thiết kế hệ thống nhúng, lập trình hệ thống nhúng, và các phần mềm nhúng là vô cùng quan trọng để phát triển các ứng dụng sáng tạo và hiệu quả.

1.1. Định Nghĩa và Đặc Điểm Cơ Bản của Hệ Thống Nhúng

Hệ thống nhúng là một hệ thống máy tính chuyên dụng được tích hợp vào một thiết bị hoặc hệ thống lớn hơn, thường để điều khiển các chức năng cụ thể. Đặc điểm chính bao gồm tính chuyên biệt cao, khả năng hoạt động trong thời gian thực ( hệ thống thời gian thực ), và yêu cầu về tối ưu hóa tài nguyên (năng lượng, bộ nhớ, kích thước). Theo tài liệu, hệ thống nhúng là 'một hệ thống chuyên dụng được thiết kế để thực hiện một hoặc một vài chức năng cụ thể'. Chúng khác biệt so với các hệ thống máy tính đa năng ở tính tùy biến cao và khả năng tương tác trực tiếp với phần cứng.

1.2. Vai Trò Của Hệ Thống Nhúng trong Kỷ Nguyên IoT

Trong kỷ nguyên IoT (Internet of Things), hệ thống nhúng đóng vai trò then chốt trong việc kết nối và điều khiển các thiết bị. Chúng cho phép các thiết bị thu thập, xử lý, và truyền dữ liệu một cách tự động, tạo ra các ứng dụng thông minh trong nhiều lĩnh vực như nhà thông minh, thành phố thông minh, và công nghiệp 4.0. Hệ thống nhúng được sử dụng để thu thập dữ liệu, điều khiển thiết bị, và kết nối chúng với mạng internet.

1.3. Phân Loại Các Loại Hệ Thống Nhúng Phổ Biến

Hệ thống nhúng có thể được phân loại dựa trên nhiều tiêu chí khác nhau, bao gồm hiệu năng, độ phức tạp, và ứng dụng. Các loại phổ biến bao gồm vi điều khiển (PIC, AVR, ARM), hệ điều hành nhúng Linux, và các nền tảng phát triển như Raspberry PiArduino. Việc lựa chọn loại hệ thống nhúng phù hợp phụ thuộc vào yêu cầu cụ thể của ứng dụng, bao gồm hiệu năng, chi phí, và khả năng mở rộng.

II. Thách Thức và Vấn Đề Khi Thiết Kế Hệ Thống Nhúng

Thiết kế hệ thống nhúng không phải là một con đường trải đầy hoa hồng. Các kỹ sư phải đối mặt với vô số thách thức, từ việc chọn lựa phần cứng phù hợp đến việc viết firmware ổn định và hiệu quả. Một trong những khó khăn lớn nhất là hạn chế về tài nguyên. Vi điều khiển thường có bộ nhớ và tốc độ xử lý hạn chế, đòi hỏi kỹ sư phải tối ưu hóa mã nguồn và sử dụng các kỹ thuật lập trình hiệu quả. Việc debug hệ thống nhúng cũng là một quá trình phức tạp, đòi hỏi kiến thức sâu rộng về cả phần cứng và phần mềm. Ngoài ra, việc đảm bảo tính tin cậy và an toàn của hệ thống là vô cùng quan trọng, đặc biệt trong các ứng dụng quan trọng như hệ thống điều khiển máy bay hoặc thiết bị y tế. Các vấn đề bảo mật cũng ngày càng trở nên quan trọng khi hệ thống nhúng được kết nối với internet, mở ra nguy cơ bị tấn công và xâm nhập.

2.1. Hạn Chế Về Tài Nguyên và Tối Ưu Hóa Hiệu Năng

Hệ thống nhúng thường hoạt động trong môi trường có tài nguyên hạn chế, bao gồm bộ nhớ, tốc độ xử lý, và năng lượng. Điều này đòi hỏi các kỹ sư phải tối ưu hóa mã nguồn, thuật toán, và kiến trúc phần cứng để đạt được hiệu năng tối đa trong điều kiện hạn chế. Việc sử dụng các kỹ thuật như lập trình ngôn ngữ Clập trình ngôn ngữ C++ hiệu quả là vô cùng quan trọng.

2.2. Các Vấn Đề Về Độ Tin Cậy và Bảo Mật trong Ứng Dụng

Độ tin cậy và bảo mật là hai yếu tố quan trọng trong thiết kế hệ thống nhúng, đặc biệt trong các ứng dụng quan trọng như y tế, hàng không, và ô tô. Các hệ thống nhúng phải được thiết kế để hoạt động ổn định trong môi trường khắc nghiệt và chống lại các cuộc tấn công mạng. Cần triển khai các biện pháp bảo mật như mã hóa, xác thực, và kiểm soát truy cập để bảo vệ dữ liệu và ngăn chặn truy cập trái phép.

2.3. Khó Khăn trong Việc Debug và Kiểm Thử Hệ Thống Nhúng

Việc debug hệ thống nhúng có thể rất khó khăn do sự phức tạp của hệ thống và sự tương tác giữa phần cứng và phần mềm. Các kỹ sư cần sử dụng các công cụ và kỹ thuật đặc biệt để theo dõi, phân tích, và sửa lỗi trong hệ thống nhúng. Các công cụ như trình gỡ lỗi JTAG, trình phân tích logic, và các kỹ thuật mô phỏng hệ thống nhúng có thể giúp giảm thiểu thời gian và công sức cần thiết để debug hệ thống.

III. Lập Trình Hệ Thống Nhúng Hướng Dẫn Từ A Đến Z

Lập trình hệ thống nhúng là một nghệ thuật đòi hỏi sự kết hợp giữa kiến thức về phần cứng và kỹ năng lập trình. Ngôn ngữ lập trình CC++ là hai lựa chọn phổ biến nhất do hiệu năng cao và khả năng truy cập trực tiếp vào phần cứng. Tuy nhiên, việc lập trình hệ thống nhúng không chỉ dừng lại ở việc viết mã. Kỹ sư cần phải hiểu rõ về kiến trúc của vi điều khiển, cách bộ nhớ được quản lý, và cách tương tác với các thiết bị ngoại vi. Việc sử dụng RTOS (hệ thống thời gian thực) cũng là một lựa chọn phổ biến để quản lý các tác vụ phức tạp và đảm bảo tính đáp ứng thời gian thực. Ngoài ra, việc debug hệ thống nhúng đòi hỏi các công cụ và kỹ thuật đặc biệt, bao gồm trình gỡ lỗi JTAG và các công cụ mô phỏng.

3.1. Chọn Lựa Ngôn Ngữ Lập Trình C C hay Assembly

Ngôn ngữ lập trình CC++ là lựa chọn phổ biến nhất cho lập trình hệ thống nhúng do hiệu năng cao, khả năng truy cập trực tiếp vào phần cứng, và sự hỗ trợ rộng rãi từ cộng đồng. Assembly có thể được sử dụng cho các đoạn mã quan trọng về hiệu năng, nhưng thường ít được sử dụng do tính phức tạp và khó bảo trì. Việc lựa chọn ngôn ngữ phụ thuộc vào yêu cầu cụ thể của dự án, bao gồm hiệu năng, kích thước mã, và khả năng bảo trì.

3.2. Sử Dụng RTOS Hệ Thống Thời Gian Thực cho Ứng Dụng Phức Tạp

RTOS (hệ thống thời gian thực) là một hệ điều hành đặc biệt được thiết kế để đáp ứng các yêu cầu về thời gian thực. Chúng cung cấp các tính năng như quản lý tác vụ ưu tiên, lập lịch thời gian thực, và đồng bộ hóa giữa các tác vụ. RTOS thường được sử dụng trong các ứng dụng phức tạp như hệ thống điều khiển công nghiệp, robot, và thiết bị y tế.

3.3. Kỹ Thuật Tối Ưu Hóa Mã Nguồn Cho Hệ Thống Nhúng

Tối ưu hóa mã nguồn là rất quan trọng trong lập trình hệ thống nhúng do hạn chế về tài nguyên. Các kỹ thuật tối ưu hóa bao gồm giảm thiểu kích thước mã, tăng tốc độ thực thi, và giảm tiêu thụ năng lượng. Các kỹ thuật cụ thể bao gồm sử dụng các kiểu dữ liệu nhỏ hơn, tránh sử dụng các hàm đệ quy, và sử dụng các kỹ thuật lập trình hướng bit.

IV. Ứng Dụng Hệ Thống Nhúng Từ Nhà Thông Minh Đến Công Nghiệp 4

Ứng dụng hệ thống nhúng đang ngày càng trở nên phổ biến trong nhiều lĩnh vực khác nhau. Trong nhà thông minh, hệ thống nhúng được sử dụng để điều khiển đèn, điều hòa, và các thiết bị gia dụng khác. Trong công nghiệp 4.0, chúng được sử dụng để tự động hóa quy trình sản xuất, giám sát chất lượng sản phẩm, và tối ưu hóa hiệu quả hoạt động. Internet of Things (IoT) là một lĩnh vực đang phát triển mạnh mẽ, nơi hệ thống nhúng được sử dụng để kết nối các thiết bị và thu thập dữ liệu. Các ứng dụng khác bao gồm ô tô tự lái, thiết bị y tế, và hệ thống an ninh.

4.1. Hệ Thống Nhúng Trong Nhà Thông Minh Tiện Nghi và Tự Động Hóa

Hệ thống nhúng đóng vai trò quan trọng trong việc tạo ra các ngôi nhà thông minh, cho phép điều khiển và tự động hóa các thiết bị gia dụng như đèn, điều hòa, hệ thống an ninh, và thiết bị giải trí. Các hệ thống này có thể được điều khiển từ xa thông qua điện thoại thông minh hoặc máy tính bảng, mang lại sự tiện nghi và tiết kiệm năng lượng.

4.2. Hệ Thống Nhúng Trong Công Nghiệp 4.0 Tối Ưu Hóa và Tự Động Hóa

Trong công nghiệp 4.0, hệ thống nhúng được sử dụng để tự động hóa quy trình sản xuất, giám sát chất lượng sản phẩm, và tối ưu hóa hiệu quả hoạt động. Các cảm biến và thiết bị nhúng thu thập dữ liệu từ dây chuyền sản xuất và truyền chúng đến hệ thống trung tâm để phân tích và đưa ra quyết định. Điều này giúp tăng năng suất, giảm chi phí, và cải thiện chất lượng sản phẩm.

4.3. Hệ Thống Nhúng và IoT Kết Nối Vạn Vật

Internet of Things (IoT) là một lĩnh vực đang phát triển mạnh mẽ, nơi hệ thống nhúng được sử dụng để kết nối các thiết bị và thu thập dữ liệu. Các thiết bị IoT có thể là cảm biến, đồng hồ thông minh, xe hơi, hoặc bất kỳ vật dụng nào có thể kết nối với internet. Dữ liệu thu thập được có thể được sử dụng để theo dõi, phân tích, và đưa ra quyết định thông minh.

V. Công Cụ Phát Triển Hệ Thống Nhúng Chọn Lựa Tối Ưu Nhất

Việc lựa chọn công cụ phát triển hệ thống nhúng phù hợp là rất quan trọng để đảm bảo hiệu quả và chất lượng của dự án. Các công cụ này bao gồm trình biên dịch, trình gỡ lỗi, trình mô phỏng, và các công cụ phát triển tích hợp (IDE). Các IDE phổ biến bao gồm Eclipse, Keil MDK, và IAR Embedded Workbench. Ngoài ra, các công cụ mô phỏng hệ thống nhúng có thể giúp giảm thiểu thời gian và chi phí phát triển bằng cách cho phép kiểm thử và debug hệ thống nhúng trong môi trường ảo.

5.1. Các IDE Phổ Biến cho Lập Trình Hệ Thống Nhúng Eclipse Keil IAR

Eclipse, Keil MDK, và IAR Embedded Workbench là các IDE phổ biến cho lập trình hệ thống nhúng. Mỗi IDE có những ưu điểm và nhược điểm riêng, và việc lựa chọn IDE phù hợp phụ thuộc vào yêu cầu cụ thể của dự án và sở thích cá nhân. Ví dụ, Keil MDK thường được sử dụng cho các dự án dựa trên ARM, trong khi IAR Embedded Workbench được biết đến với hiệu năng biên dịch cao.

5.2. Công Cụ Mô Phỏng Hệ Thống Nhúng Tiết Kiệm Thời Gian và Chi Phí

Các công cụ mô phỏng hệ thống nhúng cho phép các kỹ sư kiểm thử và debug hệ thống nhúng trong môi trường ảo, giảm thiểu thời gian và chi phí phát triển. Các công cụ này có thể mô phỏng các thành phần phần cứng như vi điều khiển, bộ nhớ, và các thiết bị ngoại vi, cho phép kiểm tra chức năng và hiệu năng của hệ thống trước khi triển khai trên phần cứng thực tế.

5.3. Debug Hệ Thống Nhúng Kỹ Thuật và Công Cụ Hữu Ích

Debug hệ thống nhúng là một quá trình phức tạp đòi hỏi kiến thức sâu rộng về cả phần cứng và phần mềm. Các kỹ thuật debug phổ biến bao gồm sử dụng trình gỡ lỗi JTAG, trình phân tích logic, và các công cụ theo dõi hệ thống. Việc sử dụng các công cụ này có thể giúp xác định và sửa lỗi nhanh chóng và hiệu quả.

VI. Xu Hướng Phát Triển Hệ Thống Nhúng Tương Lai và Cơ Hội

Hệ thống nhúng đang trải qua một giai đoạn phát triển mạnh mẽ, được thúc đẩy bởi sự phát triển của IoT, trí tuệ nhân tạo (AI), và điện toán đám mây. Xu hướng trong tương lai bao gồm sự gia tăng của các hệ thống nhúng thông minh, khả năng kết nối không dây tốc độ cao, và các ứng dụng bảo mật cao. Hệ điều hành nhúng LinuxYocto Project đang trở nên phổ biến hơn do tính linh hoạt và khả năng tùy biến cao. Ngoài ra, các công nghệ mới như học sâu (deep learning) đang được tích hợp vào hệ thống nhúng để tạo ra các ứng dụng thông minh hơn.

6.1. Hệ Thống Nhúng Thông Minh và Ứng Dụng Trí Tuệ Nhân Tạo

Hệ thống nhúng thông minh là một xu hướng đang phát triển mạnh mẽ, kết hợp khả năng xử lý dữ liệu của hệ thống nhúng với các thuật toán trí tuệ nhân tạo (AI). Các ứng dụng bao gồm nhận dạng hình ảnh, xử lý ngôn ngữ tự nhiên, và dự đoán bảo trì. Các hệ thống này có thể tự học và thích nghi với môi trường, mang lại hiệu quả và độ tin cậy cao hơn.

6.2. Hệ Điều Hành Nhúng Linux và Yocto Project

Hệ điều hành nhúng LinuxYocto Project là các lựa chọn phổ biến cho việc xây dựng hệ thống nhúng do tính linh hoạt, khả năng tùy biến cao, và cộng đồng hỗ trợ lớn. Yocto Project cho phép tạo ra các hệ thống Linux tùy chỉnh, tối ưu hóa cho các ứng dụng nhúng cụ thể. Điều này giúp giảm kích thước mã, tăng hiệu năng, và cải thiện tính bảo mật.

6.3. Bảo Mật Hệ Thống Nhúng Thách Thức và Giải Pháp

Bảo mật hệ thống nhúng là một thách thức ngày càng lớn do sự gia tăng của các cuộc tấn công mạng và sự kết nối của hệ thống nhúng với internet. Các giải pháp bảo mật bao gồm mã hóa dữ liệu, xác thực người dùng, kiểm soát truy cập, và phát hiện xâm nhập. Cần thiết lập các quy trình bảo mật nghiêm ngặt và thường xuyên cập nhật phần mềm để bảo vệ hệ thống khỏi các mối đe dọa.

20/09/2025

Trích đoạn nội dung tài liệu

cmp335* - : tailieuhoctap@hutech.2 TÍCH QSYS VÀO QUARTUS II .3 CHO NIOS II. 40 II - Bài 1: HDL. sinh viên - 5 Giáo viên - 5 .1 VHDL B2: Family là Cyclone IV E Available devices là EP4CE115F29C7 Finish 2 BÀI 1: B3: File > New: B4: VHDL File - Save B5: Project Navigator File Set as Top-level Entity BÀI 1: 3 B6: Processing > Start Compilation Start Compilation B7: B8: File > New Block Diagram/Schematic File. 4 BÀI 1: - Symbol Tool - Trong khung Libraries Project D_FF.

- vào file D_FF_block.bdf Set as Top-Level Entity. - Start Compilation - Assignments > Import Assignments DE2_115_pin_assignments. BÀI 1: 5 - - Start Compilation B9: Tools > Programmer Hardware Setup USB-Blaster.sof Add File, .sof output_files). 6 BÀI 1: RUN / PROG ) sang RUN vào Start cho DE2-115.

SW[1] SW[0] KEY[0] LEDR[0] LEDR[1] RESET D CK Q Qnot 1 0 1 0 0 0 1 BÀI 1: 7 Bài 1.1 -> 8 và gán chân S0 S2: SW[0] SW[2], E: SW[10], D0 D7: LEDG[0] LEDG[7].2 -> 3 và gán chân D0 D7: SW[10] SW[17], Q0 Q2: LEDR[10] LEDR[12].1 VHDL Verilog HDL.3 -> 8 và gán chân S0 S2: SW[10] SW[12], E: SW[0], D0 D7: LEDR[0] LEDR[7].4 -> 3 và gán chân D0 D7: SW[1] SW[8], Q0 Q2: LEDG[5] LEDG[7].3 MÁY TR NG THÁI MOD 10 1.1 File > New State Machine File.2 State Machine Editor: - State Tool -> state10. - Transition Tool -> state10. - Dùng côn Add New Input Port - Add New Output Port - State Table Transition BÀI 1: 11 - Generate HDL File VHDL hay Verilog HDL. 12 BÀI 1: RESET UP Clk Y SW[0] SW[1] KEY[0] LEDG 1 1 0 1 0 0 0 0 0 0 0 0 Bài 1.

14 BÀI 2: BÀI 2: T NHÚNG 2.1 QSYS Trong bài này, Qsys dùng II/e và và : T 1. Qsys: Qsys Tools > Qsys Click File > Save sw2_led8. clk_0 Rename clock_main. BÀI 2: 15 Qsys ii_sys sau: Nios II/e - Trong tab Component Library (bên trái) Embedded Processors, và click vào Nios II Processor.

- - - Ghi chú: On-chip memory RAM 2 KB. - - Chip, và click vào On-Chip Memory (RAM or ROM). BÀI 2: 17 - Click Add - gõ vào 32K. - onchip_memory2_0 thành onchip_memory.

Ghi chú: ing. Các PIO: - Trên tab Component Library, trong Peripherals Microcontroller Peripheral, và click vào PIO (Parallel I/O). 18 BÀI 2: Click Add 2 Basic Settings Input. pio_0 thành sw.

Thêm vào PIO Width = 8, Direction là Output tên thành led. Trên tab Component Library, trong Peripherals Debug and Performance, và click vào System ID Peripheral. BÀI 2: 19 - 1337 sysid_qsys_0 thành sysid_1337. Ghi chú: o 12 errors và 6 warnings.

- 20 BÀI 2: Clock_main > clk Nios2_proc > clk Onchip_memory > clk1 Sw > clk Led > clk Sysid_1337 > clk Ghi chú: - ác chân reset: Clock_main > clk_reset Nios2_proc > reset_n Onchip_memory > reset1 Sw > reset Led > reset Sysid_1337 > reset Ghi chú: 2 errors và 6 warnings. - Avalon Memories: Nios2_proc > data_master Nios2_proc > jtag_debug_module Onchip_memory > s1 Sw > s1 Led > s1 Sysid_1337 > control_slave Ghi chú: 8 errors và 2 warnings. - Nios2_proc > instruction_master BÀI 2: 21 Nios2_proc > jtag_debug_module Onchip_memory > s1 Ghi chú: 10 errors và 2 warnings. - System > Assign Base Addresses.

Ghi chú: - Double-click vào nios_proc. Reset Vector onchip_memory. Trong Exception Vector onchip_memory. - clock_main > clk_in_reset nio2_proc > reset_n.

- Double- Export sw > external_connection (Conduit). 22 BÀI 2: sw sw sw_external_conn. - Click vào tab Generation. - Click Generate - Click Exit Quartus.2 TÍCH H P H TH NG QSYS VÀO QUARTUS II - Project > Add/Remove Files in Project., c synthesis All Files file sw2_led8.qip - Open Add OK.

- Project Navigator Files .qip và Set as Top-Level Entity 24 BÀI 2: - Processing > Start Compilation Start Compilation - File > New Block Diagram/Schematic File. BÀI 2: 25 - Symbol Tool - Trong khung Libraries Project. - Generate Pins for Symbols Ports. - Set as Top-Level Entity cho file sw2_led8_bdf.bdf Processing > Start Compilation 26 BÀI 2: - Assignments > Import Assignments DE2_115_pin_assignments.

- - Start Compilation - Tools > Programmer Hardware Setup ên USB-Blaster. BÀI 2: 27 - Programmer ile .sof Add File - RUN / PROG trên kit DE2 sang RUN Start 2.3 N P PH N M M CHO NIOS II - Tools > Nios II Software Build Tools for Eclipse. - File > New > Nios II Application and BSP from Template. - Trong SOPC Information File name, sw2_led8.

Trong CPU Name nios2_proc. Trong Project name sw2_led8. Trong Project template Hello World. BÀI 2: 29 - File > New > Nios II Application.

30 BÀI 2: - sw2_led8_board. Click vào nút BSP location. - C sw2_led8_bsp. - Project Explorer sw2_led8_board New > Source File.

BÀI 2: 31 - Trong Source file, gõ main.c; trong Template Default C source template. Save sw2_led8_board Run As > 3 Nios II Hardware. sw2_led8_board Run As > Run Configurations. Trong Tab Target Connection Refresh Connection 32 BÀI 2: System ID Properties n vào các check box Ignore mismatched system ID và Ignore mismatched system timestamp.

Downloading 00008000 ( 0%) Downloading 00008F1C (61%) Downloaded 4KB in 0.0s Verifying 00008000 ( 0%) Verifying 00008F1C (61%) Verified OK Starting processor at address 0x00008020 BÀI 2: 33 Bài 2.1 LEDR7 khi SW0 on, LEDR7 khi SW1 on. Ghi chú: Dùng hàm usleep delay 100000 s = 100 ms. Ghi chú Bài 2. - ledg), gán cho LEDG0 LEDG7.

- n là key), gán cho KEY0 - BÀI 3: 35 Bài 3.1: SW7 các LED xanh.h" void main() { int * sw_ptr = (int *)SW_BASE; int * led_ptr = (int *)LEDG_BASE; int * key_ptr = (int *)KEY_BASE; while (1) { if (*(key_ptr+3) > 0) { *(led_ptr)=*(sw_ptr); *(key_ptr+3)=0; } } } Bài 3.2 - - SW0 lên LEDG1 LEDG0. - SW0 lên LEDG7 LEDG0.2 NG T - trong Qsys).h" void main(void) { int * sw_ptr = (int *)SW_BASE; int * led_ptr = (int *)LED_BASE; int * key_ptr = (int *)KEY_BASE; *(key_ptr+2) = 0x0F; __builtin_wrctl(3,1); __builtin_wrctl(0,1); while (1); } } void interrupt_handler(void) { int ipending; ipending = __builtin_rdctl(4); // if (ipending & 0x01) // key_isr(); } void key_isr(void) BÀI 3: 37 { int * led_ptr = (int *) LED_BASE; int * key_ptr = (int *) KEY_BASE; int * sw_ptr = (int *) SW_BASE; *(led_ptr) = *(sw_ptr); *(key_ptr + 3) = 0; } Bài 3.4 - - - 38 BÀI 4: LCD BÀI 4: LCD 4.1 XÂY D NG PH N C NG - - -chip 128 K. - PIO ngõ vào 2 bit, gán cho KEY0 KEY1.2 PH N M M NHÚNG Bài 4.h" void lcd_init(void); void lcd_printf(char message[],int line); int main() { usleep(15000); /* Wait for more than 15 ms before init */ lcd_init(); lcd_printf( ); lcd_printf( ); while (1); return 0; } void lcd_init(void) { IOWR(LCD_BASE,0,0x38);usleep(4100); IOWR(LCD_BASE,0,0x0C);usleep(100); BÀI 4: LCD 39 IOWR(LCD_BASE,0,0x06);usleep(100); IOWR(LCD_BASE,0,0x01);usleep(2000); IOWR(LCD_BASE,0,0x02);usleep(2000);} void lcd_printf(char message[],int line) { int i; if (line==1) IOWR(LCD_BASE,0,0x80); else IOWR(LCD_BASE,0,0xC0); usleep(100); for(i = 0; message[i] != 0; i++) { IOWR (LCD_BASE,2,message[i]); usleep(100); } } Bài 4.2 - Dòng 1: Counter 1 = xxx - Dòng 2: Counter 2 = yyy - 456.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ