FPGA • Tang Nano 20K • Verilog • Digital Logic

Tang Nano 20K: เริ่ม FPGA ด้วย Verilog ตั้งแต่ Logic ถึง Bitstream

ถ้าเคยเขียน Arduino หรือ ESP32 มาก่อน สิ่งแรกที่ต้องเปลี่ยนวิธีคิดเมื่อเข้ามาเล่น FPGA คือ: Verilog ไม่ได้ถูก CPU อ่านแล้ว Execute ทีละบรรทัดเหมือนโปรแกรมทั่วไป แต่มันกำลังอธิบายว่าเราต้องการให้ Hardware ข้างใน FPGA ถูกต่อขึ้นมาเป็น Logic แบบไหน

Hackaday จึงหยิบ Sipeed Tang Nano 20K มาเป็น Platform หลักของ FPGA Chronicles รุ่นใหม่ เพราะบอร์ดเล็กตัวนี้มีทั้ง Logic Fabric, RAM, SDR SDRAM, Multiplier, HDMI, LCD, microSD และ Programmer อยู่ใน Platform ที่เหมาะกับการเริ่มทดลอง FPGA โดยไม่ต้องเริ่มจาก Board ขนาดใหญ่

บอร์ด Sipeed Tang Nano 20K ที่ใช้ GOWIN GW2AR-18 FPGA
Sipeed Tang Nano 20K เป็นบอร์ดหลักที่ Hackaday เลือกใช้ สำหรับอัปเดต FPGA Chronicles และสอน Workflow FPGA รุ่นใหม่
Key Takeaways
  • Tang Nano 20K ใช้ GOWIN GW2AR-LV18QN88C8/I7
  • มี 20,736 LUT4 และ 15,552 Flip-Flops
  • มี Block SRAM 828 Kbits และ SDR SDRAM 64 Mbits หรือ 8 MB
  • มี 48 ตัวคูณแบบ 18×18 สำหรับงานคำนวณที่เหมาะกับ DSP Block
  • FPGA ไม่มี “Clock Speed เดียว” ที่บอก Performance ของทุก Design ได้
  • Verilog ใช้อธิบาย Hardware Logic ไม่ใช่ลำดับ Instruction แบบ MCU
  • Workflow หลักคือ HDL → Constraints → Synthesis → Place & Route → Bitstream
  • ตัวอย่างแรกใช้ Switch 2 ตัวสร้าง AND / OR Logic แล้วแสดงผ่าน Active-low LED
  • Pin Constraint เป็นตัวเชื่อมชื่อ Signal ใน Verilog กับ Physical Pin บน FPGA
  • นอกจาก GOWIN IDE ปัจจุบันยังมี Open-source Toolchain สำหรับ Tang Nano 20K ด้วย

FPGA คืออะไร?

FPGA ย่อมาจาก Field-Programmable Gate Array หรือชิป Logic ที่ผู้ใช้สามารถกำหนดโครงสร้างการเชื่อมต่อภายในได้ภายหลัง แทนที่จะผลิตวงจรขึ้นมาให้มีหน้าที่เดียวตั้งแต่โรงงาน

ภายในไม่ได้มี CPU เพียงตัวเดียว ที่รออ่าน Instruction ตามลำดับ แต่มีทรัพยากร Logic จำนวนมาก ที่สามารถถูก Configure ให้ทำงานต่างกันและทำงานพร้อมกัน

วิธีคิดง่าย ๆ:
Microcontroller = เขียน Software ให้ Processor ทำงาน
FPGA = อธิบายว่าอยากสร้าง Digital Hardware แบบไหน

แน่นอนว่า FPGA สามารถสร้าง CPU แบบ Soft Core ขึ้นมาได้เช่นกัน และ FPGA บางตระกูลก็มี Processor รวมอยู่ด้วย แต่ประเด็นของ FPGA คือเราสามารถเลือกได้ว่า งานใดควรเป็น Software และงานใดเหมาะกับ Hardware Logic

