FPGA - การเขียนโปรแกรม DIY


9

ฉันเขียนโปรแกรมไมโครคอนโทรลเลอร์เป็นเวลาสองสามปีแล้วและฉันเพิ่งค้นพบ FPGA หลังจากเรียนวิชาออกแบบดิจิทัล หลังจากทำการค้นคว้าบางอย่างเกี่ยวกับ FPGA, บอร์ดพัฒนาและอื่น ๆ ที่แตกต่างกันฉันยังลังเลที่จะซื้อเพราะฉันไม่รู้ว่าจะทำ "ผลิตภัณฑ์ขั้นสุดท้าย" ของฉันเองได้อย่างไร ฉันใส่ PIC, SAM's, AVR และอื่น ๆ ลงใน PCB แบบกำหนดเองโดยไม่มีปัญหาดังนั้นฉันจึงไม่กังวลเกี่ยวกับสิ่งนั้น - ข้อกังวลหลักของฉันคือการเขียนโปรแกรม FPGA โดยไม่มีบอร์ดของผู้ผลิต

คำถามเฉพาะของฉัน: จะมีฟังก์ชั่น FPGA หรือไม่ถ้าฉันใช้ไฟล์บิตแมปที่สร้างโดย Quartus, Vivado, iCEcube ฯลฯ เขียนไปยังชิปหน่วยความจำแฟลช SPI เริ่มต้นที่ที่อยู่ 0 (พูดผ่าน FT2232H) และเชื่อมต่อหน่วยความจำแฟลช พิน SPI ของ FPGA (พร้อมการตั้งค่า MODE ถูกต้อง)?

ฉันขอโทษสำหรับบางส่วนของสมมติฐาน; ฉันค่อนข้างแน่ใจว่านั่นคือโปรแกรมเมอร์ Diamond ของ Lattice ทั้งหมด แต่ฉันสงสัยว่าวิธีการนี้จะใช้ได้กับ FPGA จากผู้ผลิตหลายรายหรือไม่ว่า Quartus จะเพิ่ม "การตกแต่งหน้าต่าง" หรือส่วนหัวเพิ่มเติมลงในหน่วยความจำขณะเขียน

แจ้งให้เราทราบหากมีสิ่งใดที่ฉันสามารถทำได้เพื่อปรับปรุง / ชี้แจงคำถามหรือหากฉันพลาดจุดสำคัญในกระบวนการเขียนโปรแกรม FPGA ขอบคุณ!


โดย "bitmap" คุณหมายถึง bit-stream หรือไม่
ยูจีน Sh.

คำถามนี้ถูกถามในรูปแบบที่แตกต่างกันก่อน
แรงดันไฟฟ้าเข็ม

1
ในการออกแบบบอร์ด FPGA แรกของคุณฉันขอแนะนำวิธีการเขียนโปรแกรมอุปกรณ์ 2 วิธี (รวมทั้งส่วนหัว JTAG ของผู้ขาย) วางตำแหน่งจัมเปอร์เพื่อให้คุณสามารถเปลี่ยนพิน MODE ได้ตามต้องการ มันง่ายมากที่จะทำสิ่งเหล่านี้ยุ่งและเป็นการดีที่จะมีแผนสำรอง นอกจากนี้ต้องแน่ใจว่าได้เตรียมจุดทดสอบสำหรับ INIT และ DONE (หรือสิ่งที่ Lattice ใช้เพื่อระบุสถานะการเขียนโปรแกรม)
โฟตอน

2
การควบคุมกระบวนการที่จำเป็นสำหรับการติดตั้ง BGA โดยเฉพาะอย่างยิ่งการนับพินสูงนั้นเข้มงวดกว่า QFP ความจริงที่ว่ามีลูกบอลมากขึ้นหมายความว่ามีความน่าจะเป็นสูงในการเชื่อมโยงหรือเชื่อมต่อที่ไม่ดีและเนื่องจากมีการซ่อนอยู่คุณจะไม่สามารถตรวจพบปัญหาได้ (เว้นแต่คุณมี X-ray) ก่อนที่จะทำการทดสอบ ปัญหาใด ๆ และถ้าคุณประกอบชิ้นส่วนใหม่คุณจะต้องทำการ reball ซึ่งต้องใช้อุปกรณ์มากขึ้น FPGA เป็นชิปราคาแพงที่คุณไม่ต้องการให้เสียหาย BGA ที่มีขนาดใหญ่เป็นสิ่งที่จำเป็นสำหรับการอุ่นเตา PCB
DKNguyen

