FPGA - Зроби сам програмування


9

Я вже кілька років програмую мікроконтролери, і я тільки відкрив FPGA після того, як я взяв клас цифрового дизайну. Провівши декілька досліджень щодо різних FPGA, дощок з розробки тощо, я все ще вагаюся купувати будь-яку, тому що я не знаю, як зробити власну версію кінцевого "продукту". Я поставив PIC, SAM, AVR і т.д. на друковані плати без жодних проблем, тому я не переживаю з цього приводу - моя головна проблема полягає в програмуванні FPGA без плати виробника.

Моє конкретне питання: чи функція FPGA, якби я взяв файл растрових файлів, згенерований Quartus, Vivado, iCEcube і т. Д., Записав його в мікросхему SPI флеш-пам’яті, починаючи з адреси 0 (скажімо, через FT2232H), і підключив флеш-пам’ять до SPI-шпильки FPGA (при правильному встановленні конфігурації MODE)?

Прошу вибачення за часткову гіпотетичну; Я досить впевнений, що це все, що робить програму Diamond Programmer від Lattice, але я задумався, чи підходитиме цей підхід для FPGA від різних виробників, чи, скажімо, Quartus додав до пам'яті додаткові «перегородки для вікон» або заголовки.

Дайте мені знати, чи є щось, що я можу зробити, щоб поліпшити / уточнити питання, або якщо я пропускаю важливий момент у процесі програмування FPGA. Дякую!


Під "растровою карткою" ви маєте на увазі біт-потік?
Євген Ш.

Це питання було задано в іншому втіленні раніше
напруга Спайк

1
У першому дизайні плати FPGA я б запропонував запропонувати два способи програмування пристроїв (плюс JTAG-заголовок постачальника). Розмістіть місця перемичок, щоб ви могли змінювати штифти MODE за необхідності. Зіпсувати їх дуже просто, і добре мати резервні плани. Також обов’язково вкажіть контрольні точки для INIT та DONE (або що решітка використовує для позначення стану програмування).
The Photon

2
Контроль процесу, необхідний для монтажу BGA, особливо з високою кількістю штифтів, є жорсткішим, ніж щось на зразок QFP. Факт, що є більше кульок, означає, що більша ймовірність з'єднання або поганих зв’язків, і оскільки вони приховані, ви не зможете виявити проблеми (якщо у вас немає рентгена) до запуску речі, щоб побачити, чи є у вас будь-які питання. А якщо ви перераховуєте компонент, то вам доведеться переграти його, що вимагає більше обладнання. FPGA - це також дорогі мікросхеми, які ви не хочете пошкодити. Великі BGA - це те, де потрібні такі речі, як нагрівачі PCB.
DKNguyen

