การทดลองที่
2
ออกแบบวงจรดิจิทัลสร้างสัญญาณ PWM ควบคุมการทำงานของ WS2812 RGB LED โดยใช้ภาษา VHDL
ออกแบบวงจรดิจิทัลสร้างสัญญาณ PWM ควบคุมการทำงานของ WS2812 RGB LED โดยใช้ภาษา VHDL
รายการอุปกรณ์
1.
บอร์ด Altera FPGA (WARRIOR CYCLONE3 DEV) ชิปหมายเลข
EP3C10E144C8 1
บอร์ด
2.
สายดาวน์โหลด ByteBlaster II Cable หรือ
สายดาวน์โหลดUSB Blaster Cab 1 ชุด
3.
เครื่องคอมพิวเตอร์ 1 ชุด
4. ออสซิลโลสโคป 1 เครื่อง
5. สายวัด Logic Analyzer 1 เส้น
6. WS2812 RGB LED 1 ดวง
วิธีการทดลอง
จงออกแบบวงจรดิจิลัทโดยใช้ภาษา VHDL สำหรับนำไปสร้างเป็นวงจรในชิป FPGA
โดยใช้บอร์ดที่มีอยู่ในห้องแล็ป
วงจรดิจิทัลมี I/O ดังนี้
- CLK (input) มีความถี่ 50MHz
ใช้สำหรับกำหนดจังหวะการทำงานของวงจรทั้งหมด (เป็นการออกแบบวงจรดิจิทัลแบบ
Synchronous Design)
- RST_B (input) เป็นอินพุตสำหรับใช้รีเซตแบบ
Asynchronous สำหรับการทำงานของวงจรโดยรวม (ทำงานแบบ Active-Low) ซึ่งได้จากวงจรปุ่มกด (Push
Button)
- PB (input) เป็นอินพุตจากปุ่มกด 1
ปุ่ม ทำงานแบบ Active-low เพื่อใช้ในการเปลี่ยนสีของ
WS2812 RGB LED จำนวน 1 ดวง
- DATA (output) เป็นเอาต์พุตสำหรับนำไปควบคุมการทำงานของ
WS2812 RGB LED เพียง 1 ดวง
ซึ่งเป็นสัญญาณตามข้อกำหนดของชิป WS2812 เพื่อส่งข้อมูลจำนวน
24 บิต
พฤติกรรมการทำงานเป็นดังนี้
- เมื่อเริ่มต้นหรือกดปุ่มรีเซต (RST_B)
จะทำให้ค่าสีเป็น 0x000000 (24 บิต) และส่งออกไปยัง WS2812 RGB LED หนึ่งครั้ง
- เมื่อมีการกดปุ่ม PB แล้วปล่อยในแต่ละครั้ง จะมีการเปลี่ยนค่าสี 24 บิต
แล้วส่งออกไปยัง RGB LED ใหม่หนึ่งครั้ง ตามลำดับดังนี้
0x000000 -> 0x0000FF -> 0x00FF00 ->
0xFF0000 แล้ววนซ้ำ
แนวทางการออกแบบและทดสอบ
- ออกแบบวงจรโดยใช้ภาษา VHDL
- เขียน VHDL Testbench เพื่อทดสอบการทำงาน และจำลองการทำงาน
- ทดสอบการทำงานในบอร์ด FPGA
แล้ววัดสัญญาณโดยใช้ออสซิลโลสโคป(ยังไม่ต้องต่อวงจร RGB LED จริง)
- ทดสอบการทำงานในบอร์ด FPGA แล้ววัดสัญญาณโดยต่อวงจร RGB LED จริง
แนวทางการออกแบบ
รูปแผนภาพ Finite State Machine ออกแบบวงจรปุ่มกด
รูปแผนภาพ Finite State Machine ออกแบบวงจรสร้างสัญญาณ PWM
รูปแผนภาพ Block Diagram การทำงานของวงจร
โค้ดวงจรดิจิทัลที่ได้จากการออกแบบ
โค้ดวงจรดิจิทัลภาษา VHDL
โค้ด Testbench ภาษา VHDL
ผลการทดลอง
ผลการสังเคราะห์VHDL เป็นวงจรในชิปและการใช้ทรัพยากรของบอร์ด FPGA
ผลการจำลองการทำงานด้วย Modelsim
ลักษณะสัญญาณลอจิก 0
ลักษณะสัญญาณลอจิก 1
ลักษณะสัญญาณ x“000000”
ลักษณะสัญญาณ x“0000FF”
ลักษณะสัญญาณ
x“00FF00”
ลักษณะสัญญาณ
x“FF0000”
การเปลี่ยนแปลงลักษณะสัญญาณเมื่อกดปุ่ม
PB
การเปลี่ยนแปลงลักษณะสัญญาณเมื่อกดปุ่ม
RST_B
หมายเหตุ – ในการจำลองใช้ค่าการหน่วงปุ่มกด PB เท่ากับ 1,000
ผลการทำงานบนบอร์ด FPGA
ภาพโดยรวมของวงจร
เมื่อยังไม่ทำการกดปุ่มหรือกดปุ่มรีเซต LED จะไม่ติด
สัญญาณที่วัดได้จาก Function Generator เป็นสัญญาณ x“000000”
เมื่อกดปุ่ม PB ครั้งแรก LED จะติดเป็นสีน้ำเงิน
สัญญาณที่วัดได้จาก Function Generator เป็นสัญญาณ x“0000FF”
เมื่อกดปุ่ม PB ครั้งแรก LED จะติดเป็นสีแดง
สัญญาณที่วัดได้จาก Function Generator เป็นสัญญาณ x“00FF00”
เมื่อกดปุ่ม PB ครั้งแรก LED จะติดเป็นสีเขียว
สัญญาณที่วัดได้จาก Function Generator เป็นสัญญาณ x“FF0000”
วิดีโอผลการทดลอง
ทดลองเปลี่ยนอินพุตจากวงจรปุ่มกดเป็นสัญญาณจาก Function Generator
ภาพวงจรโดยรวม
วิดีโอผลการทดลอง























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