วันจันทร์ที่ 11 มีนาคม พ.ศ. 2556

โปรเจค PCI card ตอนที่ 1: กำเนิดโปรเจค ARIES Board...



โปรเจค PCI card ตอนที่ 1: กำเนิดโปรเจค ARIES Board... 





1. เกรินนำ

เนื่องมาจากเมื่อปีที่ผ่านมาผมได้ลองคิดว่า FPGA น่าจะนำมาทำอะไรได้บ้างและควรจะเอาใช้งานได้ไหนดีเท่าที่สรุปได้ในตอนนี้ก็คือ ควรจะเอามาทำเป็นตัวขยาย peripheral เนื่องจากการจะเอาไปทำงานแข่งกับพวก CPU หรือ microcontroller นั้นมีข้อด้อย 2 ส่วนคือ
  1. ด้านราคา FPGA แพงกว่า
  2. เวลาที่ใช้ในการออกแบบ CPU, microcontroller ใช้เวลาออกแบบน้อยกว่ามาก
ข้อด้อยสำคัญสุดคือ เรื่องราคา ในเมื่อราคา FPGA ยังไงมันก็แพงกว่า microcontroller อยู่แล้ว
ส่วนเรื่องแข่งกับ CPU ได้หรือไม่นั้น เท่าที่คิดตอนนี้คือ CPU อย่างพวก OMAP นั้นกินขาดกว่าอยู่แล้ว ยกเว้นแต่งานประเภทเฉพาะด้านจริงๆ อย่างการคำนวนที่จำเป็นต้องทำเป็น pipe line (จริงๆ CPU ปัจจุบันก็เก่งมากแล้วด้วยดีไม่ดีอาจจะทำการคำนวนได้ดีกว่าก็เป็นไปได้ ) ถ้าใครเคยลองออกแบบ FPGA ออกแบบไปแล้วบ้างอาจจะไปเจอ ความจริงที่ว่าออกแบบดียังไงมันก็ทำงานไม่ได้เกิน 100MHz (ไม่นับพวก FPGA ระดับ ไฮโซ เพราะยังไงราคาเอื้อมไม่ถึงอยู่แล้ว)

จากเหตุผลข้างบน สิ่งที่ FPGA จะเอามาสู้ได้ก็คือ อะไรที่ CPU, microcontroller ไม่สามารถทำได้ แต่ FPGA ทำได้ เลยกลายเป็นข้อสรุปว่าทำ PCI card ดีกว่า(เป็นของที่คิดว่าน่าจะใกล้ตัวที่สุด) และผมก็ให้ชื่อบอร์ดนี้ว่า ARIES Board
เนื่องจากต้องการทำให้บอร์ดนี้เป็น development board ไปในตัวด้วย ดังนั้นจึงได้กำหนดฟังค์ชั่นการใช้งานไว้ 2 โหมดคือ
1. PCI card
2. Stand alone (ไม่ได้ใช้เป็น PCI card) ซึ่งสามารถเอาไปทดลองการใช้งาน soft CPU NIOS2


ทำไมถึงไม่เลือก PCI express
  1. อย่างแรกสุด ความสามารถไม่พอ พวก PCI express จำเป็นต้องไปยุ่งเกี่ยวกับการส่งข้อมูลแบบ serial ความถี่สูง (2.5GHz) serial ความถี่สูงที่ใช้ใน PCI express นั้น ถ้าจำไม่ผิดน่าจะใช้พื้นฐานมาจาก LVDS (Low Voltage Differialtial Signal) ซึ่งมีส่วนสำคัญอยู่ 2 ส่วนหลักๆคือ การออกแบบ PCB (จำเป็นต้องระวังเรื่อง characteristic impedance) และการออกแบบ logic(VHDL)
  2. FPGA ที่มี PCI express Hard IP อยู่ในตัวจะเป็น package BGA
  3. จากข้อ 1, 2 การจะสร้าง board นั้นมีความเป็นไปได้ว่าจำเป็นต้องใช้เงินทุนสูงกว่า PCI card แบบธรรมดา ดังนั้น ณ. ตอนนี้ ผมเลยตัดสินใจในการทำ PCI card แบบธรรมดาไปก่อน 


2. เป้าหมายของบอร์ด ARIES Board

  1. เป็นบอร์ดเริ่มต้นสำหรับการเรียนรู้ FPGA
  2. จากข้อ 1 เมื่อสามารถทำความเข้าใจกับ FPGA ได้มากขึ้นพอสมควร การนำ FPGA ไปใช้งานนั้นควรเอาไปใช้งานในที่ที่ microcontroller ไม่สามารถทำงานได้
สิ่งที่ใกล้ตัวสุดเท่าที่คิดได้คือ การนำเป็น PCI card


รูป PCI card



3. กำหนด specification ของ ARIES Board

ฟังค์ชั่นหลักๆที่อยากให้มีคือ
  1. Analog input output
  2. Digital input output
  3. Switch input
  4. VGA (แชร์ร่วมกับ LED)
  5. RS232 ต้องมีไว้หน่อย
ในส่วน Analog I/O, Digital I/O นั้นจะเป็นส่วนที่ใช้สำหรับการใช้งานเป็น PCI card ตัว FPGA หลักที่จะนำมาใช้คิดว่าจะใช้ Cyclone II ของ Altera ดังนั้น spec คร่าวๆ น่าจะเป็น
FPGA: Altera Cyclone II 5000LE
DIO 16Channel
ADC 12bit
DAC 12bit
SDRAM 256MBit
Serial flash 4MBit


4. สิ่งที่คาดหวัง

โปรเจคนี้จะไม่ลงมือทำจริงหรือไม่นั้นยังไม่ทราบเหมือนกัน แต่ที่เอาลงบล็อกนั้นเป็นสิ่งที่ผมอยากจะให้เป็นการกระตุ้นตัวเองไปอีกทางหนึ่ง อย่างน้อยเพื่อผลักดันตัวเองให้ออก ARIES Board นี้มาให้ได้ ใครสนใจก็ติดตามต่อตอนไปละกันครับว่ามันจะออกมาเป็นในรูปแบบไหน 
ท้ายสุดแล้วผมตั้งใจอยากขายบอร์ดนี้เพื่อให้นักศึกษาเอาไปใช้เรียน FPGA ด้วยครับจะได้รู้สึกว่า FPGA มันทำอะไรได้มากกว่าที่เราคิดไว้เยอะ

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