Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 123 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
123
Dung lượng
2,33 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - LÊ MINH TUẤN NGHIÊN CỨU VÀ XÂY DỰNG THIẾT BỊ GIÁM SÁT HÀNH TRÌNH PHƯƠNG TIỆN GIAO THÔNG QUA MẠNG TRÊN NỀN TẢNG CHÍP FPGA CHUYÊN NGÀNH: ĐIỆN TỬ VIỄN THÔNG LUẬN VĂN THẠC SĨ KHOA HỌC ĐIỆN TỬ VIỄN THÔNG NGƯỜI HƯỚNG DẪN KHOA HỌC: TS PHẠM NGỌC NAM Hà Nội 2010 MỤC LỤC Trang TRANG PHỤ BÌA LỜI CAM ĐOAN Danh mục ký hiệu, chữ viết tắt Danh mục bảng Danh mục hình vẽ đồ thị .9 MỞ ĐẦU 11 Chương – TỔNG QUAN VỀ HỆ THỐNG GIÁM SÁT PHƯƠNG TIỆN GIAO THÔNG 13 1.1 Khái niệm hệ GIS 13 1.2 Các thành phần hệ GIS .14 1.3 Hệ thống định vị qua vệ tinh GPS 18 1.3.1 Nguyên lý định vị qua vệ tinh 18 1.3.2 Hệ thống định vị toàn cầu qua vệ tinh GPS 21 1.3.2.1 Tổng quan hệ thống GPS 21 1.3.2.2 Cấu trúc tín hiệu GPS 24 1.3.3 Máy thu GPS 29 1.3.4 Chuẩn giao tiếp với thiết bị thu GPS .31 1.4 Tổng quan hệ thống giám sát phương tiện giao thông qua GPS .34 1.5 Các giải pháp thực 37 1.6 Kết luận .38 Chương – TỔNG QUAN VỀ FPGA VÀ MẠCH PHÁT TRIỂN CỦA XILINX 40 2.1 Giới thiệu chung FPGA .40 2.1.1 Khái niệm ứng dụng FPGA 40 2.1.2 Kiến trúc FPGA .42 2.2 Mạch phát triển với SPARTAN 3E hãng Xilinx .48 2.2.1 Giới thiệu dòng chip SPARTAN 3E 48 2.2.2 Mạch phát triển dùng chip FPGA 50 2.3 Các công cụ thiết kế hệ thống Xilinx .51 2.3.1 ISE 52 2.3.2 EDK 52 Chương – XÂY DỰNG THIẾT BỊ GIÁM SÁT HÀNH TRÌNH TRÊN NỀN CHÍP FPGA .55 3.1 Quá trình xây dựng hệ thống phần cứng cho thiết bị giám sát tích hợp lõi vi xử lý MicroBlaze chíp FPGA .55 3.1.1 Cấu trúc Microblaze 55 3.1.2 Thiết lập cấu hình phần cứng mạch phát triển 56 3.1.3 Thêm lõi xử lý trình thiết kế phần cứng 66 3.1.4 Cấu trúc phần cứng thiết bị giám sát phương tiện giao thông 72 3.2 Xây dựng phần mềm cho thiết bị giám sát phương tiện giao thông .74 3.2.1 Thiết kế phát triển phần mềm công cụ SDK 74 3.2.2 Cấu trúc chung chương trình điều khiển cho thiết bị giám sát 76 3.2.3 Xây dựng lõi giao tiếp với thiết bị GPS 78 3.2.4 Xây dựng lõi giao tiếp mạng Microblaze .80 Chương – XÂY DỰNG PHẦM MỀM GIÁM SÁT PHƯƠNG TIỆN THÔNG QUA BẢN ĐỒ SỐ 85 4.1 Bản đồ số công cụ phát triển cho đồ số 85 4.1.1 Khái niệm đồ số 85 4.1.2 Mô hình cấu trúc liệu đồ số 85 4.1.3 Công cụ phát triển với đồ số MapX 92 4.2 Xây dựng chương trình giám sát hành trình qua đồ số 94 4.2.1 Cấu trúc chương trình 94 4.2.1 Mô hình truyền thông với thiết bị giám sát .99 KẾT LUẬN 101 TÀI LIỆU THAM KHẢO 102 PHỤ LỤC 103 PHỤ LỤC 113 LỜI CAM ĐOAN Tôi xin cam đoan đồ án nghiên cứu riêng Các số liệu, kết nêu luận án trung thực chưa công bố đâu công trình hay luận án khác Người thực hiện: Lê Minh Tuấn Danh mục ký hiệu, chữ viết tắt Thuật ngữ viết tắt ASIC Thuật ngữ tiếng anh Thuật ngữ tiếng việt Application-specific integrated Vi mạch tích hợp chuyên circuit dụng Công cụ xây dựng hệ thống BSB Base System Builder CLB Configurable Logic Blocks XPS Khối logic cấu hình lại Complex Programable Logic Thiết bị logic phức tạp có Device thể lập trình DCE Data Control Equipment Thiết bị điều kiển số liệu DCM Digital Clock Manager DDR Double Data-Rate DLMB Data Local Memory Bus DOPB Data On-chip Peripheral Bus DTE Data Terminal Equipment EDK Embedded Development Kit FFT Fast Furier Transform FPGA Field Programable Gate Arrays GIS Geograpgic Information System GPIO General Purpose Input/Output CPLD Khối quản lý nguồn xung clock bên chíp FPGA Tốc độ liệu nhân đôi Bus giao tiếp nhớ bên truyền liệu Bus giao tiếp ngoại vi chip truyền liệu Thiết bị cuối xử lý số liệu Công cụ phát triển hệ thống nhúng Biến đổi Furier nhanh Mảng cổng logic lập trình lại Hệ thống thông tin địa lý Giao diện định vào/ra chung GPS Global Positioning System HDL Hardware Description Language ILMB Instruction Local Memory Bus IOB Configurable I/O Block IOPB IP Hệ thống định vị toàn cầu Ngôn ngữ miêu tả phần cứng Bus giao tiếp nhớ bên truyền lệnh Khối lập trình vào/ra FPGA Instruction Onchip Peripheral Bus kết nối ngoại vi Bus chip truyền lệnh Intellectual Property Sở hữu trí tuệ Môi trường phần mềm tích ISE Integrated Software Environment hợp cho thiết kế lập trình FPGA LCD Liquid crystal display Màn hình tinh thể lỏng LMB Local Memory Bus Bus nhớ bên LUTs Look-Up Tables Bảng ánh xạ Lwip LightWeight IP MHS NMEA Thư viện điều khiển truyền thông liệu qua mạng Microprocessor Hardware File thông tin miêu tả phần Specification cứng vi xử lý National Marine Electronics Association Giao thức chuẩn định truyền thông thiết vị xử lý thiết bị thu GPS Bus giao tiếp ngoại vi OPB On-chip Peripheral Bus PLB Processor Local Bus Bus xử lý bên Reduced Instructions Set Máy tính với tập lệnh đơn Computer giản hóa RISC chip ROM Read Only Memory SDK Software Development Kit SDRAM Bộ nhở đọc Công cụ phát triển phần mềm Synchronous dynamic random Bộ nhớ truy nhập ngẫu access memory nhiên đồng động Giao thức điều khiển lớp TCP Transmission Control Protocol truyền vận mô hình TCP/IP UART Universal asynchronous receiver/transmitter Truyền/nhận bất đồng File định nghĩa chân kết UCF User Constraints File nối FPGA với đường tín hiệu chip Môi trường làm việc, xây XPS Xilinx Platform Studio dựng hệ thống nhúng Xilinx Danh mục bảng Trang Bảng 1.1 Một số dạng câu lệnh chuẩn NMEA 33 Bảng 1.2 Cấu trúc ý nghĩa trường thông tin câu lệnh GPGGA 34 Bảng 4.1 Ánh xạ mô hình dạng raster mô hình thực 89 Bảng 4.2 Các hàm xử lý phân lớp CMapObject 96 Danh mục hình vẽ đồ thị Trang Hình 1 Các thành phần hệ GIS 14 Hình Hệ tọa độ địa tâm 19 Hình Hệ thống vệ tinh định vị 22 Hình Quá trình tạo tín hiệu GPS 25 Hình Máy thu GPS 29 Hình Sơ đồ khối máy thu 30 Hình Chương trình giám sát hành trình xe 35 Hình Mô hình hệ thống giám sát hành trình xe 36 Hình Kiến trúc FPGA 42 Hình 2 Cấu trúc khối Logic Block điển hình 44 Hình Cấu trúc khối Vào/Ra 44 Hình Cấu trúc khối lập trình kết nối chíp 45 Hình Cấu trúc thành phần Spartan 49 Hình Mạch phát triển Spartan 3E Start 50 Hình Quá trình thực thi thiết kế công cụ phát triển EDK 54 Hình Cấu trúc MicroBlaze 55 Hình Cấu hình hệ thống tích hợp MicroBlaze 57 Hình 3 Cửa sổ thiết lập hệ thống nhúng mạch phát triển Spartan 3E 58 Hình Cửa sổ chọn lõi vi xử lý 59 Hình Cửa sổ thiết lập thuộc tính cho lõi MicroBlaze 60 Hình Cửa sổ thiết lập ngoại vi mạch phát triển 61 Hình Tích hợp khối điều khiển DDR_SRAM Ethernet Mac 62 Hình Thiết lập Timer vào hệ thống 63 Hình Thiết lập đường truyền thông khởi tạo phần mềm kiểm tra 63 Hình 10 Thông tin tổng hợp hệ thống thiết lập 64 Hình 11 Giao diện cửa sổ thể thành phần hệ thống xây dựng65 Hình 12 Thêm GPIO 67 Hình 13 Thiết lập kết nối từ khối tạo vào bus truyền thông hệ thống 68 Hình 14 Vùng cửa sổ hiển thị dải địa định cho thành phần hệ thống 69 Hình 15 Thiết lập thuộc tính cho khối GPIO điều khiển giao tiếp với LCD 70 Hình 16 Thiết lập kết nối tín hiệu cho khối GPIO 71 Hình 17 Thiết lập chân kết nỗi FPGA cho đường tín hiệu 72 Hình 18 Tích hợp MicroBlaze phần cứng thiết bị giám sát 73 Hình 19 Các khối chức thiết lập hệ thống phần cứng 73 Hình 20 Các khối chức thiết lập hệ thống phần cứng 74 Hình 21 Quá trình thiết kế phần mềm cho hệ nhúng công cụ SDK 75 Hình 22 Sử dụng công cụ SDK môi trường phát triển XPS 76 Hình 23 Cửa sổ giao diện môi trường phát triển phần mềm SDK 76 Hình 24 Giản đồ thuật toán hàm chương trình 77 Hình 25 Giảnđồ thuật toán hàm phân tích chuỗi thông tin định vị 79 Hình 26 Thiết lập thông số hệ thống SDK 80 Hình 27 Khai báo thông dịch thư viện lwip 81 Hình 28 Mô hình quản lý sử dụng đệm khối chương trình lwip_lib 83 Hình 29 Mô hình xử lý truyền thông qua khối lệnh lwip_lib 84 Hình 30 Mô hình điều khiển truyền thông chương trình 84 Hình Mô hình liệu không gian đồ số 86 Hình Mô hình phân lớp liệu đồ số 87 Hình Mô hình liệu kiểu đối tượng điểm 87 Hình 4 Mô hình liệu kiểu đối tượng đường 88 Hình Mô hình liệu kiểu đổi tượng vùng 89 Hình Mô hình liên kết liệu không gian liệu logic 92 Hình Giao diện phần mềm giám sát hành trình 95 Hình Khai báo file tiêu đề MapX.h 96 Hình Mô hình truyền thông máy tính trạm thiết bị giám sát 99 10 return 1; } int DoCheckSum(char *pSrc) { int p; char c; char chksum; char nmeaChk; int flagValid; char hx[5] = "0x00"; flagValid = 1; // we start true, and make it false if things are not right if (pSrc[0] != '$' ) { flagValid = 0; } if (flagValid == 1) { c = pSrc[1]; // get first chr chksum = c; p = 2; while ( ( c != '*' ) && ( p < 80 ) ) { c = pSrc[p]; // get next chr if ( c != '*' ) { chksum = chksum ^ c; } p++; } if(p >= 80) { flagValid = 0; return flagValid; } gpsbuflength = p+2; // at this point we are either at * or at end of string hx[2] = pSrc[p]; hx[3] = pSrc[p+1]; hx[4] = '\0'; nmeaChk = (char)strtol(hx,NULL,0); if ( chksum != nmeaChk ) flagValid = 0; } return flagValid; } int ParseGpsData(char *stringRead) { int gpsGGA = 0; unsigned char *pChar; unsigned char tempString[20]; unsigned char j,k; unsigned char lastCommaPosition; unsigned unsigned unsigned unsigned long long long long utcTime, estTime; utcHour, estHour; utcMinutes, estMinutes; utcSeconds, estSeconds; float latitude; int latDegrees; float latMinutes; float longitude; int longDegrees; float longMinutes; 109 char *pstr; j = 0; pChar = stringRead; while(*(pChar+j) != COMMA) { tempString[j] = *(pChar+j); j++; } tempString[j] = '\0'; if(tempString[3] == 'G' && tempString[4] == 'G' && tempString[5] == 'A') { pChar = stringRead; /* Get UTC time */ pstr = GpsPos.Time; j = 7; /* start of time field */ k = 0; while(*(pChar+j) != COMMA) { pstr[k] = *(pChar+j); j++; k++; } lastCommaPosition = j; pstr[k] = '\0'; utcTime = atol(pstr); utcHour = (utcTime/10000); /* extract Hours from long */ utcMinutes = (utcTime - (utcHour*10000))/100; /* extract minutes from long */ utcSeconds = utcTime - (utcHour*10000) - (utcMinutes*100); /* extract seconds from long */ if(utcHour >= && utcHour BaseAddress); if (Status != XST_SUCCESS) { xil_printf("XEmacLite_CfgInitialize() failed.\r\n"); return NULL; } if ( lwip_lib_init( mac, ip, subnet, gateway ) != XST_SUCCESS ) { xil_printf("lwip_lib_init() failed\r\n"); return NULL; } //init buffers for tranceiver data firstBuf = lwip_lib_configure_buffers( numSendBufs, sendBufSize, recvBufSize ); if ( firstBuf == NULL ) { xil_printf("lwip_lib_configure_buffers() failed.\r\n"); return NULL; } if(lwip_lib_start(port) != XST_SUCCESS ) { xil_printf("lwip_lib_start() failed.\r\n"); return NULL; } return firstBuf; } XStatus lwip_lib_init( uint8 mac[6], uint8 ip[4], uint8 subnet[4], uint8 gateway[4]) { lwip_init(); // Setup a network interface with our specified IP, etc if ( set_global_netif( ip, subnet, gateway ) != XST_SUCCESS ) { return XST_FAILURE; } xil_printf("\r\nNetwork Interface started \r\n"); xil_printf(" MAC Address: "); print_mac(mac==NULL?DEFAULT_MAC:mac); xil_printf("\r\n"); 115 xil_printf(" IP Address: "); print_ip4_addr(global_netif->ip_addr); xil_printf("\r\n"); xil_printf(" Subnet Mask: "); print_ip4_addr(global_netif->netmask); xil_printf("\r\n"); xil_printf(" Gateway IP: "); print_ip4_addr(global_netif->gw); xil_printf("\r\n"); return XST_SUCCESS; } uint8 *lwip_lib_configure_buffers( uint8 numSendBufs, uint16 sendBufSize, uint16 recvBufSize ) { int i; if ( numSendBufs > 25 ) { xil_printf("Too many send buffers specified!); numSendBufs = 25; } if ( numSendBufs < ) { xil_printf("Invalid number of send buffers specified.); numSendBufs = 1; } if ( sendBufSize == || recvBufSize == ) { xil_printf("buffers must have size larger than 1"); return NULL; } if ( global_recv_buffer == NULL ) { global_recv_buffer = mem_malloc( recvBufSize ); } else { xil_printf("receive buffer already configured resizing to %d\r\n",recvBufSize); mem_realloc( global_recv_buffer, recvBufSize ); } if ( global_recv_buffer == NULL ) { xil_printf("Out of memory (attemping to allocate receive buffer of size %d)\r\n",recvBufSize); return NULL; } send_buffers = (struct send_buffer *)mem_malloc( numSendBufs * sizeof(struct send_buffer) ); if ( send_buffers == NULL ) { xil_printf("Out of memory (attempting to allocate %d send buffers)\r\n",numSendBufs); return NULL; } for ( i=0; i