Donate

วันเสาร์ที่ 22 พฤษภาคม พ.ศ. 2553

ความรู้พื้นฐาน บางประการ

ความรู้พื้นฐานบางประการ
กฏเกณ์พื้น ฐานที่ควรทราบ
ระหว่างการถ่ายโอนข้อมูล  สัญญาณที่ไหลผ่านระหว่าง   Microprocessor   กับอุปกรณ์ภายนอก สามารถแบ่งได้ 2 หมวดหมู่คือ
ข้อมูล (Data)
สัญญาณควบคุม  (Control signal)  ส่วนใหญ่จะรวมไปถึง output ของ  Microprocessor  สำหรับการเริ่มต้นถ่ายโอนข้อมูล และสัญญาณ interupt จากอุปกรณ์ภายนอก ข้อมูลมักอยู่ในรูป binary ซึ่งใช้รหัส BCD หรืออี่นๆ
Handshaking เป็น การโอนย้าย control information ระหว่าง Microprocessor และอุปกรณ์ภายนอก
Buffer
เป็นวงจรที่ใช้แยกพักสัญญาณต้น ฉบับ จากจุดถึงจุดของ ระบบ   micro computer   ซึ่ง  buffer  อาจมีการช่วยขยายกระแส
หรือปรับระดับแรงดัน การกระทำอาจ เป็นทั้งทางเดียวหรือ สองทาง
ใน  Microprocessor  การ ใช้  buffer  ที่สำคัญคือ input port ซึ่ง  buffer  จะทำการแยกพักข้อมูล  input  จาก  Data Bus  จาก Microprocessor รอจน Microprocessor จะขอเรียกใช้ input data นั้น
ทำไมต้องใช้   Buffer
เนื่องจากใน  MOS chip  จะให้สัญญาณกระแส ที่มีกำลังขับต่ำ สามารถขับ  TTL  ได้ อย่างมากแค่ตัวเดียว
แต่ใน MOS  Microprocessor   ส่วนที่เป็น output port ที่จะต้องไปขับ
อุปกรณ์ภายนอก  อย่างเช่น   LED  ซึ่ง กินกระแสมาก (ประมาณ 1-10 mA) ลำพัง  MOS   Microprocessor   ไม่สามารถ ขับได้โดยตรง จึงต้องอาศัย  buffer  ช่วยขับ
ปกติการใช้  buffer  จะเป็นการใช้  tri-state  buffer   ที่มี 3 output คือ    1,0 และ  High impedance   ซึ่งจะสั่งให้ทำงานหรือ ไม่ทำงานได้โดยสัญญาณ   Control    ซึ่งเมื่อไม่ทำงานจะให้ผลเป็น High-impedance

A/D convertor