1
Раніше я працював у місці, де технічні працівники не працювали, окрім всього дня, і у них були станції гарячого повітря (більш жорсткий контроль температури та надійніший, ніж тепловий пістолет), і вони не змогли надійно передати паяння БГА. Я не думаю, що у них був підігрівач, тому якщо ви збираєтеся його спробувати, придбайте підігрівач і скористайтеся дешевим чіпом (можливо, навіть маргаритка пакетів BGA, щоб ви могли електрично перевірити свої з'єднання, поки ви не прибити його, перш ніж робити справжня річ).
DKNguyen

Відповіді:


12

Так, це спрацювало б чудово.

Насправді інструменти розробки для більшості FPGA дозволяють запрограмувати зовнішню спалах безпосередньо через власне з'єднання JPAG FPGA, виключаючи необхідність в окремому інтерфейсі програмування для спалаху.


1
А деякі, як, наприклад, Lattice Mach X02, мають вбудовану спалах, тому для підключення до колоди програмування решітки вам потрібно лише кілька резисторів та заголовок 5х2.
Spehro Pefhany

Я знав, що ви можете запрограмувати спалах безпосередньо через JTAG за допомогою таких інструментів, як Vivado / Quartus. Я сподівався, що зможете це зробити, не купуючи спеціальний кабель для постачальника - просто використовуйте FT2232H і записуйте бітстрім (не растровий?) себе. Я не думаю, що мікросхема Quartus підтримується, проте Vivado відкрито не підтримує (навіть якщо вони використовують його на дошках Nexys та Basys).
Блейк Лукас

1
Так, ви можете запрограмувати спалах з бітовим файлом, використовуючи інші засоби. Один із ваших програмістів для MCU, ймовірно, може це зробити. Я знаю, що мій Segger J-link, безумовно, може.
DKNguyen

@Toor: Дійсно, це не конкретний кабель для постачальника, але він все ще має жорстку підтримку в інструментах постачальника, і Segger є дещо дорожчим, ніж FT2232H.
Ben Voigt

2
В основному всі основні постачальники надають інженерну документацію, щоб дозволити завантажувати бітові потоки до їх частин (як FPGA, так і користувацькі конфігураційні спалахи) за допомогою спеціальних інструментів, оскільки іноді бажано в інтегрованих системах або тестових установках. Можливо, найпростіше використовувати підтримку постачальника (особливо спочатку), але я впродовж багатьох років впроваджував альтернативи для конкретних проектів. Важкою частиною оригінального проекту плати FPGA може бути вся підтримка, яка потрібна FPGA на платі - безліч пар силових шляхів для маршруту та обходу, часто для декількох різних напруг.
Кріс Страттон

3

Коли ви говорите "файл [sic] растрового файлу [sic], породжений файлом", відповідь "Так", якщо ви виберете правильний - ви допустили невелику помилку, скориставшись певною статтею, оскільки не створено лише одного файлу .

Наприклад, Quartus може створювати SOF, POF та JIC файли. Останнє - це те, що ви використовуєте для непрямого програмування через FPGA JTAG. Не було б корисно писати це на спалах SPI. SOF призначений для завантаження через JTAG для запуску вашого дизайну на FPGA швидко. POF - це те, що потрібно завантажити у флеш-чіп.

Див. FPGA: Bitstream vs. SRAM Object File для багато корисної інформації про те, що означають різні файли від кожного з різних постачальників.


1

Чи буде функція FPGA, якщо я ... підключив флеш-пам'ять до контактів SPI FPGA (при правильному встановленні конфігурації MODE)?

Якщо я правильно розумію ваше запитання, ви хочете записати конфігурацію FPGA (наприклад, вашу компільовану модель HDL) на SPI EEPROM або SPI Flash, і ви хочете, щоб FPGA програмувала себе за допомогою даних на ІС SPI.

(Якщо я правильно зрозумів відповідь Дейва Твіда, він зрозумів ваше запитання по-іншому.)

Принаймні багато пристроїв пам'яті SPI Flash НЕ працюватимуть, тому що для ІС SPI Flash пам'яті потрібна певна форма хвилі (наприклад, адреса, яку потрібно прочитати), щоб дані зчитувалися з ІМС.

Ця форма хвилі не однакова для всіх пристроїв Flash-пам'яті. Навіть, дивлячись лише на карти пам'яті SD (які також можуть використовуватися як SPI Flash memory), ми знаходимо два варіанти, що вимагають надіслати на карту різну форму хвилі, перш ніж картка зчитує дані.

При правильному встановленні штифтів режиму FPGA FPGA надішле якусь форму хвилі, яка вкаже деякий послідовний пристрій пам'яті надсилати дані. Однак, оскільки різні ІМС вимагають різних форм хвиль, форма хвилі не буде зрозумілою для всіх ІС Flash, а лише певними типами.

Я знаю, що Altera виробляє спеціальні мікросхеми Flash або EEPROM, які сумісні з їх FPGA.


Очевидно, що SD-карта не буде працювати, оскільки жодна FPGA (наскільки мені відомо) не підтримує SD / MMC як протокол конфігурації. Більшість FPGA дотримуються AT24 / AT26 / AT45.
Дмитро Григор’єв

1

Якщо ви хочете написати бітовий потік FPGA у спалах без офіційних інструментів програмування FPGA, ви, швидше за все, захочете перетворити цей файл бітового потоку у відкритий бінарний формат, який ви можете легко читати, як, наприклад, бінарний файл, Intel HEX або Motorola SREC ( приклад ). Це зніме будь-які власні заголовки, які може містити бітовий потік FPGA.

Таким чином ви зможете запрограмувати флеш за допомогою інструментів від виробника флеш-пам'яті (або власних інструментів) або навіть замовити флеш-чіпи заздалегідь запрограмованими за допомогою бітового потоку FPGA.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.