จุฬาลงกรณ์มหาวิทยาลัย คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมคอมพิวเตอร์ 2110-362 MICRO INTERF LAB |
ชื่อ............................................. เลขประจำตัว................................ หมายเลขเครื่อง............................ วันที่........................................... |
1. โปรแกรมและเครื่องมือในการ Synthesis วงจรจาก Verilog HDL |
วัตถุประสงค์
ทฤษฎีที่เกี่ยวข้อง
การปฎิบัติในวิชานี้จะใช้โปรแกรมชุด Foundation ของบริษัท Xilinx สำหรับการสังเคราะห์ (Synthesis) วงจรจริงจาก Verilog HDLในการเริ่มต้นใช้งานให้เรียกโปรแกรม Project Manager โดยใช้ Icon
(ที่ Desktop) เมื่อเข้าสู่โปรแกรมให้เลือก Create A New Project เพื่อสร้าง Project ใหม่ดังรูปที่ 1.
รูปที่ 1.
จากนั้นให้ Click ที่ OK และกรอกรายละเอียดชื่อ Project และ Directory ที่จะใช้เก็บ Project ลงใน Dialog New Project ดังแสดงในรูปที่ 2 ทั้งนี้ชื่อ (Name) ของ Project จะถูกนำมาสร้างเป็น Folder ย่อยใน Directory ที่กำหนด เพื่อใช้สำหรับเก็บข้อมูลที่เกี่ยวข้องกับ Project นั้น เช่น ถ้า Name เป็น Lab1 และ Directory เป็น C:\Users\Student โปรแกรมจะสร้าง Folder C:\Users\Student\Lab1 เพื่อเก็บข้อมูลของ Project
รูปที่ 2.
ในส่วนของ Flow ให้เลือก HDL เพื่อสร้างวงจรจาก Verilog HDL เมื่อ Click ที่ OK จะได้ดังรูปที่ 3
รูปที่ 3.
ในส่วน Flow จะแสดงขั้นตอนต่างๆ ในการสร้างวงจร ซึ่งประกอบด้วย
ตัวอย่างการ Design ด้วย Verilog HDL
ให้เลือก HDL ใน Design Entry เพื่อเข้าสู่ HDL Editor ซึ่งจะปรากฏ Dialog ของ HDL Editor ขึ้นมานิสิตอาจจะเลือก Use HDL Design Wizard เพื่อเข้าสู่ Design Wizard ให้นิสิตทำตามขั้นตอนที่แสดงในหน้าจอต่อไปเรื่อยๆ โดยให้เลือกภาษา Verilog และใช้ Name ชื่อ Test จากนั้นให้ใส่ข้อมูลของ Port ต่างๆ ดังนี้ (รูปที่ 4)
รูปที่ 4
Name Direction Clock Input Reset Input Signal Output เมื่อ Click Finish ตัว Design Wizard จะทำการ Generate โครงร่างของ Verilog ให้ตังนี้
1 2 3 4 5 6 7 8 9 10 11 module Test (Clock, Reset, Signal) ; input Clock ; input Reset ; output Signal ; // add your declarations here // add your code here endmoduleให้นิสิตทำการแก้ไข Verilog Code ที่ได้โดยการเพิ่มเติมต่างๆ ดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 module Test (Clock, Reset, Signal) ; input Clock ; input Reset ; output Signal ; // add your declarations here reg [20:0] Count; assign Signal=Count[20]; // add your code here always @(posedge Clock or negsedge Reset) begin if (Reset==0) Count=0; else Count = Count+1; end endmoduleจากนั้นให้ทำการ Save เพื่อบันทึก Code ลงใน File ชื่อ Test.V (ชื่อ Module และ ชื่อ File จะต้องเป็นชื่อเดียวกันเสมอ)
จากนั้นให้เกลับมาที่ Menu Synthesis ใน Project Manager เลือกคำสั่ง Add HDL Source File(s) เลือก Test.V จาก Dialog ซึ่งเมื่อ Project Manager ทำการอ่าน File เสร็จแล้ว ปุ่มในส่วนการ Synthesis และ Implementation ของ Flow จะถูก Enable
ให้ทำการ Synthesis โดยการเลือกที่ปุ่ม Synthesis ใน Flow ซึ่งระบบจะปรากฎ Dialog Synthesis/Implementation Setting ให้เลือก Top Level (ซึ่งในที่นี้คือ Module Test) และทำการเลือก Chip ที่จะใช้ซึ่งในที่นี้คือ SPARTAN เบอร์ S20VQ100 พร้อมกับให้ Check Edit Synthesis/Implementation constraints เพื่อทำการระบุขาสัญญาณที่ต่อเชื่อมบนบอร์ดทดลองด้วย (นิสิตอาจจะปรับ Option ในการ Synthesis โดยการเลือก SET ที่ Systhesis Settings ซึ่งจะเลือกได้ว่าต้องการให้การ Optimize เป็นไปในลักษณะของ Speed หรือ Area และ เลือก Effort ในการประมวลผล)
รูปที่ 5.
เมื่อเลือก Run โปรแกรมจะทำการประมวลผลและปรากฎ Dialog ให้ใส่ข้อกำหนด (Constraints) ให้เลือกที่ Tab Port และกำหนดขาของ Chip ให้กับสัญญาณใน Design (หากไม่กำหนดสัญญาณจะถูก Assing เองโดยอัตโนมัติ ซึ่งจะไม่สามารถทำงานร่วมกับบอร์ดทดลอง ซึ่งได้มีการต่อวงจรต่างๆเข้ากับขาของ Chip แล้ว) จึงต้องมีการกำหนด Port เพื่อให้สัญญาณจากการ design ไปแสดงยังอุปกรณ์ที่ต่อไว้ตามต้องการ (ให้ดูแผนผังวงจรที่แจกให้ประกอบด้วย)
Port Pad Loc Clock P27 Signal P10 Reset P20 จากนั้น Click ที่ Implementation เพื่อทำการ Implement ขั้นตอนนี้จะใช้เวลานานพอสมควร ซึ่งจะแบ่งเป็นส่วนย่อยๆ ถ้าส่วนใดทำเสร็จก็จะมีคำว่า Complete แสดง (ผลการประมวลจะแสดงใน Tab Report ซึ่งสามารถเปิดดูได้)
เสร็จแล้วให้ทำการ Program โดย click ที่ Programming เพื่อทำการโปรแกรมลงบน FPGA ถ้าการทำงานถูกต้องควรจะเห็น LED กระพริบ ทั้งนี้ระบบการโปรแกรมที่ใช้ในห้องปฏิบัติการคือ Hardware Debugger
ให้นิสิตลองแก้ไข Code เพื่อให้ LED กระพริบด้วยความถี่ประมาณ 1 วินาที (ติด 0.5 วินาที ดับ 0.5 วินาที)
การทดลอง
หมายเหตุ