1
ฉันเคยทำงานในสถานที่ที่ผู้ทำเทคโนโลยีไม่ได้ทำอะไรนอกจากทำงานซ้ำทั้งวันและพวกเขามีสถานีอากาศร้อน (การควบคุมอุณหภูมิที่แน่นและเชื่อถือได้มากกว่าปืนความร้อน) และพวกเขาไม่สามารถประสาน BGA ได้อย่างน่าเชื่อถือ ฉันไม่คิดว่าพวกเขามี preheater ดังนั้นถ้าคุณจะลองรับ preheater และใช้ชิปราคาถูก (อาจจะแม้แต่แพ็คเกจ dummy chain dummy BGA BGA เพื่อให้คุณสามารถตรวจสอบการเชื่อมต่อไฟฟ้าของคุณจนกว่าคุณจะตอกหมุดก่อนที่จะทำการ ของจริง).
DKNguyen

คำตอบ:


12

ใช่มันใช้งานได้ดี

ที่จริงแล้วเครื่องมือพัฒนาสำหรับ FPGA ส่วนใหญ่อนุญาตให้คุณตั้งโปรแกรมแฟลชภายนอกโดยตรงผ่านการเชื่อมต่อ JTAG ของ FPGA ทำให้ไม่จำเป็นต้องใช้อินเตอร์เฟสการเขียนโปรแกรมแยกต่างหากสำหรับแฟลช


1
และบางอย่างเช่น Lattice Mach X02 มีแฟลชออนบอร์ดดังนั้นคุณต้องมีตัวต้านทานจำนวนเล็กน้อยและส่วนหัว 5x2 เพื่อเชื่อมต่อกับพ็อดการเขียนโปรแกรม Lattice
Spehro Pefhany

ฉันรู้ว่าคุณสามารถตั้งโปรแกรมแฟลชโดยตรงผ่าน JTAG จากเครื่องมืออย่าง Vivado / Quartus สิ่งที่ฉันหวังคือสามารถทำได้โดยไม่จำเป็นต้องซื้อสายเคเบิลเฉพาะผู้จำหน่าย - ใช้ FT2232H และเขียน bitstream (ไม่ใช่ บิตแมป?) ตัวเอง ฉันไม่คิดว่าชิปรองรับ Quartus แต่และไม่ได้รับการสนับสนุนอย่างเปิดเผยจาก Vivado (แม้ว่าพวกเขาจะใช้ชิปนี้บนกระดาน Nexys และ Basys)
เบลคลูคัส

1
ใช่คุณสามารถตั้งโปรแกรมแฟลชด้วยไฟล์บิตโดยใช้วิธีการอื่น หนึ่งในโปรแกรมเมอร์ของคุณสำหรับ MCUs ของคุณอาจทำได้ ฉันรู้ว่า Segger J-link ของฉันสามารถทำได้อย่างแน่นอน
DKNguyen

@Toor: แน่นอนว่าไม่ใช่สายเฉพาะผู้จำหน่าย แต่ก็ยังมีการสนับสนุน hardcoded ในเครื่องมือของผู้ขายและ Segger นั้นค่อนข้างแพงกว่า FT2232H เล็กน้อย
Ben Voigt

2
ผู้ค้ารายใหญ่ทุกรายให้เอกสารทางวิศวกรรมเพื่อให้ bitstreams อัพโหลดที่กำหนดไปยังชิ้นส่วน (ทั้ง FPGA และ flash config ที่กำหนดเอง) ด้วยเครื่องมือที่กำหนดเองเนื่องจากบางครั้งเป็นที่ต้องการในระบบรวมหรือแท่นทดสอบ มันอาจจะง่ายที่สุดในการใช้อุปกรณ์ที่รองรับของผู้ขาย (โดยเฉพาะอย่างยิ่งในตอนแรก) แต่ฉันได้ติดตั้งทางเลือกสำหรับโครงการเฉพาะหลายครั้งในช่วงหลายปีที่ผ่านมา ส่วนที่ยากขึ้นของโครงการบอร์ด FPGA ดั้งเดิมอาจเป็นการสนับสนุนความต้องการทั้งหมดของ FPGA ในบอร์ดซึ่งมีคู่กำลังมากมายในการกำหนดเส้นทางและบายพาสซึ่งมักจะใช้สำหรับแรงดันไฟฟ้าหลาย ๆ
Chris Stratton

3

เมื่อคุณพูดว่า "บิตแมป [sic] ไฟล์ [sic] ที่สร้างโดย" คำตอบคือใช่ตราบใดที่คุณเลือกคำตอบที่ถูกต้อง - คุณทำข้อผิดพลาดเล็กน้อยโดยใช้บทความที่ชัดเจนเนื่องจากไม่มีไฟล์เพียงไฟล์เดียวที่สร้างขึ้น .

