ตุลาคม 25, 2025

เริ่มต้นเรียนรู้การใช้งาน FPGA (Field Programmable Gate Array) ด้วยบอร์ดพัฒนาของ Digilent

เคยสงสัยกันมั๊ยว่าโปรโตคอลใหม่ ๆ หรือการประมวลผลสัญญาณแอนะล็อกที่ความเร็วสูง ๆ เค้าทำโปรโตไทป์ (prototype) กันอย่างไร? มองดูคอนโทรลเลอร์ในท้องตลาดก็ไม่น่าจะประมวลผลได้เร็วขนาดนั้น จะใช้ชิพ DSP (Digital Signal Processing) ก็ดูจะเฉพาะทางเกินไป หรือจะสร้าง ASIC (Application Specific Integrated Circuit) ก็มีค่าใช้จ่ายสูงมากและใช้เวลานาน จริง ๆ แล้วมีชิพประมวลผลอีกแบบที่เหมาะกับการทำโปรโตไทป์หรือบางครั้งก็ใช้สร้างผลิตภัณฑ์ในกรณีที่จำนวนผลิตไม่สูง ชิพดังกล่าวคือ FPGA (Field Programmable Gate Array)

การทำงานของ FPGA นั้นให้นึกถึงวิชา digital electronics ที่เราต้องทำการต่อวงจรลอจิคเพื่อให้ประมวลผลในรูปแบบที่เราต้องการ ภายในชิพ FPGA นั่นจะมีเซลล์ลอจิคจำนวนมากซึ่งทำหน้าที่เสมือนเกทลอจิคแต่ละตัวที่เราต่อเข้าหากันโดยใช้สายไฟแต่ในกรณีของ FPGA นั้นเราจะทำการเขียนโปรแกรมเพื่อควบคุมสวิทช์ภายใน FPGA เพื่อต่อเซลล์ลอจิคเหล่านี้เข้าด้วยกัน ซึ่งด้วยความสามารถในการเขียนโปรแกรมเพื่อควบคุมการเชื่อมต่อของวงจรนี่เองทำให้เราสามารถสร้างและแก้ไขโปรโตไทป์ได้อย่างรวดเร็วโดยไม่ต้องต่อวงจรเอง

เนื่องจากแต่ละเซลล์ลอจิคนั้นอยู่ใกล้กันมาก ๆ และสามาถทำงานพร้อมกันแบบขนานทำให้ชิพ FPGA สามารถประมวลผลได้ด้วยความเร็วสูงในระดับ 100 MHz ขึ้นไป ข้อได้เปรียบอีกอย่างของชิพ FPGA คือ เนื่องจากเป็นการต่อวงจรเพื่อประมวลผลเฉพาะแบบที่เราต้องการจริง ๆ ทำให้ไม่ต้องใช้ระบบปฏิบัติการ (operating system) ซึ่งช่วยให้หลีกเลี่ยงการแครช (crash) ที่เกิดจากระบบปฏิบัติการได้ นอกจากนี้ภายในชิพ FPGA ยังมีส่วนประกอบอื่น ๆ ซึ่งช่วยให้สามารถประมวลผลและสื่อสารได้หลากหลายรูปแบบ เช่น DSP, RAM, memory, PCIe interface และอื่น ๆ

แล้วข้อเสียของ FPGA คืออะไร? ข้อเสียหลัก ๆ ของ FPGA คือ การเขียนโปรแกรมนั้นค่อนข้างยุ่งยาก โดยภาษาที่ใช้ในการเขียนโปรแกรมหลัก ๆ นั้นจะมี 2 ภาษา คือ VHDL (VHSIC hardware description language) และ Verilog สำหรับ Digilent มีบอร์ดพัฒนา FPGA ให้เลือกใช้มากมายหลายรุ่น โดยจะแบ่งออกเป็น 2 แบบหลัก ๆ ได้แก่

– บอร์ดสำหรับเรียนรู้ (introductory board): บอร์ดเหล่านี้ถูกออกแบบมาเพื่อเริ่มต้นเรียนรู้การใช้งาน FPGA โดยเฉพาะ จึงสามารถเริ่มต้นใช้งานได้อย่างง่ายดายเหมาะสำหรับการเรียนรู้ ทั้งนี้ Pmod เป็นโมดูลสำหรับเพิ่มอินพุต/เอาท์พุตรูปแบบต่าง ๆ ให้กับบอร์ดพัฒนา

