You are on page 1of 8

Name………………………………………………ID…………………………Section W/H/F………..

ขั้นตอนการใชงาน Quartus II สําหรับการเริ่มตนเขียนภาษา VHDL

1. เรียกใชงานโปรแกรม Quartus II โดยเลือกที่ไอคอน


Quartus II 8.0.lnk

2. เมื่อ Quartus II ถูกเรียก ก็จะเปดหนาจอดังรูป

มุมดานบนซายของ
หนาตางหลัก จะตอง
ยังไมมีขอความใดๆ
ตอทาย Quartus II
แตถาหากไมเปนดังรูป
ขางบนนี้ ให นศ.เขาไปที่
เมนู
File > Close Project
กอน ทั้งนี้เนื่องจากอาจจะ
มีงานเกา (ในที่นี้จะขอเรียกวา Design) ของ นศ. คนอื่นคางอยู เพราะเครื่องในหองแล็บจะมีผูใชรวมกันหลายคนอาจจะทําใหเกิดการ
สับสนไดงาย (โดยปกติแลวโปรแกรม Quartus II จะจําคาตางๆของงาน Design อันลาสุดไวเสมอ)

3. การสรางนั้น Design ผูใชงานจําเปนจะตองสรางโฟลเดอรของตนเองขึ้นมากอนบนฮารดดิสก เพื่อจัดเก็บไฟลขอมูลตางๆที่จะเกิดขึ้น


เมื่อมีการเขียน และคอมไพลโปรแกรม
ขอแนะนําในการสรางโฟลเดอร
- การสรางโฟลเดอรนั้นสามารถสรางไดดวยการใช Windows Explorer หรือจะใช Quartus II ชวยสรางก็ได
- โดยทั่วไปจะสามารถสรางโฟลเดอรบนฮารดดิสกไดทั้งไดรฟ C: หรือ D:แตหากไมติดปญหาอื่นใดแลวขอแนะนําใหสรางโฟล
เดอรสําหรับเก็บ Design ไวที่ C:\ALTERA\80\QUARTUS\xxxxxxx (โดยที่ xxxxxx ในที่นี้เปนชื่อโฟลเดอรที่นศ.ตั้งขึ้นเอง)
- วิธีการสรางโฟลเดอรใหมโดยใช Quartus II นั้นผูใชสามารถดําเนินการไดในขั้นตอนของการเปด New Project
การเปด New Project
a) การสราง Design จะตองเริ่มจากการเปด New Project กอนเสมอ ทําไดโดยการเปดเมนู File>New Project Wizard
ก็จะปรากฏหนาตาง ที่อธิบายและแนะนํารายละเอียดตางๆ ที่จะถูกดํา
เนินการในขั้นตอนการเปด New Project
ใหกดปุม NEXT บนหนาตางเพื่อขามขั้นตอนนี้ไป

หมายเหต: คอมพิวเตอรบางเครื่องอาจจะขามขั้นตอนนี้โดยอัตมัติ
ก็ใหนศ.ดําเนินการตอในขั้นตอนหนาถัดไปไดเลย

112302 Digital System Design Semester 2/2008 Nov.,5-6-7, 2008 EE. WPK [No. L01] / 1
Name………………………………………………ID…………………………Section W/H/F………..

b) ในขั้นตอนนี้จะปรากฏหนาตางขึ้นมาเพื่อใหผูใชงานแจง
ระบุโฟลเดอรที่ตองการจะจัดเก็บไฟล Design ของตน
ในตัวอยางนี้จะสรางโฟลเดอรสองโฟลเดอรซอน
กันคือ …\Works\Demo01 ซึ่งทําไดโดยระบุโฟลเดอรเปน
C:\altera\80\quartus\WorksEE\Demo01 โดยโฟล
เดอร WorksEE จะสื่อถึงภาคฯ EE สวนDemo01จะ
เปนโฟลเดอรสําหรับเก็บงาน Design ของ นศ.ชื่อ
นาย Demo01 เปนตน
หมายเหต: การตั้งชื่อโฟลเดอรที่สื่อถึงความสัมพันธของ
งานที่ดําเนินการ หรือความหมายบางอยางจะชวยปอง
กันการหลงลืมหรือสับสนได หากผูออกแบบงาน จําเปน
จะตองใชเวลาหลายวันในการทํางานนั้นๆ