FPGA ต่างจาก Microcontroller ยังไง?

ตัวอย่างคลาสสิกในห้องเรียนคือ Traffic Light เพราะ State Machine เหมาะมากกับการสอน FPGA แต่ในชีวิตจริง Microcontroller ราคาถูกก็ทำไฟจราจรได้สบาย

ความต่างเริ่มชัดเมื่อโจทย์ต้องการ Parallelism และ Timing ที่กำหนดด้วย Hardware

แนวคิด Microcontroller FPGA
การทำงานหลัก Processor Execute Instruction Logic Blocks ทำงานพร้อมกันตามวงจรที่ Configure
Concurrency อาศัย Peripheral, Interrupt, RTOS หรือหลาย Core สร้าง Logic หลายชุดทำงานพร้อมกันได้โดยตรง
State Machine ทำใน Software ได้ง่าย Implement เป็น Hardware State Machine ได้
Sequential Algorithm มักเขียนง่ายกว่า ต้องออกแบบ Data Path / State / Timing ให้เหมาะ
เหมาะกับงาน Control, UI, Protocol, General Software Parallel Logic, Custom Timing, Data Path, Digital Interfaces
FPGA ไม่ได้ “เร็วกว่า MCU ทุกอย่าง”: จุดแข็งคือสามารถสร้าง Hardware ที่ตรงกับปัญหา และทำงานหลายชุดพร้อมกัน ไม่ใช่การมี CPU ที่รัน Instruction เร็วกว่าเสมอ

งานแบบไหน FPGA เริ่มได้เปรียบ?

Hackaday ยกตัวอย่างว่า สมมติมี Digital Sensor จำนวนมากบนระบบหนึ่ง และ Sensor ตัวใดตัวหนึ่งต้องสามารถ Raise Alarm ได้ภายในเวลาไม่กี่ Microseconds

Processor อาจต้อง:

  • Polling Input
  • แบ่ง Inputs เป็นกลุ่ม
  • ใช้ Interrupt
  • พึ่ง Peripheral เพิ่ม

FPGA สามารถสร้าง Logic ที่เทียบได้กับ OR Gate ขนาดใหญ่ ซึ่ง Monitor ทุก Input พร้อมกันตลอดเวลา

Logic ส่วนอื่นใน FPGA สามารถทำงานของตัวเองต่อ โดยไม่ต้องแย่ง Execution Time จาก Logic ตรวจ Alarm ชุดนี้

นี่คือคำว่า Hardware Parallelism: ไม่ใช่การสลับงานเร็ว ๆ จนดูเหมือนพร้อมกัน แต่ Logic หลายส่วนสามารถมีอยู่และทำงานพร้อมกันจริง

Tang Nano 20K ใช้ FPGA ตัวไหน?

Tang Nano 20K ใช้:

GOWIN GW2AR-LV18QN88C8/I7

Resource ข้อมูลที่ยืนยันได้จากหน้า Tang Nano 20K
LUT4 20,736
Flip-Flops 15,552
Shadow SRAM 41,472 bits
Block SRAM 828 Kbits / 46 blocks
SDR SDRAM 64 Mbits หรือ 8 MB, 32-bit
18×18 Multipliers 48
PLLs หน้าเฉพาะ Tang Nano 20K ระบุ 2
Official Sipeed pages มีข้อมูลบางรายการไม่ตรงกัน: หน้าเฉพาะ Tang Nano 20K ระบุ PLL 2 ตัว ขณะที่หน้าเปรียบเทียบ Tang บางหน้าระบุ 4 และข้อมูล Onboard Flash ในหน้า Sipeed บางหน้าก็มีค่าต่างกัน บทความนี้จึงยึดหน้าเฉพาะ Tang Nano 20K และ Main Source เป็นหลัก แต่ควรตรวจ Datasheet / Schematic ของ Revision ที่ใช้งานจริง หากค่าดังกล่าวสำคัญกับ Project

20,736 LUT หมายถึงอะไร?

