แนะนำการใช้งานบอร์ด Terasic DE10 Lite Development Kit#

Keywords: FPGA, Intel / Altera MAX 10, Terasic DE10 Lite FPGA Board


Terasic DE10 Lite#

DE10-Lite เป็นบอร์ด FPGA ของบริษัท Terasic (Taiwan) และมีชิปหลักคือ Intel / Altera MAX 10 FPGA (Device: 10M50DAF484C7G) เริ่มจำหน่ายครั้งแรกในปีค.ศ. 2016

นอกจากบอร์ด DE10-Lite ยังมีบอร์ดในกลุ่มที่เรียกว่า DE-Series Intel FPGA Development Kits ของบริษัท Terasic ที่เป็นตัวเลือกอีกหลายบอร์ด เช่น

  • DE0-CV: Cyclone V, 5CEBA4F23C7
  • DE0-Nano: Cyclone IV-E, EP4CE22F17C6
  • DE0-Nano-SoC: Cyclone V SoC, 5CSEMA4U23C6
  • DE1-SoC: Cyclone V SoC, 5CSEMA5F31C6
  • DE2-115: Cyclone IV-E, EP4CE115F29C7
  • DE10-Standard: Cyclone V SoC, 5CSXFC6D6F31C6
  • DE10-Nano: Cyclone V-SE, 5CSEBA6U2317

บอร์ด DE10-Lite มีขนาดไม่ใหญ่ ราคาประมาณ 5,000 บาท (ไม่รวม VAT) เชื่อมต่อกับคอมพิวเตอร์ผู้ใช้ด้วยสาย USB: Type-A Male to Type-B Male และใช้แรงดันไฟเลี้ยง +5Vdc จากพอร์ต USB สำหรับการทำงานของวงจร ดังนั้นจึงสะดวกต่อการใช้งาน

รูป: Terasic DE10 Lite Development Kit (Source: Intel)

(Source: Terasic)

รูป: มุมมองของบอร์ดจากด้านบนและด้านล่าง

ซอฟต์แวร์ที่ใช้ในการออกแบบวงจรด้วยชิป FPGA เรียกว่า FPGA Design Software และซอฟต์แวร์ที่ของบริษัท Intel / Altera มีชื่อว่า Quartus Prime (เวอร์ชันล่าสุดในขณะที่เขียนบทความนี้คือ v24.1) แบ่งเป็น 3 ตัวเลือก

  • Quartus Prime Lite Edition (license-free): ใช้งานได้ฟรี และรองรับการใช้งานชิป 10M50DAF484C7G ดังนั้นจึงแนะนำให้ติดตั้งและใช้งานซอฟต์แวร์นี้
  • Quartus Prime Standard Edition | Pro Edition: จะต้องเสียค่าลิขสิทธิ์ในการใช้งานซอฟต์แวร์

▷ องค์ประกอบที่สำคัญของบอร์ด DE10-Lite#

ข้อมูลต่อไปนี้อ้างอิงจากเอกสาร DE10-Lite User Manual และไฟล์ Schematic (Rev.E0) แนะนำให้ดาวน์โหลดไฟล์ DE10-Lite_v.2.1.0_SystemCD.zip (2020-06-05) จากเว็บไซต์ของบริษัท

  • FPGA Device: 10M50DAF484C7G
    • Logic Elements (LEs): 50K
    • M9K Memory: 1,638 Kbits
    • Embedded User Flash Memory: 5,888 Kbits
    • 18 × 18 Multipliers: 144
    • PLLs: 4
  • Onboard USB Blaster
  • SDRAM (Synchronous Dynamic RAM): 64MB, 16-bit data wide, 3.3V LVTTL
  • Power Supply: +5Vdc
    • 2-pin header (5V & GND pins)
    • USB Port
  • 2x20-pin GPIO Headers
  • 1x Arduino Uno R3 Connector
    • Digital GPIO Pins: 3.3V logic (not 5V !!!)
    • 6x Analog Inputs: 0V ~ 3.3V
  • 6-Digit 7-Segment Display (3.3 LVTTL)
  • 10x LEDs (3.3 LVTTL)
  • 10x Slide Switches (3.3 LVTTL)
  • VGA Connector (D-sub Connector): 4-bit resistor-network DAC for RGB
  • 2x User Push Buttons (Active-low): KEY0 (PIN_B8) & KEY1 (PIN_A7)
  • 3-axis Accelerometer (G-Sensor): ADXL345 (I2C & SPI mode)
  • 4-Output Clock Signal Generator: 4 Outputs (3.3V LVTTL)
    • Y1: 24MHz for USB Blaster
    • Y3: ADC CLK 10MHz (FPGA Pin: PIN_N5)
    • Y4: MAX10 CLK1 50MHz (FPGA Pin: PIN_P11)
    • Y5: MAX10 CLK2 50MHz (FPGA Pin: PIN_N14)
  • 4x Status LEDs:
    • D1: ULED (USB Blaster Status)
    • D2: CONF_DONE (FPGA Configuration Status)
    • D3: Not Used
    • D4: System Power Status