Product FPGA/SoC Part Expansion Connectors Multimedia Interfaces Connectivity User I/O Programming Interface Memory
Basys 3 Artix-7
(XC7A35T)
3x Pmod VGA Output • USB-UART
• USB HID Host Port
• Seven-Segment Display
• 5 Buttons
• 16 Switches
• 16 LEDs
• USB-JTAG
• QSPI Flash
• USB Drive
• 1,800 Kb BRAM
• 4 MB QSPI Flash
Nexys A7 Artix-7
(XC7A100T/XC7A50T)
5x Pmod (1 Digital/Analog) • VGA Output
• PWM Audio Output
• PDM Microphone
• USB-UART
• 10/100 Ethernet
• USB HID Host Port
• Seven-Segment Display
• 5 Buttons
• 16 Switches
• 16 LEDs
• 2 RGB LEDs
• Temperature Sensor
• USB-JTAG
• QSPI Flash
• microSD
• USB Drive
• 128 MB DDR2
• 16 MB QSPI Flash
• 4,860 Kb BRAM (A7-100T) / 2,700 Kb BRAM (A7-50T)
• microSD card slot
ZedBoard Zynq-7000
(XC7Z020)
• 5x Pmod (1 connected to MIO)
• 1x FMC LPC
• HDMI Source
• VGA Output
• USB-UART
• Gigabit Ethernet
• USB 2.0 OTG
• OLED Display
• 7 Buttons
• 8 Switches
• 9 LEDs
• Analog Mixed Signal Header
• USB-JTAG
• QSPI Flash
• microSD
• 512 MB DDR3
• 32 MB QSPI Flash
• 4.9 Mb BRAM
• microSD card slot
Zybo Z7 Zynq-7000
(XC7Z020/XC7Z010)
• 6x* Pmod Ports (1 Digital/Analog and 1 connected to MIO on both variants, *5x on Z7-10) • HDMI Sink
• HDMI Source
• Pcam Camera Connector
• Audio Codec with 3 Audio Jacks
• USB-UART
• Gigabit Ethernet
• USB 2.0 Host/Device/OTG PHY
• 6 Buttons
• 4 Switches
• 5 LEDs
• 2 RGB LEDs
• USB-JTAG
• QSPI Flash
• microSD
• 1 GB DDR3L
• 16 MB QSPI Flash
• 4.9 Mb BRAM (Z7-20) / 2.1 Mb BRAM (Z7-10)
• microSD card slot
Cora Z7 Zynq-7000
(XC7Z010/XC7Z007S)
• 2x Pmod
• Arduino Shield Connector
N/A • USB-UART
• Gigabit Ethernet
• USB 2.0 Host PHY
• 2 Buttons
• 2 RGB LEDs
• USB-JTAG
• microSD card slot
• 512 MB DDR3
• 2.1 Mb BRAM (Z7-10) / 1.8 Mb BRAM (Z7-07S)
• microSD card slot
Arty A7 Artix-7
(XC7A100T/XC7A35T)
• 4x Pmod
• Arduino Shield Connector
N/A • USB-UART
• 10/100 Ethernet
• 4 Buttons
• 4 Switches
• 4 LEDs
• 4 RGB LEDs
• USB-JTAG
• QSPI Flash
• 256 MB DDR3L
• 16 MB QSPI Flash
• 4,860 Kb BRAM (A7-100T) / 1,800 Kb BRAM (A7-35T)
Arty S7 Spartan-7
(XC7S50/XC7S25)
• 4x Pmod
• Arduino Shield Connector
N/A USB-UART • 4 Buttons
• 4 Switches
• 4 LEDs
• 2 RGB LEDs
• USB-JTAG
• QSPI Flash
• 256 MB DDR3L
• 16 MB QSPI Flash
• 2,700 Kb BRAM (S7-50) / 1,620 Kb (S7-25)
Cmod A7 Artix-7
(XC7A35T/XC7A15T)
• 48-pin DIP Connector
• 1x Pmod
N/A USB-UART • 2 Buttons
• 2 LEDs
• 1 RGB LED
• 2 Analog Inputs
• USB-JTAG
• QSPI Flash
• 512 KB SRAM
• 1,800 Kb BRAM (A7-35T) / 900 Kb BRAM (A7-15T)
• 4 MB QSPI Flash
Cmod S7 Spartan-7
(XC7S25)
• 48-pin DIP Connector
• 1x Pmod
N/A USB-UART • 2 Buttons
• 4 LEDs
• 1 RGB LED
• 2 Analog Inputs
• USB-JTAG
• QSPI Flash
• 1,620 Kb BRAM
• 4 MB QSPI Flash