ชื่อ “20K” ไม่ได้หมายถึง RAM 20 KB แต่สะท้อนขนาดของ Logic Fabric ซึ่ง FPGA ตัวนี้มี 20,736 LUT4

LUT ย่อมาจาก Look-Up Table

สมมติเราต้องการ Logic:

Z = A OR (B AND C) OR (A XOR D)

Tool ไม่จำเป็นต้องหยิบ AND Gate, OR Gate และ XOR Gate แบบชิ้นส่วนแยกมาต่อให้เหมือน Schematic ที่เราวาดด้วยมือ

มันสามารถหาค่า Output สำหรับ Combination ของ Input แล้ว Mapping Function นั้นลงใน LUT ตาม Architecture ของ FPGA

LUT คือหนึ่งใน Building Blocks หลักของ FPGA: HDL บอก Function ที่ต้องการ ส่วน Synthesis Tool ตัดสินใจว่าจะ Mapping Logic นั้น ลงทรัพยากรของ FPGA อย่างไร

FPGA ข้างในไม่ได้มีแค่ Logic

Project FPGA ที่ใหญ่ขึ้น ต้องใช้มากกว่า LUT และ Flip-Flop เช่น Buffer, Framebuffer, FIFO หรือ Memory สำหรับ Soft CPU

Distributed / Shadow SRAM

ใช้ทรัพยากรภายใน Logic Fabric สำหรับ Memory ขนาดเล็กตาม Architecture ของ Device

Block SRAM

Tang Nano 20K Documentation ระบุ Block SRAM รวม 828 Kbits จำนวน 46 Blocks

SDR SDRAM 8 MB

GW2AR Platform ที่ใช้บนบอร์ดนี้ มี SDR SDRAM 64 Mbits หรือ 8 MB แบบ 32-bit

Memory ส่วนนี้ไม่ใช่ Block RAM และการใช้งานยังต้องมี Controller / Logic สำหรับสื่อสารกับ SDRAM

8 MB SDRAM ≠ 8 MB Block RAM: เป็นคนละ Memory Resource และมีวิธีเข้าถึงรวมถึง Timing ต่างกัน

Hardware Multipliers

Device ยังมี 18×18 Multipliers จำนวน 48 ชุด ซึ่งสามารถใช้กับงานคำนวณ ที่เหมาะกับ Dedicated Arithmetic Resource แทนการสร้างทุกอย่างจาก LUT

บน Tang Nano 20K มีอะไรติดมาให้บ้าง?

นอกจาก FPGA Fabric ตัวบอร์ดยังมี Peripheral ที่ช่วยให้ทดลอง Project ได้หลายแนว

Hardware หน้าที่ / ข้อมูลจาก Source
BL616 JTAG Programmer, USB-UART และงานสื่อสาร/ควบคุมบางส่วนของบอร์ด
MS5351 Programmable Clock Generator
HDMI Display Interface บนบอร์ด
40-pin RGB LCD Connector สำหรับ RGB LCD
TF / microSD Storage Interface
MAX98357A PCM Audio Amplifier
Monochrome LEDs 6 ดวง แบบ Active-low
RGB LED WS2812 จำนวน 1 ดวง
User Keys 2 ปุ่ม
Board Size 22.55 × 54.04 mm

แต่การมี HDMI หรือ RAM อยู่บนบอร์ด ไม่ได้หมายความว่า FPGA “รู้วิธีใช้” ให้เอง เราต้องมี Logic, IP หรือ Controller ที่เหมาะสมกับ Peripheral นั้น

Workflow FPGA ตั้งแต่ HDL ถึง Bitstream

Main Source สรุป Workflow พื้นฐานไว้เป็นขั้น ๆ ซึ่งต่างจากการเขียน Arduino Sketch แล้ว Compile ลง MCU อยู่พอสมควร