c) ขั้นตอนนี้จะเปนการตั้งชื่อใหกับโปรเจคที่จะใหเปนงาน
Design ของนศ. ในตัวอยางนี้จะตั้งชื่อเปน VHDLDemo01
จากนั้นก็กดปุม NEXT ที่อยูดานลางของหนาตาง
เนื่องจาก Quartus II ตรวจสอบแลวไมพบวามี
ชื่อของโฟลเดอรและชื่อของโปรเจค ก็จะถามผูใชงานวา
ยืนยันที่จะสรางโฟลเดอรและโปรเจคขึ้นมาใหมจริง
เมื่อกด ปุม Yes ก็จะเขาสูขั้นตอนถัดไป

d) ในขั้นนี้ Quartus II จะถามผูใชงานวามีไฟลขอมูลหรือ


source files อื่นๆ ที่นศ.ตองการนํามาใชงานในโปรเจค
นี้หรือไม แตในขั้นเริ่มตนนี้เนื่องจากเปนการเริ่มเขียน
ครั้งแรกจึงยังไมมีไฟลตนแบบ ก็จะขามขั้นตอนนี้ไปดวย
การกดปุม NEXT
(นศ.ยังไมควรเริ่มทําการ copy and rename ตั้งแตชั้น
หัดเขียนหรือเริ่มตน เพราะจะทําใหเกิดการสับสนไดงาย)

e) หนาตางที่ปรากฏถัดมาจะเปนการถามถึงชนิดของชิพ(chip)
ที่ผูออกแบบจะเอา Design นี้ไปทําการสราง (ในภาษาของ
การออกแบบจะเรียกวาการทํา configuration)เปนชิ้นงานตน
แบบ สําหรับในวิชา 112302 นี้จะจัดใหใชชิพ CPLD เบอร
MAX128 และชิพ FPGA ในตระกูล FLEX10K เบอร EPF10K
10LC84-4 ดังนั้รให นศ.เลือกชิพเปน FLEX10K ดังตัวอยางนี้

112302 Digital System Design Semester 2/2008 Nov.,5-6-7, 2008 EE. WPK [No. L01] / 2
Name………………………………………………ID…………………………Section W/H/F………..

f ) เมื่อเส็รจจากหนาตางของการเลือกชิพ ก็จะเปนหนาตางของ
การเลือกเครื่องมือหลักที่จะใชทําการออกแบบ ดังนี้
Design Entry/Synthesis:
Tool name: Design Compiler
Format: VHDL
Simulation:
Tool name: Custom
Format: VHDL
Timing Analysis:
Tool name: Custom
Format: VHDL

จากนั้นก็กดปุม NEXT ก็จะปรากฏ หนาตางสรุป คาตางๆที่เปนคา


ตั้งตน (Initial Setup / Project Property) ขึ้นมา เมื่อตรวจสอบดู
แลวหากพบวายังไมตรงตามตองการหรือมีสิ่งที่ตองการแกไขก็สามารถ
ที่จะทําการยอนกลับไปแกไขได (เมื่อ นศ. มีความคุนเคยกับภาษา VHDL
และคุนเคยกับ Quartus II มากกวานี้ ก็สามารถที่จะปรับแกไขรายละเอียด
ตางๆ ของ project property เพื่อใหงาน Design มีคุณสมบัติที่เนนเฉพาะ
ดานที่ตองการ อาทิ ความเร็ว หรือขนาดของชิพ ก็ไดเชนกัน)

ใหกดปุม FINISH เมื่อตรวจสอบรายละเอียดครบแลว

4 ) เมื่อเสร็จจากการสรางโปรเจคใหมแลว
จะพบวาที่หนาตางหลักของ Quartus II จะ
แสดงโฟลเดอรของงาน Design ขึ้นที่ title
bar และคุณลักษณะตางๆของโปรเจคขึ้น
ที่หนาตางดานขาง ดังรูป

112302 Digital System Design Semester 2/2008 Nov.,5-6-7, 2008 EE. WPK [No. L01] / 3
Name………………………………………………ID…………………………Section W/H/F………..