-บอร์ดสำหรับพัฒนาระบบ (system board): จริง ๆ แล้วบอร์ดสำหรับเรียนรู้ก็สามารถใช้ในการพัฒนาระบบได้ แต่เราทำการแยกออกจากกันเนื่องจากบอร์ดสำหรับพัฒนาระบบนั้นจะมีความซับซ้อนในการใช้งานไม่กว่าจึงไม่เหมาะสำหรับการเริ่มต้นเรียนรู้ ทั้งนี้ Zmod เป็นโมดูลอินพุต/เอาท์พุตสำหรับเพิ่มฟังก์ชั่นการทำงานของเครื่องมือวัด เช่น Oscilloscope และ Waveform Generator ให้กับบอร์ดพัฒนา

Product FPGA/SoC Part Expansion Connectors  Multimedia Interfaces Connectivity User I/O Programming Interface Memory
Arty Z7 Zynq-7000
(XC7Z020/XC7Z010)
• 2x Pmod
• Arduino Shield Connector
• HDMI Sink
• HDMI Source
• PWM Mono Audio Output Jack
• USB-UART
• Gigabit Ethernet
• USB 2.0 Host PHY
• 4 Buttons
• 2 Switches
• 4 LEDs
• 2 RGB LEDs
• USB-JTAG
• QSPI Flash
• microSD
• 512 MB DDR
• 16 MB QSPI Flash
• 4.9 Mb BRAM (Z7-20) / 2.1 Mb BRAM (Z7-10)
• microSD card slot
Nexys Video  Artix-7
(XC7A200T)
• 4x Pmod (1 Digital/Analog)
• 1x FMC LPC
• HDMI Sink
• HDMI Source
• DisplayPort Source
• Audio Codec with 4 Audio Jacks
• USB-UART
• Gigabit Ethernet
• USB HID/MSD Host Port
• OLED Display
• 5 Buttons
• 8 Switches
• 8 LEDs
• USB-JTAG
• QSPI Flash
• microSD
• USB Drive
• 512 MB DDR3
• 32 MB QSPI Flash
• 13,140 Kb BRAM
• microSD card slot
PYNQ-Z1  ZYNQ-7000
(XC7Z020-1CLG400C)
• 2x Pmod
• Arduino Shield Connector
• HDMI sink
• HDMI source
• PWM Mono Audio Output Jack
• Electret microphone with PDM output
• Gigabit Ethernet PHY
• USB OTG PHY (supports host only)
• USB-UART bridge
• 4 Buttons
• 2 Switches
• 4 LEDs
• 2 RGB LEDs
• USB-JTAG
• QSPI Flash
• microSD
• 512MB DDR3
• 16MB Quad-SPI Flash
• MicroSD slot
Eclypse Z7 Zynq-7000
(XC7Z020)
• 2x Zmod
• 2x Pmod
N/A • USB-UART
• Gigabit Ethernet
• USB 2.0 Host/Device/OTG PHY
• 2 Buttons
• 2 RGB LEDs
• USB-JTAG
• QSPI Flash
• microSD
• 1 GB DDR3L
• 16 MB QSPI Flash
• 4.9 Mb BRAM
• microSD card slot
Genesys 2 Kintex-7
(XC7K325T)
• 1x Zmod
• 4x Pmod (1 Digital/Analog)
• 1x FMC LPC
• 1x FMC Gigabit (ZU-5EV only)
• dual-slot Mini PCIe/mSATA
• 2x Pcam Camera Connectors
• DisplayPort Source
• HDMI Source and Sink (ZU-5EV only)
• Audio Codec with 4 Audio Jacks
• USB-UART
• USB-C
• 2.4 GHz Wi-Fi
• Gigabit Ethernet
• SFP+ 10G Ethernet (ZU-5EV only)
• USB 2.0 Host PHY with 2x USB Type-A ports
• 5 LEDs
• 1 RGB LED
• 7 Buttons
• 4 Switches
• USB-JTAG
• QSPI Flash
• microSD
• USB
• 4 GB DDR4
• 32 MB QSPI Flash
• 7.6 Mb BRAM (ZU-3EG) / 5.1 Mb BRAM (ZU-5EV)
• 18.0 Mb UltraRAM (ZU-5EV Only)
• microSD card slot
Genesys ZU Zynq UltraScale+
(XCZU5EV/XCZU3EG)
• 1x Zmod
• 4x Pmod (1 Digital/Analog)
• 1x FMC LPC
• 1x FMC Gigabit (ZU-5EV only)
• dual-slot Mini PCIe/mSATA
• 2x Pcam Camera Connectors
• DisplayPort Source
• HDMI Source and Sink (ZU-5EV only)
• Audio Codec with 4 Audio Jacks
• USB-UART
• USB-C
• 2.4 GHz Wi-Fi
• Gigabit Ethernet
• SFP+ 10G Ethernet (ZU-5EV only)
• USB 2.0 Host PHY with 2x USB Type-A ports
• 5 LEDs
• 1 RGB LED
• 7 Buttons
• 4 Switches
• USB-JTAG
• QSPI Flash
• microSD
• USB
• 4 GB DDR4
• 32 MB QSPI Flash
• 7.6 Mb BRAM (ZU-3EG) / 5.1 Mb BRAM (ZU-5EV)
• 18.0 Mb UltraRAM (ZU-5EV Only)
• microSD card slot
USB104 A7 Artix-7
(XC7A100T)
• 1x Zmod
• 3x Pmod
N/A • USB-UART
• USB Data Transfer Interfaces
• 2 Buttons
• 4 LEDs
• USB-JTAG
• QSPI Flash
• 512 MB DDR3
• 16 MB QSPI Flash
• 4,860 Kb BRAM