1. HDL
อธิบาย Logic ด้วย Verilog หรือ VHDL
↓
2. Top Module
ระบุ Interface ระหว่าง Design กับโลกภายนอก
↓
3. Constraints
Mapping Port ไปยัง Physical Pin และกำหนดข้อจำกัดที่เกี่ยวข้อง
↓
4. Synthesis
แปลง HDL ไปเป็น Logic / Primitive ที่ FPGA รองรับ
↓
5. Place & Route
เลือกว่าจะวาง Logic ที่ไหนและเดิน Routing อย่างไร
↓
6. Bitstream
สร้างข้อมูล Configuration สำหรับ FPGA
↓
7. Program
โหลด Configuration ไปยัง FPGA / Configuration Storage

สำหรับ Design ที่มี Clock ขั้นตอน Place & Route และ Timing Analysis มีความสำคัญมาก เพราะ Logic ที่ถูกต้องเชิง Boolean อาจยังไม่ทำงานที่ Clock Frequency ที่ต้องการ หากเส้นทางสัญญาณช้าเกินไป

Verilog ไม่ได้รันทีละบรรทัด

ตัวอย่างแรกของ Hackaday มี Input จาก Switch สองตัว แล้วสร้าง Output สองชุด:

  • OR
  • AND
Tang Nano 20K — Basic AND / OR Example
module top(output led1, output led, input sw0, input sw1);
    assign led  = ~(sw0 | sw1);
    assign led1 = ~(sw0 & sw1);
endmodule

สิ่งสำคัญคือสองบรรทัด assign ไม่ได้ทำงานแบบ:

“ทำ OR ก่อน → แล้วค่อยทำ AND”

แต่ Synthesis Tool จะสร้าง Logic Path สำหรับทั้งสอง Output และหลัง FPGA ถูก Configure แล้ว Logic ทั้งสองชุดก็อยู่ใน Hardware พร้อมกัน

ตอน Runtime ไม่มี CPU กำลังไล่อ่าน Verilog สองบรรทัดนี้: Verilog ถูกใช้ก่อน Runtime เพื่อบอก FPGA Tool ว่า Hardware ควรถูกสร้างเป็นแบบไหน

ทำไมต้องมีเครื่องหมาย ~?

LED บน Tang Nano 20K ที่ใช้ใน Example เป็นแบบ Active-low

กล่าวคือ:

Output Logic 0 → LED ติด

การ Invert ด้วย ~ จึงเกี่ยวกับวิธีต่อ LED บน Board ไม่ใช่กฎว่า AND หรือ OR บน FPGA ต้อง Invert เสมอ

Constraint File เชื่อม “ชื่อใน Code” กับ “Pin จริง” ยังไง?

Verilog รู้ว่ามี Signal ชื่อ led, led1, sw0 และ sw1

แต่ HDL ไม่รู้เองว่า LED จริงของ Tang Nano 20K ถูกต่อกับ Pin หมายเลขอะไร

Constraint File จึงทำหน้าที่ Mapping:

Logical Port → Physical FPGA Pin

Signal ใน Example FPGA Pin หน้าที่
led 15 LED Output
led1 16 LED Output
sw0 87 Switch Input
sw1 88 Switch Input
Tang Nano 20K — Example Pin Constraints
IO_LOC "led" 15;
IO_PORT "led" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3;

IO_LOC "led1" 16;
IO_PORT "led1" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3;

IO_LOC "sw1" 88;
IO_PORT "sw1" IO_TYPE=LVCMOS33 PULL_MODE=NONE BANK_VCCIO=3.3;

IO_LOC "sw0" 87;
IO_PORT "sw0" IO_TYPE=LVCMOS33 PULL_MODE=NONE BANK_VCCIO=3.3;
Constraint นี้ใช้กับ Tang Nano 20K Example นี้: ห้าม Copy Pin 15, 16, 87 และ 88 ไปใช้กับ FPGA Board รุ่นอื่น โดยไม่ตรวจ Schematic และ Pinout ของ Board นั้น

Tool เห็น Logic ของเราเป็นอะไร?

