U-Boot Debug GPIO IP

การ Debug GPIO IP นั้นสามารถทำได้หลายวิธี เช่น การใช้ Testbench เพื่อ Simulation การใช้ System Console หรือ การใช้ Signal Tap อย่างไรก็ตาม ในบทความนี้จะกล่าวถึงอีกวิธีหนึ่งที่อาจเป็นประโยชน์ นั่นคือ การ Debug GPIO IP ผ่าน U-Boot โดย U-Boot เป็น Bootloader ที่ใช้ในการบูตระบบปฏิบัติการ เช่น Linux บน Hardware นอกจากนี้ U-Boot ยังสามารถใช้ในการเข้าถึง memory ต่างๆ ได้ โดยในบทความนี้ก็จะใช้ U-Boot ในการเข้าถึง memory เพื่อ Debug GPIO IP ที่สร้างขึ้น # ในตัวอย่างนี้จะแสดงขั้นตอนบนบอร์ด Terasic SoCKit ( … Read More

Custom GPIO IP

ในบทความนี้จะมาแนะนำวิธีการสร้าง GPIO IP ขึ้นมาด้วยตัวเอง และ การเพิ่ม GPIO IP ที่สร้างขึ้นนี้เป็น IP ใน Platform Designer บน Quartus โดยจะอธิบายข้อมูลเบื้องต้นเกี่ยวกับ GPIO และ Platform Designer ก่อนจะกล่าวถึงขั้นตอนการสร้าง GPIO ย่อมาจาก General Purpose Input/Output คือ ขา Input และ Output ใน Microcontroller หรือMicroprocessor ที่สามารถใช้ควบคุมหรือรับข้อมูลจากอุปกรณ์ภายนอกได้ โดย GPIO สามารถกำหนดให้เป็น Input/Output ก็ได้ สำหรับ Altera ได้มี IP สำหรับใช้ควบคุม GPIO โดยมีชื่อว่า PIO core แต่หากต้องการสร้างฟังก์ชั่นสำหรับการควบคุม GPIO เพิ่มเติม เช่น การสร้างสัญญาณ PWM … Read More

PCB Design: Make our PCB as small as possible

Photo by Harrison Broadbent on Unsplash ในกระบวนการออกแบบ PCB, ขนาดของ PCB เป็นหนึ่งในปัจจัยที่สำคัญอย่างมาก ขนาดนี้มีผลต่อหลายปัจจัยทั้งจำนวนและขนาดของส่วนประกอบ, คุณสมบัติทางไฟฟ้า, ความต้องการด้านความทนทาน, และงบประมาณ การปรับปรุงขนาดของ PCB ต้องพิจารณาอย่างรอบคอบเพื่อให้เหมาะสมกับความต้องการและความสะดวกในการใช้งาน ปัจจัยที่ส่งผลต่อขนาดของ PCB 1. ขนาดส่วนประกอบ ส่วนประกอบที่มีขนาดเล็กกว่าจะช่วยให้ PCB มีขนาดที่เล็กลงได้ โดยส่วนประกอบ SMT นั้นโดยทั่วไปจะมีขนาดเล็กกว่าส่วนประกอบผ่านรู (THT) มาก รูปที่ 1 ส่วนประกอบ SMT | Photo by Adrien on Unsplash ส่วนประกอบ SMT (Surface Mounted Device) เป็นอุปกรณ์อิเล็กทรอนิกส์ที่ติดตั้งบนพื้นผิวของ PCB โดยใช้เทคนิคการยึดพื้นผิว (SMT) โดยทั่วไปจะมีขนาดเล็กกว่าส่วนประกอบผ่านรู (THT) มาก เนื่องจากไม่ต้องมีขาหรือรูสำหรับยึดเข้ากับ PCB ส่วนประกอบผ่านรู … Read More

How to noise reduction for PCB design (part 3/3)

