Công nghệ thông tin - Điều khiển thiết bị qua mạng Lan

.2.9 CLDA0 – 1 : thanh ghi hiện thời của DMA nội ( 01H & 02H; loại = R trong trang 0 ) Có hai thanh ghi có thể được đọc để lấy địa chỉ hiện thời DMA nội .  2.3.2.10 PSTART : thanh ghi trang bắt đầu ( 02H ; loại W trong trang 0 , loại R trong trang 2 ) Thanh ghi trang bắt đầu đặt địa chỉ trang đầu của bộ đệm nhận dạng vòng .  2.3.2.11 PSTOP : thanh ghi trang dừng ( 02H ; loại = W trong trang 0 ; loại = R trong trang 2 ) Thanh ghi trang dừng đặt địa chỉ trang cuối của bộ đệm nhận dạng vòng .  2.3.2.12 BNRY : thanh ghi chỉ giới hạn bộ nhớ cho thanh ghi ( 03H ; loại R/W trong trang 0 ) Thanh ghi dùng để bộ đệm nhận không ghi đè.Nó dùng như con trỏ chỉ thị trang bộ đệm nhận cuối mà host phải đọc.  2.3.2.13 TPSR : thanh ghi trang truyền đầu tiên ( 04H ; loại = W trong trang 0 )