RTL schematic ของตัวอย่าง AND และ OR บน Tang Nano 20K
RTL View ของตัวอย่างง่าย ๆ ช่วยให้เห็นความสัมพันธ์ระหว่าง HDL กับ Logic ที่ Synthesis Tool ตีความจาก Design

GOWIN Tool สามารถแสดง Schematic ของ Logic ที่ได้จาก Design แม้ Workflow หลักจะไม่ได้เน้นการลาก Gate ด้วยมือทีละตัว

สำหรับ Design เล็ก Schematic ยังอ่านง่าย แต่เมื่อ Design ใหญ่ขึ้น การเขียน HDL จะ Scale ได้ดีกว่าการวาด Gate จำนวนมากด้วยมือ

Bitstream คืออะไร และทำไมปิดไฟแล้ว FPGA อาจลืม?

หลัง Synthesis และ Place & Route Tool จะสร้าง Bitstream สำหรับ Configure FPGA

Main Source อธิบายว่า เราสามารถโหลด Configuration ไปยัง FPGA เพื่อทดลองแบบ Volatile หรือเขียนลง Configuration Storage เพื่อให้ Board สามารถ Configure ใหม่ หลังเปิดเครื่องครั้งต่อไป

นี่ต่างจาก Flash Firmware ลง MCU: สิ่งที่เราโหลดเข้า FPGA คือข้อมูลที่กำหนดโครงสร้าง Logic / Routing ของ Hardware Fabric
Storage Capacity ของ Tang Nano 20K มีข้อมูลขัดกันใน Official Sipeed pages บางหน้า: Main Source และหน้าเฉพาะ Tang Nano 20K ระบุ 64 Mbits ขณะที่หน้าเปรียบเทียบ Tang บางเวอร์ชันระบุ 32 Mbits หาก Project ต้องพึ่งขนาด Flash จริง ให้ตรวจ Schematic / BOM / Board Revision ที่ถืออยู่ก่อน

ดู Workflow ตั้งแต่สร้าง Project ถึงรันบน Breadboard

Video ประกอบของ Hackaday เดินตั้งแต่การสร้าง Project, เขียน Logic, ใส่ Constraints, Build และทดสอบบน Hardware จริง

GOWIN IDE ใช้ทำอะไร?

Vendor Tool สามารถครอบคลุม Workflow หลัก ตั้งแต่ Project Setup ไปจนถึง:

  • HDL Editing
  • Synthesis
  • Constraint / FloorPlanner
  • Place & Route
  • RTL / Schematic View
  • Bitstream Generation
  • Programming Flow

Hackaday ใช้ GOWIN Tool เป็นฐานของตอนเริ่มต้น ก่อนจะไปดู Open-source Tools ในตอนอื่นของ Series

สำหรับ Beginner Vendor Flow มีข้อดีตรงที่ Pin Planning, Report และ Device Support อยู่ใน Environment เดียวกัน

Linux Installation: ปัญหาที่ผู้เขียน Hackaday เจอ

ผู้เขียนระบุว่า GOWIN Software สามารถรันบน Linux ได้ แต่เครื่องของเขาใช้ Distribution ที่ไม่ได้อยู่ใน Supported Distro จึงเจอปัญหา Dependency และ Library

ปัญหาที่เขาเจอรวมถึง:

  • libfreetype.so.6
  • Library จาก GOWIN ชนกับ System Library
  • ต้องปรับ LD_LIBRARY_PATH
  • FTDI Driver ของ Linux จับ Interface ที่ Programmer ต้องการใช้