ตัวอย่างเช่น Quartus สามารถสร้างไฟล์ SOF, POF และ JIC อันสุดท้ายคือสิ่งที่คุณใช้สำหรับการเขียนโปรแกรมทางอ้อมผ่าน FPGA JTAG มันจะไม่มีประโยชน์ที่จะเขียนลงในแฟลช SPI SOF สำหรับการโหลดผ่าน JTAG เพื่อรันการออกแบบของคุณใน FPGA ชั่วคราว POF คือสิ่งที่คุณต้องการโหลดลงในชิปแฟลช

ดูFPGA: ไฟล์วัตถุบิตสตรีมกับ SRAMสำหรับข้อมูลที่มีประโยชน์มากมายเกี่ยวกับความหมายของไฟล์ที่แตกต่างจากผู้จำหน่ายแต่ละราย


1

ฟังก์ชั่น FPGA จะถ้าฉัน ... เชื่อมต่อหน่วยความจำแฟลชกับพิน SPI ของ FPGA (ด้วยการตั้งค่า MODE อย่างถูกต้อง)?

ถ้าฉันเข้าใจคำถามของคุณถูกต้องคุณต้องการเขียนการกำหนดค่า FPGA (เช่นรุ่น HDL ที่คอมไพล์แล้ว) ไปยัง SPI EEPROM หรือ SPI Flash และคุณต้องการให้ FPGA เขียนโปรแกรมเองโดยใช้ข้อมูลบน SPI IC

(ถ้าฉันเข้าใจคำตอบของ Dave Tweed อย่างถูกต้องเขาเข้าใจคำถามของคุณในวิธีที่ต่างออกไป)

อย่างน้อยอุปกรณ์หน่วยความจำแฟลช SPI จำนวนมากจะไม่ทำงานเพราะไอซีของหน่วยความจำแฟลช SPI ต้องการรูปคลื่นที่แน่นอน (เช่นที่อยู่ที่จะอ่าน) เพื่อส่งข้อมูลเพื่ออ่านข้อมูลจาก IC

รูปคลื่นนี้ไม่เหมือนกันสำหรับอุปกรณ์หน่วยความจำแฟลชทั้งหมด แม้ว่าจะดูที่การ์ดหน่วยความจำ SD เท่านั้น (ซึ่งสามารถใช้เป็นหน่วยความจำแฟลช SPI) เราพบว่ามีสองรุ่นที่ต้องการรูปแบบคลื่นที่แตกต่างกันเพื่อส่งไปยังการ์ดก่อนที่การ์ดจะอ่านข้อมูล

เมื่อตั้งค่าหมุดโหมดของ FPGA อย่างถูกต้อง FPGA จะส่งรูปคลื่นบางส่วนที่สั่งให้อุปกรณ์หน่วยความจำแบบอนุกรมเพื่อส่งข้อมูล อย่างไรก็ตามเนื่องจากไอซีที่แตกต่างกันต้องการรูปแบบของคลื่นที่แตกต่างกันรูปแบบของคลื่นไอซีจะไม่สามารถเข้าใจได้โดยแฟลชทั้งหมด แต่บางประเภทเท่านั้น

ฉันรู้ว่า Altera ผลิตไอซีแฟลชหรือ EEPROM พิเศษซึ่ง a สามารถทำงานร่วมกับ FPGA ได้


เห็นได้ชัดว่าการ์ด SD จะไม่ทำงานเนื่องจากไม่มี FPGA (สำหรับความรู้ของฉัน) รองรับ SD / MMC เป็นโปรโตคอลการกำหนดค่า FPGA ส่วนใหญ่ติดกับ AT24 / AT26 / AT45
Dmitry Grigoryev

1

หากคุณต้องการเขียนบิตสตรีม FPGA ไปยังแฟลชโดยไม่ต้องใช้เครื่องมือการเขียนโปรแกรม FPGA อย่างเป็นทางการคุณจะต้องการแปลงไฟล์บิตสตรีมนั้นเป็นรูปแบบไบนารีแบบเปิดที่คุณสามารถอ่านได้ง่ายเช่นไบนารีดิบ, Intel HEX หรือ Motorola SREC ( ตัวอย่าง ) สิ่งนี้จะตัดส่วนหัวที่เป็นกรรมสิทธิ์ใด ๆ ที่บิตสตรีม FPGA อาจมี

วิธีนี้คุณจะสามารถตั้งโปรแกรมแฟลชโดยใช้เครื่องมือจากผู้ผลิตแฟลช (หรือเครื่องมือของคุณเอง) หรือสั่งซื้อชิปแฟลชที่ตั้งโปรแกรมไว้ล่วงหน้าด้วย FPGA บิตสตรีมของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.