ใช้ในการเปลี่ยนรูปสัญญาณ   Analog voltage   ไปเป็น  Digital ในการที่   Microprocessor   จะกระทำการกับข้อมูล  Analog ได้
ข้อมูลนั้นจะต้องผ่าน A/D convertor ก่อนแล้วจึงเข้า Microprocessor .
ต่อไปเราจะอธิบายหลักการทำงาน อย่างสั้นๆ ของ  Chip A/D convertor
image002
A/D Convertor   แปลง  Analog voltage  Vx ซึ่ง มีช่วงจำกัดที่แน่ นอน (โดย ทั่วไปจะอยู่ในช่วง  0- 10 V) ออกเป็นเลขฐานสอง จำนวน 8 bit  ออกทาง  D7-D0
เมื่อจะเริ่มการทำงานเปลี่ยนรูปข้อมูล จะมีการใส่สัญญาณ  pulse เข้ามาทาง  pin start  ซึ่งจะทำให้ค่า  DATA VALID  มีค่าเป็น low ค่า low นี้จะคงอยู่ตลอดระหว่างขั้นตอนการแปลง จนกระทั่ง การ แปลงเสร็จสิ้นจึงจะกลับเป็น   high
ส่วน output  จะออกจาก  A/D Convertor  ได้ก็ต่อ เมื่อได้รับสัญญาณ low เข้าที่ขา   output enable   เท่า นั้น
Sample and Hold คือ อะไร
สมมติมีการออกแบบให้แปลงสัญญาณ  Analog   เป็น Digital โดยการใช้   A/D Convertor   ถ้า  Amplitude  ของ สัญญาณนี้มีการเปลี่ยนแปลงอย่างรวดเร็ว อาจทำให้ ค่าสัญญาณ Analog  ผิดเพี้ยนได้ อย่างไรก็ตาม ก็เป็นไปได้ที่เช่นกันที่ สัญญาณ Analog ที่เข้ามา จะคงค่าเดิม
ตลอดระหว่างขั้นตอนการแปลง
เพื่อจะจัดการกับปัญหาเหล่านี้ จึงได้นำเอาวงจร sample and hold มาใส่ไว้ที่ภาค  input  ของ  A/D Convertor  วงจรนี้ใช้ switch analog  แบบ electronic  เพื่อการสุ่ม สัญญาณ  analog  และเก็บค่าที่ได้ไว้ในตัวเก็บประจุ จากนั้น A/D Convertor จะทำการ แปลง Voltage ที่เก็บอยู่
ให้เปลี่ยนไปอยู่ในรูปแบบของสัญญาณ Digital นับเป็นการสิ้นสุดการแปลง  จากนั้นจะไปกระบวนการ
สุ่มตัวอย่างอีกครั้ง ทำเช่นนี้ต่อไปเรื่อยๆ ดังนั้น สรุปการทำงานของวงจร sample  and  hold ก็คือการวนไปเรื่อยๆ เริ่มจาก Sample (สุ่มตัวอย่าง) จากสัญญาณ Voltage   จากสัญญาณ  Analog  และ  Hold   คือการเก็บไว้ใน ตัวเก็บ ประจุ เพื่อที่จะทำการแปลงให้เป็นระดับสัญญาณ Digital
Acquisition time และ Aparture time กับวงจร Sample and hold......
          Acquisition  time   คือเวลาที่ใช้ในการเปิด  switch  และ charge ประจุ จนได้ระดับเดียวกับ  Voltage  ในสัญญาณ Analog
          Aperture  time   ตือเวลาที่ใช้ในการปิด  switch  หลังจากสัญญาณที่สุ่ม (Sample)
นั้นถูกแปลงเป็นสัญญาณ Digital เรียบ ร้อยแล้ว ในอุดมคตินั้น เวลาทั้งสองควรจะเป็น  0  เพื่อหลีก เลี่ยงผลกระทบที่อาจเกิดขึ้น
image003
ในรูปเป็น ตัวอย่างของวงจร Sample and hold ใช้ CMOS analog switch 4066 ซึ่งมีความต้านทานต่ำมาก เมื่อตอนเปิดปิด switch จึงมี RC time constant ต่ำ
---เมื่อ switch on ตัวเก็บประจุจะถูก charge อย่างรวดเร็ว จนเท่ากับระดับ สัญญาณ Analog
---เมื่อ switch off จะมีลักษณะเป็น high impidance ตัวเก็บประจุจะสามารถคงค่า voltage ที่ charge อยู่ต่อไปได้อีกนาน
---Non inverting buffer 1374 จะใช้ค่า Voltage ในตัวเก็บประจุ เป็น input ของ A/D Convertor Inverter และ วงจร transistor จะใช้ในการเปลี่ยน logic High จาก +5V ไปเป็น +15V ซึ่งจำเป็นต้องใช้ในการ switch Analog on
ระบบ I/O แบบขนาน
image005ตัวอย่าง Block diagram ของการ์ด I/O ขนาด 8 บิต จากรูปจะเห็นว่ามีวงจรบางส่วนที่คล้ายกับวงจร
ที่พบในการ์ดหน่วยความจำ เช่น Address bus buffer, Data bus buffer, Address decoding logic ไมโครโปรเซสเซอร์จะใช้สาย ส่งแอดเดรส A0-A7 ส่งค่าแอดเดรสไปให้การ์ ด่าแอดเดรสนี้จะถูกส่งผ่าน
บัฟเฟอร์เข้าไปในวงจรถอดรหัสแอดเดรสของ I/O จากนั้นวงจรถอดรหัสจะทำการถอดรหัสค่าแอดเดรส
ที่ได้ เพื่อดูว่าไมโครโปรเซสเซอร์ต้องการให้ การ์ดทำอะไร เช่น ไมโครโปรเซสเซอร์ทำการอ้างอิง
พอร์ตเบอร์ 00 ของการ์ดนี้ เพื่อทำการรับข้อมูลจากการ์ด หรือ ทำการอ้างอิงพอร์ตเบอร์ 01 ของการ์ดนี้ เพื่อทำการ ส่งข้อมูลไปยังการ์ด หรือทำการอ้างอิงพอร์ตเบอร์ 02 ของการ์ดนี้ เพื่อทำการอ่าน ข้อมูลสถานะจากการ์ด
สาย /IOREAD และสาย /IOWRITE จะมีหน้าที่คล้ายกับสาย /READ และสาย /WRITE ใน หน่วยความจำ แต่จะใช้ในช่วงการทำงานของ I/O จากรูปจะเห็นว่า สัญญาณ /IOREAD และ /IOWRITE จะเข้าไปในการ์ดได้
ก็เมื่อมีสัญญาณส่งมาจากวงจรถอดรหัสแอดเดรส โดยเราจะเห็นได้ว่าสัญญาณ /IOWRITE จะเข้าไปในการ์ด
ได้ก็ต่อเมื่อมีสัญญาณ DATA OUT จาก วงจรถอดรหัสแอดเดรส และสัญญาณ /IOREAD จะเข้าไปในการ์ดได้
ก็ต่อเมื่อมีสัญญาณ DATA IN หรือ สัญญาณ STATUS จากวงจรถอดรหัสแอดเดรส
         Data bus ของไมโครโปรเซสเซอร์เป็นบัสข้อมูล 2 ทิศทางซึ่งจะเชื่อมต่อกับที่พักข้อมูล ของการ์ด I/O