5 ) ในขั้นนี้จะเปนตัวอยางการเขียนโปรแกรมภาษา VHDL โดยใชโปรแกรม Editor


ของ Quartus II (ในทางปฏิบัต นศ.สามารถใชโปรแกรม editor ตัวอื่นเชน Notepad,
Winedit, หรือ Word processor เขียนไฟลโปรแกรม VHDL ไวกอนจากนั้นจึงนํามา
ทําการคอมไพลบน Quartus II ) ซึ่งมีความสะดวกมากในการชวยตรวจสอบความ
ถูกตองของ Syntax ของภาษา ที่จะแสดงแยกกันโดยใชสีที่แตกตางกันของคํา
สงวน (Reserve word) กับคาพารามิเตอรหรือตัวแปรตางๆ ที่ นศ.จะสรางขึ้น
หรือประกาศขึ้นมาใชเอง
การใช Text Editor ของ Quartus II
a) ที่หนาตางหลัก ใหเลือกเมนู FILE >NEW ก็จะปรากฏหนาตางยอยขึ้น
ดังรูป ใหเลือก Design files เปนแบบ VHDL file จากนั้นก็กดปุม OK

b) เมื่อปรากฏหนาตางของ editor ขึ้น


จะสังเกตเห็นวาโปรแกรมจะทําการ
ตั้งชื่อไฟลใหอัตโนมัติ แตเนื่องจาก
มีขอกําหนดวาไฟล VHDL ทีจ่ ะเปน
Top VHDL Entity ของโปรเจคจะ
ตองมีชื่อตรงกันกับชื่อของโปรเจค
ดังนั้น นศ.จะตองทําการเปลี่ยนชื่อจาก
ไฟล Vhdl1.vhd ใหถูกตองตามขอกํา
หนดเสมอ โดยเลือกเมนู
FILE>Save As…
จากนั้นให นศ.ทําการเปลี่ยนชื่อไฟล
ใหตรงกับชื่อของโปรเจค ซื่งไดตั้งชื่อไวเปน
VHDLDemo001.vhd library ieee;
use ieee.std_logic_1164.all;

entity VHDLDemo001 is
c) ให นศ. ทําการพิมพโคดภาษา VHDL ตามตัว port
( clk,reset,d : in std_logic;
อยางนี้ลงไปบน หนาตาง editor ของ q : out std_logic );
Quartus II ใหถูกตอง end entity;

architecture rtl of VHDLDemo001 is


signal cnt : std_logic;
begin
process (clk)
begin
if (rising_edge(clk)) then
if reset = '0' then
cnt <= d;
end if;
end if;
end process;
q <= cnt;
end rtl;

112302 Digital System Design Semester 2/2008 Nov.,5-6-7, 2008 EE. WPK [No. L01] / 4
Name………………………………………………ID…………………………Section W/H/F………..

d) เมื่อพิมพไฟล และตรวจสอบความถูกตองแลวใหทําการกดปุม hot Icon ที่อยูบนหนาตางหลักเพื่อทําการคอมไพล


โปรแกรม 2 1
หากไมมีขอผิดพลาดใดเกิด
ขึ้น การคอมไพลก็จะสําเร็จ
และแสดงหนาจอดังรูป

ในหนาตางที่ 1 จะ
แสดงสรุปรายการที่เกี่ยวกับจํา
นวนของเกท และที่ใชงานของ
ขาชิพที่จะถูกใชเมื่อนําไปสราง
ชิ้นงานจริง หากตองการราย
ละเอียดที่มีทั้งหมดนั้นผูใชก็จะ
สามาถเปดดูไดในหนาตางที่ 2
สวนหนาตางที่ 3 จะแสดงรายการตางๆวาการคอมไพลนั้นสําเร็จจนครบทุกขั้นตอนหรือไมถา 4
มีปญหาการ
แสดงผลจะเปนเครื่องหมายกากะบาทแทน สวนหนาตางที่ 4 จะแสดงขอความตางๆ ที่เปน การแจง error (ถา
มี ) หรือคําเตือนหากมีการพบวาผูออกแบบไมปฏิบัติตามกฏของ
การออกแบบ หรืออื่นๆ

