โปรเจค PCI card ตอนที่ 3 ออกแบบ FPGA
ในตอนนี้ผมจะขอพูดแค่การออกแบบ FPGA สำหรับทำให้เป็น PCI card เท่านั้นนะครับ ส่วนการออกแบบให้ลง NIOS2(Soft core CPU) นั้นจะพูดอีกทีในตอนต่อๆไป
1. PCI interface
วิธีการ
- ใช้ IP core ที่ Altera มีมาให้
- เขียน PCI interface ด้วย VHDL หรือ Verilog ด้วยตัวเอง
แต่ที่บอกว่า เขียน PCI interface ด้วย VHDL code เองนั้น ผมก็ไม่ได้เขียนเองหรือเผอิญ(อีกแล้ว)เจอหนังสือเล่มนึงสอนเขียน VHDL code แล้วเค้าก็มีตัวอย่าง code มาให้ด้วยมาลิงค์นี้เลยครับ http://www.cqpub.co.jp/hanbai/books/33/33361.htm อาจจะลำบากหน่อยเพราะเป็นภาษาญี่ปุ่น แต่ไม่เป็นไร เอาเราแค่โค้ดส่วนที่เป็น PCI interface มาใช้
2. Peripheral interface
1. DAC
MCP4922
เขียนทีเดียว 4 channel
2. ADC
MCP3208
อ่านทีเดียว 8 channel
3. DIO
อันนี้เป็นแค่ ออก output High/Low อย่างเดียว
3. Simulation
สำคัญที่สุดคือ การ simulation ครับ โค้ด PCI interface ที่เราเอามาจะรู้ได้ยังไงว่าใช้ได้จริง ก็ต้องมาลอง simulate ดูครับ รูปข้างล่างเป็นรูปผล simulate รูปนี้เป็นการ sim ให้ สั่งงาน ADC ผ่าน PCI bus ครับ สังเกตุว่าเมื่อมีสัญญาณจาก PCI (ad, cben . ... etc ) จะมีสัญญาณออกทาง ADC (ADC_DIN, ADC_CLK ,... etc)
ส่วนรูปนี้ขยายจากรูปข้างบนอีกทีครับ
4. Memory map
จากข้อ 3 เราสามารถสื่อสารกันผ่านทาง PCI bus ได้แล้ว มาถึงการออกแบบจริง จำเป็นต้องมีสิ่งที่เรียกว่า memory map เพราะจะเป็นตัวบอกว่า เราจะสั่งงานอะไรต้อง data ไปที่ address ไหน ข้างล่างเป็น memory map ที่ผมได้กำหนดขึ้นมาคร่าวๆ ไว้ครับ
1 ความคิดเห็น:
ช่วยแชร์โค๊ดสำหรับ interfacing mcp3208 ได้รึป่าวครับ
แสดงความคิดเห็น