วันศุกร์ที่ 11 มิถุนายน พ.ศ. 2553

Group Meeting วันพฤหัสบดีที่ 17 มิ.ย. 2553

สรุปการนำเสนอ วันที่ 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 ดับเบิ้ลคลิก และทำการโปรแกรมดังรูป



ไม่มีความคิดเห็น:

แสดงความคิดเห็น