วันจันทร์ที่ 26 มกราคม พ.ศ. 2558

[Warm-up] LAB 2

Warm Up LAB
2) จงออกแบบวงจรดิจิลัทโดยใช้ภาษา VHDL สำหรับนำไปสร้างเป็นวงจรในชิป FPGA โดยใช้บอร์ดที่มีอยู่ใน    ห้องแล็ป
       2.1) วงจรดิจิทัลมี 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 บิต
      2.2) พฤติกรรมการทำงานเป็นดังนี้
           - เมื่อเริ่มต้นหรือกดปุ่มรีเซต (RST_B) จะทำให้ค่าสีเป็น 0x000000 (24 บิต) และส่งออกไปยัง WS2812 RGB LED หนึ่งครั้ง
           - เมื่อมีการกดปุ่ม PB แล้วปล่อยในแต่ละครั้ง จะมีการเปลี่ยนค่าสี 24 บิต แล้วส่งออกไปยัง RGB LED ใหม่หนึ่งครั้ง ตามลำดับดังนี้   0x000000 -> 0x0000FF -> 0x00FF00 -> 0xFF0000 แล้ววนซ้ำ

    2.3) แนวทางการออกแบบและทดสอบ
            - ออกแบบวงจรโดยใช้ภาษา VHDL
            - เขียน VHDL Testbench เพื่อทดสอบการทำงาน และจำลองการทำงาน
            - ทดสอบการทำงานในบอร์ด FPGA แล้ววัดสัญญาณโดยใช้ออสซิลโลสโคป
               (ยังไม่ต้องต่อวงจร RGB LED จริง)
            - บันทึกผลและเขียนรายงานการทดลอง


อุปกรณ์

1. บอร์ด Altera FPGA (WARRIOR CYCLONE3 DEV) ชิป EP3C10E144C8                     1 บอร์ด
2. สายดาวน์โหลด ByteBlaster II Cable หรือ สายดาวน์โหลดUSB Blaster Cable                1 ชุด
3. เครื่องคอมพิวเตอร์(Quatus II web edition)                                                                           1 ชุด
4. ออสซิลโลสโคป                                                                                                                   1 เครื่อง
5. WS2812 RGB LED                                                                                                            1 ดวง

โค๊ด VHDL 



โค๊ด VHDL Testbench




Compilation Report 


RTL Viewer

RTL report.qsf

ผลการทดสอบวงจรด้วยโปรแกรม Modelsim

  






[Warm-up] LAB 1

Warm Up LAB
1) จงออกแบบวงจรดิจิทัลโดยใช้ภาษา VHDL สำหรับนำไปสร้างเป็นวงจรในชิป FPGA โดยใช้บอร์ดที่มีอยู่ในห้องแล็ป
1.1) วงจรดิจิทัลมี I/O ดังนี้
- CLK (input) มีความถี่ 50MHz ใช้สำหรับกำหนดจังหวะการทำงานของวงจรทั้งหมด (เป็นการออกแบบวงจรดิจิทัลแบบ Synchronous Design)
- RST_B (input) เป็นอินพุตสำหรับใช้รีเซตแบบ Asynchronous สำหรับการทำงานของวงจรโดยรวม (ทำงานแบบ Active-Low) ซึ่งได้จากวงจรปุ่มกด (Push Button)
- PB[2:0] (input) เป็นอินพุตจากปุ่มกด 3 ปุ่ม ทำงานแบบ Active-low เพื่อใช้ในการเปลี่ยนค่า 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. เครื่องคอมพิวเตอร์(Quatus II web edition) 1 ชุด
4. ออสซิลโลสโคป   1 เครื่อง 
5. อุปกรณ์วัดสัญญาณแบบหลายช่อง Logic Analyzer  1 ตัว


โค๊ด VHDL สำหรับ 1 ช่องสัญญาณ



โค๊ด VHDL สำหรับ 3 ช่องสัญญาณ(เพิ่มเป็นไฟล์ใหม่เป็นส่วนขยาย)



โค๊ด VHDL Testbench
 
ผลการสังเคราะห์วงจรและทรัพยากรณ์ที่ใช้บนบอร์ด FPGA







ผลการจำลองการทำงานของวงจรด้วยโปรแกรม Modelsim




ผลการทดลอง