นี่ไม่ใช่ขั้นตอนติดตั้ง Linux ที่ทุกคนต้องทำ: ผู้เขียนระบุเองว่า Fix เหล่านี้อาจช่วยหรือไม่ช่วยเครื่องอื่น และผู้ใช้ที่อยู่บน Supported Environment อาจไม่ต้องแก้เรื่องเหล่านี้เลย
Hackaday author's environment-specific udev rule
SUBSYSTEM=="usb", DRIVER=="ftdi_sio", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", ATTR{bInterfaceNumber}=="00", RUN+="/bin/sh -c 'echo $kernel > /sys/bus/usb/drivers/ftdi_sio/unbind'"
อย่าเพิ่ม udev Rule นี้เพียงเพราะใช้ Tang Nano 20K: ใช้เฉพาะเมื่อเข้าใจ Driver Conflict และเจอปัญหาประเภทเดียวกับ Environment ของผู้เขียน เพราะ Rule มีผลต่อการ Bind USB Driver ของระบบ

ไม่อยากใช้ Vendor IDE อย่างเดียว มี Open-source FPGA Tools ไหม?

มี ปัจจุบัน Project Apicula มี TangNano20K-specific Flow และ Open-source Toolchain สามารถประกอบจากเครื่องมืออย่าง:

  • Yosys
  • nextpnr-himbaechel
  • Project Apicula / gowin_pack
  • openFPGALoader

openFPGALoader Documentation ยังมี Board Flag:

tangnano20k

สำหรับ Tang Nano 20K โดยตรง

บทความนี้ไม่ทำ Open-source Toolchain Setup แบบ Step-by-Step: Main Source ตั้งใจจะลงรายละเอียดเรื่อง Open-source Tools ในตอนถัดไป และ Version / Device Option ของ Toolchain สามารถเปลี่ยนตาม Project Apicula และ nextpnr

แล้ว Tang Nano 20K “วิ่งกี่ MHz”?

นี่เป็นคำถามที่ตอบแบบ CPU ไม่ได้

Main Source อธิบายว่า Maximum Clock Rate ของ FPGA Design ขึ้นกับ Logic และ Routing อย่างมาก

ปัจจัยที่เกี่ยวข้อง เช่น:

  • Logic Depth
  • Routing Delay
  • Fan-out
  • Pipeline Design
  • Placement
  • Timing Constraints

ผู้เขียนกล่าวในภาพรวมว่า Device ทำงานในระดับ Low Hundreds of MHz ได้กับ Design ที่ Pipeline เหมาะสม แต่ไม่ได้ระบุ Guaranteed Fmax สำหรับ Project ทุกแบบ

อย่าเปลี่ยนประโยคนี้เป็น “Tang Nano 20K = 200 MHz”: Clock ที่ Design ของคุณผ่านจริง ต้องดูจาก Timing Report หลัง Synthesis / Place & Route ของ Design นั้น

ยังไม่มี FPGA ก็เริ่ม Digital Logic ได้

ตัวอย่างโปรเจกต์จำลองไฟจาก FPGA Bootcamp 0 รุ่นเดิมของ Hackaday
ภาพนี้มาจาก FPGA Bootcamp 0 รุ่นเดิมของ Hackaday ซึ่งใช้เรียน Digital Logic ผ่าน Browser ได้ และไม่ใช่ Tang Nano 20K Project โดยตรง

Hackaday ยังแนะนำ FPGA Bootcamp 0 สำหรับคนที่อยากทบทวน:

  • Boolean Logic
  • Combinational Logic
  • State Machine
  • แนวคิด Digital Design

ส่วนนี้เหมาะกับคนที่ยังไม่มี FPGA เพราะ Material เดิมบางส่วน สามารถเรียน Concept ผ่านเครื่องมือใน Browser ได้

Maker ได้อะไรจาก Tang Nano 20K และบทเรียนนี้?

1. เปลี่ยนจาก “เขียน Code” เป็น “ออกแบบ Hardware”

Syntax ของ Verilog ดูคล้าย Programming Language แต่ Mental Model ต่างกันมาก เพราะ Statement หลายชุดอธิบาย Hardware ที่ทำงานพร้อมกัน

2. Pinout เป็นส่วนหนึ่งของ Design

HDL ที่ถูกต้อง ยังไม่พอถ้า Constraint Mapping ผิด เพราะ Logic อาจไปออก Physical Pin ที่ไม่ได้ต่อกับอุปกรณ์ที่เราต้องการ