doc82 trang | Chia sẻ: baoanh98 | Lượt xem: 952 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Công nghệ thông tin - Điều khiển thiết bị qua mạng Lan, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thức này đều không phải là bộ phận của giao thức IP và giao thức IP sẽ dùng đến chúng khi cần. 1.3.3.1 Giao thức ARP (Address Resolution Protocol): Ở đây cần lưu ý rằng các địa chỉ IP được dùng để định danh các host và mạng ở tầng mạng của mô hình OSI, và chúng không phải là các địa chỉ vật lý (hay địa chỉ MAC) của các trạm trên đó một mạng cục bộ (Ethernet, Token Ring.). Trên một mạng cục bộ hai trạm chỉ có thể liên lạc với nhau nếu chúng biết địa chỉ vật lý của nhau. Như vậy vấn đề đặt ra là phải tìm được ánh xạ giữa địa chỉ IP (32 bits) và địa chỉ vật lý của một trạm. Giao thức ARP đã được xây dựng để tìm địa chỉ vật lý từ địa chỉ IP khi cần thiết. 1.3.3.2 Giao thức RARP (Reverse Address Resolution Protocol): Là giao thức ngược với giao thức ARP. Giao thức RARP được dùng để tìm địa chỉ IP từ địa chỉ vật lý. 1.3.3.3 Giao thức ICMP (Internet Control Message Protocol): Giao thức này thực hiện truyền các thông báo điều khiển (báo cáo về các tình trạng các lỗi trên mạng.) giữa các gateway hoặc một nút của liên mạng. Tình trạng lỗi có thể là: một gói tin IP không thể tới đích của nó, hoặc một router không đủ bộ nhớ đệm để lưu và chuyển một gói tin IP, Một thông báo ICMP được tạo và chuyển cho IP. IP sẽ "bọc" (encapsulate) thông báo đó với một IP header và truyền đến cho router hoặc trạm đích. 1.4 Giao thức điều khiển truyền dữ liệu TCP: TCP là một giao thức "có liên kết" (connection - oriented), nghĩa là cần phải thiết lập liên kết giữa hai thực thể TCP trước khi chúng trao đổi dữ liệu với nhau. Một tiến trình ứng dụng trong một máy tính truy nhập vào các dịch vụ của giao thức TCP thông qua một cổng (port) của TCP. Số hiệu cổng TCP được thể hiện bởi 2 bytes. Hình 1.6: Cổng truy nhập dịch vụ TCP Một cổng TCP kết hợp với địa chỉ IP tạo thành một đầu nối TCP/IP (socket) duy nhất trong liên mạng. Dịch vụ TCP được cung cấp nhờ một liên kết logic giữa một cặp đầu nối TCP/IP. Một đầu nối TCP/IP có thể tham gia nhiều liên kết với các đầu nối TCP/IP ở xa khác nhau. Trước khi truyền dữ liệu giữa 2 trạm cần phải thiết lập một liên kết TCP giữa chúng và khi không còn nhu cầu truyền dữ liệu thì liên kết đó sẽ được giải phóng. Các thực thể của tầng trên sử dụng giao thức TCP thông qua các hàm gọi (function calls) trong đó có các hàm yêu cầu để yêu cầu, để trả lời. Trong mỗi hàm còn có các tham số dành cho việc trao đổi dữ liệu. Các bước thực hiện để thiết lập một liên kết TCP/IP: Thiết lập một liên kết mới có thể được mở theo một trong 2 phương thức: chủ động (active) hoặc bị động (passive). Phương thức bị động, người sử dụng yêu cầu TCP chờ đợi một yêu cầu liên kết gửi đến từ xa thông qua một đầu nối TCP/IP (tại chỗ). Người sử dụng dùng hàm passive Open có khai báo cổng TCP và các thông số khác (mức ưu tiên, mức an toàn). Với phương thức chủ động, người sử dụng yêu cầu TCP mở một liên kết với một một đầu nối TCP/IP ở xa. Liên kết sẽ được xác lập nếu có một hàm Passive Open tương ứng đã được thực hiện tại đầu nối TCP/IP ở xa đó. Bảng 1.7: liệt kê một vài cổng TCP phổ biến. Số hiệu cổng Mô tả 0 Reserved 5 Remote job entry 7 Echo 9 Discard 11 Systat 13 Daytime 15 Nestat 17 Quotd (quote odd day 20 ftp-data 21 ftp (control) 23 Telnet 25 SMTP 37 Time 53 Name Server 102 ISO - TSAP 103 X.400 104 X.400 Sending 111 Sun RPC 139 Net BIOS Session source 160 - 223 Reserved Khi người sử dụng gửi đi một yêu cầu mở liên kết sẽ được nhận hai thông số trả lời từ TCP. Thông số Open ID được TCP trả lời ngay lập tức để gán cho một liên kết cục bộ (local connection name) cho liên kết được yêu cầu. Thông số này về sau được dùng để tham chiếu tới liên kết đó. (Trong trường hợp nếu TCP không thể thiết lập được liên kết yêu cầu thì nó phải gửi tham số Open Failure để thông báo.) Khi TCP thiết lập được liên kết yêu cầu nó gửi tham số Open Sucsess được dùng để thông báo liên kết đã được thiết lập thành công. Thông báo này dược chuyển đến trong cả hai trường hợp bị động và chủ động. Sau khi một liên kết được mở, việc truyền dữ liệu trên liên kết có thể được thực hiện. 1.4.1 Cấu trúc gói TCP: Đơn vị dữ liệu sử dụng trong TCP được gọi là segment (đoạn dữ liệu), có các tham số với ý nghĩa như sau: Hình 1.7: Dạng thức của segment TCP Source Port (16 bits): Số hiệu cổng TCP của trạm nguồn. Destination Port (16 bit): Số hiệu cổng TCP của trạm đích. Sequence Number (32 bit): số hiệu của byte đầu tiên của segment trừ khi bit SYN được thiết lập. Nếy bit SYN được thiết lập thì Sequence Number là số hiệu tuần tự khởi đầu (ISN) và byte dữ liệu đầu tiên là ISN+1. Acknowledgment Number (32 bit): số hiệu của segment tiếp theo mà trạm nguồn đang chờ để nhận. Ngầm ý báo nhận tốt (các) segment mà trạm đích đã gửi cho trạm nguồn. Data offset (4 bit): số lượng bội của 32 bit (32 bit words) trong TCP header (tham số này chỉ ra vị trí bắt đầu của nguồn dữ liệu). Reserved (6 bit): dành để dùng trong tương lai Control bit (các bit điều khiển): URG: Vùng con trỏ khẩn (Ucgent Poiter) có hiệu lực. ACK: Vùng báo nhận (ACK number) có hiệu lực. PSH: Chức năng PUSH Dữ liệu này cần đưa lên các ứng dụng ngay lập tức. RST: Khởi động lại (reset) liên kết. SYN: Đồng bộ hóa số hiệu tuần tự (sequence number). FIN: Không còn dữ liệu từ trạm nguồn. Window (16 bit): cấp phát credit để kiểm soát nguồn dữ liệu (cơ chế cửa sổ). Đây chính là số lượng các byte dữ liệu, bắt đầu từ byte được chỉ ra trong vùng ACK number, mà trạm nguồn đã saün sàng để nhận. Checksum (16 bit): mã kiểm soát lỗi cho toàn bộ segment (header + data) Urgemt Poiter (16 bit): con trỏ này trỏ tới số hiệu tuần tự của byte đi theo sau dữ liệu khẩn. Vùng này chỉ có hiệu lực khi bit URG được thiết lập. Options (độ dài thay đổi): khai báo các option của TCP, trong đó có độ dài tối đa của vùng TCP data trong một segment. Paddinh (độ dài thay đổi): phần chèn thêm vào header để đảm bảo phần header luôn kết thúc ở một mốc 32 bit. Phần thêm này gồm toàn số 0. TCP data (độ dài thay đổi): chứa dữ liệu của tầng trên, có độ dài tối đa ngầm định là 536 byte. Giá trị này có thể điều chỉnh bằng cách khai báo trong vùng options. 1.4.2 Quá trình truyền và nhận dữ liệu trong giao thức TCP/IP: Chúng ta đã biết, IP ấn định một địa chỉ mạng/host cho một máy tính. Tuy nhiên, thường hay gặp các ứng dụng phức tạp trên một máy tính cho trước đồng thời mong muốn các dịch vụ ỷ truyền hoặc nhận, đặc biệt nếu máy tính là một server được truy nhập bởi các kết nối dial-up phức tạp hoặc nếu nó phục vụ như là một internet gateway đối với LAN hoặc WAN. Để trợ giúp các phiên liên lạc đồng thời phức tạp, TCP làm cho các địa chỉ IP đầy đủ hơn bằng các số hiệu cổng. Đối với hầu hết các mục đích, cổng biểu thị tiến trình ứng dụng đã cho trên máy tính. Sự kết hợp của một địa chỉ IP và cổng tạo thành một socket. Một cặp socket xác định một kết nối TCP đã cho. Tóm lại, giao thức TCP/IP giúp ta truyền datagram đến đúng máy có 1 địa chỉ IP duy nhất và đúng các ứng dụng ở lớp trên thông qua số cổng ( số port ) ( nhiều ứng dụng hoạt động đồng thời). 1.4.2.1 Khởi xướng kết nối: Trước khi hai tiến trình ứng dụng có thể liên lạc qua một mạng khi sử dụng TCP/IP, mỗi tiến trình cần phải chỉ thị tới tiến trình TCP trên host riêng của chúng rằng chúng đã sẵn sàng gửi và nhận thông tin. Tiến trình muốn khởi xướng hoặc chấp nhận kết nối phải cung cấp tiến trình TCP cùng với một số hiệu cổng duy nhất, vào thời gian đó, ở trên máy đó. Các ứng dụng hướng mạng (network - oriented) nhất định đã được gán các số hiệu cổng biết rõ. Các ứng dụng khác trước hết phải yêu cầu một phép gán cổng từ tiến trình TCP. Một tiến trình ứng dụng đã sẵn sàng khởi xướng kết nối cũng cần phải cung cấp tiến trình TCP cùng với một định danh socket cho nơi nhận. Nếu ứng dụng nhận không có một cổng được gán cố định, kết nối khởi xướng sẽ được thực hiện từ tiến trình trên máy nhận, nó sẽ được nhận diện và trở lại cổng mong muốn. 1.4.2.2 Số hiệu cổng đã biết rõ: IANA (The Internet Assigned Number Authority) đảm nhiệm việc gán các giá trị cố định đối với các tham số khác nhau trong các giao thức liên quan tới Internet (internet related), trong đó có TCP. Các giá trị tham số này bao gồm cả các số hiệu cổng được dự trữ cho việc sử dụng các ứng dụng then chốt và các tiến trình khác trên các máy host. Các số hiệu cổng từ 0 đến 1023 được quản lý bởi IANA gọi là các Well Known Port Number. Đây là các phép gán cổng có thể được các tiến trình và các ứng dụng TCP chấp nhận ở bất kỳ đâu trên Internet. Các cổng 1024-65535 không được gán chính thức cho các tiến trình ứng dụng. Nhiều số hiệu cổng trong khoản này, tuy nhiên, được dự trữ không chính thức cho việc sử dụng bởi các gói quản lý mạng cố định và các sử dụng cụ thể khác. Một tiến trình ứng dụng đã cho có thể được giao dịch khi sử dụng nhiều hơn một giao thức lớp liên vận (ví dụ TCP và UDP), và số hiệu cổng như nhau sẽ được sử dụng bởi cả hai giao thức cho mục đích đó. 1.4.2.3 Thương lượng kết nối TCP: Ngay khi một tiến trình ứng dụng yêu cầu TCP thiết lập kết nối tới một socket ở xa cụ thể, tiến trình TCP cố gắng thương lượng kết nối. Tiến trình thương lượng giữ dạng trao đổi của gói dữ liệu, thường gọi là "bắt tay ba đường" (three way handshake). Trường hợp điển hình, một host TCP khởi xướng thương lượng và nhận đáp ứng , tuy nhiên, giao thức cũng trợ giúp trường hợp khi cả hai host cùng đồng thời cố gắng bắt đầu tiến trình thương lượng. Cờ SYN trong header của gói dữ liệu được sử dụng để báo hiệu cho nơi nhận rằng một kết nối mới đang được thương lượng. Trong thực tế sự hiện diện của cờ này chỉ thị một thông báo thông tin hoặc một phiên của user mơí ở lớp ứng dụng. Các kết nối thường ở trạng thái mở trừ trường hợp đặc biệt được đóng bởi ứng dụng, bởi các giao thức ở lớp thấp hơn, hoặc do hết hạn thời gian. Tuy nhiên, một thiết kế ứng dụng tốt đảm bảo các kết nối đó được đóng bất cứ khi nào, có thể là trong thời gian vô định cho tới khi có thêm các thông báo cần gửi đi hoặc khi socket hay các tài nguyên liên quan của socket trong tiến trình TCP (cục bộ hay ở xa) được yêu cầu bởi các ứng dụng khác. Khi thương lương một kết nối TCP mới cần tối thiểu ba gói dữ liệu. ở đây máy A muốn thiết lập liên kết nối với một tiến trình ứng dụng trên máy B. Việc thiết lập cờ SYN thông báo cho tiến trình ứng dụng trên máy B biết có một kết nối mới và trường thứ tự chỉ thị phép đếm "Zero" của các byte trong thông báo mới- nghĩa là, byte dữ liệu đầu tiên sẽ được xem như là byte số Sequence+1. Khi máy B nhận SYN header, nó cũng sẽ loại bỏ bất kỳ một gói dữ liệu nào còn lại mà nó đã lưư trữ trong các bộ nhớ đệm (hoặc chúng có thể đến sau SYN header) khi các gói dữ liệu đó tiếp tục chờ số thứ tự khác trên kết nối trước tới cùng một socket. Nếu không , có thể có sự nhầm lẫn đối với tiến trình ứng dụng dự định nhận của các gói dữ liệu. Máy A Máy A Máy A Máy B Máy B Máy B Gửi một segment A(x) Xác nhận việc nhận A(x). Thông báo kích thước cửa sổ mới của nó Xác nhận việc nhận B(y). Thông báo kích thước cửa sổ mới của riêng nó. Cũng có thể chứa một segment mới A(x+1) Hình 1.8: thương lượng kết nối TCP Bằng cách lựa chọn sequence offset ban đầu một cách cẩn thận để đảm bảo không trùng lặp với các gói dữ liệu có thể vẫn đang di động quanh mạng, phần mềm TCP gửi đảm bảo chỉ có các đoạn hợp lệ được móc nối bởi tiến trình TCP trung tâm đảm baỏ độ tin cậy và tính toàn vẹn của sự phân phối thông báo. Khi máy B nhận được một gói dữ liệu với một SYN header, nó xác nhận SYN bằng cách thiết lập cờ ACK và đặt số thứ tự của byte chờ đợi tiếp theo vào trường acknowledgement. Nếu SYN header đã gửi mà không có dữ liệu của đoạn, điều này sẽ làm cho giá trị đoạn của máy A tăng lên 1. Tuy nhiên, đối với máy A đã chứa đoạn đầu tiên của dữ liệu đối với kết nối mới này cùng với SYN header, nó rất hợp lệ. Trong một trường hợp này, trường acknowledgement sẽ chứa giá trị segment +n+1, ở đây n bằng độ dài của đoạn thứ nhất kể cả SYN header gửi bởi máy A. Hơn nữa để xác nhận thứ tự đoạn mới do máy A khởi xướng, máy B cũng phải chỉ rõ số thứ tự bắt đầu riêng của mình. Như với máy A, máy B phải đảm bảo rằng giá trị mà nó chỉ rõ cho phép máy A loại bỏ các gói dữ liệu không hợp lệ có thể tới sau này hoặc có thể còn sót lại trong các bộ nhớ đệm. Tuy nhiên, không cần thiết để giá trị đoạn của máy B quan hệ với giá trị đoạn của máy A. 1.5 Giao thức UDP (User Datagram Protocol): UDP (User Datagram Protocol) là giao thức theo phương thức không liên kết được sử dụng thay thế cho TCP ở trên IP theo yêu cầu của từng ứng dụng. Khác với TCP, UDP không có các chức năng thiết lập và kết thúc liên kết . Tương tự như IP, nó cũng không cung cấp cơ chế báo nhận (acknowledgment), không sắp xếp tuần tự các gói tin (datagram) đến và có thể dẫn đến tình trạng mất hoặc trùng dữ liệu mà không có cơ chế thông báo lỗi cho người gửi. Qua đó ta thấy UDP cung cấp các dịch vụ vận chuyển không tin cậy như trong TCP. 1.5.1 Khuôn dạng UDP datagram được mô tả với các vùng tham số đơn giản hơn nhiều so với TCP segment. Hình 1.9: Dạng thức của gói tin UDP UDP cũng cung cấp cơ chế gán và quản lý các số hiệu cổng (port number) để định danh duy nhất cho các ứng dụng chạy trên một trạm của mạng . Do ít chức năng phức tạp nên UDP thường có xu thế hoạt động nhanh hơn so với TCP. Nó thường được dùng cho các ứng không đòi hỏi độ tin cậy cao trong giao vận . Phân kênh, hợp kênh chính là việc lựa chọn những tiến trình ứng dụng trong một số lớn các tiến trình sử dụng giao thức UDP, và cần chọn ra những ứng dụng tương ứng với gói thông tin chuyển đến . Việc này được giải quyết bằng cơ chế cổng (Port mechanism) cơ chế này gắn mỗi ứng dụng với một con số gọi là số hiệu cổng (Port number) và mỗi gói thông tin mà ứng dụng gửi đi đều mang một trường SOURCE PORT. Tại nơi nhận, dựa vào thông tin trong trường DESTINATION PORT mà gói tin đó được truyền đến cổng tương ứng với ứng dụng . Ví dụ mọi bản TCP/IP đều có dịch vụ FTP (File Transfer Protocol) gắn với cổng 21 và TFTP (Trivial File Transfer Protocol) gắn với cổng 69 của UDP. 1.5.2 Một số cổng UDP dành riêng: 0 Reserved 7 Echo 9 Discard 11 Active users 13 Daytime 15 Who is up or NETSTAT 17 Quote of the day 19 Character generator 37 Time 42 Name server 43 Who is 53 Domain name server 67 Boottrap protocol server 68 Boottrap protocol client 69 Trivial File Tranfer Protocol ( TFTP) 111 Sun RPC 123 Network time protocol 161 SNMP net monitor 162 SNMP traps 512 UNIX comsat 513 UNIX rwho process 514 System log 525 Timed Bảng 1.10: một số cổng UDP cho các dịch vụ 1.5.3 Có một số lý do để người lập trình ứng dụng lựa chọn UDP như một dịch vụ giao vận: Nếu một số lượng lớn các gói tin nhỏ được truyền, thông tin cho việc kết nối và sửa lỗi có thể lớn hơn nhiều so với thông tin cần truyền. Trong trường hợp này, UDP là giải pháp hiệu quả nhất. Những ứng dụng kiểu "Query-Response" cũng rất phù hợp với UDP, câu trả lời có thể dùng làm sự xác nhận của một câu hỏi. Nếu không nhận được sự trả lời sau một thời gian nào đó, ứng dụng chỉ cần gửi đi một câu hỏi khác. Một số ứng dụng đã tự nó cung cấp công nghệ riêng để chuyển giao thông tin tin cậy, và không đòi hỏi dịch vụ này của transport layer. 1.6 Giao thức phân giải địa chỉ ARP (Address Resolution Protocol): Mọi máy tính cùng nằm trên một mạng có cùng một net id và các máy tính cùng trên một mạng vật lý có thể gửi frame vật lý trực tiếp cho nhau nên việc truyền thông tin giữa hai máy tính trong cùng một mạng vật lý không cần sử dụng gateway. Việc dẫn đường trực tiếp chỉ sử dụng phần địa chỉ máy host id trong địa chỉ IP.Trạm gửi chỉ việc kết khối dữ liệu vào frame, chuyển địa chỉ IP của trạm đích thành địa chỉ vật lý và gửi trực tiếp frame tới máy nhận. Một cơ chế sử dụng để chuyển địa chỉ IP thành địa chỉ vật lý là ARP (Address Resolusion Protocol) .Khi hai máy tính cùng nối vào một mạng vật lý,chúng biết được địa chỉ IP của nhau nhưng để truyền thông giữa hai máy, chúng phải biết được địa chỉ vật lý của nhau. ARP giải quyết vấn đề chuyển từ địa chỉ IP 32 bit sang địa chỉ Ethernet 48 bit. Người ta sử dụng hai cơ chế chuyển địa chỉ là: 1.6.1 Chuyển giao trực tiếp Địa chỉ vật lý là một hàm của địa chỉ IP ví dụ sử dụng trên mạng token ring proNET-10 là mạng cho phép đặt địa chỉ IP và địa chỉ vật lý thoải mái. Người ta có thể đặt địa chỉ IP là 192.5.48.3 và địa chỉ vật lý là 3, khi đó ta có PA=f(IA).Với PA là địa chỉ vật lý, IA là địa chỉ Internet và f là hàm chuyển đổi. 1.6.2 Chuyển giao gián tiếp Chuyển giao địa chỉ động được thực hiện bằng cách máy tính gửi thông tin tới toàn bộ các máy tính trên mạng, trong thông báo đó có chứa địa chỉ IP của máy tính nó cần liên lạc, mọi máy sẽ nhận được thong báo và máy nào thấy địa chỉ IP của mình thì trả lại thông báo chứa địa chỉ vật lý của chính mình.Khi đó hai máy tính có thể ‘nói chuyện’ với nhau. Host A Host D Host C Host B ARP Request Host A Host D Host C Host B ARP Reply Hình 1.11: Cách máy tinh phân giải địa chỉ Một gói thông tin ARP là một Ethernet Frame được truyền trực tiếp từ máy này tới máy khác.Vì không phải sử dụng IP, gói tin này không có địa chỉ IP cũng như không cần được dẫn đường, nó phải được gửi broadcasts tới tất cả các máy trên mạng Ethernet (với địa chỉ FF-FF-FF-FF-FF-FF). 1.6.3 Gói thông tin ARP được mô tả như sau: Hardware Address Space Protocol Address Space Hardware Address Length Protocol Address Length Operation Code Source Hardware Address (Ethernet Address) (Internet Address) Source Protocol Address Target Hardware Address (Ethernet Address) Hình 1.12: Cấu trúc gói ARP Không giống phần lớn các giao thức khác, dữ liệu trong ARP không có một định dạng chuẩn cho header.Để ARP có thể làm việc với nhiều công nghệ khác nhau, người ta dùng một trường để chứa độ dài của những trường đi sau nó. Trong trường hợp máy trạm không có thiết bị nhớ phụ, và vì vậy nó không biết địa chỉ IP của chính mình khi khởi động, người ta sử dụng cơ chế chuyển ngược địa chỉ (Reverse Address Resolution Protocol - RARP) hoạt động tương tự ARP để giải quyết vấn đề này.Theo cơ chế đó, có một máy chủ chứa bảng địa chỉ IP của các máy trạm, khi máy trạm khởi động, nó gửi một request tới tất cả các máy và máy chủ gửi trả lại một gói tin chứa địa chỉ IP của máy trạm yêu cầu. 1.7 Giao thức điều khiển truyền tin (Internet Control Message Protocol - ICMP): Việc dẫn đường qua các mạng sử dụng giao thức điều khiển truyền tin (Internet Control Message Protocol - ICMP) được định nghĩa trong RFC 792.ICMP sử dụng gói tin IP để chuyển thông báo của nó.ICMPgửi các thông báo làm các công việc: Điều khiển, thông báo lỗi và chức năng thông tin cho TCP/IP. Thông thường ICMP được gửi khi một gói tin không thể đi tới đích, một gateway không còn đủ chỗ nhớ để nhận thêm gói tin hay một gateway hướng dẫn máy tính sử dụng gateway khác để truyền thông tin theo một con đường tối ưu hơn. Cấu trúc gói tin ICMP: Mặc dầu mỗi thông báo ICMP có một kiểu định dạng riêng của nó, song các thông báo đều chứa 3 trường đầu tiên giống nhau: TYPE: Định nghĩa thông báo đi sau. CODE: Cung cấp thông tin thêm về thông báo. CHECKSUM: Chứa checksum của thông báo. Type Field ICMP Message Type 0 Echo Reply 3 Destination Unreachable 4 Source Quench 5 Redirect (Change a router) 8 Echo Request 11 Time Exceeded for a Datagram 12 Parameter Problem on a Datagram 13 Timestamp Request 14 Timestamp Reply 15 Information Request 16 Information Reply 17 Address Mask Request 18 Address Mask Reply Hình 1.13: Cấu trúc gói ICMP Chương 2: GIỚI THIỆU VỀ IC RTL8019AS 2.1 Mô tả tổng quát: Chíp RTL8019 là chíp điều khiển mạng Ethernet tích hợp.Nó có thể làm một adapter với chức năng Plug and Play (PnP: cắm là chạy và tiết kiệm năng lượng. Với tính năng tiết kiệm năng lượng ở 3 chế độ, chip RTL8019 được chế tạo từ ý tưởng là thiết bị mạng cho hệ thống máy thân thiện với môi trường.Nó có thể đồng thời truyền và nhận tín hiệu (full-duplex) trên đường dây xoắn đôi đến 1 hub chuyển mạch Ethernet. Tính năng này không chỉ tăng băng thông kênh truyền từ 10 đến 20Mbps mà còn giảm sự tranh chấp kênh truyền trong giao thức CSMA/CD. Nó có thể tạo 1 thiết bị mạng làm thỏa mãn người dùng với những đặc tính như tính năng cắm là chạy của Microsoft, thiết bị I/O, địa chỉ bộ nhớ v.v... Không những thế, nó có thể tự động nhận biết và chuyển qua lại giữa các thiết bị chuẩn 10BaseT và AUI.Bên cạnh đó nó tự động sữa lỗi ở đầu thu khi bị nhiễu trên đường truyền. RTL8019 có 8 đường IRQ và 16 đường địa chỉ do đó nó linh hoạt trong việc điều khiển bộ nhớ 16k, 32k hay 64k byte BROM. Với chức năng quản lý bộ nhớ dạng trang, nó có thể hỗ trợ tới 4Mbyte BROM trong khi chỉ có 16Kbyte trong bộ nhớ hệ thống nội. 2.2 Mô tả các chân: 2.2.1 Chân nguồn: STT TÊN LOẠI CHỨC NĂNG 2,47,57, 78, 92 VDD P +5V DC 15,35,44, 52,84 GND P Ground 2.2.2 Chân giao tiếp bus ISA: STT TÊN LOẠI CHỨC NĂNG 33 AEN I Chân chọn địa chỉ (Bus), tín hiệu ISA phải ở mất thấp cho một lệnh I/O. 3 -10 INT7-0 I/O Những ngắt được chỉ từ IRQ15, IRQ12, IRQ10, IRQ5, IRQ4, IRQ3, IRQ2/9 được đáp ứng. Tại mỗi thời điểm chỉ có 1 ngắt được chọn. Tất cả các ngắt còn lại ở trạng thái thứ ba. RTL8019 dùng những chân ngõ vào để theo dõi trạng thái hoạt động của những đường ngắt tương ứng trên bus ISA. Kết quả được ghi nhận trong thanh ghi INTR.Có thể dùng phần mềm để dò những xung đột của ngắt. 34 IOCHRDY O Tín hiệu ISA được điều khiển ở mức thấp để tăng vòng chờ trong lệnh đọc /ghi hiện tại. 1 IOCS16B [SLOT16] I/O Chân phát hiện khi nào khe 16bit hay 8bit được dùng. Nó được nối với một điện trở 27K kéo xuống mass ở bên ngoài. Khi chân 32(RSTDRV) có một cạnh xuống, RTL8019 phát hiện ra trạng thái của chân 1. Nếu chân 1 ở trạng thái mức cao thì hiểu là adapter này được cắm ở khe 16bit, ngược lại nếu ở mức thấp thì đã cắm ở khe 8bit. Sau khi chốt trạng thái chân, chân này được thay như là tín hiệu IOCS16B của ngõ ra để hở vàđược điều khiển mức thấp trong suốt quá trình truyền dữ liệu 16bit. Nó được mã hóa từ AEN và SA9 – 0. 29 IORB I Lệnh đọc I/O của host. 30 IOWB I Lệnh ghi I/O của host. 32 RSTDRV I Chân reset tác động mức cao của thiết bị từ bus ISA, phải giữ ở mức cao ít nhất 800ns. 28 -16, 14 -11 SA19 – 14 SA11, SA9–0 I Bus địa chỉ của host. 93 – 100 43 – 36 SD15 – 0 I/O Bus dữ liệu của host. 31 SMEMRB I Lệnh đọc từ bộ nhớ. 2.2.3 Chân giao tiếp bộ nhớ (SRAM, BROM, EEPROM): STT TÊN LOẠI CHỨC NĂNG 82 BCSB O Chân chọn bộ nhớ BROM. Tích cực mức thấp chỉ khi BROM được đọc. 79 EECS O Chân chọn bộ nhớ loại 9346. Tích cực mức cao chỉ khi 9346 được đọc hay ghi. 64 – 77 83, 85 - 91 MA13 – 0 MD7 - 0 O I/O Bus địa chỉ SRAM. Bus dữ liệu SRAM. [66 – 73] [83, 85–91] [74] [75] [76] [BA21 – 14] [BD7 – 0] [EESK] [EEDI] [EEDO] O I O O I Đia chỉ BROM. Dữ liệu BROM. Xung clock dữ liệu nối tiếp của 9346. Ngõ vào dữ liệu nối tiếp của 9346. Ngõ ra dữ liệu nối tiếp của 9346. [64] [65] [66 – 70] [71, 73 -75] [76 -77] [89 -91] [IP] [PNP] [BS4 – 0] [IOS3 – 0] [PL1 – 0] [IRQS2 – 0] I I I I I I Những chân này là những jumper tùy chọn. Trạng thái của chúng được chốt khi có cạnh xuống của chân RSTDRV, sau đó chúng phục vụ đường bus SRAM. Mỗi chân bên trong được nối điện trở 100K xuống mass. Vì thế ngõ vào ở mức thấp khi bỏ trống và ở mức cao khi nối điện trở 10K lên nguồn ở bên ngoài. Khi ở mức cao, chân này dùng dễ chọn chế độ jumper. Khi ở mức thấp nó chọn những chế độ khác. ( là chế độ RT và chế độ Plug and Play) Ở chế độ khác khi ở mức cao, RTL8019 cấm chế độ. Khi nó ở trạng thái high trong chế độ jumperless, RTL8019 cho phép vào chế độ Plug and Play (PnP) bất chấp giá trị của 9346 ( bộ nhớ cấu hình mặc định). Chân chọn kích thước và đường địa chỉ BROM. Chân chọn địa chỉ I/O. Chân chọn loại mạng vừa. Chân chọn một trong những đường ngắtINT7–0 81 MRDB O Chân dịch khi SRAM đọc. 80 MWRB O Chân dịch khi SRAM ghi. Hình 2.1 Sơ đồ chân của RTL8019AS 2.3 Mô tả các thanh ghi: Các thanh ghi trong RTL8019 có chia thành 2 nhóm riêng biệt: dựa vào địa chỉ hay chức năng của chúng – một cho NE2000, cái khác cho Plug and Play (PnP). Nhóm 1: các thanh ghi NE2000: Đây là nhóm bao gồm 4 trang thanh ghi mà được chọn bởi bit PS0 và PS1 trong thanh ghi CR. Mỗi trang chứa 16 thanh ghi.Bên cạnh những thanh ghi tương thích với NE2000, RTL8019 định nghĩa một số thanh ghi cho cấu hình của phần mềm và những đặc tính nâng cao. 2.3.1 Bảng thanh ghi: Chú ý: “-“là những thanh ghi dự trữ.Những thanh ghi in nghiêng đậm là những thanh ghi được định nghĩa trong RTL8019 và không hỗ trợ cho adapter NE2000 chuẩn. Các thanh ghi trong 4 trang thanh ghi: Chú ý: những thanh ghi được đánh dấu ‘W*’ có thể được viết chỉ khi bit EEM1=EEM0 = 1 2.3.2 Chức năng các thanh ghi: Những thanh ghi tương thích với NE2000: 2.3.3.1 CR: Thanh ghi lệnh (00H; loại R/W) Thanh ghi này được dùng để chọn lựa trang thanh ghi, cho phép truy xuất bộ nhớ trực tiếp (direct memory access DMA) thực thi hay không và đưa ra lệnh. Bit Ký hiệu Mô tả 7, 6 PS1,PS0 PS1 PS0 Trang thanh ghi Nhận xét 0 0 0 Tương thích Ne2000 0 1 1 Tương thích Ne2000 1 0 2 Tương thích Ne2000 1 1 3 Tùy chọn RTL8019 5 – 3 RD2 – 0 RD2 RD1 RD0 Chức năng 0 0 0 Không cho phép 0 0 1 Đọc từ xa 0 1 0 Ghi từ xa 0 1 1 Gửi gói đi 1 * * Bỏ qua 2 TXP Bit này phải được đặt để gửi 1 gói. Nó tự reset hay sau khi truyền xong hoặc bị ngắt. 1 STA Bit ISA không điều khiển gì cả. Thực thi lệnh 0 STP STA STP Chứng năng 1 0 Thực thi lệnh 0 1 Dừng lệnh Bit này dùng để dừng lệnh. Khi nó đặt lên 1 thì không gói nào được truyền hay nhận. 2.3.2.2 ISR: thanh ghi trạng thái ngắt (07H; loại R/W trong trang0) Thanh ghi thể hiện tình trạng card mạng, từ đó xác định nguyên nhân ngắt.Từng bit được xóa sau khi bật nguồn. Muốn xóa trạng thái ngắt phải ghi ISR = 00h. BIT KÝ HIỆU MÔ TẢ 7 RST Bit này đặt lên 1 khi card mạng (NIC) ở trạng thái ban đầu và được xóa 0 khi lệnh đầu tiên phát đi đến thanh ghi CR. Nó đặt lên 1 khi bộ đệm nhận tràn và xóa 0 khi một hay nhiều gói được đọc từ bộ đệm. 6 RDC Bằng 1 khi tiến trình DMA hoàn thành. 5 CNT Bằng 1 khi MSB cua một trong những trạm kiểm mạng được đặt. 4 OVW Bằng 1 khi bộ đệm nhận không thể nhận nữa. 3 TXE Khi xảy ra đụng độ dẫn đến gói truyền bị ngắt thì bit này = 1. 2 RXE Bằng 1 khi gói nhận được có những lỗi sau đây: 1/ Lỗi CRC. 2/ Sai số thiết lập khung. 3/ Mất gói. 1 PTX Bit chỉ thị gói truyền không bị lỗi. 0 PRX Bit chỉ thị gói nhận không bị lỗi. 2.3.2.3 IMR: thanh ghi mặt nạ ngắt( 0FH; loại = W trong trang 0, loại = R in trang2) Mỗi bit sẽ tương ứng với từng ngắt. Khi mở nguồn thì tất cả = 0. 2.3.2.4 DCR: thanh ghi cấu hình dữ liệu(OEH; loại = W trong trang 0, loại = R trong trang2) BIT KÝ HIỆU MÔ TẢ 7 - Luôn = 1. 6, 5 FT1, FT2 FIFO điểm bắt đầu chọn là 1 hay 0. 4 ARM Tự động tạo từ xa: 0: gói lệnh gửi đi không thực thi. 1: gói lệnh gửi đi được thực thi. 3 LS Lựa chọn chế độ hồi tiếp: 0: Chế độ hồi tiếp được chọn. Bit 1 và 2 của thanh ghi TCR phải được lập trình cho hoạt động hồi tiếp. 1: Hoạt động bình thường. 2 LAS Bit này phải gán là ‘0’. Card mạng NIC chỉ hỗ trợ chế độ DMA 16bit kép. 1 BOS Lựa chọn byte lệnh. 0 WTS Lựa chọn truyền dạng từ. 2.3.2.5 TCR:Thanh ghi cấu hình truyền (0DH; loại =W trong trang 0, loại = R trong trang 2) BIT KÝ HIỆU MÔ TẢ 7 - Luôn = 1 6 - Luôn = 1 5 - Luôn = 1 4 OFST Chấp nhận trạng thái xung đột mạng 3 ATD Cấm truyền tự động 2, 1 LB1, LB0 LB1 LB0 Chế độ Nhận xét 0 0 0 Bình thường 0 1 1 Hồi tiếp nội 1 0 2 Hồi tiếp ngoại 1 1 3 Hồi tiếp ngoại 0 CRC Điều kiện Hoạt động logic của mã CRC CRC bit Mode CRC Generator CRC Chcker 0 Normal Enable Enable 1 Normal Disable Enable 0 Loopback Enable Disable 1 Loopback Disable Enable 2.3.2.6 TSR: thanh ghi trạng thái truyền(04H; loại=R trong trang 0) : Đây là thanh ghi chỉ thị trạng thái truyền của một gói. BIT KÝ HIỆU MÔ TẢ 7 OWC Ngoài xung đột loại của sổ thì nó = 1 khi phát hiện ra xung đột sau một khe thời gian (51,2 us). Gói truyền được sắp xếp lại như trong như bình thường. 6 CDH Card NIC chờ tín hiệu xung đột trong 6.4us đầu tiên của khe hở giữa các frame truyền. Nó được set để gửi tín hiệu nếu sự truyền nhận bị fail. 5 - Luôn luôn = 1. 4 CRS Carries sense lost bit = 1 khi sóng mang bị mất trong suốt quá trình truyền gói đi. 3 ABT Nó chỉ thị NIC không truyền vì có xung đột mạng. 2 COL Sự truyền xung đột ở trên mạng. 1 - Luôn luôn = 1 0 PTX Bit chỉ thị sự truyền không bị lỗi. 2.3.2.7 RCR: thanh ghi cấu hình sự nhận gói( 0CH; loại W trong trang 0, loại R trong trang 2) Bit Ký hiệu Mô tả 7 - Luôn luôn = 1 6 - Luôn luôn = 1 5 MON Khi moniter mode bit = 1, gói nhận được kiểm tra địa chỉ kết nối, CRC và sự sắp xếp các frame nhưng không có bộ đệm bộ nhớ. Tuy nhiên các gói sẽ được đệm vào bộ nhớ. 4 PRO PRO=1: tất cả gói với địa chỉ đích là địa chỉ vật lý được nhận. PRO=0: địa chỉ đích vật lý phải nối với địa chỉ một điểm được lập trình trong PAR0 – 5. 3 AM AM=1 : gói có địa chỉ đích là địa chỉ muticast được nhận. AM=0 : gói có địa chỉ đích là muticast được trả về. 2 AB AB = 1: gói có địa chỉ đích là địa chỉ broadcast được nhận. AB=0: gói có địa chỉ đích là địa chỉ broadcast được trả về. 1 AR AR = 1: gói có độ dài it hơn 64byte được nhận. AR = 0: gói có độ dài it hơn 64byte được trả về. 0 SEP SEP = 1: gói có lỗi được nhận. SEP = 0: gói có lỗi được trả về. 2.3.2.8 RSR:thanh ghi trạng thái nhận ( 0CH ; loại = R trong trang0 ) BIT Ký hiệu Mô tả 7 DFR DFR = 1 khi có sung đôt. 6 DIS Quá trình nhận bị cấm. Bằng 1 khi card NIC trong chế độ monitor. Bằng 0 khi NIC không ở chế độ monitor. 5 PHY Bằng 1 khi gói có địa chỉ đích là multicast hay broadcast. Bằng 0 khi gói có địa chỉ vật lý. 4 MPA Bằng 1 khi gói bị mất (do đầy bộ đệm nhận hay card NIC trong chế độ kiểm tra). Làm tăng thanh ghi CNTR2. 3 - Luôn luôn = 0. 2 FAE Bit phản hồi là gói tới có lỗi liên kết frame(gói không có giới hạn). Làm tăng CNTR0. 1 CRC Bit phản hồi là gói nhận có lỗi CRC. Bit = 1 khi có lỗi FAE. Làm tăng thanh ghi CNTR1. 0 PRX Đây là bit chỉ thị gói nhận không có lỗi 2.3.2.9 CLDA0 – 1 : thanh ghi hiện thời của DMA nội ( 01H & 02H; loại = R trong trang 0 ) Có hai thanh ghi có thể được đọc để lấy địa chỉ hiện thời DMA nội . 2.3.2.10 PSTART : thanh ghi trang bắt đầu ( 02H ; loại W trong trang 0 , loại R trong trang 2 ) Thanh ghi trang bắt đầu đặt địa chỉ trang đầu của bộ đệm nhận dạng vòng . 2.3.2.11 PSTOP : thanh ghi trang dừng ( 02H ; loại = W trong trang 0 ; loại = R trong trang 2 ) Thanh ghi trang dừng đặt địa chỉ trang cuối của bộ đệm nhận dạng vòng . 2.3.2.12 BNRY : thanh ghi chỉ giới hạn bộ nhớ cho thanh ghi ( 03H ; loại R/W trong trang 0 ) Thanh ghi dùng để bộ đệm nhận không ghi đè.Nó dùng như con trỏ chỉ thị trang bộ đệm nhận cuối mà host phải đọc. 2.3.2.13 TPSR : thanh ghi trang truyền đầu tiên ( 04H ; loại = W trong trang 0 ) Thanh ghi đặt địa chỉ trang bắt đầu của gói truyền . 2.3.2.14 TBCR0,1 : thanh ghi đếm số byte được truyền ( 05H & 06H ; loại = W trong trang 0 ) 2.3.2.15 NCR : thanh ghi số lần xung đột (05H ; loại = R trong trang 0 ) Thanh ghi ghi nhận số xung đột thể hiện tình trạng của một điểm mạng suốt quá trinh truyền gói . 2.3.2.16 FIFO : thanh ghi first in first out (06H ; loại = R trong trang 0 ) Thanh ghi cho phép host thou nội dung của FIFO sau khi hồi tiếp. 2.3.2.17 CRDA0,1: thanh ghi địa chỉ hiện tại của DMA (08H & 09H; loại =R trong trang0) 2.3.2.18 RSAR0,1: thanh ghi địa chỉ bắt đầu của DMA (08H & 09H ; loại = W trong trang0) 2.3.2.19 RBCR0,1 : thanh ghi đếm số byte trong DMA ( 0AH & 0BH ; loại = W trong trang0) 2.3.2.20CNTR0: thanh ghi đếm tổng số lỗi của sự sắp xếp các frame ( 0DH ; loại = R trong trang 0) 2.3.2.21 CNTR1 : thanh ghi đếm tổng số lỗi CRC ( 0EH ; loại = R trong trang 0 ) 2.3.2.22 CNTR2 : thanh ghi đếm tổng số gói bị mất ( 0EH ;loại = R trong trang 0 ) 2.3.2.23 PAR0 – 5 : thanh ghi địa chỉ vật lý ( 01H – 06H ; loại = R/W trong trang 1) Thanh ghi này chứa địa chỉ điểm mạng Ethernet và được dùng để so sánh địa chỉ đích của gói được gửi tới . 2.3.2.24 CURR : thanh ghi trang hiện thời ( 07H ;loại = R/W trong trang 1 ) Thanh ghi này chỉ tới địa chỉ trang đệm đầu tiên của gói nhận để được dùng cho gói nhận . 2.3.2.25 MAR0 – 7 : thanh ghi địa chỉ Multicast (08H – 0FH; loại = R/W trong trang 1) Thanh ghi cung cấp các bit đưa ra địa chỉ multicast. 2.3.3 Các chỉ thị led: Tx LED: báo hiệu truyền gói data Rx LED: báo hiệu nhận gói data LED_CRS = LED_TX + LED_RX LED_COL: led báo có xung đột mạng. Trạng thái LED trong chế độ tiết kiệm năng lượng Led Chế độ thường Chế độ Sleep Chế độ tiết kiệm LED_BNC - - Low LED_LINK - High High LED_ COL High High High LED_TX Low High High LED_RX Low High High LED_CRS Low High High Chương 3: CÁC IC SỬ DỤNG TRONG ĐỀ TÀI 3.1 IC Vi Điều Khiển 89S52: 3.1.1 Các đặc tính kỹ thuật: IC vi điều khiển 89S52 thuộc họ MCS51. 8 Kb Flash bộ nhớ. 256 byte RAM. 4 port I/0 8bit. 3 bộ định thời 16bit. Giao tiếp nối tiếp. 64KB không gian bộ nhớ chương trình mở rộng. 64 KB không gian bộ nhớ dữ liệu mở rộng. Một bộ xử lý luận lý (thao tác trên các bit đơn). Lock bộ nhớ 3 cấp độ. Hình 3.1: Sơ đồ chân 89S52 3.1.2 Chức năng các chân port: Port 0: Là port có chân từ 32 đến 39.Có chức năng như các đường I/O. Có thể dùng làm 8 đường dữ liệu hay làm 8 đường địa chỉ thấp. Port 1: Là port có chân từ 1 đến 8. Có chức năng như các đường I/O. Port 2: Là port có chân từ 21 đến 28.Có chức năng như các đường I/O. Làm 8 đường địa chỉ cao. Port 3: Là port có chân từ 10 đến 17.Có chức năng như các đường I/O. Ngoài ra còn có chức năng đặc biệt sau: Bit Tên Chức năng P3.0 RXD Dữ liệu nhận được ở port nối tiếp. P3.1 TXD Dữ liệu phát đi ở port nối tiếp. P3.2 INT0 Ngắt ngoài 0. P3.3 INT1 Ngắt ngoài 1. P3.4 T0 Ngõ vào của timer/couter 0. P3.5 T1 Ngõ vào của timer/couter 1. P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài. P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài. Bảng 3.2: các chức năng đặc biệt của port3 Các ngõ vào bộ dao động trên chip: pin 18 & 19. Các chân nguồn: pin40 VCC; pin20 GND. Chân Reset: pin9 tích cực mức cao ít nhất trong 2 chu kỳ máy 3.1.3 Tổ chức bộ nhớ: Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp.Địa chỉ trong vùng RAM mở rộng chỉ được truy xuất dùng cách đánh địa chỉ gián tiếp. Có 128 bit được địa chỉ hóa ở các byte 20H đến 2FH. 3.1.4 Chức năng các thanh ghi đặc biệt: Từ trạng thái chương trình ( program status word PSW): Nằm ở địa chỉ D0h chứa các bit trạng thái như bảng tóm tắt sau: BIT Ký Hiệu Địa chỉ Ý Nghĩa PSW.7 CY D7h Cờ nhớ. PSW.6 AC D6h Cờ nhớ phụ. PSW.5 F0 D5h Cờ 0. PSW.4 RS1 D4h Chọn dãy thanh ghi (bit 1). PSW.3 RS0 D3h Chọn dãy thanh ghi (bit 0) 00= bank0 : địa chỉ từ 00h đến 07h. 01= bank1 : địa chỉ từ 08h đến 0Fh. 10= bank2 : địa chỉ từ 10h đến 17h. 11= bank3 : địa chỉ từ 18h đến 1Fh. PSW.2 OV D2h Cờ tràn. PSW.1 - D1h Dự trữ. PSW.0 p D0h Cờ kiểm tra chẵn lẽ. Bảng 3.3: Thanh ghi trạng thái chương trình Thanh ghi B: Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho các phép toán nhân và chia. Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết quả 16 bit trong A (byte thấp) và B (byte cao).Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong A và phần dư trong B.Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng. Nó được địa chỉ hóa từng bit bằng các địa chỉ bit FOH đến F7H. Con trỏ ngăn xếp: Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H.Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp.Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ dữ liệu và làm giảm SP. Con trỏ dữ liệu (DPTR): Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh ghi 16 bit ở địa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao). Các thanh ghi port: Các port của 89C52 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90 H, Port 2 ở địa chỉ A0H và Port 3 ở địa chỉ B0H.Tất cả các Port đều được địa chỉ hóa từng bit.Điều đó cung cấp một khả năng giao tiếp thuận lợi. Các thanh ghi Timer: 89C52 chứa 3 bộ định thời đếm 16 bit được dùng trong việc định thời hoặc đếm sự kiện. Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao). Timer 1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao). Việc vận hành timer được set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H. Chỉ có TCON được địa chỉ hóa từng bit. Các thanh ghi port nối tiếp ( SBUF): Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF. Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp (SCON) (được địa chỉ hóa từng bit) ở địa chỉ 98H. Các thanh ghi ngắt: 89S52 có cấu trúc 6 nguồn ngắt, 2 mức ưu tiên. Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ 8AH. Cả hai thanh ghi được địa chỉ hóa từng bit. Các thanh ghi điều khiển công suất: Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều khiển. Chúng được tóm tắt trong bảng sau: Bit Ký Hiệu Ý Nghĩa 7 SMOD Bit gấp đôi tốc độ baud, nếu được set thì tốc độ baud sẽ tăng gấp đôi trong các mode 1,2 và 3 của port nối tiếp. 6 - Không định nghĩa. 5 - Không định nghĩa 4 - Không định nghĩa 3 GF1 Bit cờ đa dụng 1. 2 GF0 Bit cờ đa dụng 0. 1 PD Giảm công suất. Được set để kích hoạt mode giảm công suất, chỉ thoát khi reset IC. 0 IDL Chế dộ nghỉ, được set để kích hoạt chế độ chờ, chỉ thoát khi có ngắt hoặc reset hệ thống. Bảng 3.4: Thanh ghi điều khiển công suất Các giá trị ban đầu của các thanh ghi sau khi reset 89S52: Thanh ghi Nội dung Bộ điếm chương trinh 0000h Thanh ghi A 00h Thanh ghi B 00h PSW 00h SP 07h DPTR 0000h Port0 – 3 FFh IP XXX00000b IE 0XX00000b Các thanh ghi định thời 0,1 00h SCON 00h SBUF XXh PCON (HMOS) 0XXXXXXXb PCON (CMOS) 0XXX0000b Bảng 3.5: Giá trị ban đầu của các thanh ghi Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình, nó được đặt lại 0000H. Khi RST trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ở địa chỉ đầu tiên trong bộ nhớ trong chương trình: địa chỉ 0000H. Nội dung của RAM trên chip không bị thay đổi bởi lệnh reset. 3.1.5 Hoạt động của bộ định thời ( timer) SFR Mục Đích Địa Chỉ Địa chỉ hóa từng bit TCON Điều khiển 88h Có TMOD Chọn chế độ 89h Không TL0 Byte thấp của bộ định thới 0 8Ah Không TL1 Byte thấp của bộ định thới 1 8Bh Không TH0 Byte cao của bộ định thới 0 8Ch Không TH1 Byte cao của bộ định thới 1 8Dh Không Bảng 3.6: Các thanh ghi chức năng đặc biệt của bộ định thời. 3.1.5.1 thanh ghi chế độ định thời ( TMOD): Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho timer 0 và timer 1. Bit Tên Timer Mô tả 7 GATE 1 Bit điều khiển cổng. khi set = 1 bộ dịnh thời chỉ hoạt động khi INT ở mức cao. 6 C/T 1 Bit chọn chức năng đếm hay định thời. 1= đếm sự kiện. 0= định thời trong một khoảng thời gian. 5 M1 1 Bit 1 chọn chế độ. 4 MO 1 Bit 1 chọn chế độ. 00 : chế độ 0 : timer 13bit. 01 : chế độ 1 : timer 16bit. 10 : chế độ 2 : tự động nạp lại. 11 : chế độ 3 : chế dộ định thời chia sẽ. 3 GATE 0 Bit điều khiển cổng cho bộ định thời 0. 2 C/T 0 Bit chọn chức năng đếm hay định thời cho bộ định thời 0. 1 M1 0 Bit 1 chọn chế độ cho bộ định thời 0. 0 M0 0 Bit 0 chọn chế độ cho bộ định thời 0. Bảng 3.7: Thanh ghi chọn chế độ định thời 3.1.5.2 Thanh ghi điều khiển định thời: Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer 0 và timer 1. Bit Ký Hiệu Địa chỉ Mô tả TCON.7 TF1 8Fh Cờ báo tràn timer 1. Đặt bởi phần cứng khi tràn, được xóa bởi phần mềm hoặc phần cứng khi bộ xử lý chỉ đến chương trình phục vụ ngắt. TCON.6 TR1 8Eh Bit điều khiển timer 1 chạy. Đặt/xóa bằng phần mềm cho timer chạy/ngưng. TCON.5 TF0 8Dh Cờ báo tràn timer 0 TCON.4 TR0 8Ch Bit điều khiển timer 0 chạy. TCON.3 IE1 8Bh Cờ cạnh ngắt 1 bên ngoài, đặt bởi phần cứng khi phát hiện một cạnh xuống (IT1=1) hoặc mức thấp(IT1=0) ở INT1, xóa bằng phần mềm hoặc phần cứng khi CPU chỉ đến chương trình phục vụ ngắt TCON.2 IT1 8Ah Cờ kiểu ngắt 1 bên ngoài.Đặt/xóa bằng phần mềm đề ngắt ngoài tích cực cạnh xuống/mức thấp. TCON.1 IE0 89h Cờ ngắt bên ngoài 0 ( kích khởi cạnh). TCON.0 IT0 88h Cờ ngắt bên ngoài 0 ( kích khởi cạnh hoặc mức ). Bảng 3.8: Thanh ghi điều khiển định thời 3.1.6 Hoạt động của port nối tiếp: 3.1.6.1 Thanh ghi điều khiển port nối tiếp ( SCON): Chế độ hoạt động của port nối tiếp được đặt bằng cách ghi vào thanh ghi chế độ port nối tiếp (SCON) ở địa chỉ 98H. Sau đây các bảng tóm tắt thanh ghi SCON và các chế độ của port nối tiếp : Bit Ký Hiệu Địa Chỉ Mô tả. SCON.7 SM0 9Fh Bit 0 chọn chế dộ của port nối tiếp. SCON.6 SM1 9Eh Bit 1 chọn chế dộ của port nối tiếp. SCON.5 SM2 9Dh Bit 2 chọn chế dộ của port nối tiếp. Bit này cho phép truyền thong đa xử lý ở các chế độ 2 và 3; bit RI sẽ không được tích cực nếu bit thứ 9 nhận được là 0. SCON.4 REN 9Ch Cho phép thu. Bit này phải được set để nhận các ký tự. SCON.3 TB8 9Bh Bit phát 8. Bit thứ 9 được phát ở chế độ 2 và 3; được set và xóa bởi phần mềm. SCON.2 RB8 9Ah Bit thu 8. Bit thứ 9 nhận được. SCON.1 TI 99h Cờ ngắt pháp.đặt lên 1 khi kết thúc ký tự, được xóa bằng phần mềm. SCON.0 RI 98h Cờ ngắt thu. Đặt lên 1 khi kết thúc thu ký tự, được xóa bằng phần mềm. Bảng 3.9: Thanh ghi chế độ port nối tiếp SCON SM0 SM1 Chế độ Mô tả Tốc độ Baud. 0 0 0 Thanh ghi dịch Cố định.( tần số dao động /12 ) 0 1 1 UART 8 bit Thay đổi ( đặt bằng timer). 1 0 2 UART 9 bit Cố định (tần số dao động /12 hay /64). 1 1 3 UART 9 bit Thay đổi ( đặt bằng timer). Bảng 3.10: Các chế độ port nối tiếp 3.1.7 Hoạt động ngắt: Mỗi nguồn ngắt được cho phép hoặc không cho phép từng ngắt một qua thanh ghi chức năng đặt biệt cố định địa chỉ bit IE (Interrupt Enable : cho phép ngắt) ở địa chỉ A8H. Cũng như các bit cho phép mỗi nguồn ngắt, có một bit cho phép hoặc cấm toàn bộ được xóa để cấm tất cả các ngắt hoặc được đặt lên 1 để cho phép tất cả các ngắt. Bit Ký Hiệu Địa chỉ bit Mô tả ( cho phép=1; không cho phép=0). IE.7 EA AFh Cho phép hay không cho phép toàn cục. IE.6 - AEh Không sử dụng. IE.5 ET2 ADh Cho phép ngắt do bộ định thời 2. IE.4 ES ACh Cho phép ngắt do port nối tiếp. IE.3 ET1 ABh Cho phép ngắt do bộ định thời 1. IE.2 EX1 AAh Cho phép ngắt từ bên ngoài ( ngắt ngoài 1). IE.1 ET0 A9h Cho phép ngắt do bộ định thời 0. IE.0 EX0 A8h Cho phép ngắt từ bên ngoài ( ngắt ngoài 0). Bảng 3.11: Thanh ghi IE. Ưu tiên ngắt: Mỗi nguồn ngắt đuợc lập trình riêng vào một trong hai mức ưu tiên qua thanh ghi chức năng đặc biệt được địa chỉ bit IP (Interrupt priority : ưu tiên ngắt) ở địa chỉ B8H. Bit Ký Hiệu Địa Chỉ Mô tả IP.7 Không định nghĩa. IP.6 Không định nghĩa. IP.5 PT2 BDh Ưu tiên ngắt cho bộ định thời 2. IP.4 PS BCh Ưu tiên ngắt cho port nối tiếp. IP.3 PT1 BBh Ưu tiên ngắt cho bộ định thời 1. IP.2 PX1 BAh Ưu tiên ngắt cho ngắt ngoài 1. IP.1 PT0 B9h Ưu tiên ngắt cho bộ định thời 0. IP.0 PX0 B8h Ưu tiên ngắt cho ngắt ngoài 0. Bảng 3.12: thanh ghi ưu tiên ngắt IP Các ngắt ưu tiên được xóa sau khi reset hệ thống để đặt tất cả các ngắt ở mức ưu tiên thấp hơn. Xử lý ngắt: Khi có một ngắn xảy ra và được CPU chấp nhận, chương trình chính bị ngắt. Những hoạt động sau xảy ra: - Thi hành hoàn chỉnh lệnh đang hiện hành - Cất PC vào ngăn xếp - Trạng thái ngắt hiện hành được cất bên trong - Các ngắt được chặn tại mức của ngắt - Nạp vàp PC địa chỉ Vector của ISR - ISR thực thi ISR thực thi và đáp ứng ngắt. ISR hoàn tất bằng lệnh RETI. Điều này lấy lại giá trị cũ của PC từ ngăn xếp và lấy lại trạng thái ngắt cũ. Chương trình lại tiếp tục thi hành tại nơi mà nó dừng. Các vector ngắt: Khi chấp nhận ngắt, giá trị được nạp vào PC được gọi là Vector ngắt. Nó là địa chỉ bắt đầu của ISR cho nguồn tạo ngắt. Các Vector ngắt được cho ở bảng sau: Ngắt Cờ Địa chỉ Vector Reset hệ thống RST 0000h Ngắt ngoài 0. IE0 0003h Timer 0 TF0 000Bh Ngắt ngoài 1 IE1 0013h Timer 1 TF1 001Bh Port nối tiếp TI hoặc RI 0023h Timer 2 TF2 hoặc IE2 002Bh Bảng 2.13: Các Vector ngắt 3.2 IC Đệm ULN2803: IC này có 8 transistor mắc kiểu Darlington được dùng làm cổng đệm đảo. Hình 2.14: Sơ đồ chân ULN2803 Thông số kỹ thuật: Điện áp ngõ ra lớn nhất 50V Điện áp ngõ vào lớn nhất 30V Dòng ngõ ra 0.5A Dòng ngõ vào 25mA Nhiệt độ hoạt động : 0 – 70 độ C. 3.3 IC 74LS04: 7404 là loại IC cổng thuộc họ TTL, bên trong nó gồm 6 cổng đảo. IC 7404 cần nguồn nuôi chuẩn 5V (( 10%). Nhiệt độ hoạt động : 0 – 70 độ C. 1 2 3 4 5 6 7 8 14 13 12 11 9 10 VCC GND 7404 Hình 2.15: Sơ đồ chân 74LS04 Chương 4: THI CÔNG MẠCH 4.1 Sơ nguyên lý: Sơ đồ tham khảo trang 128 sách Designing and Programing small device for Network, tác giả Jan Axelson. 4.1.1 Từ đó ta có sơ đồ nguyên lý sau: 4.1.2 Layout: 4.1.3 Nguyên lý hoạt động các khối: Khối nguồn: cung cấp nguồn ổn định cho tất cả các khối hoạt động Khối giao tiếp: gồm 2 phần, phần giao tiếp RS232 nhận các gói từ PC qua cổng COM1. Phần giao tiếp RTL8019AS nhận các gói UDP trong mạng LAN qua cổng RJ45. Khối vi xử lý và điều khiển: tiếp nhận các gói, xử lý các gói và đưa ra tín hiệu điều khiển, đóng gói trả lời trạng thái. Khối giao diện điều khiển: gửi các gói chứa mã lệnh điều khiển và thể hiện trạng thái của các thiết bị. 4.2 Sơ đồ giải thuật: 4.2.1 main: 4.2.2 SP_income: 4.2.3 ET_INT và ET_income: 4.2.4 RTL_check: 4.2.5 ARP_reply: Gán dest_MAC = sender_MAC Đưa scr_MAC của mình vào enet_buff Type = 0806h Hardware type = 0001h Protocol type = 0800h Hardware size = 06h Protocol size = 04h Opcode = 0002h = reply Gán ARP_target_MAC = ARP_dest_MAC, ARP_target_IP = ARP_dest_IP Gán sender_MAC = MAC của mình, sender_IP = IP của mình Thêm 18byte trailer Trả lời lại (call net_send) và kết thúc chương trình con. 4.2.6 ET_income_ICMP: Kiểm tra có phải là gói ICMP không? Sai thì thoát Đúng thì đổi ICMP_type = request =08h thành ICMP_type=reply=0 Code = 0 Chuyển các giá trị dest_MAC, IP Tính checksum Gửi gói đi và kết thúc chương trình con. 4.2.7 send_UDP: (chuẩn bị các giá trị vào enet_buff trước khi gửi gói đi.) Đưa các giá trị dest_MAC, source_MAC vào bộ nhớ. type = 0800h enet_version = 45h differentiated service field = 00h total length = SP_cnt_re + 28 identification = 1010h Flags + Fragment offset = 0000h Time to live = 0FFh Protocol = 11h Tạm thời cho header checksum = 0000h Đưa src IP và dest IP vào enet_buff+26 Tính header checksum 20byte Đưa scr port vào enet_buff Đưa giá trị vào data length = 18 Tạm thời cho checksum = 0000h Kiểm tra cờ send_polling có bật không? Cờ có bật thì với data đã gán, ta tính checksum rồi thêm phần trailer . Xong ta gửi gói đi.(call net_send) và kết thúc chương trình con. Cờ send_polling không bật thì đưa dữ liệu SP_buff_re vào UDP_data tính checksum và thêm phần trailer rồi gủi đi. (call net_send) và kết thúc chương trình con. Lưu ý: Khi 89S52 nhận một gói IP thì 2byte đầu là Frame Haeder, 2byte sau là tổng độ dài của gói. Tính header checksum = tính từ version đến dest_IP Tính checksum = (tính 2 lần header checksum) + (giá trị tính từ scr_IP đến hết phần data) + protocol + UDP_length. 4.2.8 Up_device: 4.2.9 time_on: 4.3 Giao diện điều khiển: Ở đây ta dùng phần mềm khá mạnh của hãng Borland trong việc lập trình trên nền Windown là Delphi 5.0 Để tham khảo giáo trình cũng như các ví dụ từ dễ đến khó mời các bạn tham khảo giáo trình : Lập trình Delphi 5.0 của tác giả Thúy Anh. Với đề tài này, tôi trình bày ở đây. Phút cuối có thể thay đổi để thêm các chức năng mới và cải tiến giao diện cho thân thiệt với người dùng hơn, nếu có sai xót mong người đọc thông cảm. Mời các thầy cô và các bạn tham khảo. 4.3.1 Giao diện chính: 4.3.2 Giao diện Delphi 5.0: 4.4 Kết Luận: Mạch đã hoạt động : có thể ping , điều khiển các thiết bị được chỉ thị qua led Giao diện thiết kế khá đẹp , dễ sử dụng. Ưu điểm của mạch là có thể chạy mà không cần mở máy tính điều khiển ( run alone ). Có thể hẹn giờ tắt mở từng thiết bị độc lập đã được lập trình sẵn. 4.5 Hướng phát triển đề tài: Hướng phát triển của đề tài này là có thể điều khiển thiết bị qua Internet. Để làm được diều điếu này ta phải có một server để nhận data trên mạng Internet và truyền data cho thiết bị. Về hướng này em đã có liên lạc với bạn Mai Phương Thảo vì bạn làm đề tài có ứng dụng một server để nhận data. Nhưng vì thời gian có hạn em chưa thể phát triển được theo hướng này. Hướng thứ hai có thể giao tiếp các thiết bị trong môi trường không dây. Nếu giao tiếp trực tiếp với mạch là một điều khó khăn nhưng cũng có con chip IP2022 trong bộ kit của công ty thiết bị mạng Ubicom cũng như trong các card wireless. Nếu giao tiếp wireless thông qua một server có card wireless thì điều này khả thi hơn. Về hướng tốc độ xử lý thì ta có thể thay thế chip 89S52 bằng các dòng chip AVR, PIC có tốc độ cao hơn. Danh Mục Tài Liệu Tham Khảo Họ vi điều khiển 8051 – tác giả Tống Văn Ơn. Lập trình Delphi 5.0 – tác giả Thúy Anh. Designing and programming small device for network – tác giả Jan Axelson. Giáo trình Mạng Máy Tính – tài liệu nội bộ của trường Đại Học Kỹ Thuật Công Nghệ. Giáo trình Thiết kế và xây dựng mạng LAN và WAN – tài liệu Trung tâm Khoa Học Tự Nhiên và Công Nghệ Quốc Gia, viện Công Nghệ Thông Tin. Teach yourseft TCP/IP in 14 days. Google.com PHỤ LỤC Các file đính kèm trong thư mục CD:\tập tin đính kèm 1 CODE của Delphi: có file đính kèm 2 Các file tài liệu tham khảo đã nêu. 3 CODE cho 89S52:

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

  • docbao cao hoan chinh.doc