Photo by resources.altium.com  สวัสดีครับ ท่านผู้อ่าน เจอกันอีกครั้งนะครับ บทความชุดนี้จะเป็นภาคต่อสุดท้ายแล้วสำหรับการออกแบบ PCB อย่างไรเพื่อให้งานที่ออกแบบมีสัญญาณรบกวนให้น้อยที่สุด เนื้อหาชุดนี้จะเป็นเรื่องทั่วๆ ไป ที่เราควรระวังในการออกแบบเพื่อลดสัญญาณรบกวน 1. กำหนดค่าเลเยอร์ที่อยู่ติดกันให้แตกต่างกัน (มี Plane คั่นระหว่างชั้นที่เป็น Signal) เมื่อจะจัดการกับสายสัญญาณที่หลากหลายภายในแผงวงจรพิมพ์ มีความจำเป็นต้องพิจารณาว่าควรวางเลเยอร์ที่เป็นสัญญาณไว้ติดกับชั้นใดโดยคำนึงถึงการแพร่กระจายของสัญญาณรบกวน รูปตัวอย่างด้านบนเป็นแผงวงจรพิมพ์ 6 ชั้น โดยชั้นสัญญาณที่ 1 กับ 2 และ 5 กับ 6 จะอยู่ติดกัน ในกรณีดังกล่าวจะเกิดสัญญาณรบกวนสาเหตุมาจาก Crosstalk นี่จึงเพิ่มความเป็นไปได้ที่อุปกรณ์อิเล็กทรอนิกส์อาจจะทำงานผิดปกติ  เมื่อจะจัดการกับสายสัญญาณที่หลากหลายบนแผงวงจรพิมพ์แบบหลายชั้น ตัวอย่างเช่น ในกรณีของแผงวงจรพิมพ์ 6 ชั้น ต้องแน่ใจว่าได้วางชั้น GND plane และ VCC plane ให้อยู่ระหว่างชั้นสัญญาณที่ 1 กับ 3 และ 4 กับ 6 ตามลำดับดังที่อธิบายไว้ข้างต้น ทำให้การออกแบบและผลิตแผงวงจรพิมพ์ช่วยลดผลกระทบจากสัญญาณรบกวน สรุป … Read More

Ethernet TSN

ก่อนจะพูดถึง Ethernet TSN ขอเกริ่นประวัติของเครือข่ายสำหรับใช้ในอุตสาหกรรมซักหน่อยละกันครับ ในช่วงปี 1990 ซึ่งถือว่าเป็นช่วงเริ่มแรกของเครือข่ายสำหรับใช้ในอุตสาหกรรม มีหลายมาตรฐานการสื่อสารที่ถูกสร้างขึ้น โดยมีมาตรฐานมากกว่า 40 ตัวที่แข่งขันกัน จึงสร้างความสับสนให้กับผู้ใช้ที่ไม่รู้จะเลือกใช้อันไหน แต่เนื่องจากการแข่งขันเพื่อการอยู่รอดในตลาด แล้วท้ายสุดก็เหลือมาตราฐานที่เราคุ้นชินกันอยู่ เช่น CC-Link, PROFIBUS และ DeviceNet  โดยมาตราฐานเหล่านี้โดยส่วนใหญ่แล้วจะใช้ RS485 เป็นพื้นฐานสำหรับการสื่อสารจะยังคงมีความนิยมในตอนต้นของทศวรรษ 2000  หลังจากนั้นเนื่องจากความต้องการที่จะอยากให้ประสิทธิภาพที่ดีกว่าที่เป็นอยู่ ก็ได้มีการมีมาตราฐานใหม่โดยใช้เครือข่าย Ethernet เป็นฐาน ตัวอย่างเช่น PROFINET, Ethernet/IP, EtherCAT อย่างไรก็ตามก็ยังมีปัญหาที่ทำให้ไม่สะดวกในการใช้ Ethernet ในอุตสาหกรรมหรือโรงงาน โดยประเด็นสำคัญคือ: ความขาดคุณสมบัติการเรียลไทม์ ความทนทานต่อสภาพแวดล้อม เช่น อุณหภูมิ, ความชื้น, ฝุ่น และ noise เป็นต้น นั้นเองทำให้ในช่วงปี 2019 ได้มีการนำเสนอ มาตรฐาน “Ethernet TSN (Time Sensitive Network)” โดยอ้างอิงจากมาตรฐาน “Ethernet … Read More

PoE ( Power over Ethernet )