3. Build ผ่านยังไม่เท่ากับ Timing ผ่าน

Design ใหญ่ขึ้น ต้องสนใจ Place & Route และ Timing Closure ไม่ใช่เพียง Syntax Error

4. FPGA มี Memory หลายชนิด

Distributed RAM, Block RAM และ SDRAM ไม่ได้แทนกันได้แบบตรง ๆ ต้องเลือกตาม Capacity, Interface และ Timing ของ Design

5. MCU กับ FPGA ไม่จำเป็นต้องเป็นคู่แข่งกัน

งานจำนวนมากเหมาะกับการใช้ Software จัดการ Control Flow แล้วให้ FPGA ทำ Data Path หรือ Parallel Logic ที่ Hardware ทำได้ดีกว่า

FAQ: คำถามที่พบบ่อย

1. Tang Nano 20K คืออะไร?

เป็น FPGA Development Board ของ Sipeed ที่ใช้ GOWIN GW2AR-LV18QN88C8/I7

2. เลข 20K หมายถึง RAM 20 KB หรือไม่?

ไม่ ตัว FPGA มี Logic Resource ระดับ 20,736 LUT4 ไม่ได้หมายถึง RAM 20 KB

3. Tang Nano 20K มี LUT เท่าไร?

20,736 LUT4 ตามหน้าเฉพาะ Tang Nano 20K ของ Sipeed

4. มี Flip-Flop เท่าไร?

15,552 Flip-Flops

5. มี RAM เท่าไร?

Source ระบุ Shadow SRAM 41,472 bits, Block SRAM 828 Kbits และ SDR SDRAM 64 Mbits หรือ 8 MB ซึ่งเป็น Memory คนละประเภทกัน

6. 8 MB SDRAM คือ Block RAM หรือไม่?

ไม่ เป็น SDR SDRAM แยกจาก Block SRAM ภายใน FPGA Fabric

7. Tang Nano 20K มี CPU ใน FPGA หรือไม่?

Source ที่ใช้ในบทความนี้ไม่ได้ระบุ Hard CPU Core ใน GW2AR-18 ของ Tang Nano 20K แต่ FPGA สามารถใช้ Soft CPU Design ได้หากมี Implementation ที่เหมาะสม

8. Verilog คือ Programming Language หรือ Hardware Description Language?

ในบริบทนี้ใช้เป็น Hardware Description Language เพื่ออธิบาย Logic ที่ FPGA Tool จะนำไป Synthesize

9. assign สองบรรทัดทำงานทีละบรรทัดหรือไม่?

ไม่ Continuous Assignments อธิบาย Logic ที่อยู่และทำงานพร้อมกันใน Hardware หลัง Configure FPGA

10. Synthesis คืออะไร?

เป็นขั้นตอนที่แปลง HDL ไปเป็น Logic / Primitive ที่ FPGA Architecture รองรับ

11. Place & Route คืออะไร?

เป็นขั้นตอนวาง Logic ลง Resource จริงของ FPGA และกำหนดเส้นทางสัญญาณระหว่าง Resource เหล่านั้น

12. Constraint File จำเป็นไหม?

สำหรับ Design ที่ต่อกับ Hardware ภายนอก ต้องมีข้อมูล Mapping Logical Ports ไปยัง Physical Pins และข้อกำหนดที่เกี่ยวข้อง

13. ทำไม LED Example ต้องใช้เครื่องหมาย ~?

เพราะ LED ที่ใช้ใน Example เป็น Active-low จึงติดเมื่อ Output เป็น Logic Low

14. Tang Nano 20K วิ่งสูงสุดกี่ MHz?

Source ไม่ให้ Clock Speed เดียวสำหรับทุก Design เพราะ Fmax ขึ้นกับ Logic, Routing และ Timing ของ Project

15. ใช้ GOWIN IDE อย่างเดียวหรือไม่?