รูป: บล็อกไดอะแกรมแสดงองค์ประกอบของบอร์ด DE10 Lite

บริษัท Terasic ได้พัฒนาตัวอย่างการออกแบบวงจรดิจิทัลเป็นระบบคอมพิวเตอร์ผังตัวที่มีซีพียู NIOS II เป็นตัวประมวลผล (เป็น Soft-IP CPU Core ขนาด 32 บิต) เพื่อสาธิตการใช้งานบอร์ด DE10 Lite วงจรดิจิทัลนี้สามารถเชื่อมต่อกับคอมพิวเตอร์ผู้ใช้ด้วยวิธี USB-JTAG หากผู้ใช้จะลองใช้งาน ก็จะต้องดาวน์โหลดไฟล์และติดตั้งซอฟต์แวร์ที่มีชื่อว่า DE10 Lite Control Panel

รูป: วงจรตัวอย่างสาธิตการใช้งาน NIOS II 32-bit Soft-CPU สำหรับบอร์ด DE10 Lite

บอร์ด FPGA มีวงจรที่ทำหน้าที่แปลงแรงดันไฟฟ้าจากระดับ +5V (VCC5) และต้องไม่เกิน 5.5V ให้เป็นแรงดันไฟฟ้าระดับต่ำลงมาสำหรับการทำงานของวงจรต่าง ๆ ของบอร์ด ได้แก่

  • +3.3V (VCC3P3)
  • +2.5V (VCC2P5)
  • +1.8V (VCC1P8)
  • +1.2V (VCC1P2)

ในส่วน I/O Banks ของชิป FPGA บนบอร์ด DE10-Lite มีการเลือกใช้ระดับแรงดันไฟฟ้าที่แตกต่างกันสำหรับ VCCIO (+3.3V หรือ +2.5V) และมีตัวอย่างบางส่วนดังนี้

รูป: ผังวงจรแสดงตัวอย่างการเลือกใช้แรงดันไฟฟ้า VCCIO สำหรับ I/O Banks

รูป: ตารางเปรียบเทียบตัวเลือกสำหรับ (Singled-ended) I/O Standards ของชิป MAX 10

รูป: ตัวเลือก Schmitt-Trigger Input สำหรับ LVCMOS / LVTTL I/Os

 


▷ ฮาร์ดแวร์และซอฟต์แวร์สำหรับการอัปโหลดไฟล์ FPGA Bitstream#

ไฟล์ข้อมูลที่เรียกว่า "บิตสตรีม" (Bitstream) เช่น ไฟล์ .sof และ .pof ซึ่งได้จากการทำงานของซอฟต์แวร์ Quartus เมื่อมีการแปลงวงจรดิจิทัลที่ได้ออกแบบไว้และได้ไฟล์บิตสตรีมแล้ว จะต้องใช้อุปกรณ์ที่เรียกว่า USB Blaster ซึ่งมีอยู่บนบอร์ด DE10 Lite แล้ว ร่วมกับซอฟต์แวร์ที่ใช้คือ Quartus Programmer เพื่อโปรแกรมชิป FPGA ด้วยไฟล์ดังกล่าว

รูป: การโปรแกรมชิป FPGA ด้วยวงจร JTAG ที่มีอยู่บนบอร์ด FPGA

วงจร USB Blaster ประกอบด้วยไอซี FTDI FT245BL ทำงานในโหมด 8-bit FIFO และชิป Altera MAX II CPLD (EPM240T100) วงจรทำหน้าที่เชื่อมต่อด้านหนึ่งกับพอร์ต USB ของคอมพิวเตอร์ผู้ใช้ และอีกด้านเชื่อมต่อกับพอร์ต JTAG ของชิป FPGA ด้วยสัญญาณ TCK, TMS, TDI และ TDO (ใช้แรงดันไฟเลี้ยง +2.5V สำหรับลอจิก)