การพัฒนาในโลกดิจิทัลมีผลกระทบอย่างมากต่อการใช้งานเครือข่ายและอุปกรณ์ไฟฟ้า หนึ่งในเทคโนโลยีที่สำคัญและทันสมัยที่ช่วยให้การสื่อสารและการเชื่อมต่อเกิดขึ้นอย่างรวดเร็วคือ “Power over Ethernet” หรือ PoE PoE คืออะไร PoE ย่อมาจาก Power over Ethernet เป็นเทคโนโลยีจ่ายไฟฟ้าผ่านสาย LAN เพียงแค่มีสาย LAN เพียง 1 เส้นก็สามารถสื่อสารและใช้พลังงานร่วมกันได้จึงทำให้การติดตั้งสะดวกสบาย ไม่ว่าจะเป็นนอกอาคาร เพดาน หรือแม้กระทั่งบริเวณที่ไม่มีสายไฟก็สามารถใช้งานได้ ยกตัวอย่างเช่นกล้องรักษาความปลอดภัย สถานที่ติดตั้งจะมีทั้งนอกอาคาร และ ภายในอาคาร ถ้าหากไม่ใช้ PoE ปัญหาที่พบเจอก็คือ บริเวณที่ติดตั้งจะต้องมีแหล่งจ่ายไฟเสมอ จากนี้จะขออธิบายเนื้อหาของ PoE ที่สามารถเข้าใจได้ง่ายๆครับ มาตราฐาน PoE แบ่งออกได้ดังนี้ เปิดตัวครั้งแรกในปี 2003「PoE(IEEE 802.3af)」ครั้งที่สองปี 2009「PoE+(IEEE 802.3at)」และครั้งที่สามปี 2018「PoE++(IEEE802.3bt)」หลังจากนั้นก็มีหลายๆบริษัทพัฒนาเทคโนโลยี PoE เพื่อให้ได้กำลังไฟฟ้าที่สูงขึ้น ข้อเสียและข้อควรระวังหากจะใช้งาน PoE ราคาแพงกว่าอุปกรณ์ที่ไม่รองรับ PoE ต้องตัดสินใจให้ดีก่อนจะเลือกใช้งาน สำหรับกล้อง PTZ จะมีจุดบอดเมื่อกล้องเปลี่ยนตำแหน่งการจับภาพ ทำให้ต้องมีการติดตั้งกล้องหลายๆจุดเพื่อป้องกันจุดบอดนั้น … Read More

มาลองสร้าง Kernel Module สำหรับ Embedded Linux กัน