ไม่ ปัจจุบันมี Open-source Flow เช่น Yosys, nextpnr-himbaechel, Project Apicula และ openFPGALoader สำหรับ Tang Nano 20K ด้วย

16. Linux ทุกเครื่องต้องเพิ่ม udev Rule ตาม Hackaday ไหม?

ไม่ ผู้เขียนระบุว่าเป็น Workaround สำหรับ Environment ของเขา และเครื่องอื่นอาจไม่ต้องใช้เลย

17. Tang Nano 20K มี HDMI และ microSD ไหม?

มี HDMI Interface, 40-pin RGB LCD Connector และ TF / microSD Slot ตาม Sipeed Documentation

18. ยังไม่มี FPGA สามารถเริ่มเรียนได้ไหม?

ได้ Hackaday แนะนำ FPGA Bootcamp 0 สำหรับทบทวน Digital Logic โดย Material บางส่วนใช้เครื่องมือใน Browser และไม่ต้องมี FPGA จริง

FPGA มีหลายขั้น แนะนำอ่านต้นฉบับควบคู่กัน

หากเพิ่งเริ่ม FPGA แนะนำเปิดบทความ Hackaday, Sipeed Documentation และ Video ควบคู่กัน เพราะแต่ละ Source ช่วยคนละด้าน: Concept, Board-specific Information และ Workflow จริงใน Tool

References / แหล่งข้อมูลต้นฉบับ

FPGA ยากตรงวิธีคิด ไม่ใช่เพราะต้องเริ่มจากวงจรใหญ่

ตัวอย่าง AND / OR เพียงไม่กี่บรรทัด อาจดูง่ายมาก แต่ช่วยให้เข้าใจแนวคิดสำคัญที่สุดของ FPGA: HDL กำลังอธิบาย Hardware, Constraints เชื่อม Hardware นั้นกับ Board จริง และ Toolchain เปลี่ยน Design ไปเป็น Configuration ที่ FPGA ใช้งานได้

หากกำลังเริ่ม FPGA, Digital Logic หรือ Embedded Project สามารถสอบถามทีม Globalbyte เรื่อง Development Board, Module และ Maker Accessories ที่เหมาะกับ Project ได้

Disclaimer: บทความนี้เป็นการสรุปและเรียบเรียงจากแหล่งข้อมูลภาษาอังกฤษ อาจมีความคลาดเคลื่อน กรุณาตรวจสอบ Source ต้นฉบับก่อนลงมือทำ ข้อมูล FPGA, Toolchain, IDE และ Open-source Support สามารถเปลี่ยนได้ตาม Software Version และ Board Revision Official Sipeed pages ที่ตรวจพบมีข้อมูลบางรายการไม่ตรงกัน เช่นจำนวน PLL และขนาด Configuration Flash ระหว่างหน้าเฉพาะ Tang Nano 20K กับหน้าตารางเปรียบเทียบบางหน้า ดังนั้นหากค่าเหล่านี้มีผลต่อ Design ให้ตรวจ Datasheet, Schematic, BOM และ Board Revision ที่ใช้งานจริงอีกครั้ง ค่า Clock Frequency ของ FPGA ไม่ใช่ Specification เดียวที่ใช้ได้กับทุก Design เพราะ Maximum Frequency ขึ้นกับ Logic, Routing, Pipeline และ Timing Closure ของ Project นั้น Pin 15, 16, 87 และ 88 เป็น Constraint จาก Example ของ Tang Nano 20K และห้ามนำไปใช้กับ Board รุ่นอื่นโดยไม่ตรวจ Pinout Linux library และ udev workaround เป็นวิธีที่ผู้เขียน Hackaday ใช้กับ Environment ของตนเอง ไม่ใช่ขั้นตอนบังคับสำหรับ Linux ทุกระบบ บทความนี้ไม่ได้ระบุราคา, Stock, Thailand Availability, Power Consumption, Guaranteed Fmax, SDRAM Bandwidth หรือ Performance ที่ Source ไม่ได้ยืนยัน

 

แท็ก


Blog posts