จาก Block diagram จะเห็นว่ามีการ พักข้อมูลอยู่ 2 ที่ ตัว แรกใช้สำหรับเก็บข้อมูลที่เข้ามาในการ์ดซึ่งจะทำงาน
เมื่อมีสัญญาณ /IOREAD เข้ามาใน การ์ด ตัวที่สองใช้ สำหรับเก็บข้อมูลที่ส่งออกนอกการ์ดไปยังอุปกรณ์ I/O ซึ่งจะทำงานเมื่อมีสัญญาณ /IOWRITE เข้า มาในการ์ด
การ์ด I/O แบบขนานนี้มีรีจิสเตอร์ขนาด 2 บิต ซึ่งไมโครโปรเซสเซอร์สามารถทดสอบค่าในรีจิสเตอร์สถานะ
เพื่อตรวจสอบสถานะของพอร์ต I/O ได้ นอกจากนี้ยังมีสายควบคุม 4 เส้นที่เชื่อมระหว่างรีจิสเตอร์สถานะ
กับอุปกรณ์ภายนอกซึ่งจะช่วยในการควบคุมการโอนย้ายข้อมูล ได้แก่ DATA OUT AVAILABLE,
/OUTPUT DATA RECEIVED, /INPUT DATA AVAILABLE, INPUT DATA RECEIVED
เมื่อไมโครโปรเซสเซอร์ส่งข้อมูลไปยังพอร์ต I/O มันจะส่งค่าแอดเดรสไปยังวงจรถอดรหัสแอดเดรส
เพื่อให้การ์ดทำงานในโหมดส่งข้อมูลออก และจะส่งสัญญาณ /IOWRITE ไปด้วยซึ่งขั้นตอนดังกล่าวจะทำให้
เกิดการเคลื่อนย้ายข้อมูลจากบัสของไมโครโปรเซสเซอร์ไปยัง แลตช์ข้อมูลขนาด 8 บิตและจะเกิดการเซต
บิต output ของรีจิสเตอร์สถานะ การเซตบิตนี้จะทำให้สาย DATA OUTPUT AVAILABLE มีค่าเป็น 1 ซึ่งจะบอกข้อมูลภายนอกว่ามีข้อมูลส่งมาจากไมโครโปรเซสเซอร์
เมื่ออุปกรณ์ภายนอกทำการอ่านข้อมูลไปแล้วมันก็จะ ส่งสัญญาณ /OUTPUT DATA RECEIVED ซึ่งจะทำให้เกิดการเคลียร์ ค่าในบิต output ของรีจิสเตอร์สถานะเมื่อ ไมโครโปรเซสเซอร์อ่านค่าในรีจิสเตอร์สถานะ ถ้าพบว่าบิต output ถูกเคลียร์มันก็จะทราบว่า อุปกรณ์ภายนอกได้รับข้อมูลแล้ว
ถ้าอุปกรณ์ภายนอกต้องการส่งข้อมูลไปให้กับไมโคร โปรเซสเซอร์ มันก็จะส่งสัญญาณ /INPUT DATA AVAILABLE สัญญาณนี้ จะไปทำให้เกิดการเคลียร์ค่าในบิต input ของรีจิเตอร์สถานะซึ่ง จะทำให้เกิดการ
ส่งสัญญาณ อินเตอร์รัปต์ไปให้ แก่ไมโครโปรเซสเซอร์ ไมโครโปรเซสเซอร์ จะใช้โปรแกรมพูลลิ่งตรวจสอบ ค่า
ในรีจิเตอร์สถานะของพอร์ตแต่ ละตัวจนกระทั่งพบพอร์ตที่สร้าง สัญญาณอินเตอร์รัปต์ ซึ่งบิต input ของมัน
จะเป็น 0 ไมโครโปรเซสเซอร์จะทำการ อ่านข้อมูล จากพอร์ตโดยจะส่งค่าแอดเดรสไปยังวงจรถอดรหัสแอดเดรส
เพื่อทำให้การ์ดทำงานในโหมดรับข้อมูล และส่งสัญญาณ /IOREAD ไปด้วย ซึ่งขั้นตอนดังกล่าวนี้
จะทำให้เกิดการอ่านข้อมูลจากบัฟเฟอร์รับข้อมูล D0-D7 ไปยังบัสภายในของการ์ด I/O จาก นั้นข้อมูลจะถูกส่งผ่าน bus driver เพื่อไปให้แก่บัสข้อมูลของ ไมโครโปรเซสเซอร์ สัญญาณ /IOREAD ที่ส่งมายังการ์ดนั้นจะทำให้บิต input ของรีจิสเตอร์สถานะมีค่า เป็น 1 ด้วย ซึ่งจะทำให้สาย INPUT DATA RECEIVED มีค่าเป็น 1 อุปกรณ์ภายนอกก็จะตรวจสอบ INPUT DATA RECEIVED นี้ ถ้ามีค่าเป็น 1 ก็แสดงว่าไมโครโปรเซสเซอร์อ่านข้อมูลจากการ์ดไป แล้ว ถ้าเป็น 0 ก็แสดงว่าไมโครโปรเซสเซอร์ยังไม่อ่าน
ข้อมูลจากการ์ด ซึ่งอุปกรณ์ภายนอกต้องเก็บข้อมูล ที่จะส่งไว้ก่อน
เมื่อใดก็ตามที่ไมโครโปรเซสเซอร์ต้องการทราบสถานะของพอร์ต I/O มันก็จะต้องส่งค่าแอดเดรส ไปยังวงจรถอดรหัสเพื่อให้การ์ดทำงานในโหมดอ่านข้อมูลสถานะจากการ์ด และส่ง /IOREAD ไปด้วย ซึ่งขั้นตอนดังกล่าวนี้จะทำให้เกิดการนำข้อมูลในบิต output ของรีจิสเตอร์สถานะไปยังบิต D0 ของบัสภายใน และเกิดการนำข้อมูลในบิต input ของรีจิ สเตอร์สถานะไปยังบิต D7 ของบัสภายใน ข้อมูลดัวกล่าว จะถูก
ย้ายเข้าสู่บัสของไมโครโปรเซสเซอร์ด้วย
เราสามารถทำการเชื่อมต่อพอร์ต I/O แบบขนานกับอุปกรณ์ภายนอกได้โดยอาจใช้สายแบบ multiconductor cable ซึ่งประกอบด้วยสายสำหรับรับ ข้อมูล 8 เส้นสายสำหรับส่งข้อมูล 8 เส้น และสายตอบรับอีกไม่กี่เส้น พอร์ต I/O แบบขนานนี้จะใช้ในระบบที่มี การส่งข้อมูลในระยะใกล้ ๆ ความยาวของสาย และกำลังส่งจะเป็นตัวจำกัดระยะทางในการส่งข้อมูล
ถึงแม้ว่าจะมี การนำวงจร ที่มีกำลังสูง ๆ มาใช้ก็ยังสามารถส่งข้อมูลได้ไกลที่สุดแค่ประมาณ 50 เมตรเท่านั้นทั้งนี้เนื่องมาจาก ค่า capacitance ในสายจะเป็นตัวจำกัดความยาวของสาย โดยเมื่อสายมีความยาว
เพิ่มขึ้นค่า capacitance ก็จะ เพิ่มขึ้นตามไปด้วย และเมื่อค่า capacitance ในสาย สูงกว่าที่วงจรขับจะสามารถ
ส่งข้อมูลผ่านเข้าไปในสายได้ก็จะทำให้ข้อมูลส่งไม่ถึงปลาย ทาง