วงจร USB Blaster ใช้สำหรับการอัปโหลด "บิตสตรีม" ผ่าน JTAG แบ่งเป็น 2 กรณี คือ

  • เขียนข้อมูลไปยังหน่วยความจำ SRAM-based (Non-volatile) Configuration Memory (CRAM) ภายในชิป MAX 10 แต่เมื่อปิดไฟเลี้ยงของบอร์ด ข้อมูลจะหายไป โดยปรกติ ก็เลือกใช้วิธีนี้ในช่วงการออกแบบวงจรดิจิทัลและทดลองกับบอร์ด FPGA
  • เขียนข้อมูลไปยังหน่วยความจำที่เรียกว่า CFM (Configuration Flash Memory): ภายในชิป MAX 10 มีหน่วยความจำแฟลช (On-chip Flash Memory) ร่วมไว้ให้แล้ว (ไม่ต้องใช้ไอซี Serial Flash Memory ภายนอก) ส่วนหนึ่งของหน่วยความจำประเภทนี้ ใช้เป็น CFM เพื่อเก็บข้อมูลของบิตสตรีม และส่วนที่เหลือใช้สำหรับ User Data Flash

รูป: การเขียนข้อมูลลงในหน่วยความจำ CRAM หรือ CFM

 


การใช้งานขา I/O ของชิป FPGA บนบอร์ด DE10 Lite#

ชิป MAX 10 FPGA (10M50DAF484C7G) มีขา I/O จำนวนมาก และส่วนหนึ่งจะใช้สำหรับการเชื่อมต่อกับวงจรต่าง ๆ บนบอร์ด ดังนั้นจะต้องกำหนดหมายเลขขา I/O ให้ถูกต้องสำหรับสัญญาณอินพุตและเอาต์พุตของวงจรดิจิทัล (เรียกขั้นตอนนี้ว่า FPGA Pin Assignment) โดยทำได้ 2 วิธี คือ

  • ใช้เครื่องมือซอฟต์แวร์ที่เรียกว่า Pin Planner ซึ่งเป็นส่วนหนึ่งของโปรแกรม Quartus Prime
  • ใช้ไฟล์ Tcl Script (ตัวอย่างไฟล์ set_pins.tcl) เพื่อตั้งค่าการใช้งานขา I/O

วงจรบนบอร์ด DE10-Lite สำหรับการใช้งานระดับพื้นฐาน ได้แก่

  • วงจรสร้างสัญญาณอินพุตสำหรับ Clock ของระบบ (สำหรับการออกแบบวงจรดิจิทัลแบบ Synchronous Design)
  • วงจรปุ่มกด (Push Buttons) และสวิตช์เลื่อนสองทาง ใช้เป็นอินพุตแบบดิจิทัล
  • วงจร LEDs ใช้เป็นเอาต์พุตแบบดิจิทัล
  • วงจร 7-Segment Display ใช้เป็นเอาต์พุตแบบดิจิทัล

รูป: ขาสัญญาณ Clock มี 3 ตัวเลือก

รูป: ผังวงจรสำหรับไอซีที่ใช้ในการสร้างสัญญาณ Clock

รูป: ผังวงจรสำหรับ LEDs (LED แต่ละตัว มีตัวต้านทาน 1k โอห์ม ต่ออนุกรมอยู่)

บอร์ด DE10 Lite มีวงจร LEDs (active-high) จำนวน 10 ตำแหน่ง เป็นเอาต์พุตแบบดิจิทัล (3.3V LVTTL) สำหรับการแสดงสถานะลอจิก และมีการใช้งาน FPGA Pins ดังนี้

รูป: ตารางแสดงการใช้ขา I/O สำหรับ LEDs

บอร์ด DE10 Lite มีปุ่มกด 2 ปุ่ม ทำงานแบบ Active-Low และมีวงจรสวิตช์แบบเลื่อนสองทาง (Slide Switches) จำนวน 10 ตำแหน่ง เป็นอินพุตแบบดิจิทัล (3.3V LVTTL) และมีการใช้งาน FPGA Pins ดังนี้

รูป: ผังวงจรสำหรับปุ่มกด

รูป: การใช้ไอซี 74AUC17 Hex Schmitt-Trigger Buffer สำหรับสัญญาณจากปุ่มกด เพื่อช่วยลดปัญหาจากการกระเด้งของปุ่มกด (Switch Debouncing Circuit)

รูป: ตารางแสดงหมายเลขขาสำหรับวงจรปุ่มกด

รูป: ผังวงจรสำหรับวงจรสวิตช์เลื่อนสองทาง (มีตัวต้านทาน 120 โอห์มต่ออนุกรมอยู่)

รูป: ตารางแสดงหมายเลขขาสำหรับวงจรสวิตช์เลื่อนสองทาง

รูป: ผังวงจรสำหรับ 7-Segment Display

รูป: ตารางแสดงหมายเลขขาสำหรับ 7-Segment Display ทั้งหมด 6 หลัก (มีตัวต้านทาน 2k โอห์ม ต่ออนุกรมอยู่)

 

