Thực hành hệ thống nhúng

2.1. Quy định chung: Báo cáo thực hành được viết một mặt trên khổ giấy A4, đóng quyển, bìa mềm (theo mẫu .). Mỗi sinh viên có một quyển báo cáo riêng.

pdf49 trang | Chia sẻ: hao_hao | Lượt xem: 2200 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Thực hành hệ thống nhúng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
c, chất hóa học đặc biệt... 1.3.2. Nội dung bài thực hành: - Làm quen phần mềm PIC C Compile, Proteus - Thiết kế phần cứng hệ thống nhúng trên Proteus, đáp ứng bài toán Giao tiếp thiết bị ngoại vi cơ bản: LCD, mạch tương tự (lấy tín hiệu ADC). - Tạo một project mới trên CCS - Lập trình phần mềm nhúng, đáp ứng được bài toán. - Nạp vào mạch thật - Kiểm tra hoạt động và đánh giá kết quả 1.3.3. Phương pháp và cách thức thực hành: 1. Giới thiệu thiết bị và dụng cụ thực hành 2. Phân nhóm thực hành 3. Sơ đồ hay cách thức tiến hành TN Thiết kế phần cứng hệ thống nhúng trên môi trường mô phỏng Proteus: M+ R4 1k +88.8 Q1 TIP31 Q2 TIP32 Q3 2SC2547 Q4 2SC2547 Q5 TIP31 Q6 TIP32 Q7 2SC2547 Q8 2SC2547 R1 1k R2 1k R3 1k +12V VCC R6 10K R8 10K INC DEC KB1 KB2 KB1 KB2 A B C D PWM DIR M+ MCLR/VPP 1 RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF- 4 RA3/AN3/VREF+ 5 RA4/T0CKI 6 RA5/AN4/SS/LVDIN 7 RE0/RD/AN5 8 RE1/WR/AN6 9 RE2/CS/AN7 10 OSC1/CLKI 13 RA6/OSC2/CLKO 14 RC0/T1OSO/T1CKI 15 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RD2/PSP2 21 RD3/PSP3 22 RD4/PSP4 27 RD5/PSP5 28 RD6/PSP6 29 RD7/PSP7 30 RC4/SDI/SDA 23 RC5/SDO 24 RC6/TX/CK 25 RC7/RX/DT 26 RB0/INT0 33 RB1/INT1 34 RB2/INT2 35 RB3/CCP2B 36 RB4 37 RB5/PGM 38 RB6/PGC 39 RB7/PGD 40 RC1/T1OSI/CCP2A 16 U1 PIC18F452 Hình 2. Phần cứng hệ thống nhúng. 4. Trình tự tiến hành thực hành Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 14 Lựa chọn các linh kiện từ panel Libraries và đưa vào sơ đồ theo bảng sau: Ký hiệu Tên linh kiện Giải thích Số lượng RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA4/T0CKI/C1OUT 6 RA5/AN4/SS/C2OUT 7 RE0/AN5/RD 8 RE1/AN6/WR 9 RE2/AN7/CS 10 OSC1/CLKIN 13 OSC2/CLKOUT 14 RC1/T1OSI/CCP2 16 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RB7/PGD 40 RB6/PGC 39 RB5 38 RB4 37 RB3/PGM 36 RB2 35 RB1 34 RB0/INT 33 RD7/PSP7 30 RD6/PSP6 29 RD5/PSP5 28 RD4/PSP4 27 RD3/PSP3 22 RD2/PSP2 21 RC7/RX/DT 26 RC6/TX/CK 25 RC5/SDO 24 RC4/SDI/SDA 23 RA3/AN3/VREF+ 5 RC0/T1OSO/T1CKI 15 MCLR/Vpp/THV 1 U1 PIC18F452 Vi điều khiển 1 Q1 TIP41 Q2 TIP42 TIP41 TIP42 Tranzitor 8 5. Tạo Dự án nhúng: o Viết mã nguồn như sau: #include "ADC_LCD_Moto control.h" #define use_portb_lcd TRUE #include #define Forward_pin PIN_D0 #define Backward PIN_D1 void main() { int16 AD; int8 k; const int16 Tmax=1024; setup_adc_ports(ALL_ANALOG); setup_adc(ADC_CLOCK_INTERNAL); setup_psp(PSP_DISABLED); Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 15 setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); lcd_init(); set_tris_d(0);output_d(0); while(1){ output_hight(PIN_D6); output_low(PIN_D6); delay_ms(100); } }  Nạp vào Mạch mô phỏng, kiểm tra kết quả.  Nạp vào mạch thật, kiểm chứng kết quả có trùng khớp với mình mong muốn hay không. 1.4. Ghi chép số liệu, kết quả thực hành 1.5. Chuẩn bị của sinh viên: - Đọc và nghiên cứu bài thực hành - Đọc và nghiên cứu lý thuyết có liên quan đến nội dung bài thực hành - Chuẩn bị các vật dụng, giấy vở ghi chép số liệu thực hành - Mạch máy tính nhúng, phần lập trình nhúng. - Sự chuẩn bị của sinh viên phải được thông qua kiểm tra của người hướng dẫn thực hành. Nếu không đạt, sẽ không được tham gia thực hành và có được thực hành tiếp vào buổi khác hay không sẽ do Bộ môn và Ban chủ nhiệm khoa giải quyết. Phần II. VIẾT BÁO CÁO THỰC HÀNH 2.1. Quy định chung: Báo cáo thực hành được viết một mặt trên khổ giấy A4, đóng quyển, bìa mềm (theo mẫu .........). Mỗi sinh viên có một quyển báo cáo riêng. 2.2. Nội dung báo cáo: 2.2.1. Cơ sở lý thuyết Phân tích cơ sở lý thuyết như mục 1.2. 2.2.2. Báo cáo kết quả thực hành - Mỗi sinh viên (nhóm sinh viên) thiết kế 01 mạch (sơ đồ nguyên lý, phần lập trình nhúng) ngẫu nhiên đã được chuẩn bị trước ở mục 1.4, trên phần mềm Proteus và PICC Compile. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 16 - Tổng hợp những kết quả chính cho nội dung báo cáo - Phân tích sơ đồ nguyên lý, mã lệnh - Lập bảng trạng thái đầu vào, đầu ra (nếu có) - Nhận xét kết quả: + Các kết quả thu được từ thực hành + So sánh kết quả thực hành với lý thuyết + Mức độ kết quả đạt được so với yêu cầu đề ra + Đánh giá các sai số của dụng cụ, thiết bị thực hành, người thao tác... - Kiến nghị. Phần III. ĐÁNH GIÁ CHẤM ĐIỂM, BẢO VỆ THỰC HÀNH Bộ môn hay tập thể hướng dẫn thực hành tổ chức đánh giá điểm thực hành thông qua lựa chọn một trong những hình thức sau: - Chấm điểm dựa trên nội dung bản báo cáo thực hành của từng sinh viên - Chấm điểm theo hình thức bảo vệ vấn đáp. Điểm thực hành của sinh viên được tổng hợp theo lớp có chữ ký xác nhận Trưởng bộ môn chuyên môn. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 17 Biên soạn: Th.S Nguyễn Tuấn Anh QUY TRÌNH THỰC HIỆN BÀI THỰC HÀNH MÔN HỆ THỐNG NHÚNG BÀI 3. QUANG BÁO SỬ DỤNG LED MATRẬN 8X8 CHƯƠNG TRÌNH ĐÀO TẠO ĐẠI HỌC THEO HỆ THỐNG TÍN CHỈ (HỆ 150 TC) Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 18 Phần I. THỰC HÀNH 1.1. Mục đích thực hành: - Giúp sinh viên củng cố các kiến thức về thiết kế và lập trình cho hệ vi điều khiển (trên nền PIC) đồng thời tiếp cận với một môi trường thiết kế tích hợp chuyên nghiệp là phần mềm PIC C Compile và phần mềm mô phỏng Proteus. - Quang báo sử dụng LED matrận 8x8, cho phép lập trình chữ chạy trên 4 led8x8. - Giúp Sinh viên chuyển đổi tư duy từ kiến thức lý thuyết đến tiếp cận với kiến thức thực tế. - Giúp cho SV hiểu rõ được thực hành là một bộ phận công việc của người làm công tác khoa học kỹ thuật. 1.2. Cơ sở lý thuyết: Hệ thống nhúng là một hệ thống tích hợp cả phần cứng và phần mềm nhúng. Phần cứng là hệ thống vi điều khiển PIC và thiết bị ngoại vi. Phần mềm nhúng dùng ngôn ngữ C, biên dịch trên nền PIC C compile. Trong bài này, chúng ta thiết kế phần mềm nhúng, dựa trên nền phần cứng nhúng đã có, theo sơ đồ khối sau đây: Bộ điều khiển trung tâm LED ma trận Trong đó:  Bảng LED ma trận 8x8, hiển thị nội dung lập trình sẵn.  Bộ điều khiển trung tâm, là phần quan trọng nhất của hệ thống; là nơi phần mềm nhúng vào, thể hiện thuật toán của chúng ta. Để thực hiện tốt bài thực hành, chúng ta cần chuẩn bị trước các kiến thức cơ bản sau đây:  Cấu trúc máy tính nhúng, vi điều khiển, mạch logic cơ bản, mạch khuếch đại, mạch lọc, LCD, cảm biến, ADC,...  Ngôn ngữ lập trình C cho PIC (CCS C). Các kiến thức về tập lệnh, cấu trúc rẽ nhánh, vòng lặp, khai báo chương trình con, biến, hằng, mảng,... 1.3. Thực hành: 1.3.1. Nội quy an toàn thực hành: - Người thực hiện thực hành kể cả Hướng dẫn viên và sinh viên đề phải nắm vững các nội quy an toàn do phòng thực hành quy định, thông qua việc học nội quy có kiểm tra sát hạch. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 19 - Các thiết bị thực hành chịu sự kiểm soát an toàn theo phân cấp của nhà nước phải đảm bảo có đầy đủ biên bản kiểm định an toàn của cấp có thẩm quyền. Ví dụ: Thiết bị điện cao thế (trên 1 kV), các thiết bị áp lực, chất hóa học đặc biệt... 1.3.2. Nội dung bài thực hành: - Làm quen phần mềm PIC C Compile, Proteus - Thiết kế phần cứng hệ thống nhúng trên Proteus, đáp ứng bài toán - Tạo một project mới trên CCS - Lập trình phần mềm nhúng, đáp ứng được bài toán. - Nạp vào mạch thật - Kiểm tra hoạt động và đánh giá kết quả 1.3.3. Phương pháp và cách thức thực hành: 1. Giới thiệu thiết bị và dụng cụ thực hành 2. Phân nhóm thực hành 3. Sơ đồ hay cách thức tiến hành TN Thiết kế phần cứng hệ thống nhúng trên môi trường mô phỏng Proteus: H 1 H 2 H 3 H 4 H 5 H 6 H 7 H 8 C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 H 1 H 2 H 3 H 4 H 5 H 6 H 7 H 8 C 9 C 1 0 C 1 1 C 1 2 C 1 3 C 1 4 C 1 5 C 1 6 H 1 H 2 H 3 H 4 H 5 H 6 H 7 H 8 C 1 7 C 1 8 C 1 9 C 2 0 C 2 1 C 2 2 C 2 3 C 2 4 H 1 H 2 H 3 H 4 H 5 H 6 H 7 H 8 C 2 5 C 2 6 C 2 7 C 2 8 C 2 9 C 3 0 C 3 1 C 3 2 MCLR/VPP 1 RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF- 4 RA3/AN3/VREF+ 5 RA4/T0CKI 6 RA5/AN4/SS/LVDIN 7 RE0/RD/AN5 8 RE1/WR/AN6 9 RE2/CS/AN7 10 OSC1/CLKI 13 RA6/OSC2/CLKO 14 RC0/T1OSO/T1CKI 15 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RD2/PSP2 21 RD3/PSP3 22 RD4/PSP4 27 RD5/PSP5 28 RD6/PSP6 29 RD7/PSP7 30 RC4/SDI/SDA 23 RC5/SDO 24 RC6/TX/CK 25 RC7/RX/DT 26 RB0/INT0 33 RB1/INT1 34 RB2/INT2 35 RB3/CCP2B 36 RB4 37 RB5/PGM 38 RB6/PGC 39 RB7/PGD 40 RC1/T1OSI/CCP2A 16 U1 PIC18F452 H1 H2 H3 H4 H5 H6 H7 H8 A 2 B 3 C 2 1 D 2 2 IN H 2 3 S T B 1 Q 0 1 1 Q 1 9 Q 2 1 0 Q 3 8 Q 4 7 Q 5 6 Q 6 5 Q 7 4 Q 8 1 8 Q 9 1 7 Q 1 0 2 0 Q 1 1 1 9 Q 1 2 1 4 Q 1 3 1 3 Q 1 4 1 6 Q 1 5 1 5 U2 4514 A 2 B 3 C 2 1 D 2 2 IN H 2 3 S T B 1 Q 0 1 1 Q 1 9 Q 2 1 0 Q 3 8 Q 4 7 Q 5 6 Q 6 5 Q 7 4 Q 8 1 8 Q 9 1 7 Q 1 0 2 0 Q 1 1 1 9 Q 1 2 1 4 Q 1 3 1 3 Q 1 4 1 6 Q 1 5 1 5 U3 4514 A B C D IN H 1 A B C D IN H 2 A B C D INH1 INH2 C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 C 9 C 10 C 11 C 12 C 13 C 14 C 15 C 16 C 17 C 18 C 19 C 20 C 21 C 22 C 23 C 24 C 25 C 26 C 27 C 28 C 29 C 30 C 31 C 32 Hình 3. Phần cứng hệ thống nhúng. 4. Trình tự tiến hành thực hành Lựa chọn các linh kiện từ panel Libraries và đưa vào sơ đồ theo bảng sau: Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 20 Ký hiệu Tên linh kiện Giải thích Số lượng RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA4/T0CKI/C1OUT 6 RA5/AN4/SS/C2OUT 7 RE0/AN5/RD 8 RE1/AN6/WR 9 RE2/AN7/CS 10 OSC1/CLKIN 13 OSC2/CLKOUT 14 RC1/T1OSI/CCP2 16 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RB7/PGD 40 RB6/PGC 39 RB5 38 RB4 37 RB3/PGM 36 RB2 35 RB1 34 RB0/INT 33 RD7/PSP7 30 RD6/PSP6 29 RD5/PSP5 28 RD4/PSP4 27 RD3/PSP3 22 RD2/PSP2 21 RC7/RX/DT 26 RC6/TX/CK 25 RC5/SDO 24 RC4/SDI/SDA 23 RA3/AN3/VREF+ 5 RC0/T1OSO/T1CKI 15 MCLR/Vpp/THV 1 U1 PIC18F452 Vi điều khiển 1 LED MATRIX LED am trận 4 A 2 B 3 C 21 D 22 IN H 23 S T B 1 Q 0 11 Q 1 9 Q 2 10 Q 3 8 Q 4 7 Q 5 6 Q 6 5 Q 7 4 Q 8 18 Q 9 17 Q 1 0 20 Q 1 1 19 Q 1 2 14 Q 1 3 13 Q 1 4 16 Q 1 5 15 U2 4514 4514 Bộ giải mã 4 5. Tạo Dự án nhúng: o Viết mã nguồn như sau: const char Nmax=10; const char mf[Nmax]={0xf8,0xfc,0x12,0x11,0x11,0x12,0xfc,0xf8,0x00}, DT=1; Int8 i,j,Dau,cnt; void main() {SET_TRIS_B(0);SET_TRIS_D(0); // portb=portd=trisb=trisd=0; Dau=cnt=0; while(1) { j=128; if(++cnt==20){Dau=(Dau+1)%Nmax;cnt=0;} for(i=7;i>=0;i--){ output_d(~mf[(Dau+i)%Nmax]); output_b(j); j/=2; delay_ms(DT); output_b(0); } } }  Nạp vào Mạch mô phỏng, kiểm tra kết quả.  Nạp vào mạch thật, kiểm chứng kết quả có trùng khớp với mình mong muốn hay không. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 21 1.4. Ghi chép số liệu, kết quả thực hành 1.5. Chuẩn bị của sinh viên: - Đọc và nghiên cứu bài thực hành - Đọc và nghiên cứu lý thuyết có liên quan đến nội dung bài thực hành - Chuẩn bị các vật dụng, giấy vở ghi chép số liệu thực hành - Mạch máy tính nhúng, phần lập trình nhúng. - Sự chuẩn bị của sinh viên phải được thông qua kiểm tra của người hướng dẫn thực hành. Nếu không đạt, sẽ không được tham gia thực hành và có được thực hành tiếp vào buổi khác hay không sẽ do Bộ môn và Ban chủ nhiệm khoa giải quyết. Phần II. VIẾT BÁO CÁO THỰC HÀNH 2.1. Quy định chung: Báo cáo thực hành được viết một mặt trên khổ giấy A4, đóng quyển, bìa mềm (theo mẫu ...). Mỗi sinh viên có một quyển báo cáo riêng. 2.2. Nội dung báo cáo: 2.2.1. Cơ sở lý thuyết Phân tích cơ sở lý thuyết như mục 1.2. 2.2.2. Báo cáo kết quả thực hành - Mỗi sinh viên (nhóm sinh viên) thiết kế 01 mạch (sơ đồ nguyên lý, phần lập trình nhúng) ngẫu nhiên đã được chuẩn bị trước ở mục 1.4, trên phần mềm Proteus và PICC Compile. - Tổng hợp những kết quả chính cho nội dung báo cáo - Phân tích sơ đồ nguyên lý, mã lệnh - Lập bảng trạng thái đầu vào, đầu ra (nếu có) - Nhận xét kết quả: + Các kết quả thu được từ thực hành + So sánh kết quả thực hành với lý thuyết + Mức độ kết quả đạt được so với yêu cầu đề ra + Đánh giá các sai số của dụng cụ, thiết bị thực hành, người thao tác... - Kiến nghị. Phần III. ĐÁNH GIÁ CHẤM ĐIỂM, BẢO VỆ THỰC HÀNH Bộ môn hay tập thể hướng dẫn thực hành tổ chức đánh giá điểm thực hành thông qua lựa chọn một trong những hình thức sau: - Chấm điểm dựa trên nội dung bản báo cáo thực hành của từng sinh viên - Chấm điểm theo hình thức bảo vệ vấn đáp. Điểm thực hành của sinh viên được tổng hợp theo lớp có chữ ký xác nhận Trưởng bộ môn chuyên môn. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 22 Biên soạn: Th.S Nguyễn Tuấn Anh QUY TRÌNH THỰC HIỆN BÀI THỰC HÀNH MÔN HỆ THỐNG NHÚNG BÀI 4. XỬ LÝ NGẮT VÀ GIAO TIẾP BÀN PHÍM CHƯƠNG TRÌNH ĐÀO TẠO ĐẠI HỌC THEO HỆ THỐNG TÍN CHỈ (HỆ 150 TC) Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 23 Phần I. THỰC HÀNH 1.1. Mục đích thực hành: - Giúp sinh viên củng cố các kiến thức về thiết kế và lập trình cho hệ vi điều khiển (trên nền PIC) đồng thời tiếp cận với một môi trường thiết kế tích hợp chuyên nghiệp là phần mềm PIC C Compile và phần mềm mô phỏng Proteus. - Xử lý ngắt và giao tiếp bàn phím, cho phép lập trình quét 16 phím, cho phép hiển thị kết quả trên LED 7 đoạn, cho phép lập trình cho 3 loại ngắt. - Giúp Sinh viên chuyển đổi tư duy từ kiến thức lý thuyết đến tiếp cận với kiến thức thực tế. - Giúp cho SV hiểu rõ được thực hành là một bộ phận công việc của người làm công tác khoa học kỹ thuật. 1.2. Cơ sở lý thuyết: Hệ thống nhúng là một hệ thống tích hợp cả phần cứng và phần mềm nhúng. Phần cứng là hệ thống vi điều khiển PIC và thiết bị ngoại vi. Phần mềm nhúng dùng ngôn ngữ C, biên dịch trên nền PIC C compile. Trong bài này, chúng ta thiết kế phần mềm nhúng, dựa trên nền phần cứng nhúng đã có, theo sơ đồ khối sau đây: Trong đó:  Bàn phím 16 phím ghép dạng ma trận.  Hiển thị trạng thái lên LED 7 thanh  Bộ điều khiển trung tâm, là phần quan trọng nhất của hệ thống; là nơi phần mềm nhúng vào, thể hiện thuật toán của chúng ta. Để thực hiện tốt bài thực hành, chúng ta cần chuẩn bị trước các kiến thức cơ bản sau đây:  Cấu trúc máy tính nhúng, vi điều khiển, mạch logic cơ bản, mạch khuếch đại, mạch lọc, LCD, cảm biến, ADC,...  Ngôn ngữ lập trình C cho PIC (CCS C). Các kiến thức về tập lệnh, cấu trúc rẽ nhánh, vòng lặp, khai báo chương trình con, biến, hằng, mảng,... Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 24 1.3. Thực hành: 1.3.1. Nội quy an toàn thực hành: - Người thực hiện thực hành kể cả Hướng dẫn viên và sinh viên đề phải nắm vững các nội quy an toàn do phòng thực hành quy định, thông qua việc học nội quy có kiểm tra sát hạch. - Các thiết bị thực hành chịu sự kiểm soát an toàn theo phân cấp của nhà nước phải đảm bảo có đầy đủ biên bản kiểm định an toàn của cấp có thẩm quyền. Ví dụ: Thiết bị điện cao thế (trên 1 kV), các thiết bị áp lực, chất hóa học đặc biệt... 1.3.2. Nội dung bài thực hành: - Làm quen phần mềm PIC C Compile, Proteus - Thiết kế phần cứng hệ thống nhúng trên Proteus, đáp ứng bài toán - Tạo một project mới trên CCS - Lập trình phần mềm nhúng, đáp ứng được bài toán. - Nạp vào mạch thật - Kiểm tra hoạt động và đánh giá kết quả 1.3.3. Phương pháp và cách thức thực hành: 1. Giới thiệu thiết bị và dụng cụ thực hành 2. Phân nhóm thực hành 3. Sơ đồ hay cách thức tiến hành TN Thiết kế phần cứng hệ thống nhúng trên môi trường mô phỏng Proteus: MCLR/VPP 1 RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF- 4 RA3/AN3/VREF+ 5 RA4/T0CKI 6 RA5/AN4/SS/LVDIN 7 RE0/RD/AN5 8 RE1/WR/AN6 9 RE2/CS/AN7 10 OSC1/CLKI 13 RA6/OSC2/CLKO 14 RC0/T1OSO/T1CKI 15 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RD2/PSP2 21 RD3/PSP3 22 RD4/PSP4 27 RD5/PSP5 28 RD6/PSP6 29 RD7/PSP7 30 RC4/SDI/SDA 23 RC5/SDO 24 RC6/TX/CK 25 RC7/RX/DT 26 RB0/INT0 33 RB1/INT1 34 RB2/INT2 35 RB3/CCP2B 36 RB4 37 RB5/PGM 38 RB6/PGC 39 RB7/PGD 40 RC1/T1OSI/CCP2A 16 U1 PIC18F452 H1 H2 H3 H4 C1 C2 C3 C4 A B C D A B C D 1 2 3 654 8 9 = 7 +CON 0 A B C D 1 2 43 H1 H2 H3 H4 C 1 C 2 C 3 C 4 E F G H L 1 L 2 E F G H L1 L2 Hình 4. Phần cứng hệ thống nhúng. 4. Trình tự tiến hành thực hành Lựa chọn các linh kiện từ panel Libraries và đưa vào sơ đồ theo bảng sau: Ký hiệu Tên linh kiện Giải thích Số lượng Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 25 Ký hiệu Tên linh kiện Giải thích Số lượng RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA4/T0CKI/C1OUT 6 RA5/AN4/SS/C2OUT 7 RE0/AN5/RD 8 RE1/AN6/WR 9 RE2/AN7/CS 10 OSC1/CLKIN 13 OSC2/CLKOUT 14 RC1/T1OSI/CCP2 16 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RB7/PGD 40 RB6/PGC 39 RB5 38 RB4 37 RB3/PGM 36 RB2 35 RB1 34 RB0/INT 33 RD7/PSP7 30 RD6/PSP6 29 RD5/PSP5 28 RD4/PSP4 27 RD3/PSP3 22 RD2/PSP2 21 RC7/RX/DT 26 RC6/TX/CK 25 RC5/SDO 24 RC4/SDI/SDA 23 RA3/AN3/VREF+ 5 RC0/T1OSO/T1CKI 15 MCLR/Vpp/THV 1 U1 PIC18F452 Vi điều khiển 1 1 2 3 654 8 9 = 7 +CON 0 A B C D 1 2 43 Button MATRIX Bàn phím ma trận 1 LED 7 Segments LED 7 đoạn 1 5. Tạo Dự án nhúng: o Viết mã nguồn như sau: #include #use delay(clock=8000000) #fuses HS,NOWDT,NOPROTECT,NOLVP const int8 LED7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; const int8 time=15; int8 i,cnt,tmp, L1,L2,L3,L4; void main() { SET_TRIS_b(0);SET_TRIS_C(0); while(1){ cnt++; tmp=cnt; L1=tmp % 10; tmp/=10; L2=tmp % 10; tmp/=10; for(i=0;i<10;i++){ output_b(LED7[L1]);output_high(PIN_E0);delay_ms(time); output_low(PIN_D0); output_b(LED7[L2]);output_high(PIN_E1);delay_ms(time); output_low(PIN_D1); } } }  Nạp vào Mạch mô phỏng, kiểm tra kết quả. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 26  Nạp vào mạch thật, kiểm chứng kết quả có trùng khớp với mình mong muốn hay không. 1.4. Ghi chép số liệu, kết quả thực hành 1.5. Chuẩn bị của sinh viên: - Đọc và nghiên cứu bài thực hành - Đọc và nghiên cứu lý thuyết có liên quan đến nội dung bài thực hành - Chuẩn bị các vật dụng, giấy vở ghi chép số liệu thực hành - Mạch máy tính nhúng, phần lập trình nhúng. - Sự chuẩn bị của sinh viên phải được thông qua kiểm tra của người hướng dẫn thực hành. Nếu không đạt, sẽ không được tham gia thực hành và có được thực hành tiếp vào buổi khác hay không sẽ do Bộ môn và Ban chủ nhiệm khoa giải quyết. Phần II. VIẾT BÁO CÁO THỰC HÀNH 2.1. Quy định chung: Báo cáo thực hành được viết một mặt trên khổ giấy A4, đóng quyển, bìa mềm (theo mẫu ...). Mỗi sinh viên có một quyển báo cáo riêng. 2.2. Nội dung báo cáo: 2.2.1. Cơ sở lý thuyết Phân tích cơ sở lý thuyết như mục 1.2. 2.2.2. Báo cáo kết quả thực hành - Tổng hợp những kết quả chính cho nội dung báo cáo - Phân tích sơ đồ nguyên lý, mã lệnh - Lập bảng trạng thái đầu vào, đầu ra (nếu có) - Nhận xét kết quả: + Các kết quả thu được từ thực hành + So sánh kết quả thực hành với lý thuyết + Mức độ kết quả đạt được so với yêu cầu đề ra + Đánh giá các sai số của dụng cụ, thiết bị thực hành, người thao tác... - Kiến nghị. Phần III. ĐÁNH GIÁ CHẤM ĐIỂM, BẢO VỆ THỰC HÀNH Bộ môn hay tập thể hướng dẫn thực hành tổ chức đánh giá điểm thực hành thông qua lựa chọn một trong những hình thức sau: - Chấm điểm dựa trên nội dung bản báo cáo thực hành của từng sinh viên - Chấm điểm theo hình thức bảo vệ vấn đáp. Điểm thực hành của sinh viên được tổng hợp theo lớp có chữ ký xác nhận Trưởng bộ môn chuyên môn. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 27 Biên soạn: Th.S Nguyễn Tuấn Anh QUY TRÌNH THỰC HIỆN BÀI THỰC HÀNH MÔN HỆ THỐNG NHÚNG BÀI 5. TRUYỀN THÔNG VỚI PC QUA CỔNG USB CHƯƠNG TRÌNH ĐÀO TẠO ĐẠI HỌC THEO HỆ THỐNG TÍN CHỈ (HỆ 150 TC) Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 28 Phần I. THỰC HÀNH 1.1. Mục đích thực hành: - Giúp sinh viên củng cố các kiến thức về thiết kế và lập trình cho hệ vi điều khiển (trên nền PIC) đồng thời tiếp cận với một môi trường thiết kế tích hợp chuyên nghiệp là phần mềm PIC C Compile và phần mềm mô phỏng Proteus. - Truyền thông với PC qua cổng USB, Lập trình trên PC, truyền nhận dữ liệu theo chuẩn USB, Lập trình trên hệ thống nhúng truyền thông theo chuẩn USB. - Giúp Sinh viên chuyển đổi tư duy từ kiến thức lý thuyết đến tiếp cận với kiến thức thực tế. - Giúp cho SV hiểu rõ được thực hành là một bộ phận công việc của người làm công tác khoa học kỹ thuật. 1.2. Cơ sở lý thuyết: Hệ thống nhúng là một hệ thống tích hợp cả phần cứng và phần mềm nhúng. Phần cứng là hệ thống vi điều khiển PIC và thiết bị ngoại vi. Phần mềm nhúng dùng ngôn ngữ C, biên dịch trên nền PIC C compile. Trong bài này, chúng ta thiết kế phần mềm nhúng, dựa trên nền phần cứng nhúng đã có, theo sơ đồ khối sau đây: Trong đó:  Trên PC cần có phần mềm truyền thông USB  Bộ điều khiển trung tâm, là phần quan trọng nhất của hệ thống; là nơi phần mềm nhúng vào, thể hiện thuật toán của chúng ta. Để thực hiện tốt bài thực hành, chúng ta cần chuẩn bị trước các kiến thức cơ bản sau đây:  Cấu trúc máy tính nhúng, vi điều khiển, mạch logic cơ bản, mạch khuếch đại, mạch lọc, LCD, cảm biến, ADC,...  Ngôn ngữ lập trình C cho PIC (CCS C). Các kiến thức về tập lệnh, cấu trúc rẽ nhánh, vòng lặp, khai báo chương trình con, biến, hằng, mảng,... 1.3. Thực hành: 1.3.1. Nội quy an toàn thực hành: - Người thực hiện thực hành kể cả Hướng dẫn viên và sinh viên đề phải nắm vững các nội quy an toàn do phòng thực hành quy định, thông qua việc học nội quy có kiểm tra sát hạch. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 29 - Các thiết bị thực hành chịu sự kiểm soát an toàn theo phân cấp của nhà nước phải đảm bảo có đầy đủ biên bản kiểm định an toàn của cấp có thẩm quyền. Ví dụ: Thiết bị điện cao thế (trên 1 kV), các thiết bị áp lực, chất hóa học đặc biệt... 1.3.2. Nội dung bài thực hành: - Làm quen phần mềm PIC C Compile, Proteus - Thiết kế phần cứng hệ thống nhúng trên Proteus, đáp ứng bài toán - Tạo một project mới trên CCS - Lập trình phần mềm nhúng, đáp ứng được bài toán. - Nạp vào mạch thật - Kiểm tra hoạt động và đánh giá kết quả 1.3.3. Phương pháp và cách thức thực hành: 1. Giới thiệu thiết bị và dụng cụ thực hành 2. Phân nhóm thực hành 3. Sơ đồ hay cách thức tiến hành TN Thiết kế phần cứng hệ thống nhúng trên môi trường mô phỏng Proteus: D1 D2 D3 D4 S3 S1 Reset RXD RTS TXD CTS D7 32.0 SCK 2 CS 7 SI/O 1 U3 TC77 RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA3/AN3/VREF+ 5 RA4/T0CKI/C1OUT/RCV 6 RA5/AN4/SS/LVDIN/C2OUT 7 RA6/OSC2/CLKO 14 OSC1/CLKI 13 RB0/AN12/INT0/FLT0/SDI/SDA 33 RB1/AN10/INT1/SCK/SCL 34 RB2/AN8/INT2/VMO 35 RB3/AN9/CCP2/VPO 36 RB4/AN11/KBI0/CSSPP 37 RB5/KBI1/PGM 38 RB6/KBI2/PGC 39 RB7/KBI3/PGD 40 RC0/T1OSO/T1CKI 15 RC1/T1OSI/CCP2/UOE 16 RC2/CCP1/P1A 17 VUSB 18 RC4/D-/VM 23 RC5/D+/VP 24 RC6/TX/CK 25 RC7/RX/DT/SDO 26 RD0/SPP0 19 RD1/SPP1 20 RD2/SPP2 21 RD3/SPP3 22 RD4/SPP4 27 RD5/SPP5/P1B 28 RD6/SPP6/P1C 29 RD7/SPP7/P1D 30 RE0/AN5/CK1SPP 8 RE1/AN6/CK2SPP 9 RE2/AN7/OESPP 10 RE3/MCLR/VPP 1 U1 PIC18F4550 S2 VCC D+ D- GND U2 USBCONN Hình 5. Phần cứng hệ thống nhúng. 4. Trình tự tiến hành thực hành Lựa chọn các linh kiện từ panel Libraries và đưa vào sơ đồ theo bảng sau: Ký hiệu Tên linh kiện Giải thích Số lượng Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 30 Ký hiệu Tên linh kiện Giải thích Số lượng RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA4/T0CKI/C1OUT 6 RA5/AN4/SS/C2OUT 7 RE0/AN5/RD 8 RE1/AN6/WR 9 RE2/AN7/CS 10 OSC1/CLKIN 13 OSC2/CLKOUT 14 RC1/T1OSI/CCP2 16 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RB7/PGD 40 RB6/PGC 39 RB5 38 RB4 37 RB3/PGM 36 RB2 35 RB1 34 RB0/INT 33 RD7/PSP7 30 RD6/PSP6 29 RD5/PSP5 28 RD4/PSP4 27 RD3/PSP3 22 RD2/PSP2 21 RC7/RX/DT 26 RC6/TX/CK 25 RC5/SDO 24 RC4/SDI/SDA 23 RA3/AN3/VREF+ 5 RC0/T1OSO/T1CKI 15 MCLR/Vpp/THV 1 U1 PIC18F452 Vi điều khiển 1 VCC D+ D- GND U2 USBCONN USB connector Đầu nối USB 1 5. Tạo Dự án nhúng: o Viết mã nguồn như sau: //set to 1 to use a PIC's internal USB Peripheral //set to 0 to use a National USBN960x peripheral #define __USB_PIC_PERIF__ 0 //if using a 16bit PIC on an Explorer 16 borad, set this to 1 #define __USB_PIC_EXPLORER16__ 1 #if __USB_PIC_PERIF__ #DEFINE LED1 PIN_A5 #if defined(__PCM__) #include #device *=16 #device ADC=8 #fuses HS,NOWDT,NOPROTECT #use delay(clock=24000000) #elif defined(__PCH__) #include #device ADC=8 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGE N #use delay(clock=48000000) #elif defined(__PCD__) #include #device ADC=8 Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 31 #fuses HS,PR_PLL,NOWDT,DISUVREG,ICSP2 #if __USB_PIC_EXPLORER16__ #use delay(clock=32M) //8MHz clock is 4x because of PLL #fuses PLL2 //Divide 8MHz by 2 to get the 4MHz required for USB #pin_select U1TX = PIN_F5 #pin_select U1RX = PIN_F4 #endif #endif #else //use the National USBN960x peripheral #DEFINE LED1 PIN_B3 #if defined(__PCM__) #include #device ADC=8 #device *=16 #fuses HS,NOWDT,NOPROTECT,NOLVP #elif defined(__PCH__) #include #device ADC=8 #fuses HS,NOWDT,NOPROTECT,NOLVP #endif #use delay(clock=20000000) #endif //endif check to see which peripheral to use #use rs232(baud=9600, UART1, errors) // you can change the tx and rx packet sizes here. // in order to be compatbile with hiddemo.exe, these values must be 2. #define USB_CONFIG_HID_TX_SIZE 2 #define USB_CONFIG_HID_RX_SIZE 2 ///only the 18F4550 development kit has this pin #if __USB_PIC_PERIF__ && defined(__PCH__) #define USB_CON_SENSE_PIN PIN_B2 #endif #if __USB_PIC_PERIF__ #if defined(__PCM__) #include //Microchip PIC16C765 hardware layer for usb.c #elif defined(__PCH__) #include //Microchip PIC18Fxx5x hardware layer for usb.c #elif defined(__PCD__) #include //Microchip PIC24 hardware layer for usb.c #endif #else #include //National 960x hardware layer for usb.c #endif Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 32 #include //USB Configuration and Device descriptors for this UBS device #include //handles usb setup tokens and get descriptor reports #if defined(__PCD__) && __USB_PIC_EXPLORER16__ #undef LED1 #define LED1 PIN_A0 #define LED2 PIN_A1 #define LED3 PIN_A2 #define LED_ON(x) output_high(x) #define LED_OFF(x) output_low(x) #define BUTTON_PRESSED() !input(PIN_D6) #define HW_ADC_PORTS sAN5 #define HW_ADC_CHANNEL 5 #define HW_ADC_CONFIG ADC_CLOCK_INTERNAL | ADC_TAD_MUL_31 #else #define LED2 PIN_B4 #define LED3 PIN_B5 #define LED_ON(x) output_low(x) #define LED_OFF(x) output_high(x) #define BUTTON_PRESSED() !input(PIN_A4) #if defined(AN0) #define HW_ADC_PORTS AN0 #elif defined(AN0_AN1_AN3) #define HW_ADC_PORTS AN0_AN1_AN3 #elif defined(sAN0) #define HW_ADC_PORTS sAN0 #else #define define HW_ADC_PORTS for your hardware #endif #define HW_ADC_CONFIG ADC_CLOCK_INTERNAL #define HW_ADC_CHANNEL 0 #endif void usb_debug_task(void) { static int8 last_connected; static int8 last_enumerated; int8 new_connected; int8 new_enumerated; new_connected=usb_attached(); new_enumerated=usb_enumerated(); if (new_enumerated) LED_ON(LED1); else LED_OFF(LED1); if (new_connected && !last_connected) Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 33 printf("\r\n\nUSB connected, waiting for enumaration..."); if (!new_connected && last_connected) printf("\r\n\nUSB disconnected, waiting for connection..."); if (new_enumerated && !last_enumerated) printf("\r\n\nUSB enumerated by PC/HOST"); if (!new_enumerated && last_enumerated) printf("\r\n\nUSB unenumerated by PC/HOST, waiting for enumeration..."); last_connected=new_connected; last_enumerated=new_enumerated; } void main(void) { int8 out_data[2]; int8 in_data[2]; int8 send_timer=0; LED_OFF(LED1); LED_OFF(LED2); LED_OFF(LED3); printf("\r\n\nCCS Vendor Specific HID Example"); #ifdef __PCH__ printf("\r\nPCH: v"); printf(__PCH__); #elif defined(__PCD__) printf("\r\nPCD: v"); printf(__PCD__); #else printf("\r\nPCM: v"); printf(__PCM__); #endif usb_init_cs(); #if !(__USB_PIC_PERIF__) printf("\r\nUSBN: 0x%X", usbn_get_version()); #endif printf("\r\n"); setup_adc_ports(HW_ADC_PORTS); setup_adc(HW_ADC_CONFIG); set_adc_channel(HW_ADC_CHANNEL); while (TRUE) { usb_task(); usb_debug_task(); Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 34 if (usb_enumerated()) { if (!send_timer) { send_timer=250; out_data[0]=read_adc(); out_data[1]=BUTTON_PRESSED(); if (usb_put_packet(1, out_data, 2, USB_DTS_TOGGLE)) printf("\r\n<-- Sending 2 bytes: 0x%X 0x%X", out_data[0], out_data[1]); } if (usb_kbhit(1)) { usb_get_packet(1, in_data, 2); printf("\r\n--> Received data: 0x%X 0x%X",in_data[0],in_data[1]); if (in_data[0]) {LED_ON(LED2);} else {LED_OFF(LED2);} if (in_data[1]) {LED_ON(LED3);} else {LED_OFF(LED3);} } send_timer--; delay_ms(1); } } }  Nạp vào Mạch mô phỏng, kiểm tra kết quả.  Nạp vào mạch thật, kiểm chứng kết quả có trùng khớp với mình mong muốn hay không. 1.4. Ghi chép số liệu, kết quả thực hành 1.5. Chuẩn bị của sinh viên: - Đọc và nghiên cứu bài thực hành - Đọc và nghiên cứu lý thuyết có liên quan đến nội dung bài thực hành - Chuẩn bị các vật dụng, giấy vở ghi chép số liệu thực hành - Mạch máy tính nhúng, phần lập trình nhúng. - Sự chuẩn bị của sinh viên phải được thông qua kiểm tra của người hướng dẫn thực hành. Nếu không đạt, sẽ không được tham gia thực hành và có được thực hành tiếp vào buổi khác hay không sẽ do Bộ môn và Ban chủ nhiệm khoa giải quyết. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 35 Phần II. VIẾT BÁO CÁO THỰC HÀNH 2.1. Quy định chung: Báo cáo thực hành được viết một mặt trên khổ giấy A4, đóng quyển, bìa mềm (theo mẫu ...). Mỗi sinh viên có một quyển báo cáo riêng. 2.2. Nội dung báo cáo: 2.2.1. Cơ sở lý thuyết Phân tích cơ sở lý thuyết như mục 1.2. 2.2.2. Báo cáo kết quả thực hành - Mỗi sinh viên (nhóm sinh viên) thiết kế 01 mạch (sơ đồ nguyên lý, phần lập trình nhúng) ngẫu nhiên đã được chuẩn bị trước ở mục 1.4, trên phần mềm Proteus và PICC Compile. - Tổng hợp những kết quả chính cho nội dung báo cáo - Phân tích sơ đồ nguyên lý, mã lệnh - Lập bảng trạng thái đầu vào, đầu ra (nếu có) - Nhận xét kết quả: + Các kết quả thu được từ thực hành + So sánh kết quả thực hành với lý thuyết + Mức độ kết quả đạt được so với yêu cầu đề ra + Đánh giá các sai số của dụng cụ, thiết bị thực hành, người thao tác... - Kiến nghị. Phần III. ĐÁNH GIÁ CHẤM ĐIỂM, BẢO VỆ THỰC HÀNH Bộ môn hay tập thể hướng dẫn thực hành tổ chức đánh giá điểm thực hành thông qua lựa chọn một trong những hình thức sau: - Chấm điểm dựa trên nội dung bản báo cáo thực hành của từng sinh viên - Chấm điểm theo hình thức bảo vệ vấn đáp. Điểm thực hành của sinh viên được tổng hợp theo lớp có chữ ký xác nhận Trưởng bộ môn chuyên môn. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 36 Biên soạn: Th.S Nguyễn Tuấn Anh QUY TRÌNH THỰC HIỆN BÀI THỰC HÀNH MÔN HỆ THỐNG NHÚNG BÀI 6. ĐỌC DỮ LIỆU TRONG THẺ NHỚ SD/MMC CHƯƠNG TRÌNH ĐÀO TẠO ĐẠI HỌC THEO HỆ THỐNG TÍN CHỈ (HỆ 150 TC) Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 37 Phần I. THỰC HÀNH 1.1. Mục đích thực hành: - Giúp sinh viên củng cố các kiến thức về thiết kế và lập trình cho hệ vi điều khiển (trên nền PIC) đồng thời tiếp cận với một môi trường thiết kế tích hợp chuyên nghiệp là phần mềm PIC C Compile và phần mềm mô phỏng Proteus. - Truyền thông với PC qua cổng USB, Ghi/đọc dữ liệu theo định dạng FAT, Lập trình truyền thông. - Giúp Sinh viên chuyển đổi tư duy từ kiến thức lý thuyết đến tiếp cận với kiến thức thực tế. - Giúp cho SV hiểu rõ được thực hành là một bộ phận công việc của người làm công tác khoa học kỹ thuật. 1.2. Cơ sở lý thuyết: Hệ thống nhúng là một hệ thống tích hợp cả phần cứng và phần mềm nhúng. Phần cứng là hệ thống vi điều khiển PIC và thiết bị ngoại vi. Phần mềm nhúng dùng ngôn ngữ C, biên dịch trên nền PIC C compile. Trong bài này, chúng ta thiết kế phần mềm nhúng, dựa trên nền phần cứng nhúng đã có, theo sơ đồ khối sau đây: Trong đó:  Module thẻ nhớ đã được ghép nối và chuẩn hoá tín hiệu.  Truyền thông dữ liệu lên PC  Bộ điều khiển trung tâm, là phần quan trọng nhất của hệ thống; là nơi phần mềm nhúng vào, thể hiện thuật toán của chúng ta. Để thực hiện tốt bài thực hành, chúng ta cần chuẩn bị trước các kiến thức cơ bản sau đây:  Cấu trúc máy tính nhúng, vi điều khiển, mạch logic cơ bản, mạch khuếch đại, mạch lọc, LCD, cảm biến, ADC,...  Ngôn ngữ lập trình C cho PIC (CCS C). Các kiến thức về tập lệnh, cấu trúc rẽ nhánh, vòng lặp, khai báo chương trình con, biến, hằng, mảng,... 1.3. Thực hành: 1.3.1. Nội quy an toàn thực hành: - Người thực hiện thực hành kể cả Hướng dẫn viên và sinh viên đề phải nắm vững các nội quy an toàn do phòng thực hành quy định, thông qua việc học nội quy có kiểm tra sát hạch. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 38 - Các thiết bị thực hành chịu sự kiểm soát an toàn theo phân cấp của nhà nước phải đảm bảo có đầy đủ biên bản kiểm định an toàn của cấp có thẩm quyền. Ví dụ: Thiết bị điện cao thế (trên 1 kV), các thiết bị áp lực, chất hóa học đặc biệt... 1.3.2. Nội dung bài thực hành: - Làm quen phần mềm PIC C Compile, Proteus - Thiết kế phần cứng hệ thống nhúng trên Proteus, đáp ứng bài toán - Tạo một project mới trên CCS - Lập trình phần mềm nhúng, đáp ứng được bài toán. - Nạp vào mạch thật - Kiểm tra hoạt động và đánh giá kết quả 1.3.3. Phương pháp và cách thức thực hành: 1. Giới thiệu thiết bị và dụng cụ thực hành 2. Phân nhóm thực hành 3. Sơ đồ hay cách thức tiến hành TN Thiết kế phần cứng hệ thống nhúng trên môi trường mô phỏng Proteus: D1 D2 D3 D4 S1 Reset D7 RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA3/AN3/VREF+ 5 RA4/T0CKI/C1OUT/RCV 6 RA5/AN4/SS/LVDIN/C2OUT 7 RA6/OSC2/CLKO 14 OSC1/CLKI 13 RB0/AN12/INT0/FLT0/SDI/SDA 33 RB1/AN10/INT1/SCK/SCL 34 RB2/AN8/INT2/VMO 35 RB3/AN9/CCP2/VPO 36 RB4/AN11/KBI0/CSSPP 37 RB5/KBI1/PGM 38 RB6/KBI2/PGC 39 RB7/KBI3/PGD 40 RC0/T1OSO/T1CKI 15 RC1/T1OSI/CCP2/UOE 16 RC2/CCP1/P1A 17 VUSB 18 RC4/D-/VM 23 RC5/D+/VP 24 RC6/TX/CK 25 RC7/RX/DT/SDO 26 RD0/SPP0 19 RD1/SPP1 20 RD2/SPP2 21 RD3/SPP3 22 RD4/SPP4 27 RD5/SPP5/P1B 28 RD6/SPP6/P1C 29 RD7/SPP7/P1D 30 RE0/AN5/CK1SPP 8 RE1/AN6/CK2SPP 9 RE2/AN7/OESPP 10 RE3/MCLR/VPP 1 U1 PIC18F4550 CD VCC D+ D- GND U2 USBCONN M u lt im e d ia C a rd CS DI DO CLK M1 MMC WD Hình 6. Phần cứng hệ thống nhúng. 4. Trình tự tiến hành thực hành Lựa chọn các linh kiện từ panel Libraries và đưa vào sơ đồ theo bảng sau: Ký hiệu Tên linh kiện Giải thích Số lượng Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 39 Ký hiệu Tên linh kiện Giải thích Số lượng RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA4/T0CKI/C1OUT 6 RA5/AN4/SS/C2OUT 7 RE0/AN5/RD 8 RE1/AN6/WR 9 RE2/AN7/CS 10 OSC1/CLKIN 13 OSC2/CLKOUT 14 RC1/T1OSI/CCP2 16 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RB7/PGD 40 RB6/PGC 39 RB5 38 RB4 37 RB3/PGM 36 RB2 35 RB1 34 RB0/INT 33 RD7/PSP7 30 RD6/PSP6 29 RD5/PSP5 28 RD4/PSP4 27 RD3/PSP3 22 RD2/PSP2 21 RC7/RX/DT 26 RC6/TX/CK 25 RC5/SDO 24 RC4/SDI/SDA 23 RA3/AN3/VREF+ 5 RC0/T1OSO/T1CKI 15 MCLR/Vpp/THV 1 U1 PIC18F452 Vi điều khiển 1 VCC D+ D- GND U2 USBCONN USB connector Đầu nối USB 1 M u lt im e d ia C a rd CS DI DO CLK M1 MMC MMC Thẻ nhớ 1 5. Tạo Dự án nhúng: o Viết mã nguồn như sau: //These settings are for the CCS PICEEC development kit which contains //an MMC/SD connector. #include #device PASS_STRINGS = IN_RAM #fuses NOWDT, HS, NOPROTECT #use delay(clock=25M) #use rs232(baud=9600, UART1, errors) #include // for atoi32 //media library, a compatable media library is required for FAT. #use fast_io(c) #define MMCSD_PIN_SCL PIN_C3 //o #define MMCSD_PIN_SDI PIN_C4 //i #define MMCSD_PIN_SDO PIN_C5 //o #define MMCSD_PIN_SELECT PIN_C2 //o Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 40 #include //FAT library. #include #define COMMAND_SIZE 10 #define NUM_COMMANDS 11 char g_CWD[200] = "/"; //current working directory char commands[NUM_COMMANDS][COMMAND_SIZE]= { "del", //option1=filename. delete file. "make", //option1=filename. create an empty file, give error if file already exists "append", //option1=filename, option2=string. append string to end of file "cd", //option1=new cwd. change working directory. / is root. "dir", //show files in directory "cat", //option1=filename. display full contents in ascii "tail", //option1=filename. display the last 20 lines of file. "mkdir", //option1=dir. create directory. see 'cd' for rules on dir "rmdir", //option1=dir. remove directory. see 'cd' for rules on dir. "format", // option1=media size in bytes. formats the media. "help" // help! }; int FindCommand(char *cmd) { char buf[COMMAND_SIZE]; int i; for (i=0; i<NUM_COMMANDS; i++) { strcpy(buf, &commands[i][0]); if (stricmp(buf, cmd)==0) return(i); } return(0xFF); } /* Summary: Displays the current working directory. Param: None. Returns: None. */ void DisplayPrompt(void) Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 41 { printf("\r\n\n%s> ", g_CWD); } /* Summary: Deletes a file. Param: The full path of the file to delete. Returns: None. */ void DeleteFile(char *fileName) { printf("\r\nDeleting '%s': ", fileName); if(rm_file(fileName) != GOODEC) { printf("Error deleting file"); return; } printf("OK"); } /* Summary: Creates a file. Param: The full path of the file to create. Returns: None. Example Usage: \> make "Log.txt" */ void MakeFile(char *fileName) { printf("\r\nMaking file '%s': ", fileName); if(mk_file(fileName) != GOODEC) { printf("Error creating file"); return; } printf("OK"); } /* Summary: Append a string to a file. Param: The full path of the file to append to. Param: A pointer to a string to append to the file. Returns: None. Example Usage: \> append "Log.txt" "This will be appended to the end of Log.txt" Note: A "\r\n" will be appended after the appendString. */ void AppendFile(char *fileName, char *appendString) { FILE stream; printf("\r\nAppending '%s' to '%s': ", appendString, fileName); if(fatopen(fileName, "a", &stream) != GOODEC) Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 42 { printf("Error opening file"); return; } fatputs(appendString, &stream); fatputs("\r\n", &stream); if(fatclose(&stream) != GOODEC) { printf("Error closing file"); return; } printf("OK"); } /* Summary: Change the working directory. Param: The new working directory to switch to. Returns: None. Example Usage: \> cd ftp/ -> /ftp/ \ftp\> cd files/ -> /ftp/files/ \ftp\files> cd.. -> /ftp/ \ftp\> cd .. -> / \> cd /ftp/files/ -> /ftp/files/ Note: Changing the directory to .. will go up a directory. */ void ChangeDirectory(char *newCWD) { FILE stream; //append a / to the end of the filename if it doesn't exist //making an assumption here that newCWD can hold 1 more character if (newCWD[strlen(newCWD)-1] != '/') strcat(newCWD, "/"); if((strstr(newCWD, "../") != 0) && (strcmp(g_CWD, "/") != 0)) { g_CWD[strlen(g_CWD) - 1] = '\0'; g_CWD[strrchr(g_CWD, '/') - g_CWD + 1] = '\0'; } else { if(fatopen(newCWD, "r", &stream) != GOODEC) { printf("\r\nError changing directory"); return; } strcpy(g_CWD, newCWD); Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 43 } } void DisplayDirectory(char *dir) { disp_folder_contents(dir); } void MakeDirectory(char *dir) { //append a / to the end of the filename if it doesn't exist //making an assumption here that newCWD can hold 1 more character if (dir[strlen(dir)-1] != '/') strcat(dir, "/"); printf("\r\nMaking directory '%s': ", dir); if(mk_dir(dir) != GOODEC) { printf("Error creating directory"); return; } printf("OK"); } void RemoveDirectory(char *dir) { printf("\r\nRemoving directory '%s': ", dir); if (dir[strlen(dir)-1] != '/') strcat(dir, "/"); if(rm_dir(dir) != GOODEC) { printf("Error removing directory"); return; } printf("OK"); } #define CAT_FROM_START FALSE #define CAT_FROM_END TRUE void PrintFile(char *fileName, int1 startFromEnd) { FILE stream; if(fatopen(fileName, "r", &stream) != GOODEC) { printf("\r\nError opening file"); return; } Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 44 printf("\r\n"); if(startFromEnd) fatseek(&stream, 80, SEEK_END); fatprintf(&stream); fatclose(&stream); } /* Summary: Formats the media to a specified size. Param: The size of the media, in kB, in string form. Returns: None. Example Usage: /> format 524288 (format a 512MB card) */ void FormatMedia(char *mediaSize) { int32 size; size = atoi32(mediaSize); printf("\r\nFormatting media (size=%LU): ", size); if(format(size) != GOODEC) { printf("Error formatting media"); return; } printf("OK"); } void ShowHelp() { printf("\r\nFAT Shell Help"); printf("\r\n del filename --- Deletes the file"); printf("\r\n make filename --- Creates an empty file"); printf("\r\n append filename string --- Appends string to the end of the file"); printf("\r\n cd dir --- Change the working directory"); printf("\r\n dir --- Shows the contents of the directory"); printf("\r\n cat filename --- Displays content of file"); printf("\r\n tail filename --- Displays the last 80 characters of file"); printf("\r\n mkdir dir --- Create a directory"); printf("\r\n rmdir dir --- Deletes the directory"); printf("\r\n format size --- Format card. (Example: 'format 5524288' formats a 512MB card)"); printf("\r\n help\tYou are here"); printf("\r\n\n Put a parameter in quotes if it has spaces"); } Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 45 char * GetCMD(char *in) { char tokens[]=" \r\n"; return(strtok(in,tokens)); } char * GetOption(char *in) { char tokensSpace[]=" \r\n"; char tokensQuote[]="\"\r\n"; //trim leading spaces while (*in==' ') in++; //if first char is a quote, then end token on a quote. ELSE end token on a space if (*in == '\"') return(strtok(in,tokensQuote)); else return(strtok(in,tokensSpace)); } void main(void) { char buffer[255]; char opt_buffer[255]; char *cmd, *option1, *option2; int i; // pointer to the buffer // initialize the FAT // keep in mind that this will automagically initialize the media i = fat_init(); if (i) printf("\r\n\nERROR INITIALIZING FAT\r\n\n"); // main loop while(TRUE) { i = 0; DisplayPrompt(); do { buffer[i] = getch(); // check for a backspace if(buffer[i] != 8) { Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 46 printf("%c", buffer[i]); i++; } else if(i > 0) { // delete the last character i--; putc(8); putc(' '); putc(8); } buffer[i] = '\0'; } while(buffer[i - 1] != '\r'); // parse the command and options cmd = GetCMD(buffer); option1 = GetOption(cmd + strlen(cmd) + 1); option2 = GetOption(option1 + strlen(option1) + 1); //if option1 starts with a '/', that means the file in the option includes //the full path to the file. if the file doesn't start with a '/', the //current working directory must be added. if (option1 && (option1[0]=='/')) { //option1 is a full path strcpy(opt_buffer, option1); } else if (option1) { // tack on the current working directory to option1 strcpy(opt_buffer, g_CWD); strcat(opt_buffer, option1); } if (cmd) { switch(FindCommand(cmd)) { case 0: //del DeleteFile(opt_buffer); break; case 1: //make MakeFile(opt_buffer); break; case 2: //append AppendFile(opt_buffer, option2); break; case 3: //change directory Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 47 ChangeDirectory(opt_buffer); break; case 4: //show directory contents DisplayDirectory(g_CWD); break; case 5: //cat, display file PrintFile(opt_buffer, CAT_FROM_START); break; case 6: //tail, display last 80 charachters PrintFile(opt_buffer, CAT_FROM_END); break; case 7: //mkdir, make a directory MakeDirectory(opt_buffer); break; case 8: //rmdir, make a directory RemoveDirectory(opt_buffer); break; case 9: //format, format the card FormatMedia(option1); break; case 10: //help, display help ShowHelp(); break; default: printf("\r\nUnkown Command '%s'", cmd); break; } } } }  Nạp vào Mạch mô phỏng, kiểm tra kết quả.  Nạp vào mạch thật, kiểm chứng kết quả có trùng khớp với mình mong muốn hay không. 1.4. Ghi chép số liệu, kết quả thực hành 1.5. Chuẩn bị của sinh viên: - Đọc và nghiên cứu bài thực hành - Đọc và nghiên cứu lý thuyết có liên quan đến nội dung bài thực hành Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử THIẾT KẾ HỆ THỐNG NHÚNG TRÊN NỀN FPGA 48 - Chuẩn bị các vật dụng, giấy vở ghi chép số liệu thực hành - Mạch máy tính nhúng, phần lập trình nhúng. - Sự chuẩn bị của sinh viên phải được thông qua kiểm tra của người hướng dẫn thực hành. Nếu không đạt, sẽ không được tham gia thực hành và có được thực hành tiếp vào buổi khác hay không sẽ do Bộ môn và Ban chủ nhiệm khoa giải quyết. Phần II. VIẾT BÁO CÁO THỰC HÀNH 2.1. Quy định chung: Báo cáo thực hành được viết một mặt trên khổ giấy A4, đóng quyển, bìa mềm (theo mẫu ...). Mỗi sinh viên có một quyển báo cáo riêng. 2.2. Nội dung báo cáo: 2.2.1. Cơ sở lý thuyết Phân tích cơ sở lý thuyết như mục 1.2. 2.2.2. Báo cáo kết quả thực hành - Mỗi sinh viên (nhóm sinh viên) thiết kế 01 mạch (sơ đồ nguyên lý, phần lập trình nhúng) ngẫu nhiên đã được chuẩn bị trước ở mục 1.4, trên phần mềm Proteus và PICC Compile. - Tổng hợp những kết quả chính cho nội dung báo cáo - Phân tích sơ đồ nguyên lý, mã lệnh - Lập bảng trạng thái đầu vào, đầu ra (nếu có) - Nhận xét kết quả: + Các kết quả thu được từ thực hành + So sánh kết quả thực hành với lý thuyết + Mức độ kết quả đạt được so với yêu cầu đề ra + Đánh giá các sai số của dụng cụ, thiết bị thực hành, người thao tác... - Kiến nghị. Phần III. ĐÁNH GIÁ CHẤM ĐIỂM, BẢO VỆ THỰC HÀNH Bộ môn hay tập thể hướng dẫn thực hành tổ chức đánh giá điểm thực hành thông qua lựa chọn một trong những hình thức sau: - Chấm điểm dựa trên nội dung bản báo cáo thực hành của từng sinh viên - Chấm điểm theo hình thức bảo vệ vấn đáp. Điểm thực hành của sinh viên được tổng hợp theo lớp có chữ ký xác nhận Trưởng bộ môn chuyên môn. Bộ môn Kỹ thuật Máy tính, Khoa Điện Tử 49 TÀI LIỆU THAM KHẢO 1. Bài giảng Hệ thống nhúng, Bộ môn Kỹ thuật Máy tính 2. Bài giảng vi xử lý – vi điều khiển, bộ môn Kỹ thuật Máy tính 3. Bình, N. T. (2008). Bài giảng: Các kỹ thuật đặc tả. Đại học Bách khoa Đà nẵng. 4. Công, N. H. (2007). Hệ thống nhúng và sự phát triển của lĩnh vực công nghệ cao "3C". ĐH KTCN Thái Nguyên. 5. John Regehr, Assist.Prof.Dr.Osman Kaan EROL. (2009). Embedded System Design. 6. Việt, T. L. (2008). HỆ THỐNG ĐIỀU KHIỂN NHÚNG. Hà Nội: ĐH BKHN. 7. Wikipedia. (2010). Retrieved from Wikipedia, Bách khoa toàn thư mở:

Các file đính kèm theo tài liệu này:

  • pdfUnlock-thi_nghiem_htn_bai_1_6_10_2011__5016.pdf