การเชื่อมต่อแบบ ขนานอยู่มี 2 แบบที่พบในระบบ PC ได้แก่

การเชื่อมต่อแบบ centronics
การเชื่อมต่อแบบ SCSI (Small Computer System Interface)

การเชื่อมต่อแบบ centronics นั้นได้ชื่อเรียกมาจากบริษทผลิต เครื่อง printer ที่นำการเชื่อมต่อ แบบนี้มาใช้ การเชื่อมต่อแบบนี้จะส่งข้อมูลได้ใน 2 ทิศทางแต่โดยส่วนใหญ่จะถูกนำมาใช้ในการส่งข้อมูลจาก คอมพิวเตอร์
ไปยังพรินเตอร์ และใช้วงจรขับแบบ TTL ซึ่งจะทำให้สายมีความยาวไม่เกิน 10 ฟุต
การเชื่อมต่อแบบ SCSI เป็นการเชื่อมต่อแบบขนานที่นิยมนำมาใช้ในการเชื่อมต่อ ระหว่างคอมพิวเตอร์กับ อุปกรณ์สำรองข้อมูล โดยยังไม่มีมาตรฐานในการเชื่อมต่อที่ระบุอย่างชัดเจน จากรูปจะมีสายส่งข้อมูล 2 ทิศทาง
จำนวน 8 เส้น
image007