สำหรับการพัฒนาโปรแกรมนั้นเราจะต้องติดตั้ง Vivado และไฟล์ของบอร์ดพัฒนา Digilent เสียก่อนแล้วจึงเริ่มทำการพัฒนาโปรแกรมด้วย Vivado สุดท้ายเมื่อเราพัฒนาโปรแกรมเป็นที่เรียบร้อยแล้ว เราสามารถอัพโหลดโปรแกรมของเราไปยังชิพ FPGA ได้ทั้งหมด 4 วิธี ได้แก่

– ๋JTAG

– non-volatile quad SPI flash memory

– USB stick

– Micro SD Card

ซึ่งบอร์ดพัฒนาแต่ละรุ่นจะรองรับวิธีการที่แตกต่างกันไปโดยสามารถดูรายละเอียดเพิ่มเติมได้จากคู่มือของบอร์ดพัฒนาแต่ละรุ่น

หวังว่าบทความนี้จะเป็นประโยชน์สำหรับผู้ที่กำลังเริ่มต้นเรียนรู้ใช้งาน FPGA หรือมองหาโซลูชั่นสำหรับประมวลผลด้วยความเร็วสูง ท่านสามารถติดต่อทีมงาน ติดต่อ ทีมงาน เทคสแควร์ เพื่อสอบถามข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานบอร์ดพัฒนา FPGA หรือผลิตภัณฑ์อื่น ๆ จาก Digilent และ NI ได้ครับ

บทความที่เกี่ยวข้อง

Installing Vivado, Xilinx SDK, and Digilent Board Files

การใช้งานบอร์ดพัฒนา FPGA ของ Digilent ร่วมกับ Python

การใช้งานบอร์ดพัฒนา FPGA ของ Digilent ร่วมกับ MATLAB HDL Coder

การประยุกต์ใช้เครื่องมือวัดที่ปรับแต่งได้ด้วย FPGA

การใช้ไมโครคอนโทรลเลอร์บนบอร์ดพัฒนา FPGA ของ Digilent

Tagged on:
error: Content is protected...