จุฬาลงกรณ์มหาวิทยาลัย

คณะวิศวกรรมศาสตร์

ภาควิชาวิศวกรรมคอมพิวเตอร์

2110-362 MICRO INTERF LAB

ชื่อ.............................................

เลขประจำตัว................................

หมายเลขเครื่อง............................

วันที่...........................................


1. โปรแกรมและเครื่องมือในการ Synthesis วงจรจาก Verilog HDL

วัตถุประสงค์

  1. เพื่อให้นิสิตคุ้นเคยกับขั้นตอนของการออกแบบและสังเคราะห์วงจรด้วย Verilog
  2. เพื่อให้นิสิตได้หัดใช้โปรแกรมในการ Synthesis วงจรจาก Verilog
  3. เพื่อให้นิสิตได้ฝึกฝนทักษะในการใช้ FPGA

ทฤษฎีที่เกี่ยวข้อง

การปฎิบัติในวิชานี้จะใช้โปรแกรมชุด 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 วินาที)

การทดลอง

  1. สร้างวงจร Binary Counter ขนาด 4 บิต ซึ่งจะนับทีละ 1 วินาทีโดยประมาณ และแสดงผลออกมาที่ LED บน Port DC1 ของบอร์ดทดลอง (D[1-8]) ทั้งนี้ กำหนดให้ปุ่ม Reset เป็นการ Clear Counter ให้เริ่มนับที่ 0 ใหม่
  2. สร้างวงจร “ลูกเต๋า” โดยใช้ปุ่ม Reset เป็นอินพุต เมื่อมีการกดปุ่ม วงจรจะแสดงเลข Unary ระหว่าง 1-6 อย่าง “Random” ออกมาที่ LED บน Port DC1 ของบอร์ดทดลอง (D[1-8])

หมายเหตุ