6 ) ขั้นตอนตอไปจะเปนการจําลองการทํางานของระบบที่ไดทําการออกแบบ
a ) โดยในขั้นแรกจําเปนจะตองปดไฟลขึ้นมาเพิ่มอีกหนึ่งไฟล สําหรับจัด
เก็บคาของ timing diagram โดยไปที่หนาตางหลักและเลือกเมนู
FILE > NEW เพื่อสรางไฟลแบบ Vector Waveform file ที่จําเปนตอการ
ทํา Verification/Debugging ดังรูป ดานขวา
จากนั้นเมื่อกดปุม OK โปรแกรมก็จะสรางไฟลชื่อ Waveform1.vwf
ขึ้นมาบนหนาตางใหมดังรูปดานลาง
ขอแนะนํา: นศ.จะตองสังเกตดวยวาหนาตางดังกลาว active อยูหรือไม
ถาไมแนใจก็ใหใชเมาสคลิ๊กบนหนาตางหมายเลข 5 หนึ่งครั้งก็ได

112302 Digital System Design Semester 2/2008 Nov.,5-6-7, 2008 EE. WPK [No. L01] / 5
Name………………………………………………ID…………………………Section W/H/F………..

b) ขั้นที่สอง จะตองนําขาสัญญาณตางๆ ของ Design มาใสในหนาตาง


ของ Vector Waveform file ซึ่งสามารถทําไดโดย เลือกเมนู
Edit > Insert ก็จะปรากฏหนาตาง Insert node or bus ขึ้นมาดังรูป
จากนั้นก็ใหเลือกกดปุม Node Finder เพื่อคนหา node หรือขาสัญญาณ
ทั้งหมดที่มีอยูใน Design ของเรา

c) ที่หนาตาง Node Finder โปรแกรมจะแสดงชื่อ


ของ Design เปาหมายที่จะไปคนหา node ซึ่ง
ในที่นี้จะเปนชื่อ VHDLDemo001 จากนั้นให
นศ.กดปุม List เพื่อเลือกดู node ทั้งหมดก็
จะปรากฏขึ้นที่บล็อกดานซายมือ เมื่อกดปุม
>> จะเปนการเลือกทุก node ที่มีอยูใน Design
ของเรา ทําใหรายชื่อ node ทั้งหมดปรากฏขึ้นที่บล็อกดานขวามือ เมื่อเสร็จแลวใหนศ. กดปุม OK จะทําใหหนาตาง Node
Finder ปดลง เหลือเพียงหนาตาง Insert node or bus และให นศ.กดปุม OK อีกครั้งก็จะปารกฏรูปของ timing diagramของ
สัญญาณทั้งหมดบนหนาตาง เพื่อเตรียมเขาสูโหมดการจําลองการทํางานของวงจร ในขั้นนี้ขอให นศ.ทําการ save ไฟลรูปไว
กอนโดยการเลือกเมนู File>Save As…
ก็จะทําใหไฟลรูปของ timing diagram
มีชื่อเปน VHDLDemo001 ดวยดังรูป

กอนที่จะทําการจําลองการทํางานของระบบ
ขอให นศ. สังเกตการแสดงคาของระดับลอ
จิกของสัญญาณดวย ดังเชน จะพบวาที่สัญลักษณของ PIN_Signal ของสัญญาณ
ชื่อ clk จะมีอักษร I อยูแสดงวาเปนสัญญาณ Input สวนอักษร B มีความหมายวา แสดงคาในแบบ Binary และคาที่กําลัง
แสดง ณ.เวลาปจจุบัน (เสนแนวดิ่งสีน้ําเงิน) คือเวลาที่ t = 9.85ns และมีคาระดับลอจิกเปน 0
ขอแนะนํา: 1. นศ.สามารถใชเมาสคลิ๊กที่แท็บดานลางของหนาตางเพื่อเลื่อนกราฟ timing diagram ที่เวลาตางๆได
2. สามารถดูกราฟแบบยอ/ขยายโดย เลือกเมนู View>>Zoom In… หรือ View>>Zoom Out…
3. สามารถเลือกกําหนดคาความละเอียดของการแสดงคาลอจิกเมื่อเทียบกับแกนของเวลาหรือคาของ grid
size ไดจากเมนู Edit>>Grid size … (ซึ่งโดยปกติจะกําหนดมาเปน 10 ns ในขั้นนี้ยังไมตองเปลี่ยนก็ได)
4. สามารถเลือกกําหนดคาชวงเวลาทั้งหมดของการจําลองการทํางานได (โดยปกติจะกําหนดใหเริ่มจําลอง
การทํางานจากเวลาที่ t = 0 ไปสิ้นสุดที่เวลา t = End time) ซึ่ง นศ. สามารถเปลี่ยนคาของ End time ได
โดยเลือกจากเมนู Edit>>End time …(ซึ่งโดยปกติจะกําหนดมาเปน 1.0 us ในขั้นนี้ยังไมตองเปลี่ยนก็ได)

112302 Digital System Design Semester 2/2008 Nov.,5-6-7, 2008 EE. WPK [No. L01] / 6
Name………………………………………………ID…………………………Section W/H/F………..

d ) กําหนดคาใหกับสัญญาณ clk ซึ่งในที่นี้จะเปนสัญ


ญาณนาฬิกา (สัญญาณการใหจังหวะ/ clock ) ทําได
โดยการใชเมาสคลิ๊กเลือกที่สัญญาณ clk ก็จะปรากฏ
แถบสีเขมขึ้น ดังรูปจากนั้นก็เลือกเมนู
Edit >> Value >> Clock… ก็จะปรากฏหนาตางการ
กําหนดคาของคาบเวลา(time period) ที่ตองการ

ในขั้นนี้ใหกําหนด Period = 50.0 ns หรือมีความถี่เทากับ 20 MHz คา Offset = 0 ns


และ duty cycle = 50 % จากนั้นกดปุม OK

e ) ให นศ.ทดลองสรางระดับสัญญาณลอจิกใหกับ node_signal แบบ Input ที่เหลือคือ


d และ reset ดังแสดงในรูป ดานลางแลวทําการ save ไฟลกอนที่จะจําลองการทํางานใน
ขั้นตอนถัดไป

f ) จากนั้นก็ใหกดปุม Start Simulation เพื่อเริ่มตนการจําลองการทํางาน

7 ) ให นศ.สังเกตกราฟแสดง timing diagram ที่ไดจากการจําลองการทํางานในขั้นตอนที่ผานมาดังรูปดานลาง วาทํางานตรงกันกับใน


ภาษา VHDL หรือไม และจากนั้นใหลอง zoom ดูการเกิด delay time ของสัญญาณ q เมื่อเทียบกับ d และ clk จะทําใหนศ. เขาใจถึง
ขอจํากัดหรือธรรมชาติของระบบหรืออุปกรณดิจิตอลไดดียิ่งขึ้น

คําถาม: 1. Entity ที่ชื่อวา VHDLDemo001 มีพฤติกรรมคลายหรือแตกตางกันกับ D-Flip Flop หรือไมเพียงใด?


2. ถาตองการให Entity ที่ชื่อวา VHDLDemo001 มีพฤติกรรมเหมือน D-Flip Flop จะตองปรับแกโปรแกรม VHDLอยางไร?

112302 Digital System Design Semester 2/2008 Nov.,5-6-7, 2008 EE. WPK [No. L01] / 7
Name………………………………………………ID…………………………Section W/H/F………..

8 ) นศ.สามารถดูผลลัพธจากการคอมไพล
โปรแกรม VHDL ที่อยูในรูปแบบของวงจรดิ
จิตอล (Logic diagram) หรือเรียกอีกแบบ
หนึ่งวา Schematic Diagram ไดโดยเลือก
ที่เมนู
Tools>> Netlist Viewers >> RTL Viewer
ซึ่งก็จะแสดง Design ของ Entity ที่ชื่อวา VHDLDemo001 ในรูปแบบของ Logic Diagram ดังรูป
คําถาม 1. ถาตองการขยายการออกแบบ VHDLDemo001 ใหเพิ่มจํานวนจาก 1 บิทไปเปน 16 บิท จะตองทําอยางใร?
--------------------------------------------------------- END -----------------------------------------------------------------------------------------
ขอสังเกต: โครงสรางพื้นฐานของโปรแกรม VHDL โดยทั่วไปการเขียนตัวโปรแกรมจะประกอบไปดวยสามสวนคือ
library ieee; สวนหัวของโปรแกรม จะเปนการประกาศใช library ตางๆของภาษา
use ieee.std_logic_1164.all;