ระบบ I/O แบบอนุกรม

สายส่งข้อมูลแบบขนานที่ใช้สำหรับเชื่อมต่อระหว่างพอร์ต I/O กับอุปกรณ์ภายนอกจะมีความยาว
ได้ เพียงไม่กี่เมตรเท่านั้น ถ้าเราต้องการส่งข้อมูลระยะทางไกล ๆ เราก็จะต้องนำวงจรขับพิเศษมาใช้ และสายส่งข้อมูลที่ใช้จะมากกว่าแบบอนุกรม 8 เท่า การส่งข้อมูลแบบอนุกรมจึงใช้กันอย่างกว้างขวาง

การเชื่อมต่อแบบอนุกรมและ UART

การแปลงข้อมูลแบบขนานเป็นข้อมูลแบบบอนุกรม เริ่มแรกข้อมูลแบบขนานจะถูกเก็นไว้ใน shift register จากนั้นเราจะใช้ สัญญาณนาฬิกาในการเลื่อนค่าในรีจิสเตอร์ออกมาทีละบิต โดย LSB จะถูกเลื่อนออกมาก่อน การแปลงข้อมูลแบบอนุกรมไปเป็นข้อมูลแบบขนาน ข้อมูลแบบอนุกรมจะถูกเลื่อนเข้าไปเก็บใน shift register หลังจากที่ได้มีการเลื่อนข้อมูลทุก บิตเข้าไปใน shift register แล้ว ข้อมูลใน shift register ก็จะถูกนำออกมา
แบบขนานเพื่อนำไปให้กับไมโครโปรเซสเซอร์
image008
อุปกรณ์ที่เรา นำมาใช้ในการแปลงข้อมูล คือ UART (Universal Asynchronous Receiver-Transmitter)
เป็นวงจร LSI ซึ่งนอกจากจะมี หน้าที่ในการแปลงข้อมูลแล้ว มันยังมีหน่วยควบคุม และหน่วยตรวจสอบ
การทำงานด้วย ในการส่งข้อมูลขนาด 8 บิต แบบอนุกรมจะต้อง มี Start bit (มีค่าเป็น 0) เพื่อ บอก UART ว่า
มีข้อมูลกำลังเข้ามา และ Stop bit (มี ค่าเป็น 1) เพื่อบอก UART ว่าข้อมูลส่งหมดแล้ว ซึ่งจะทำให้ข้อมูล ที่ส่งออกไป
มีขนาด 10 บิต เราเรียกความเร็วในการส่งข้อมูลของ UART ว่า baud rate ซึ่งจะ บอกจำนวนบิตที่ส่งออกไป ในเวลา 1 วินาที เช่น การส่งข้อมูลด้วยอัตรา 1200 ก็คือการส่งตัวอักขระขนาด 10 บิตได้ 120 ตัว ใน 1 วินาที
image010
Baud Rate
Bytes/Second
110
10
150
15
300
30
600
60
1200
120
2400
240
4800
480
9600
960
19200
1920
38400
3840
จากตารางจะเห็นว่าในการส่งข้อมูลด้วยอัตรา 110 จะมีรูปแบบต่างจากอัตราอื่น ๆ คือ จะใช้ Stop bit 2 บิต ดังนั้นจึงต้องส่งข้อมูลที่มีขนาด 11 บิต
image012
บิตที่ 8 ของข้อมูลจะนำมาใช้ในการตรวจสอบความผิดพลาดของข้อมูล ซึ่งเราเรียกบิตนี้ว่า Parity bit ถ้าใช้พาริตี้คู่ UART จะทำการเซตหรือเคลียร์บิตที่ 8 เพื่อให้ข้อมูลทั้ง 8 บิต มีเลข 1 จำนวนคู่ตัว
เมื่อ UART รับข้อมูลมา UART ก็จะตรวจสอบความถูกต้องของข้อมูลโดยดูจาก Parity bit ถ้าข้อมูลมีค่าพาริตี้ ไม่ตรงตามที่ กำหนดบิตพาริตี้ในรีจิเตอร์สถานะ ของ UART ก็จะถูกเซตเพื่อแสดงว่าข้อมูลที่รับมาผิด พลาด
และโปรแกรมที่ทำการรับข้อมูลนั้นก็จะขอให้มีการส่งข้อมูลมา ใหม่
image013
การใช้พาริตี้นี้จะสามารถตรวจสอบความผิดพลาด ได้เพียง 50 เปอร์เซ็นต์ของความผิดพลาดทั้ง หมด
ทั้งนี้เนื่องจากมันจะจับความผิดพลาดได้เฉพาะกรณีที่ข้อมูล นั้นเกิดข้อผิดพลาดเป็นจำนวนคี่บิต ถ้าข้อมูลนั้น
เกิดความผิดพลาดเป็นจำนวนคู่บิตก็จะไม่ทำให้ค่าพาริตี้เปลี่ยนแปลง ความผิดพลาดก็จะไม่ถูกตรวจพบ UART ยังสามารถตรวจสอบ framing error ได้ framing error จะเกิดขึ้นเมื่อ UART ได้รับ ข้อมูลที่มี Start bit และ Stop bit ใน ตำแหน่งที่ไม่ถูกต้อง
image015
จากรูปแสดง Block diagram ของ UART อย่างคร่าวๆ สามารถแบ่งได้เป็น 4 ส่วนใหญ่ ๆ ได้แก่
ส่วนที่ทำหน้าที่ส่ง ข้อมูล
ส่วนที่ทำหน้าที่รับข้อมูล
ส่วนที่กำหนดสถานะ
ส่วนที่เป็นวงจรควบคุม
ส่วนที่มีหน้าที่ในการส่งข้อมูลของ UART แบ่ง ออกได้เป็น 2 ส่วน คือ transmitted-data output buffer
กับ รีจิสเตอร์ส่งข้อมูล (transmit register) โดยรีจิสเตอร์ส่งข้อมูลจะมีหน้าที่เลื่อนข้อมูลส่งออกไปยัง
เส้นส่งข้อมูลอนุกรม โดยเริ่มจาก Start bit ตามด้วย D0-D7 และ Stop bit ถ้า สัญญาณ data input strobe เปลี่ยนจาก 1 เป็น 0 ข้อมูลขนาด 8 บิตที่จะส่ง จะถูกนำไปเก็บใน transmitted-data output buffer และถ้าสัญญาณ data input strobe เปลี่ยนจาก 0 เป็น 1 การส่งข้อมูลจะเริ่มขึ้น
ส่วนที่ทำหน้าที่รับข้อมูลของ UART จะ เหมือนเป็นภาพสะท้อนของส่วนที่ทำหน้าที่ส่งข้อมูล เมื่อมี Start bit เข้ามา ข้อมูลที่เข้ามาทางเส้นรับข้อมูลจะถูกเลื่อนเข้าไปเก็บในรีจิสเตอร์รับ ข้อมูล (receive register) จนครบ เมื่อมีสัญญาณ data output strobe ข้อมูลในรีจิสเตอร์นี้จะถูกนำไปเก็บใน บัฟเฟอร์รับข้อมูล (received-data output buffer) ทั้งรีจิสเตอร์ส่งข้อมูลและรีจิสเตอร์รับ ข้อมูลจะได้รับสัญญาณนาฬิกาขนาด 16 หรือ 64 เท่าของ baud rate
รีจิสเตอร์สถานะของ UART จะมีบิตบอก สถานะดังต่อไปนี้
          OR (Over Run)                     บิตนี้จะมีค่าเป็น 1เมื่อข้อมูลใหม่เข้ามาทับข้อมูลเก่า
