สรุปการนำเสนอ วันที่ 17 มิ.ย. 2553
"Introduction to Verilog HDL"
นำเสนอโดย มณฑล ไวยครุท
การทดลองที่ได้นำเสนอ
เป็นตัวอย่างการสร้างวงจรดิจตอลบน FPGA ซึ่งใช้ชิป FPGA ตระกูล Spartan-3E ของ Xilinx และใช้โปรแกรม Xilinx ISE 9.2i ในการสังเคราะห์วงจร สำหรับตัวอย่างการสร้างวงจรที่นำเสนอเป็นการสร้างวงจรหารความถี่ จากความถี่ 50 MHz ให้มีความถี่ 5 Hz โดยใช้ IP Core ของ Xilinx ที่ชื่อว่า DCM (Digital Clock Manager) นำมาใช้งานร่วมกับการสร้างวงจรที่โปรแกรมด้วยภาษา Verilog HDL ซึ่งมีบล็อกไดอะแกรมดังรูป
จากรูปวงจรจะมีการทำงานแบ่งออกเป็น 3 ส่วน คือ
1. DCM เป็นวงจรหารความถี่จากสัญญาณ clk 50 MHz ลง 10 เท่า คือวงจรจะให้ค่า Output มีความถี่เท่ากับ 5 MHz
2. DIV1_1000 เป็นวงจรหารความถี่ในชุดที่ 2 โดยการนำสัญญาณ clk ความถี่ 5 MHz มาหารลง 1000 เท่า ซึ่ง Output ของวงจรในส่วนนี้จะให้ความถี่เท่ากับ 5 KHz
3. DIV2_1000 เป็นวงจรหารความถี่ในชุดที่ 3 โดยการนำสัญญาณ clk ความถี่ 5 KHz มาหารลง 1000 เท่า ซึ่ง Output ของวงจรในส่วนนี้จะให้ความถี่เท่ากับ 5 Hz ซึ่งเป็น Output ของระบบไปใช้งาน
ขั้นตอนการทดลอง
1. เริ่มต้นการใช้งาน WebPack ISE ดับเบิ้ลคลิ๊กที่ไอคอน Xilinx ISE 9.2i
2. Project Name: Counter (ชื่อโปรเจคที่ต้องการสร้าง)
3. เลือก Next
4. เติมรายละเอียดดังนี้ ดังรูป
Family : Spartan3E
Device : XC3S500E
Package : FG320
Speed Grade : -4 (10 nano sec : ns.)
Top-Level Module Type : HDL
Synthesis Tool : XST (VHDL/Verilog)
Simulation : ISE Simulation (VHDL/Verilog)
Preferred Language : Verilog
5. เลือก Next
6. เลือก New Source ใช้เมาส์คลิกไปที่ Verilog Module และพิมพ์ชื่อลงใน File Name ชื่อ
Div1_1000
7. เลือก Next จะปรากฏหน้าต่าง Define Module ให้กำหนด ชื่อพอร์ท ทิศทางของพอร์ท ดังนี้
clk_50M : input
rst : input
clk_out : output
8. เลือก Next จะปรากฏหน้าต่าง ที่รายงาคุณสมบัติเบื้องต้นของ Source และเลือก Finish
9. เลือก Next
10.เลือก Finish ดังรูป
11.ทำการเขียนโปรแกรมต่อจาก output (copy file จากไฟล์ชื่อ Div1_1000) ดังตัวอย่าง
module Div1_1000(clk_50M, rst, clk_out);
input clk_50M;
input rst;
output reg clk_out;
reg [9:0] count;
always @ (posedge clk_50M or negedge rst) begin
if(!rst)
clk_out = 0;
else
if(count != 1000)
count = count + 1;
else begin
count = 0;
clk_out = !clk_out;
end
end
endmodule
12. ตรวจสอบความถูกต้อง คิกเมาส์ ที่เครื่องหมายบวกหน้า Implement Design ในหน้าต่าง Processes for Source จะปรากฏดังรูป
13. ทำการ Simulation โดยคลิกขวาที่ Div1_1000 ของหน้าต่าง Source เลือก New Source…. ดังรูป
14. จะปรากฏหน้าต่าง Select Source Type เลือก Test Bench Waveform พิมพ์ชื่อลงใน File Name : sim_Div1 คลิก Next ----> Next ----> Finish
15. จะปรากฏหน้าต่าง initialize Timing และกำหนดค่าดังรูป คลิก Finish
16. จะปรากฏหน้าต่าง และกำหนดค่าที่พอร์ท rst_in ดังรูป
17. ทำการ Save และในหน้าต่าง Source เลือก Behavioral Simulation ซึ่งจะเห็นไฟล์ชื่อ sim_Div1.tb
18. ทำการเลือก sim_Div1.tbw ในหน้าต่าง Process คลิกเครื่องหมายบวกที่ Xilinx Simulation ดับเบิ้ลคลิกที่ Simulate Behavioral Model จะปรากฏผลการ Simulation ดังรูป
19. ทำการเขียนโปรแกรม Div2_1000 โดยกลับไปที่หน้าต่าง Synthesis/Implementation คลิกขวาที่ Div1_1000 ของหน้าต่าง Source เลือก New Source
20. ทำการตั้งชื่อ Div2_1000 และทำการเขียนโปรแกรม (copy file จากไฟล์ชื่อ Div2_1000) และ Save
21. ทำการเรียก DCM โดย คลิกขวาที่ Div1_1000 ของหน้าต่าง Source เลือก New Source
22. เลือก IP(Coregen & Architecture Wizard) พิมพ์ชื่อ File name : Gen_5M และคลิก Next ดังรูป
23. ในหน้าต่าง Select IP เลือก Single DCM v9.1i จากหัวข้อ FPGA Features and Design ---> Clocking ---> Spatan-3 แล้วคลิก Next จนกระทั่ง Finish
24. ในหน้าต่าง Xilinx Clocking Wizard-General Setup ใส่ค่าตามรูป และคลิก Next จนกระทั่ง Finish
25. ทำการเชื่อมต่อวงเข้าด้วยกันด้วยการเขียนโปรแกรม คลิกขวาที่ Div1_1000 ของหน้าต่าง Source เลือก New Source
26. ทำการตั้งชื่อ Topmodel และทำการเขียนโปรแกรม (copy file จากไฟล์ชื่อ Topmodel) และ Save
27. ทำการ Simulation โดยคลิกขวาที่ Topmodel และทำตามข้อที่ 13-18
28. ทำการโปรแกรมลงชิป(Hardware Configuration) คลิกขวาที่ Topmodel ของหน้าต่าง Source เลือก New Source
29. เลือก ไฟล์ UCF พิมพ์ชื่อ File Name : map Next จนกระทั่ง Finish
30. ที่ map.ufc และทำการเขียนโปรแกรม (copy file จากไฟล์ชื่อ map) ลงใน User Constraint File และ Save
31. ทำการสร้าง Configuration File (.bit) เพื่อโปรแกรมลงชิป FPGA ดับเบิ้ลคลิก และทำการโปรแกรมดังรูป
วันศุกร์ที่ 11 มิถุนายน พ.ศ. 2553
วันพฤหัสบดีที่ 3 มิถุนายน พ.ศ. 2553
Group Meeting วันพฤหัสบดีที่ 3 มิ.ย. 2553
สรุปการนำเสนอ วันที่ 3 มิ.ย. 2553
"เรียนรู้การใช้งานภาษา Tcl Script เบื้องต้น Part 2"
นำเสนอโดย อ.นลิน
- ตัวอย่างเบื้องต้นของการโปรแกรมด้วย tcl แบบมีเงื่อนไข
- ตัวอย่างของการโปรแกรมแบบการเรียกใช้งานโปรแกรมย่อย (Procedure)
- ตัวอย่างการใช้งานโปรแกรมย่อยในลักษณะแบบวนซ้ำ (Recursive)
- ตัวอย่างการใช้งานตัวแปรแบบ Global และตัวแปรแบบ Local
- ตัวอย่างการใช้งานสำหรับการเขียนติดต่อกับไฟล์ (เขียนลงไฟล์และอ่านจากไฟล์)
"เรียนรู้การใช้งานภาษา Tcl Script เบื้องต้น Part 2"
นำเสนอโดย อ.นลิน
- ตัวอย่างเบื้องต้นของการโปรแกรมด้วย tcl แบบมีเงื่อนไข
- ตัวอย่างของการโปรแกรมแบบการเรียกใช้งานโปรแกรมย่อย (Procedure)
- ตัวอย่างการใช้งานโปรแกรมย่อยในลักษณะแบบวนซ้ำ (Recursive)
- ตัวอย่างการใช้งานตัวแปรแบบ Global และตัวแปรแบบ Local
- ตัวอย่างการใช้งานสำหรับการเขียนติดต่อกับไฟล์ (เขียนลงไฟล์และอ่านจากไฟล์)
สมัครสมาชิก:
บทความ (Atom)