บทที่ 3 บทความแนะนำขั้นตอนการสร้างโปรเจกต์และรันโปรเจกต์ลงบอร์ด ALINX AX7010
Last updated
Last updated
บทความนี้แนะนำขั้นตอนการสร้างโปรเจกต์ใน Vivado 2023.1 ตั้งแต่เริ่มต้นจนถึงการรันโปรแกรมบนบอร์ด ALINX AX7010 โดยใช้โค้ดตัวอย่างที่มาพร้อมกับบอร์ดในการรันโปรเจกต์ เพื่อให้คุณสามารถสร้างโปรเจกต์และปรับแต่งวงจรได้ตามต้องการ
มีขั้นตอนดังนี้
เข้าโปรแกรม Vivado 2023.1 จากนั้นเลือก Create New Project เพื่อสร้างโปรเจกต์ใหม่ แล้วกด Next
ตั้งชื่อโปรเจกต์ที่ช่อง Project name จากนั้นเลือกที่ตำแหน่งที่ต้องการจะเก็บโฟลเดอร์ของโปรเจกต์นี้ที่ช่อง Project location
เลือก RTL Project เพื่อออกแบบในระดับ Register Transfer Level (RTL) หรือออกแบบลอจิก
เลือกภาษาที่ต้องการใช้ในการออกแบบวงจร ในการออกแบบครั้งนี้จะใช้ภาษา Verilog จากนั้นกด Next เพื่อดำเนินการต่อ
เลือกบอร์ดที่ใช้ในการออกแบบ ซึ่งก็คือบอร์ด ALINX AX7010 ที่ใช้ชิป Zynq™ 7000 SoC XC7Z010 ดังนั้นให้เลือก Family เป็น Zynq-7000, Package เป็น clg400, Speed เป็น -1 และเลือกรุ่นที่ใช้เป็น XC7Z010
เมื่อเสร็จสิ้นขั้นตอนที่ 5. จะได้หน้าสำหรับการแก้ไขโปรเจกต์นี้ ซึ่งหมายความว่าสร้างโปรเจกต์เรียบร้อยแล้ว
มีขั้นตอนดังนี้
เลือก Add Sources เพื่อเพิ่มโค้ดที่ใช้ในวงจร
เลือก Add or create design sources เพื่อเพิ่ม/สร้างไฟล์โค้ด
แบ่งการยกตัวอย่างออกเป็น 2 แบบ คือ เพิ่มไฟล์โค้ดและสร้างไฟล์โค้ด
เพิ่มไฟล์โค้ด สำหรับในกรณีที่มีไฟล์โค้ดอยู่แล้วสามารถเพิ่มโค้ดได้โดยคลิกที่ Add File
เลือกที่อยู่ที่เก็บไฟล์โค้ดไว้ จากนั้นเลือกไฟล์ที่ต้องการแล้วกด OK
เมื่อได้ไฟล์โค้ดที่ต้องการแล้ว กด Finish
สร้างไฟล์โค้ด สำหรับในกรณีที่ไม่มีไฟล์โค้ด คลิกที่ Create File
เลือกภาษาที่ใช้ในการเขียนโค้ด ตั้งชื่อไฟล์ และเลือกตำแหน่งที่จะเก็บไฟล์ จากนั้นกด Finish
ตั้งชื่อ Module แล้วกด OK จากนั้นกด YES
กด PROJECT MANAGER กดเปิด Design Sources แล้วกดดับเบิลคลิกที่ Key เพื่อดูไฟล์โค้ดที่เราสร้าง/เพิ่มเข้ามา
ในกรณีที่ยังไม่มีไฟล์โค้ด ให้เข้าไปคัดลอกไฟล์โค้ดตัวอย่างที่มากับบอร์ดโดยไปที่โฟลเดอร์ที่เก็บ course_s1_fpga ไว้จากนั้นเลือก 06_key > auto_create_project > src > design แล้วเปิดไฟล์ key_test.v
คัดลอกโค้ดในไฟล์ key_test.v จากนั้นนำมาวางที่ไฟล์ key.v ในโปรแกรม Vivado แล้วกด Save
ในหัวข้อนี้ เราจะต้องกำหนดให้ขาเข้า (Input) ขาออก (Output) ของไฟล์ key.v ให้เชื่อมต่อกับขาบน บอร์ด FPGA โดยใช้ไฟล์ .xdc ซึ่งไฟล์นี้เป็นไฟล์ที่ใช้สำหรับกำหนดขาเชื่อมต่อต่างๆใน Vivado
**สามารถดูรายละเอียดของขาเชื่อมต่อต่างๆ บนบอร์ดได้จากเอกสาร ALINX AX7010 User Manual
มีขั้นตอนดังนี้
กด Open Elaborated Design เพื่อกำหนดพอร์ต I/O และตรวจสอบการเชื่อมต่อของลอจิกภายใน (Netlist) ของวงจร จากนั้นกด OK เพื่อดำเนินการต่อ
กด Window แล้วเลือก I/O Ports
หน้าการตั้งค่า I/O Port จะแสดงขึ้นมาในเมนูด้านล่าง ให้ตั้งค่า Package Pin และ I/O std ดังนี้
ในโปรเจกต์ตัวอย่างในที่นี้ผลลัพธ์ของวงจรคือ เมื่อกดปุ่ม (Key) บนบอร์ดจาก ไฟ LED จะสว่างขึ้น ดังนั้น I/O Port ที่ต้องกำหนดจึงมี LED และ Key ทั้งหมด 4 ปุ่ม และสัญญาณนาฬิกา (Clock) ซึ่ง Package Pin และ I/O std ที่ตั้งค่าในโปรเจกต์นี้สามารถดูได้จากส่วน Pin Number และ Power Supply ของหัวข้อที่ต้องการตั้งค่าในเอกสาร ALINX AX7010 User Manual เช่น การตั้งค่าสำหรับ LED สามารถหาได้ในหัวข้อ ZYNQ ProgrammableLogic (PL) peripherals > User LEDs
LED
KEY
Clock
กด Save (Ctrl+S) และตั้งชื่อไฟล์ จากนั้นกด OK
กด PROJECT MANAGER แล้วเลือก Constraints > constrs_1 > key.xdc (target) เพื่อดูขาเชื่อมต่อที่เรากำหนดไว้
แนะนำรูปแบบพื้นฐานของการเขียน XDC (Xilinx Design Constraints)
พอร์ต I/O ทั่วไปจำเป็นต้องกำหนดหมายเลขพิน (Pin number) และมาตรฐานระดับสัญญาณ (Level Standard) หรือระดับแรงดันไฟฟ้า
การกำหนดขาเชื่อมต่อ (Pin number) มีดังนี้
set_property PACKAGE_PIN "pin number" [get_ports "Port name"]
การกำหนดระดับสัญญาณ (level signal) มีดังนี้:
set_property IOSTANDARD "Level Standard" [get_ports "Port Name"]
เมื่อกำหนด Package Pin และ I/O std ใน I/O Ports โปรแกรม Vivado จะกำหนดขาเชื่อมต่อ (Pin number) และสัญญาณระดับ (level signal) ในไฟล์ .xdc ทั้งหมดโดยอัตโนมัติ
ข้อควรระวัง ใช้ตัวอักษรใหญ่-เล็กอย่างถูกต้อง ชื่อพอร์ตต้องตรงกับชื่อในไฟล์โค้ดเท่านั้น
นอกเหนือจากการกำหนดขาเชื่อมต่อแล้ว การออกแบบ FPGA ยังมีข้อกำหนดที่สำคัญอีกอย่างหนึ่งคือการกำหนดสัญญาณนาฬิกา ในที่นี้จะใช้ Constraints Wizard เพื่อสาธิตวิธีการกำหนดสัญญาณนาฬิกา
มีขั้นตอนดังนี้
กด Run Synthesis
กด OK และเมื่อ Synthesis Completed แล้วเลือก Cancel เนื่องจากยังไม่ต้องการ Run Implementation
กด Constraints Wizard แล้วเลือก Next
ในการออกแบบนี้จะตั้งค่าความถี่ (Frequency) ของสัญญาณนาฬิกา (Clock) เป็น 50.000 MHz แล้วกด Skip to Finish จากนั้นเลือก Finish
เมื่อตั้งค่าเสร็จสิ้นแล้วกดเข้ามาดูที่ไฟล์ key.xdc จะได้ค่าดังนี้
“create_clock -period 20.000 -name clk -waveform {0.000 10.000} [get_ports clk]”
จากนั้นให้กด Save
รายละเอียดการกำหนดสัญญาณนาฬิกา (Clock) มีดังนี้
create_clock -period “Clock period” -name “Port name” -waveform {“Rising edge timing” “Falling edge timing”} [get_ports “Port name”]
Bit file คือวงจร FPGA ที่ออกแบบสมบูรณ์แล้วและแปลงให้อยู่ในรูป Bit File เพื่อนำไปใช้สำหรับโปรแกรมลงบนบอร์ด FPGA ให้บอร์ดทำงานตามที่ออกแบบไว้
มีขั้นตอนดังนี้
ไปที่เมนู PROGRAM AND DEBUG เลือก Generate Bitstream จากนั้นกด OK
เพิ่มเติม สามารถกด Generate Bitstream ได้เลยโดยไม่ต้องกด Synthesis และ Implement เนื่องจากการกด Generate Bitstream จะรัน Synthesis และ Implement ให้อัตโนมัติ
หากไม่พบข้อผิดพลาด จะปรากฏหน้าจอ Bitstream Generation Completed กด OK เพื่อดำเนินการต่อ
แต่หากมีข้อผิดพลาด สามารถดูรายละเอียดของข้อผิดพลาดได้ที่หน้า Messages
ในการดาวน์โหลด Bit file ลงบอร์ด สามารถอ่านขั้นตอนได้ในบทที่ 2 เรื่อง บทความสอนการติดตั้งและการรันโปรเจกต์ตัวอย่าง ในหัวข้อ สอนการรันโปรเจกต์ตัวอย่าง
เมื่อทำตามขั้นตอนและดาวน์โหลดไฟล์ลงบอร์ดเสร็จเรียบร้อย เมื่อดูผลลัพธ์จากบอร์ดจะได้ดังนี้
จะได้ดังรูปนี้
ในหัวข้อนี้จะยกตัวอย่างการแก้ไขไฟล์โค้ด เพื่อสอนวิธีการแก้ไขโค้ดเมื่อต้องการปรับเปลี่ยนการทำงานของวงจร
โดยมีขั้นตอนดังต่อไปนี้
ไปที่ไฟล์โค้ด key.v และแก้ไขโค้ดตามที่ต้องการ ตัวอย่างการแก้ไขในหัวข้อนี้ คือการเปลี่ยนรูปแบบการทำงานเดิม โดยแก้ไขการทำงานดังตารางด้านล่างนี้
เมื่อแก้ไขโค้ดเรียบร้อย จากนั้นกด Save
จากนั้น Generate Bitstream เพื่อสร้าง Bit File สำหรับโปรแกรมลงบอร์ด และเมื่อดาวน์โหลดไฟล์ลงบอร์ดเสร็จเรียบร้อย จะได้ผลลัพธ์ดังนี้
จากหัวข้อที่กล่าวมาทั้งหมดนี้ เพียงพอสำหรับให้ผู้ใช้สร้างและรันโปรเจกต์ตัวอย่างได้ด้วยตนเอง นอกจากนี้ ผู้ใช้ยังสามารถศึกษาหรือลองรันโปรเจกต์ตัวอย่างอื่น ๆ ที่มาพร้อมกับบอร์ด ALINX AX7010 เพื่อเสริมความเข้าใจได้อีกด้วย