ในกรณีที่ต้องการต่อวงจรภายนอกใช้งานเพิ่มเติมจากวงจรที่มีบนบอร์ด จะต้องใช้ขาของคอนเนกเตอร์ต่อไปนี้

  • คอนเนกเตอร์ 2x20 Pins (Male Pin Headers)
  • คอนเนกเตอร์ตามรูปแบบของ Arduino Shield

รูป: แผนผังแสดงตำแหน่งขา I/O ของคอนเนกเตอร์แบบ 2x20-Pins

รูป: ตารางแสดงหมายเลขขา FPGA Pins และชื่อสัญญาณของคอนเนกเตอร์ GPIOs

รูป: ตารางแสดงหมายเลขขา FPGA Pins และชื่อสัญญาณของคอนเนกเตอร์ Arduino Shield

รูป: แผนผังแสดงตำแหน่งขาสำหรับ Arduino Shield Connector บนบอร์ด DE10 Lite

รูป: ตารางแสดงหมายเลขขาสำหรับ Arduino Shield

คำเตือน: บอร์ด DE10 Lite ไม่สามารถนำไปต่อใช้งานกับวงจรอื่นที่ทำงานด้วยแรงดันไฟเลี้ยงสูงกว่า 3.3V เช่น การรับสัญญาณอินพุตลอจิกที่ระดับ 5V จากวงจรอื่น เพราะจะทำให้วงจรภายในชิป FPGA เสียหายได้

 

วงจรบนบอร์ด DE10 Lite สำหรับการฝึกออกแบบวงจรที่มีความซับซ้อน ได้แก่

  • ไอซีวัดความเร่งแบบสามแกน (3-axis Accelerometer: ADXL345)
  • วงจรตัวต้านทานสำหรับ DAC (Digital-to-Analog Converter) ขนาด 4 บิต ต่อหนึ่งสีของ RGB เพื่อนำไปใช้กับสัญญาณ VGA
  • ไอซีหน่วยความจำแบบ SDRAM ซึ่งใช้ขาสัญญาณ I/O ค่อนข้างมาก

รูป: ผังวงจรสำหรับ ADXL345 รองรับทั้ง I2C / SPI Bus

รูป: ตารางแสดงหมายเลขขาสำหรับ ADXL345

รูป: วงจรสำหรับการสร้างสัญญาณเอาต์พุต VGA

รูป: ผังวงจรสำหรับการสร้างสัญญาณเอาต์พุต VGA

รูป: ตารางแสดงหมายเลขขาสำหรับ VGA Output

รูป: การเชื่อมต่อระหว่างไอซี SDRAM กับชิป MAX 10 FPGA

รูป: ตารางแสดงหมายเลขขาสำหรับ SDRAM

ข้อสังเกต

  • ชิป MAX 10 FPGA มีวงจร 12-bit SAR ADC (Analog-to-Digital Converter) อยู่ภายใน และรับสัญญาณอินพุต-แอนะล็อก (อยู่ในช่วง 0V ~ 5V) ที่ขา ADC_IN0 ~ ADC_IN5 ของคอนเนกเตอร์สำหรับ Arduino Shield
  • สัญญาณแอนะล็อก-อินพุต จะถูกนำไปใช้กับวงจรแแบ่งแรงดัน (Voltage Divider) วงจรกรองความถี่แบบพาสซีฟ (Low-Pass Passive RC Filter) และไอซีออปแอมป์ (OpAmp) ที่ทำหน้าที่เป็น Voltage Buffer ดังนั้นสัญญาณอินพุตจะถูกลดระดับแรงดันไฟฟ้าให้อยู่ในช่วง 0V ~ 2.5V ก่อนนำไปใช้กับวงจร ADC1 ภายในชิป FPGA แต่ขา ADC_IN6 และ ADC_IN7 ของ ADC1 นั้นไม่ได้ต่อใช้งาน

รูป: ตัวอย่างผังวงจร OpAmp Buffer (ใช้ไอซี MCP6244 และแรงดันไฟเลี้ยง +3.3V) สำหรับสัญญาณอินพุต-แอนะล็อก 1 ช่องสัญญาณ

 


กล่าวสรุป#

บทความนี้ได้นำเสนอข้อมูลเบื้องต้นเกี่ยวกับฮาร์ดแวร์ของบอร์ด Terasic DE10 Lite ซึ่งมีชิป Intel / Altera MAX 10 FPGA ซึ่งต้องใช้งานร่วมกับซอฟต์แวร์ Intel Quartus Prime Lite Edition ผู้ใช้ควรศึกษาวงจรและการทำงานของบอร์ด FPGA ให้เข้าใจก่อน โดยเฉพาะอย่างยิ่ง เมื่อจำเป็นต้องต่อวงจรภายนอกเพิ่มเพื่อใช้งานกับบอร์ด FPGA

 


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created: 2024-10-20 | Last Updated: 2024-10-26