ระดับลอจิกและเกตพื้นฐาน
เป้าหมาย
หัวข้อที่มีชื่อว่า “เป้าหมาย”เมื่อจบบทเรียนนี้ คุณจะ
- อ่านค่าระดับลอจิกขาเข้าและขาออกจากเอกสารข้อมูลของชิป แล้วบอกได้ว่าสองอุปกรณ์ต่อกันตรงได้หรือไม่
- เขียนตารางความจริงของเกต AND, OR, NOT, XOR และใช้แก้โจทย์เงื่อนไขง่าย ๆ ได้
ก่อนเริ่ม
หัวข้อที่มีชื่อว่า “ก่อนเริ่ม”- คำนวณวงจรแบ่งแรงดันได้ (บทเรียน วงจรแบ่งแรงดัน)
- สำหรับแล็บ: TESAIoT Dev Kit ที่ flash ตัวอย่าง QWA309 Header I/O Test ไว้ มัลติมิเตอร์ เบรดบอร์ด ตัวต้านทาน 1 kΩ, 2.2 kΩ, 4.7 kΩ สองตัว, 10 kΩ สามตัว (หรือโพเทนชิโอมิเตอร์ 10 kΩ หนึ่งตัวแทนชุดตัวต้านทาน)
- ถ้าใช้ Eva Kit ให้เขียนโปรแกรมสั้น ๆ ของคุณเองที่ตั้งขาว่างหนึ่งขาเป็นขาเข้าแล้วพิมพ์ค่าที่อ่านได้ แทนโปรแกรมทดสอบ header
ดูของจริงก่อน
หัวข้อที่มีชื่อว่า “ดูของจริงก่อน”TESAIoT Dev Kit มี “โลกของแรงดัน” อย่างน้อยสองโลกบนบอร์ดเดียว
- บัส I2C ของเซนเซอร์บนบอร์ดทำงานที่ 1.8 V (SCB0 ขา P8.0 = SCL, P8.1 = SDA ที่ 400 kHz ตามคำอธิบายในตัวอย่าง
cm33/sensors/01_i2c_bus_scan.cของ SDK) ตัวอย่างเดียวกันบอกว่าmachine.I2Cของ MicroPython เป็นอีกบัสหนึ่งที่ 3.3 V สำหรับต่อบอร์ดเซนเซอร์ภายนอก - ขาบน header ทำงานที่ 3.3 V ดูได้จากชื่อสัญญาณที่โปรแกรมทดสอบ header พิมพ์ออกจอ เช่น
P13.3_GPIO_PWM5+_3V3ตัวท้าย_3V3บอกโดเมนแรงดัน
สมมุติคุณมีบอร์ดเซนเซอร์ที่ทำงานที่ 3.3 V จะเอาไปต่อบัสไหนได้ และถ้าต่อผิดบัสจะเกิดอะไรขึ้น บทนี้ให้เครื่องมือตอบคำถามนี้ด้วยตัวเลข
1. แรงดันเท่าไรนับเป็น 0 หรือ 1
หัวข้อที่มีชื่อว่า “1. แรงดันเท่าไรนับเป็น 0 หรือ 1”ชิปดิจิทัลไม่ได้เห็นแค่ “มีไฟกับไม่มีไฟ” มันเทียบแรงดันกับเกณฑ์ที่เอกสารข้อมูลรับประกันไว้สี่ค่า
| ค่า | ความหมาย |
|---|---|
| V_OH(min) | ขาออกที่สั่งเป็น 1 จะให้แรงดัน อย่างน้อย เท่านี้ |
| V_OL(max) | ขาออกที่สั่งเป็น 0 จะให้แรงดัน ไม่เกิน เท่านี้ |
| V_IH(min) | ขาเข้ารับประกันว่าอ่านเป็น 1 เมื่อแรงดัน ตั้งแต่ เท่านี้ขึ้นไป |
| V_IL(max) | ขาเข้ารับประกันว่าอ่านเป็น 0 เมื่อแรงดัน ไม่เกิน เท่านี้ |
ระหว่าง V_IL กับ V_IH เป็นช่วงที่ไม่รับประกัน ขาเข้าอาจอ่านเป็นอะไรก็ได้ และอาจแกว่งไปมาถ้ามีสัญญาณรบกวน
ชิป CMOS จำนวนมากใช้เกณฑ์ใกล้เคียงกับ 0.7 × VDD และ 0.3 × VDD ภาพข้างบนใช้กฎหยาบนี้ ที่ 3.3 V ได้ V_IH = 2.31 V, V_IL = 0.99 V ที่ 1.8 V ได้ V_IH = 1.26 V, V_IL = 0.54 V แต่ชิปแต่ละรุ่นต่างกัน และบางรุ่นเลือกเกณฑ์ได้ ค่าที่ใช้ตัดสินใจจริงต้องมาจากเอกสารข้อมูลเสมอ
ส่วนเผื่อสัญญาณรบกวน (noise margin) บอกว่ามีที่ว่างให้สัญญาณรบกวนเท่าไรก่อนที่ 1 จะกลายเป็นค่าที่ไม่แน่นอน
NM_H = V_OH(min) − V_IH(min)NM_L = V_IL(max) − V_OL(max)ถ้าค่าใดค่าหนึ่งติดลบ แปลว่าต่อกันตรงไม่ได้
2. ต่อสองอุปกรณ์เข้าหากันได้ไหม
หัวข้อที่มีชื่อว่า “2. ต่อสองอุปกรณ์เข้าหากันได้ไหม”ใช้ค่าตัวอย่างจากเอกสารข้อมูลสมมุติของสองอุปกรณ์นี้
| ค่า | อุปกรณ์ A (1.8 V) | อุปกรณ์ B (3.3 V) |
|---|---|---|
| V_OH(min) | 1.35 V | 2.9 V |
| V_OL(max) | 0.45 V | 0.4 V |
| V_IH(min) | 1.26 V | 2.31 V |
| V_IL(max) | 0.54 V | 0.99 V |
| แรงดันขาเข้าสูงสุดที่ทนได้ (absolute maximum) | 2.1 V | 3.6 V |
A ส่งไป B ระดับ 1 ของ A อาจต่ำเพียง 1.35 V แต่ B ต้องการอย่างน้อย 2.31 V ได้ NM_H = 1.35 − 2.31 = −0.96 V ติดลบ ต่อกันตรงไม่ได้ B จะอ่าน 1 ของ A เป็นค่าไม่แน่นอน (ในความเป็นจริงแม้ A ให้ 1.8 V เต็มก็ยังต่ำกว่า 2.31 V)
B ส่งไป A ในแง่ลอจิก 2.9 V สูงกว่า V_IH ของ A (1.26 V) อ่านเป็น 1 ได้สบาย แต่ 2.9 ถึง 3.3 V เกินค่าสูงสุดที่ขาของ A ทนได้ (2.1 V) กระแสจะไหลผ่านไดโอดป้องกันในขาของ A เข้าไปในไฟเลี้ยง 1.8 V ของ A (back-powering) ขาอาจเสียหาย หรือชิปทำงานแปลก ๆ ทั้งที่ยังไม่ได้จ่ายไฟให้มัน นี่คือกับดักที่อันตรายที่สุด เพราะ “มันอ่านค่าได้ถูก” ในวันแรก
B กับ B NM_H = 2.9 − 2.31 = 0.59 V และ NM_L = 0.99 − 0.4 = 0.59 V บวกทั้งคู่ ต่อตรงได้
ทางแก้เมื่อต่อตรงไม่ได้
- ชิปแปลงระดับแรงดัน (level translator) ใช้ได้กับสัญญาณเร็ว มีทั้งแบบกำหนดทิศทางและแบบสองทิศทาง
- บัสแบบ open-drain อย่าง I2C ใช้วงจรแปลงระดับแบบ MOSFET หรือชิปเฉพาะ โดยมีตัวต้านทาน pull-up แยกแต่ละฝั่ง
- สัญญาณช้าทางเดียวจากสูงลงต่ำ ใช้วงจรแบ่งแรงดันได้ เช่น 10 kΩ กับ 12 kΩ แปลง 3.3 V เป็น 1.80 V แต่ R_th = 10 kΩ ∥ 12 kΩ = 5.45 kΩ กับความจุของขาราว 10 pF ได้ τ ≈ 55 ns ขอบสัญญาณจะช้าลง ใช้ได้กับสัญญาณไม่กี่ร้อย kHz ไม่เหมาะกับ SPI ความเร็วสูง
กลับไปที่คำถามตอนต้น บอร์ดเซนเซอร์ 3.3 V ควรต่อกับบัส 3.3 V ซึ่งไม่ต้องแปลงระดับเลย ถ้าจำเป็นต้องต่อกับบัส 1.8 V ต้องมีวงจรแปลงระดับ
3. เกตพื้นฐานและตารางความจริง
หัวข้อที่มีชื่อว่า “3. เกตพื้นฐานและตารางความจริง”เมื่อสัญญาณเป็น 0 หรือ 1 ได้ชัดเจนแล้ว เราก็รวมมันด้วยเกตลอจิก
| A | B | NOT A | A AND B | A OR B | A XOR B |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 |
- AND เป็น 1 เมื่อทุกขาเข้าเป็น 1
- OR เป็น 1 เมื่อมีอย่างน้อยหนึ่งขาเข้าเป็น 1
- NOT กลับค่า
- XOR เป็น 1 เมื่อสองขาเข้า ต่างกัน ใช้ตรวจความต่างหรือกลับบิต
- NAND และ NOR คือ AND และ OR ที่ตามด้วย NOT
ในโค้ด C ใช้ &&, ||, ! กับเงื่อนไข และ &, |, ~, ^ กับบิต ใน MicroPython ใช้ and, or, not และ &, |, ^
ของจริงบนบอร์ด โปรแกรมทดสอบ header มีปุ่ม PWM Out ที่ขับขา P13.3 และ P13.4 เป็นคู่กลับเฟส แล้วบอกให้ตรวจว่า “no both-high fault”
เงื่อนไขความผิดพลาดนี้คือ P13.3 AND P13.4 ถ้าเป็น 1 เมื่อไรแปลว่าผิด ส่วนเงื่อนไขว่าคู่นี้ทำงานถูกคือ P13.3 XOR P13.4 ต้องเป็น 1 ตลอดช่วงที่สัญญาณวิ่ง
ปุ่มแบบ active-low ขาอ่านได้ 0 เมื่อกด ดังนั้น “กดอยู่” = NOT pin เราจะต่อวงจรนี้จริงในบทเรียนถัดไป
ตัวอย่างสมบูรณ์
หัวข้อที่มีชื่อว่า “ตัวอย่างสมบูรณ์”โจทย์ พัดลมระบายความร้อนต้องทำงานเมื่อ “อุณหภูมิสูง และ ประตูตู้ปิดอยู่” หรือ เมื่อผู้ใช้สั่งเปิดเอง (manual) ให้ T = อุณหภูมิสูง, D = ประตูปิด, M = สั่งเอง เขียนตารางความจริงแล้วแปลงเป็นโค้ด
FAN = (T AND D) OR M| T | D | M | T AND D | FAN |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
ตรวจตาราง: ทุกแถวที่ M = 1 พัดลมต้องทำงาน (สี่แถว) และเมื่อ M = 0 มีแถวเดียวที่ทำงานคือ T = 1, D = 1 รวมห้าแถว ตรงกับตาราง
ถ้าสวิตช์ประตูต่อแบบ active-low (ประตูปิดอ่านได้ 0) โค้ดต้องกลับค่าก่อนใช้
bool door_closed = !door_pin; /* active-low: ปิดอ่านได้ 0 */bool fan_on = (temp_high && door_closed) || manual;สามอินพุตมีได้ 2³ = 8 แบบ การเขียนตารางครบทุกแถวคือวิธีทดสอบที่ง่ายที่สุด ก่อนเขียนเป็นโค้ดให้ลองทุกแถวในหัวก่อน
ฝึกเติม
หัวข้อที่มีชื่อว่า “ฝึกเติม”- ขาออกมี V_OH(min) = 2.4 V, V_OL(max) = 0.4 V ต่อกับขาเข้าแบบ TTL ที่มี V_IH(min) = 2.0 V, V_IL(max) = 0.8 V หา NM_H และ NM_L ต่อตรงได้ไหม
- ใช้กฎหยาบ 0.7 × VDD และ 0.3 × VDD หา V_IH และ V_IL ของขาเข้าที่เลี้ยงด้วย 2.5 V
- อุปกรณ์ 5 V ส่งสัญญาณ 5 V เข้าขาไมโครคอนโทรลเลอร์ 3.3 V ที่เอกสารข้อมูลไม่ได้ระบุว่าทนแรงดัน 5 V (5 V tolerant) ต่อตรงได้ไหม เพราะอะไร
- เขียนตารางความจริงของ
NOT (A OR B)(คือ NOR) แล้วเทียบกับ(NOT A) AND (NOT B)สังเกตอะไร - ระบบกันขโมยดังเมื่อ “เปิดระบบอยู่ (ARM) และประตูเปิด (OPEN) และไม่ได้อยู่ในโหมดซ่อมบำรุง (MAINT)” เขียนนิพจน์ แล้วบอกว่ามีกี่แถวจากแปดแถวที่ทำให้ดัง
- วงจรตรวจคู่สัญญาณกลับเฟส A และ B ต้องการสัญญาณ ERR ที่เป็น 1 เมื่อ A และ B มีค่าเท่ากัน เขียน ERR ด้วยเกตที่เรียนมา
- NM_H = 2.4 − 2.0 = 0.4 V และ NM_L = 0.8 − 0.4 = 0.4 V บวกทั้งคู่ ต่อตรงได้
- V_IH = 0.7 × 2.5 = 1.75 V และ V_IL = 0.3 × 2.5 = 0.75 V
- ไม่ได้ 5 V เกินค่าสูงสุดที่ขา 3.3 V ส่วนใหญ่ทน (มักราว VDD + 0.3 V) กระแสจะไหลผ่านไดโอดป้องกันเข้าไฟเลี้ยง ต้องใช้ตัวแปลงระดับ หรือวงจรแบ่งแรงดันถ้าสัญญาณช้าและเป็นทางเดียว
- ทั้งสองนิพจน์ให้ 1, 0, 0, 0 สำหรับ (A, B) = (0, 0), (0, 1), (1, 0), (1, 1) เท่ากันทุกแถว นี่คือกฎของเดอมอร์แกน (De Morgan)
ALARM = ARM AND OPEN AND (NOT MAINT)ดังแถวเดียวคือ ARM = 1, OPEN = 1, MAINT = 0ERR = NOT (A XOR B)(หรือเรียกว่า XNOR) เป็น 1 เมื่อ A กับ B เท่ากัน ซึ่งครอบคลุมทั้งกรณีเป็น 1 พร้อมกัน (both-high) และเป็น 0 พร้อมกัน
เช็กความเข้าใจ
หัวข้อที่มีชื่อว่า “เช็กความเข้าใจ”ตอบคำถามใน quiz.yaml ให้ถูกอย่างน้อย 4 ใน 5 ข้อ ข้อ 1 ถึง 3 ใช้ตารางค่าของอุปกรณ์ A และ B ในหัวข้อ 2
ส่วน A: วัดระดับขาออกจริงด้วยมัลติมิเตอร์
- รันโปรแกรม QWA309 Header I/O Test หาตำแหน่งขา P13.0 และ GND บน header จากแผนผังขาของบอร์ด
- ตั้งมิเตอร์เป็นโหมดแรงดันไฟตรง สายดำที่ GND สายแดงที่ P13.0 แล้วกดปุ่ม GPIO Out บนจอ โปรแกรมจะไล่ขับทีละขา (P13.0, P13.3, P13.4, P13.5, P13.6, P13.7) ขาละราว 0.7 s แล้วปิดทั้งหมด ทำซ้ำสามรอบ
- จดแรงดันตอนที่ P13.0 เป็น 1 และตอนที่เป็น 0 นี่คือ V_OH และ V_OL จริงของขาที่ไม่มีโหลด
- ใช้ตารางในหัวข้อ 2 ตัดสินว่าขานี้ส่งเข้าอุปกรณ์ A (1.8 V) และอุปกรณ์ B (3.3 V) ได้หรือไม่ พร้อมเหตุผล
ส่วน B: หาจุดสลับจริงของขาเข้า
- ถอด USB ต่อวงจรแบ่งแรงดันบนเบรดบอร์ดจาก 3V3 จุดกลางต่อผ่านตัวต้านทาน 1 kΩ เข้าขา P13.0 (ตัวต้านทาน 1 kΩ กันขาเสียถ้าเผลอกด GPIO Out ขณะต่อวงจรนี้อยู่)
- กดปุ่ม GPIO In โปรแกรมตั้งขาทั้งหกเป็นขาเข้าแบบไม่มี pull (high-Z) อ่านทุก 100 ms นาน 8 s และพิมพ์ค่า mask ทุกครั้งที่ค่าเปลี่ยน บิต 0 คือ P13.0 บิตอื่นอาจแกว่งไปมาเพราะขาเหล่านั้นลอยอยู่ เรื่องนี้คือหัวข้อของบทเรียนถัดไป ตอนนี้ดูเฉพาะบิต 0
- เปลี่ยนคู่ตัวต้านทาน (ตัวบน / ตัวล่าง) ตามตาราง วัดแรงดันที่จุดกลางด้วยมิเตอร์ แล้วกด GPIO In อ่านบิต 0
| ตัวบน / ตัวล่าง | แรงดันคำนวณ | แรงดันวัดได้ | บิต 0 ที่อ่านได้ |
|---|---|---|---|
| 10 kΩ / 2.2 kΩ | 0.60 V | ||
| 10 kΩ / 4.7 kΩ | 1.06 V | ||
| 10 kΩ / 10 kΩ | 1.65 V | ||
| 4.7 kΩ / 10 kΩ | 2.24 V | ||
| 2.2 kΩ / 10 kΩ | 2.70 V |
ถ้ามีโพเทนชิโอมิเตอร์ ใช้มันแทนชุดตัวต้านทาน แล้วค่อย ๆ หมุนหาแรงดันที่บิต 0 เปลี่ยนค่า ทั้งขาขึ้นและขาลง ถ้าสองค่านี้ต่างกัน แปลว่าขาเข้ามี hysteresis
ตีความผล เอกสารข้อมูลรับประกันเฉพาะว่าต่ำกว่า V_IL อ่านเป็น 0 และสูงกว่า V_IH อ่านเป็น 1 จุดที่สลับจริงบนบอร์ดของคุณอยู่ที่ไหนสักแห่งตรงกลาง และอาจเปลี่ยนตามอุณหภูมิหรือชิปแต่ละตัว ห้ามออกแบบวงจรโดยพึ่งจุดสลับที่วัดได้จากบอร์ดตัวเดียว ให้ออกแบบจาก V_IL และ V_IH ในเอกสารข้อมูลเสมอ
บทเรียนถัดไป Pull-up, pull-down และปุ่มกด เราจะดูว่าทำไมขาเข้าที่ปล่อยลอยจึงอ่านค่ามั่ว ต่อปุ่มแบบ active-low และใช้ logic analyzer ครั้งแรกเพื่อดูการเด้งของปุ่ม
สะท้อนคิด
หัวข้อที่มีชื่อว่า “สะท้อนคิด”ถ้าเพื่อนบอกว่า “ต่อ 3.3 V เข้าขา 1.8 V แล้วก็อ่านค่าได้ปกตินี่” คุณจะอธิบายให้เขาเห็นความเสี่ยงอย่างไรโดยใช้ตัวเลขจากบทนี้
แหล่งอ้างอิง
หัวข้อที่มีชื่อว่า “แหล่งอ้างอิง”- Logic gate (Wikipedia)
- Lessons In Electric Circuits โดย Tony R. Kuphaldt (หนังสือเปิด)
- Logic level (Wikipedia)
- SDK: cm33/sensors/01_i2c_bus_scan.c (บัสเซนเซอร์ 1.8 V และบัส 3.3 V ของ machine.I2C)
- README ของ QWA309 Header I/O Test (Developer Hub, commit 372d0d8)
คำถามทบทวน
ลองตอบเองก่อน แล้วค่อยเปิดดูเฉลย
-
ขาออกของอุปกรณ์ 1.8 V มี V_OH(min) = 1.35 V ต่อเข้าขาเข้าของอุปกรณ์ 3.3 V ที่มี V_IH(min) = 2.31 V ได้ไหม (เป้าหมายข้อ 1)
- ได้ เพราะ 1.35 V มากกว่าศูนย์
- ไม่ได้ ระดับ 1 ของขาออกต่ำกว่า V_IH จึงไม่รับประกันว่าจะอ่านเป็น 1
- ได้ ถ้าใส่ตัวต้านทาน 1 kΩ อนุกรม
- ไม่ได้ เพราะ V_OL สูงเกินไป
ดูเฉลย
คำตอบ: B. ไม่ได้ ระดับ 1 ของขาออกต่ำกว่า V_IH จึงไม่รับประกันว่าจะอ่านเป็น 1
NM_H = 1.35 − 2.31 = −0.96 V ติดลบ ขาเข้าอาจอ่านเป็นอะไรก็ได้ ต้องใช้ตัวแปลงระดับ ตัวต้านทานอนุกรมไม่ได้ช่วยยกแรงดัน
-
ขาออก 3.3 V ต่อเข้าขาของชิป 1.8 V ที่ทนแรงดันขาเข้าได้สูงสุด 2.1 V ข้อใดถูก (เป้าหมายข้อ 1)
- ใช้ได้ปลอดภัย เพราะ 3.3 V สูงกว่า V_IH จึงอ่านเป็น 1 ได้ถูก
- อ่านค่าได้ถูกก็จริง แต่แรงดันเกินค่าสูงสุดที่ขาทน อาจเสียหายหรือจ่ายไฟย้อนเข้าชิป ต้องแปลงระดับ
- อ่านไม่ได้เลยเพราะแรงดันสูงเกิน
- ปลอดภัยถ้าชิป 1.8 V ปิดไฟอยู่
ดูเฉลย
คำตอบ: B. อ่านค่าได้ถูกก็จริง แต่แรงดันเกินค่าสูงสุดที่ขาทน อาจเสียหายหรือจ่ายไฟย้อนเข้าชิป ต้องแปลงระดับ
ในแง่ลอจิกอ่านเป็น 1 ได้ แต่ 3.3 V เกิน 2.1 V กระแสจะไหลผ่านไดโอดป้องกันเข้าไฟเลี้ยง 1.8 V ถ้าชิปปิดไฟอยู่ยิ่งแย่ เพราะมันจะถูกเลี้ยงผ่านขานั้นแทน
-
ขาออกมี V_OH(min) = 2.9 V ขาเข้ามี V_IH(min) = 2.31 V ส่วนเผื่อสัญญาณรบกวนด้านสูง (NM_H) เป็นเท่าไร (เป้าหมายข้อ 1)
- 0.59 V
- 5.21 V
- 0.99 V
- −0.59 V
ดูเฉลย
คำตอบ: A. 0.59 V
NM_H = V_OH(min) − V_IH(min) = 2.9 − 2.31 = 0.59 V สัญญาณรบกวนที่กดแรงดันลงไม่เกินนี้ยังอ่านเป็น 1 ได้
-
เกต XOR ได้ขาเข้า A = 1 และ B = 1 ขาออกเป็นอะไร (เป้าหมายข้อ 2)
- 0
- 1
- ไม่แน่นอน
- เท่ากับ A AND B
ดูเฉลย
คำตอบ: A. 0
XOR เป็น 1 เมื่อขาเข้าต่างกันเท่านั้น A และ B เท่ากันจึงได้ 0 ส่วน A AND B ในกรณีนี้ได้ 1
-
ALARM = ARM AND OPEN AND (NOT MAINT) ชุดค่าใดทำให้สัญญาณเตือนดัง (เป้าหมายข้อ 2)
- ARM = 1, OPEN = 1, MAINT = 1
- ARM = 1, OPEN = 1, MAINT = 0
- ARM = 0, OPEN = 1, MAINT = 0
- ARM = 1, OPEN = 0, MAINT = 0
ดูเฉลย
คำตอบ: B. ARM = 1, OPEN = 1, MAINT = 0
AND ต้องการให้ทุกเทอมเป็น 1 เทอม NOT MAINT เป็น 1 เมื่อ MAINT = 0 จึงมีเพียงแถวเดียวคือ ARM = 1, OPEN = 1, MAINT = 0
อ้างอิงบทเรียนนี้
ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน
"ระดับลอจิกและเกตพื้นฐาน" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0
ข้อความอ้างอิงภาษาอังกฤษ: "Logic levels and basic gates" from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0
เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA