โจทย์ข้อที่ 1
1) จงออกแบบวงจรดิจิลัทโดยใช้ภาษา VHDL สำหรับนำไปสร้างเป็นวงจรในชิป FPGA โดยใช้บอร์ดที่ มีอยู่ในห้องแล็ป
1.1) วงจรดิจิทัลมี I/O ดังนี้
- CLK (input) มีความถี่ 50MHz ใช้สำหรับกำหนดจังหวะการทำงานของวงจรทั้งหมด
(เป็นการออกแบบวงจรดิจิทัลแบบSynchronous Design)
(เป็นการออกแบบวงจรดิจิทัลแบบSynchronous Design)
- RST_B (input) เป็นอินพุตสำหรับใช้รีเซตแบบ Asynchronous สำหรับการทำงานของวงจร
โดยรวม (ทำงานแบบActive-Low) ซึ่งได้จากวงจรปุ่มกด (Push Button)
โดยรวม (ทำงานแบบActive-Low) ซึ่งได้จากวงจรปุ่มกด (Push Button)
- PB[2:0] (input) เป็นอินพุตจากปุ่มกด 3 ปุ่ม ทำงานแบบ Active-low เพื่อใช้ในการเปลี่ยนค่า
Duty Cycle โดยเพิ่มทีละ 10 ในช่วง 0 ถึง 100 สำหรับสัญญาณ PWM(2:0)
ที่มี 3 ช่อง สัญญาณ
Duty Cycle โดยเพิ่มทีละ 10 ในช่วง 0 ถึง 100 สำหรับสัญญาณ PWM(2:0)
ที่มี 3 ช่อง สัญญาณ
- PWM[2:0] (output) เป็นเอาต์พุตสำหรับนำไปควบคุมการทำงานของ RGB LED จำนวน 1 ดวง
1.2) พฤติกรรมการทำงานเป็นดังนี้
- เมื่อเริ่มต้นหรือกดปุ่มรีเซต RST_B ค่า PWM[2:0] จะเป็นลอจิก 0 ทั้ง 3 ช่องสัญญาณ และมีค่า Duty Cycle สำหรับสัญญาณ PWM[i], i=0,1,2 เป็น 0
- เมื่อกดปุ่มใดๆ PB[i], i=0,1,2, แล้วปล่อยในแต่ละครั้ง จะเพิ่มค่า Duty Cycle ของสัญญาณ PWM สำหรับช่องสัญญาณ i ทีละ 10 แต่ถ้าถึง 100 จะกลับไปเริ่มต้นที 0 ใหม่
- สัญญาณ PWM แต่ละช่อง ต้องมีความถี่เท่ากันและคงที่ และสามารถเลือกใช้ความถี่ได้ในช่วง 500Hz ถึง 1kHz
1.3) แนวทางการออกแบบและทดสอบ
- ออกแบบวงจรโดยใช้ภาษา VHDL
- เขียน VHDL Testbench เพื่อทดสอบการทำงาน และจำลองการทำงาน
- ทดสอบการทำงานในบอร์ด FPGA แล้ววัดสัญญาณโดยใช้ออสซิลโลสโคป
(ไม่ต้องต่อวงจร RGB LED จริง)
- บันทึกผลและเขียนรายงานการทดลอง
อุปกรณ์
อุปกรณ์
1. บอร์ด Altera FPGA (WARRIOR CYCLONE3 DEV) ชิปหมายเลข EP3C10E144C8 1 บอร์ด
2. สายดาวน์โหลด ByteBlaster II Cable หรือ สายดาวน์โหลดUSB Blaster Cable 1 ชุด
3. เครื่องคอมพิวเตอร์ 1 ชุด
4. ออสซิลโลสโคป 1 เครื่อง
5. สายวัด Logic Analyzer 1 เส้น
ซอฟท์แวร์ที่ใช้
1. Altera Quartus II 13.1 (64-bit) Web Edition- ModelSim
2. Altera 10.1d (Quartus II 13.1)
แนวคิดในการออกแบบ
โค้ด VHDL
โค้ด VHDL testbench
ผลการสังเคราห์วงจร
Pin Planer
ขา I/O ของวงจรมีดังนี้
Clk ต่อกับขา หมายเลข 22 เป็น input clock
PB[2] ต่อกับขา หมายเลข 90 เป็น input ปุ่มกดสีน้ำเงิน
PB[1] ต่อกับขา หมายเลข 89 เป็น input ปุ่มกดสีเขียว
PB[0] ต่อกับขา หมายเลข 88 เป็น input ปุ่มกดสีแดง
PWM[2] ต่อกับขา หมายเลข 77 เป็น output pwm สีน้ำเงิน
PWM[1] ต่อกับขา หมายเลข 75 เป็น output pwm สีเขียว
PWM[0] ต่อกับขา หมายเลข 73 เป็น output pwm สีแดง
RST_B ต่อกับขา หมายเลข 91 เป็น input ปุ่มกด restsrt
ขั้นตอนการทดลองและผลการทำงาน
รูปภาพการทดลอง
ขา I/O ของวงจรมีดังนี้
Clk ต่อกับขา หมายเลข 22 เป็น input clock
PB[2] ต่อกับขา หมายเลข 90 เป็น input ปุ่มกดสีน้ำเงิน
PB[1] ต่อกับขา หมายเลข 89 เป็น input ปุ่มกดสีเขียว
PB[0] ต่อกับขา หมายเลข 88 เป็น input ปุ่มกดสีแดง
PWM[2] ต่อกับขา หมายเลข 77 เป็น output pwm สีน้ำเงิน
PWM[1] ต่อกับขา หมายเลข 75 เป็น output pwm สีเขียว
PWM[0] ต่อกับขา หมายเลข 73 เป็น output pwm สีแดง
RST_B ต่อกับขา หมายเลข 91 เป็น input ปุ่มกด restsrt
ขั้นตอนการทดลองและผลการทำงาน
รูปภาพการทดลอง
วัด output pwm สีแดง
วัด output pwm สีเขียว
วัด output pwm สีน้ำเงิน
รูปคลื่นสัญญาณ(กดคร้ังที่ 1 ถึง ครั้งที่ 10)
กดคร้ังที่ 1
Duty Cycle 9.9 % ,ความถี่ 495 Hz
กดคร้ังที่ 2
Duty Cycle 19.8 % ,ความถี่ 495 Hz
กดคร้ังที่ 10
Duty Cycle 99 % ,ความถี่ 492.6 Hz
กด reset
Duty Cycle 0 % ,ความถี่ 0 Hz










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