# FPGA Design and Development

- [Verilog HDL via Vivado IDE](/fpga-design/basic-fpga.md): LAB00 : Programming digital gate & component by Verilog HDL
- [LAB1: Setting Environment and Create Project](/fpga-design/basic-fpga/step-1-setting-environment-and-create-project.md): การติดตั้งโปรแกรมและการสร้างโปรเจคในการทำงาน
- [Create Vivado Project](/fpga-design/basic-fpga/step-1-setting-environment-and-create-project/create-vivado-project.md): การสร้างโปรเจค Vivado
- [LAB2: Hardware Description Language Work Flow](/fpga-design/basic-fpga/untitled.md): ขั้นตอนนี้จะนำความรู้เบื้องต้นจากวิชาตรรกศาสตร์มาสร้างโมดูลที่ใช้งานจริงๆ เพื่อทำความเข้าใจ Syntax ที่เรียนไป จะได้
- [Simulation code](/fpga-design/basic-fpga/untitled/step-2.2-simulation-code.md): ทดสอบโมดูลที่เขียน
- [LAB3: Design HDL Project](/fpga-design/basic-fpga/step-3-design-hdl-project.md): ขั้นตอนนี้จะทำการทดลองเกี่ยวกับการทำโมดูล OR และ NOT gate เพื่อมารวมกับโมดูล AND gate ที่เขียนบน step 1 แสดงผล ในไฟล์ Simulation และการเขียนโมดูลรวมเพื่อนำไปต่อยอดในการทำโมดูลต่างๆ
- [Top Level Design](/fpga-design/basic-fpga/step-3-design-hdl-project/step-3.2-top-level-design.md): หัวข้อนี้จะเป็นการรวมโมดูล Logic gate ที่เขียนไปข้างต้นเป็น S-R Flip flop 1 ตัว ดังรูป
- [Top-level Simulation](/fpga-design/basic-fpga/step-3-design-hdl-project/step-3.3-top-level-simulation.md): ส่วนนี้จะเป็นการสมมติค่าเพื่อให้ตัวโมดูลตัวที่เราเขียนมาทำงานร่วมกัน สามารถทำงานได้ส่วนนี้จะเป็นการสมมติค่าเพื่อให้ตัวโมดูลที่เราเขียนมาสามารถทำงานได้ ดังนั้นจึงเปรียบเสมือนการใส่ค่าหรือข้อมูลลงบน IC
- [LAB4: Asynchronous VS Synchronous Circuit](/fpga-design/basic-fpga/step-4-asynchronous-vs-synchronous-circuit.md): ในการทดลองนี้คือ การบอกความแตกต่างของ Asynchronous กับ Synchronous circuit
- [Simulation Synchronous counter](/fpga-design/basic-fpga/step-4-asynchronous-vs-synchronous-circuit/step-4.2-simulation-synchronous-counter.md)
- [C/C++ Programming on Ultra96v2 FPGA Board](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board.md)
- [Application C/C++ on Ultra96v2 Part 1](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-1.md): นำภาษา C/C++ ไปประยุกต์บนบอร์ด FPGA Ultra96v2 ด้วยการเร่งประสิทธิภาพของ AI ที่ใช้บนระบบไร้คนขับ
- [Design Overview](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-1/design-overview.md): มาทำความรู้จักส่วนประกอบและโครงสร้างของสิ่งที่จะใช้งานกันเถอะ
- [Step 1 - Burn the image to SD card](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-1/step-1-burn-the-image-to-sd-card.md)
- [Step 2 - Bring up Ultra96v2](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-1/step-2-bring-up-ultra96v2.md): นำ SDcard ที่เราเตรียมไว้เสร็จสิ้น ไปใส่ในบอร์ด FPGA กัน
- [Step 3 - Installing the Vitis-AI runtime packages](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-1/step-3-installing-the-vitis-ai-runtime-packages.md): ทำการเตรียมความพร้อมที่จะใช้งาน Vitis-AI บนบอร์ด FPGA
- [Application C/C++ on Ultra96v2 Part 2](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-2.md): ทำความเข้าใจ code C/C++ และการประยุกต์ใช้งานโปรแกรมและ AI
- [STEP 1 : Setting auto boot Wifi](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-2/step-1-setting-auto-boot-wifi.md): ขั้นตอนนี้จะทำให้เราสามารถใช้งาน Command เดิมๆ ทุกๆครั้งที่ทำการ boot ขึ้นมาใหม่ได้
- [STEP 2 : How to working on Embedded](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-2/step-2-how-to-working-on-embedded.md): ทำงานกับ Embedded board ในทางโปรแกรมยังไงให้ง่ายและมีประสิทธิภาพ
- [STEP 3 : How to run the test code](/fpga-design/c-c++-programming-on-ultra96v2-fpga-board/application-c-c++-on-ultra96v2-part-2/step-3-how-to-run-the-test-code.md): ทำการรัน Application point pillar ด้วย VScode ผ่านการ SSH