(Tux image reference: https://en.wikipedia.org/wiki/File:Tux.png) Embedded Linux คือ? บนระบบฝังตัว (Embedded System) นั้นมีส่วนประกอบใหญ่ๆ อยู่ 2 ส่วน คือ ฮาร์ดแวร์และซอฟต์แวร์ โดยในส่วนของซอฟต์แวร์นั้นก็จะมีระบบปฏิบัติการ (Operating System: OS) ที่เหมือนเป็นตัวกลางระหว่างฮาร์ดแวร์และผู้ใช้งาน โดยระบบปฏิบัติการนั้นจะแตกต่างกันไปตามความสามารถของฮาร์ดแวร์นั่นเอง Embedded Linux เป็นระบบปฏิบัติการแบบหนึ่งที่นิยมใช้ใน Embedded System ที่ออกแบบมาเพื่อทำงานบนอุปกรณ์ฮาร์ดแวร์ที่มีข้อจำกัดในเรื่องของทรัพยากร ทำให้ส่วนการทำงานบางส่วนภายใน Embedded Linux จะหายไปเมื่อเทียบกับ Linux OS ที่ใช้งานบนคอมพิวเตอร์หรือที่ระบบที่มีส่วนการประมวลผลขนาดใหญ่ เช่น C library เป็นต้น  ทำให้เมื่อต้องการสร้างโปรแกรมหรือ Kernel Module นั้นก็ต้องทำการคอมไพล์แบบ cross-compile เช่นเดียวกับระบบปฏิบัติการอื่นๆ ที่ใช้ใน Embedded System Components of an Embedded Linux System  https://www.windriver.com/solutions/learning/embedded-linux … Read More

How to noise reduction for PCB design (part 2/3)

Photo by resources.altium.com สวัสดีครับ ท่านผู้อ่าน เจอกันอีกครั้งแล้วนะครับ สำหรับเนื้อหาในบทความนี้จะเป็นภาคต่อเนื่องจากครั้งก่อนที่ว่าเราจะทำการออกแบบ PCB อย่างไรเพื่อให้งานที่ออกแบบมีสัญญาณรบกวนให้น้อยที่สุด โดยในภาคนี้จะเน้นไปที่เรื่องเกี่ยวกับ Ground plane เป็นส่วนใหญ่ครับ ทำความเข้าใจวัตถุประสงค์ของบทความกันก่อนที่จะเข้าไปอ่านว่าเนื้อหาหลักส่วนใหญ่ที่กล่าวถึงในนี้จะเป็นสัญญาณรบกวนที่เกิดจากเส้นลายวงจรที่ใช้ส่งสัญญาณความถี่สูงเป็นหลัก เพราะเส้นสัญญาณความถี่สูงจะเป็นตัวสร้างสัญญาณรบกวนให้กับสิ่งที่อยู่รอบๆได้มาก ดังนั้นจึงขอแจ้งทำความเข้าใจเพื่อให้ผู้อ่านได้เข้าใจวัตถุประสงค์และนำไปปรับใช้กับงานออกแบบของท่านให้ได้เกิดประโยชน์กับท่านมากที่สุด ถ้าพร้อมแล้วไปเริ่มกันเลยครับ 1. ออกแบบโดยไม่กีดขวาง Ground plane ในการออกแบบลายวงจรพิมพ์เพื่อลดสัญญาณรบกวน จำเป็นต้องพิจารณาว่าจะไม่ทำให้การไหลของกระแสไฟฟ้าเบี่ยงหรืออ้อม จากรูป Vias ถูกจัดเรียงใกล้ชิดกันแบบต่อเนื่อง และ Ground plane (Ground ที่ Layer 2) ได้ถูกแบ่งออก ด้วยรูปแบบดังกล่าวกระแสส่วนใหญ่จะไหลผ่าน Vias (หมายถึง Vias ที่ 4 มุม) ส่งผลให้วงจรมีแนวโน้มที่จะเกิดสัญญาณรบกวนได้ เพราะกระแสมีการไหลอ้อมบริเวณที่มี Vias ติดกัน ถ้าหากต้องการเจาะ Vias ในจำนวนมากจริงๆ ด้วยเหตุผลด้านการออกแบบ ให้ทำระยะห่างระหว่างจุด Vias ตามรูป และปล่อยให้กระแสไหลผ่านระหว่างจุดเหล่านั้น การทำเช่นนี้กระแสสามารถไหลผ่านระหว่าง Vias … Read More

5 ปัญหาที่มักจะเกิดขึ้นกับการออกแบบ PCB

เรามาเรียนรู้แนวทางที่จะหลีกเลี่ยง 5 ปัญหาหรือข้อผิดพลาดกับการออกแบบ PCB ที่มักจะเกิดขึ้นระหว่างการออกแบบผลิตภัณฑ์ฮาร์ดแวร์บ่อยที่สุด Figure 1 Unassembled Mitayi Pico RP1 RP2040 boards from CIRCUITSTATE Electronics. PCB designed in KiCad and manufactured by PCBWay. Photo by Vishnu Mohanan  on Unsplash เมื่อเราพูดถึงการออกแบบผลิตภัณฑ์ฮาร์ดแวร์ มักจะมีข้อผิดพลาดเล็ก ๆ น้อย ๆ ที่จะพบเห็นซ้ำแล้วซ้ำเล่าอยู่เป็นประจำ โดยเฉพาะอย่างยิ่งข้อผิดพลาดเกี่ยวกับการออกแบบ PCB จากการเชื่อมต่อ (Net, Connection) และจุดยึดหรือจุดบัตกรีชิ้นส่วนอุปกรณ์อิเล็กทรอนิกส์ทั้งหมดเข้าไว้ด้วยกันบนบอร์ด เรามาตรวจสอบการออกแบบดูกันหน่อยว่า 5 ข้อผิดพลาดเกิดขึ้นกับ PCB ที่พบบ่อยที่สุด มีอะไรบ้าง 1 – Footprint หรือ Land Pattern ไม่ถูกต้อง … Read More

Teraterm Macro

Teraterm Macro เป็นสคริปต์ที่ใช้สำหรับการทำงานในโปรแกรม TeraTerm ซึ่งเป็นโปรแกรมเชื่อมต่อแบบพอร์ตซีเรียล (Serial Port) ที่ใช้สำหรับการควบคุมอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ผ่านทางพอร์ตซีเรียล ซึ่ง TeraTerm Macro จะทำหน้าที่ส่งคำสั่งที่เขียนไว้ในสคริปต์ ไปยังอุปกรณ์ต่างๆ ผ่านทางพอร์ตซีเรียล โดยมีการตั้งค่าการเชื่อมต่อเป็นได้หลายแบบ เช่น Telnet, SSH, Serial, และอื่นๆ และ TeraTerm Macro ยังสามารถทำงานร่วมกับตัวแปร เงื่อนไข การวนซ้ำ การแสดงผล และคำสั่งอื่นๆ ที่ช่วยให้สามารถทำงานได้อย่างยืดหยุ่น ดังนั้น TeraTerm Macro จึงเป็นเครื่องมือที่ช่วยในการทำงานที่ซับซ้อนในสิ่งที่เกี่ยวข้องกับการควบคุมอุปกรณ์ทางอิเล็กทรอนิกส์ได้ง่ายขึ้น ตัวอย่าง ttl macro script ( Tera Term Language ) สำหรับการใช้งานเบื้องต้น เราสามารถใช้ free text editor เช่น notepad, notepad++ ในการเขียน macro script หรือจะใช้ … Read More