โดย ที่ข้อมูลเก่ายังไม่ได้ถูกนำไปเก็บในบัฟเฟอร์รับข้อมูล
          FE (Framing Error)                 บิตนี้จะมีค่าเป็น 1 ถ้า UART ไม่พบ Stop bit ซึ่งอาจเป็นเพราะว่า
                                                    UART ไม่ได้อ่าน  Start bit ในตำแหน่ง ที่ถูกต้อง
          PE (Parity Error)                    บิตนี้จะมีค่าเป็น 1 เมื่อ UART พบว่าข้อมูลที่ได้รับมีพาริตี้ไม่ ถูกต้อง
         TBE (Transmit Buffer Empty)   บิตนี้จะมีค่าเป็น 1 เมื่อ UART ได้ทำการส่งข้อมูลออกไปแล้ว ซึ่ง ทำให้ เราสามารถนำข้อมูลชิ้นต่อไป ที่จะส่ง เก็บ ลงในบัฟเฟอร์ส่งข้อมูลได้
         DA (Data Available)                บิตนี้จะมีค่าเป็น 1 เมื่อ UART ได้รับข้อมูลใหม่เข้ามา และ ไมโครโปรเซสเซอร์
สามารถ ทำการอ่านข้อมูลนี้ได้ โดยส่งสัญญาณ data output strobe
image017
หลังจากที่ข้อมูลในรีจิสเตอร์สถานะของ UART ถูกนำไปเก็บในบัฟเฟอร์รับข้อมูลแล้ว เราก็สามารถ เคลื่อนย้ายข้อมูลนี้เข้าไปยังแอกคิวมูเลเตอร์ของ ไม่ได้ ซึ่งทำให้เราสามารถตรวจสอบสถานะของ UART ได้
รีจิสเตอร์ควบคุมการทำงานของ UART ทำให้ เราสามารถกำหนดโหมดในการทำงานของ UART ได้ บิตควบคุมจำนวนข้อมูลทั้งสองบิต จะช่วยให้เราสามารถเลือกจำนวนของข้อมูลจริงที่รับมาว่าเป็น 5 บิต 6 บิต
7 บิต หรือ 8 บิต โดยเราจะใช้ข้อมูลจริงขนาด 5 บิตในการส่งข้อมูลของเครื่องโทรพิมพ์ ข้อมูลขนาด 6 บิต
ใช้ในการส่งข้อมูลที่มีการย่อขนาด ข้อมูลขนาด 7 บิตใช้ในการส่งข้อมูลรหัสแอสกี ข้อมูลขนาด 8 บิตใช้ เมื่อไม่มีการบิตพาริตี้
บิตควบคุมคู่/คี่จะใช้ในการกำหนดพาริตี้ที่ใช้ว่าเป็นพาริตี้คู่ หรือคี่
บิตสตอปของวงจรควบคุมจะกำหนดจำนวน Stop bit ที่ใช้ในการส่งข้อมูลโดยการส่งข้อมูล
ด้วยอัตรา 110 จะต้องใช้ Stop bit 2 บิตเสมอ บางครั้งอาจมีบิตควบคุมพิเศษเพิ่มเข้ามาซึ่งทำให้เรา
สามารถเลือกใช้ Stop bit จำนวน 1.5 บิต ซึ่งจะใช้ในการส่งข้อมูลมาตรฐานแบบเก่าขนาด 5 บิต
บ่อยครั้งที่ UART ถูกนำมาใช้ร่วมกับไอ ซีพิเศษที่ทำหน้าที่สร้างสัญญาณที่มี baud rate เป็น 16 หรือ
64 เท่า ของ baud rate มาตรฐานทั้ง หมดสัญญาณมาตรฐานนี้จะถูกสร้างมาจากวงจรกำเนิดสัญญาณแบบ
คริสตรอล ดังนั้นจึงทำให้ baud rate ที่ได้มีอัตราคงที่และเที่ยงตรงบ่อยครั้ง ที่วงจรสร้างสัญญาณจะรับ
สัญญาณอินพุตจากวงจรหารสัญญาณนาฬิกา วงจรสร้างสัญญาณ baud rate ที่สามารถโปรแกรมได้
จะทำให้เราสามารถใข้ โปรแกรมเพื่อควบคุมการทำงานของ UART ให้มี baud rate ตาม ที่ต้องการได้
การส่งข้อมูลของ UART จะเป็นแบบอะซิงโครนัส คือ การส่งข้อมูลของ UART จะไม่ขึ้นกับไมโคร โปรเซสเซอร์ โดย UART และไมโครโปรเซสเซอร์จะมีวงจรสร้างสัญญาณนาฬิกาของมัน เอง แต่ถ้าเราพบว่า UART และไมโคร โปรเซสเซอร์ใช้สัญญาณนาฬิกาจากวงจรเดียวกันก็ไม่ได้หมายความว่า UART และไมโครโปรเซสเซอร์ทำงาน ร่วมกันแบบเข้าจังหวะ แต่การทำเช่นนี้ก็เพื่อเป็นการลดวงจรที่ใช้สร้างสัญญาณนาฬิกา เวลาระหว่างเวิร์ดข้อมูล แต่ละตัวที่รับเข้ามาจะไม่แน่นอน
ในการส่งข้อมูลที่เป็นรหัสแอสกีเราจะพบว่าระหว่างบิตแต่ละบิตจะ เป็นแบบซิงโครนัส
แต่เวลาระหว่างตัวอักขระจะเป็นแบบอะซิ งโครนัส ไมโครโปรเซสเซอร์จะทำการอ่านข้อมูลจาก UART ที่รับ ข้อมูลแบบอะซิงโครนัสได้อย่างไรและไมโครโปรเซสเซอร์ทราบได้อย่างไรว่า UART จะรับข้อมูลใหม่เมื่อไรในเมื่อเวลาในการรับตัว อักขระแต่ละตัวไม่แน่นอน คำตอบก็คือไมโครโปรเซสเซอร์จะ ทำการตรวจสอบค่าในรีจิสเตอร์สถานะของ UART เป็นช่วง ๆ ซึ่งถ้ามันพบว่า บิต DA (Data Available) เป็น 0 ไมโคร โปรเซสเซอร์ก็จะตรวจสอบค่าในรีจิสเตอร์สถานะต่อไปจนกว่า DA จะ เป็น 1 ถ้าบิต DA เป็น 1 มันก็จะ ทำการอ่านข้อมูลจาก UART จากนั้นเราก็จะนำบิต DA ไปสร้างสัญญาณอินเตอร์รัปต์ของ ไมโครโปรเซสเซอร์ และเมื่อไม่ได้รับสัญญาณ อินเตอร์รัป ต์มันก็จะเรียกใช้โปรแกรมสนองการอินเตอร์รัปต์ ซึ่งจะมีคำสั่งในการอ่านข้อมูลใน UART มาเก็บไว้ ในแอกคิวมูเลเตอร์
image019

...