Entity ________ is
port ( _____________ : in std_logic; สวนของ Entity เปนสวนที่จะประกาศความเปนตัวตนของชิ้นงานที่เรา
_____________ : out std_logic );
end entity; กําลังจะสรางขึ้น ดังนั้นสิ่งที่จําเปนจะตองมีคือ ชื่อของอุปกรณนี้ (ในที่นี้
architecture ____ of ____________ is จะหมายถึงชื่อของ Entity) และสวนที่จะใชเชื่อมตอกับอุปกรณอื่น (ในที่นี้
_______________ ;
Begin คือ port ) ดังนั้นจึงตองมีการแสดงรายละเอียดที่จําเปนดวยวาพอรทนั้นๆ
____________________;
____________________;
____________________;
มีคุณลักษณะเปน input หรือ output แสดงคาเปนแบบลอจิกมาตรฐาน
end _____ ;

process (____) สวนของการแสดงพฤติกรรม หรือ Architecture ซึ่งสิ่งที่จะตองประ


begin
if ____________ then กาศคือชื่อของ architecture และจะใชกับ entity อะไร นอกจากนั้นภาย
if _________ then
________; ในก็จะประกอบไปดวยโพรเซสตางๆ ที่จะแสดงถึงพฤติกรรมของมัน
end if;
end if; ---------------------------------------End-----------------------------------------
end process;
ขอแนะนําเพิ่มเติมในการทํางาน
1. นศ.ควรทําการสําเนาขอมูลออกจากคอมพิวเตอรทุกครั้งเมื่อเสร็จสิ้นการลงแล็บ โดยที่ไฟลที่จะทําการสําเนา ก็ควรเปนเพียง
ไฟล นามสกุล .vhd เทานั้น
2. เนื่องจากเครื่องคอมพิวเตอรในหองแล็บ มีผูใชงาน Quartus II เปนจํานวนมาก อาจจะมีการเปดโปรเจคคางไวกอนที่จะออกจากโปร
แกรมจะทําใหเกิดความผิดพลาดขึ้นไดในการทําคอมไพลไฟลของผูที่ใช Quartus II ในลําดับถัดไป ดังนั้นนศ.จําเปนจะตองปดโปร
เจคทุกครั้งเมื่อเสร็จงานของตนเอง กอนที่จะปดโปรแกรม Quartus II
นอกจากนั้นกอนที่จะทําการเขียนโปรแกรมโดยใช Quartus II ทุกครั้ง ขอใหนศ.ทุกคนตรวจสอบตําแหนงของโฟล็เดอร ที่
จะเก็บ Design ในฮารดดิสก ดวยวาอยูในที่ ที่ควรจะอยูหรือไม เพราะโปรแกรมที่ถูกพัฒนาโดย Quartus II จะมีขนาดที่คอนขาง
ใหญ(ในบางโพรเซส) มีหลายโฟลเดอรยอยๆ และไฟลตางๆ จํานวนมาก หาก ไมมีการจัดการอยางเหมาะสมจะสงผลตอการทํางาน
ของเครื่องคอมพิวเตอรได และงาน Design ของ นศ. เองก็อาจจะไดรับความ เสียหายดวยเชนกัน
3. ในกรณีที่ นศ. มีความจําเปนตองใช เครื่องคอมพิวเตอรสวนตัว ซึ่งอาจจะเปนเครื่องรุนเกา ดูเหมือนจะไมเหมาะตอการใชกับโปร
แกรม Quartus II ซึ่งมีขนาดใหญและใชทรัพยากรเปนจํานวนมากบนระบบ ดังนั้นการใชโปรแกรม Altera Maxplus II แทนนาจะ
เหมาะสมกวา เพราะใชทรัพยากรนอยกวา หลายสิบเทาตัว และไดคุณภาพงานเทากันกับใช Quartus II (เนื่องจากในหอง
แล็บใชชิพ FPGA ในตระกูล FLEX10K มาการทดลอง)

112302 Digital System Design Semester 2/2008 Nov.,5-6-7, 2008 EE. WPK [No. L01] / 8

You might also like