Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Spartan-6 + QSPI-Flash
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Arlleex
Что-то подключил я SPI-Flash N25Q256A к XC6SLX9TQG144, через Impact настроил все файлы конфигураций, пытаюсь прошить - получаю
Код
PROGRESS_START - Starting Operation.
Maximum TCK operating frequency for this device chain: 25000000.
Validating chain...
Boundary-scan chain validated successfully.
'1': IDCODE is '20ba19' (in hex).
'1': ID Check passed.
'1': IDCODE is '20ba19' (in hex).
'1': ID Check passed.
'1': Erasing Device.
'1': Using Sector Erase.
'1': Programming Flash.
'1': Reading device contents...
Failed at address, 0
'1': Verification Terminated
INFO:iMPACT - '1': Flash was not programmed successfully.
PROGRESS_END - End Operation.
Elapsed time =     14 sec.

и большую кляксу "Program Failed".

Раньше использовал QSPI-Flash W25Q64 и все было нормально. Оно как-то определяет превышение нужного размера Flash что-ли? Прямая взаимосвязь только в объеме памяти. Как тогда вообще выбирать размер Flash для нужной ПЛИСы? Сейчас мне было удобнее поставить N25Q256A, но она походу как-то не пашет. Отпаяю и заменю на W25Q64 пока что. Но вопрос остался открытым.

P.S. QSPI-Flash - это в смысле загрузочная которая.
MegaVolt
Цитата(Arlleex @ Aug 14 2018, 18:01) *
Что-то подключил я SPI-Flash N25Q256A к XC6SLX9TQG144, через Impact настроил все файлы конфигураций, пытаюсь прошить - получаю
Как вариант можно поставить 128ую если прошивка влазит. Пол флешки будет доступно ели проглотит sm.gif
Arlleex
Цитата(MegaVolt @ Aug 14 2018, 23:23) *
Как вариант можно поставить 128ую если прошивка влазит. Пол флешки будет доступно ели проглотит sm.gif

В том и дело, что в Impact-е эта флешка доступна, она стирается (судя по логу), но не пишется, и фиг знает почему.
И вот вроде казалось бы - флешка и флешка, поддерживается? Поддерживается. Чего не работать-то? Схемотехника правильная, подтяжки везде есть где нужно и куда нужно.
А гадать, перепаивая флешки, не комильфо smile3046.gif Ведь есть же способ какой-то определить, сколько мне максимум понадобится для данной ПЛИС. Как я понимаю, она может складываться из объема внутренней памяти BRAM (если есть), так называемой распределенной (distributed) памяти (которая из триггеров в LUT-ячейках, как я понимаю) и памяти для ячеек конфигурации самих LUT (это 4-5 бит на LUT, если не ошибаюсь), которая задает начальные значения межсоединений по включению питания. Вот просуммировав их я и получу сколько мне нужно памяти, нигде не везде ошибся?
serj1979
Программируется через JTAG? Если скорость понизить?
Arlleex
Цитата(serj1979 @ Aug 15 2018, 09:41) *
Программируется через JTAG? Если скорость понизить?

Запаял уже другую флешку (которая на 64Мбит) - все работает на той же скорости JTAG. Только скорость JTAG это ж не скорость записи QSPI...
Как буду вторую плату паять - попробую снизить скорость, конечно, ради эксперимента.
serj1979
Цитата(Arlleex @ Aug 15 2018, 08:56) *
Запаял уже другую флешку (которая на 64Мбит) - все работает на той же скорости JTAG. Только скорость JTAG это ж не скорость записи QSPI...
Как буду вторую плату паять - попробую снизить скорость, конечно, ради эксперимента.

Да на что грешить непонятно, либо с осциллографом лезть либо подёргать за что дергается.......
Arlleex
Кстати вот насчет подтяжек я похоже поторопился немного... Линии данных DQ0-DQ3 QSPI у меня идут прямо на ПЛИС, и там нет подтяжек... Программируется в режиме данных 1 бит. Вырезки из даташитов:

N25Q256
Цитата
W# Control Input
Write protect: W# can be used as a protection control input or in QIO-SPI operations. When in
extended SPI with single or dual commands, the WRITE PROTECT function is selectable by the
voltage range applied to the signal. If voltage range is low (0V to VCC), the signal acts as a
write protection control input. The memory size protected against PROGRAM or ERASE operations
is locked as specified in the status register block protect bits 3:0.

W# is used as an input/output (DQ2 functionality) during QUAD INPUT FAST READ and QUAD
INPUT/OUTPUT FAST READ operations and in QIO-SPI.


W25Q64
Цитата
8.4 Write Protect (/WP)
The Write Protect (/WP) pin can be used to prevent the Status Register from being written. Used in
conjunction with the Status Register’s Block Protect (SEC, TB, BP2, BP1 and BP0) bits and Status
Register Protect (SRP) bits, a portion or the entire memory array can be hardware protected. The /WP
pin is active low.
When the QE bit of Status Register-2 is set for Quad I/O, the /WP pin (Hardware Write
Protect) function is not available since this pin is used for IO2. See figure 1a, 1b, 1c and 1d for the pin
configuration of Quad I/O operation.


Вот если ПЛИС как-то внутри подтягивает DQ2 в 1, то тогда примерно понятно, почему W25Q64 работает. При этом N25Q256 будет не работать всегда, судя по выписке из даташита. Причем самое идиотское, что функция лапы DQ2 определяется внешним напряжением на ней, которое может быть больше 3.3В, что попалит ПЛИС. Я, конечно, предполагаю, что разработчики предусматривали, что если используется лапа DQ2 в режиме WP, то в приложении режим QSPI не будет использоваться. Но блин! У них целых 7 ног DNU!!! Так еще и по ногам сделали же взаимозаменяемыми с себеподобными других компаний. Хотим махнуть одну на другую? Да не вопрос - только этот цирк работать не будет. Уродство crying.gif
MegaVolt
Цитата(Arlleex @ Aug 15 2018, 08:04) *
Ведь есть же способ какой-то определить, сколько мне максимум понадобится для данной ПЛИС.
Конечно есть.
Даташит https://www.xilinx.com/support/documentatio...uides/ug380.pdf
В Table 5-5: Spartan-6 FPGA Bitstream Length
Утверждает что для вашего кристалла нужно:
6SLX9 2,742,528 бит




На счёт самой флешки поспрашал тут у нас народ. Люди шились но нужно поправить переменную среды чтобы ID не вычитывался. Какая переменная народ не помнт предлагает гуглить фотрумы от xilinx.
Альтернативным решением является установить 128 флешку в настройках там проблемы нет.
dm.pogrebnoy
Цитата(Arlleex @ Aug 15 2018, 08:04) *
Ведь есть же способ какой-то определить, сколько мне максимум понадобится для данной ПЛИС.

Есть способ. Прочитать даташит ug380, стр. 77. Для LX9 - 2,742,528 бит
makc
Цитата(MegaVolt @ Aug 15 2018, 11:38) *
На счёт самой флешки поспрашал тут у нас народ. Люди шились но нужно поправить переменную среды чтобы ID не вычитывался. Какая переменная народ не помнт предлагает гуглить фотрумы от xilinx.
Альтернативным решением является установить 128 флешку в настройках там проблемы нет.


Выдержка отсюда:

Цитата
Set the operating system environment variable XIL_IMPACT_SKIPIDCODECHECK=1 to avoid the “ID Check failed” error message.


Так что проверку можно обойти.
Arlleex
Спасибо всем!
На второй плате запаяю эксперимента ради N25Q256A и снова с ней попробую поиграться.
Yuri124
Судя по логам, ID passed.
256-мегабитки отличаются от более младших командами. Но, если именно эта микра есть в списке...
Еще у 256-мегабиток у некоторых производителей бывает важна каждая буковка в наименовании.
Как-то столкнулся с тем, что 256-мегабитка была изначально с завода переведена в 4-битный режим (последняя буковка в маркировке на это указывала), а чтобы ее перевести в 1-битный - надо было по полной 4-битной шине подать команду. А процессор, с которым предполагалась ее работа, этого не умел... Хорошо, что внимательно прочитал даташит, а то бы купили несколько тыс. шт. на мою голову.
MegaVolt
Цитата(Yuri124 @ Aug 16 2018, 17:33) *
256-мегабитки отличаются от более младших командами.
Не совсем так. Млажшие 128 Мб работают точно так же как и в младшей флешке. А вот доступ к старшим через расширенные комманды.
Yuri124
Цитата(MegaVolt @ Aug 17 2018, 11:35) *
Не совсем так. Млажшие 128 Мб работают точно так же как и в младшей флешке.

Чаще всего - именно так. Но есть нюансы в зависимости от производителя и маркировки флеша.
В том числе и функционал выводов микросхемы может отличаться в зависимости от маркировки.
MegaVolt
Цитата(Yuri124 @ Aug 21 2018, 12:52) *
Но есть нюансы в зависимости от производителя и маркировки флеша.
Я считал что мы обсуждаем флешку заявленную в топике.
Yuri124
Ну, в топике ИМХО не совсем понятно, какая флешка заявлена - ибо есть модификации. Когда мне понадобилось найти флеш подешевле на замену дико дорогой фирменной (для чипа Альтеры)- нашел на форуме рекомендации по замене с указанием всех буковок. Правда, то была 128-мегабитка (но и она перекрывала потребности почти в 4 раза).
Поизучав доки на такие флеши, понял - что 32, что 64, что 128 - если с одинаковой маркировкой, то практически одинаковые. А 256 уже могут иметь отличия.
Да, как-то запаял вместо микроновской 128-мегабитки 256-ю от другого производителя, и сразу заработало с половинкой (но это было не в качестве загрузочной для FPGA, а для работы с микроконтроллером) - так и специально выбирал из нескольких предложенных поставщиком вариантов, чтобы повысить вероятность этого события.
ЗЫ - извините за много букв, написал на всякий случай. может кому и будет полезно...
ЗЗЫ В принципе - согласен, что скорее всего с N25Q256A должно было бы заработать (т.к. у этой серии вариантов не так и много, при этом особенные не очень-то и распространены) - но ведь не запустилось...
Boris_TS
Цитата(Arlleex @ Aug 14 2018, 18:01) *
Что-то подключил я SPI-Flash N25Q256A к XC6SLX9TQG144...

Хоть это нигде и не прозвучало, но, наверное, Вы используете что-то вроде ISE 14.7. В таком случае в меню iMAPACT необходимо вызвать Help->Help Topics.

В появившемся Help'е, в разделе "Configuration and Programming а Device" (3-й снизу) необходимо выбрать подраздел "SPI, BPI, and NAND PROM Support".
В таблицах этого раздела можно увидеть, что для Spartan-6 из SPI Flash ROM Micron (Numonix) поддерживаются только N25Q 3.3V: 32Mb – 128Mb.

Для Kintex-7, Virtex-7, Artix-7 поддерживаются 32Mb – 256Mb, но там другое IPS-ядро погружается в ПЛИС. Поэтому с одной стороны: iMAPACT "знает" идентификатор N25Q256A, однако с другой стороны: Xilinx не обещал его программировать для Spartan-6.

Предполагаю, что запрограммировать всю N25Q256A в ISP режиме у Вас не получится, поэтому что N25Q128A - это самая большая SPI Flash ROM’а которой ещё хватает 3-х байтовой адресации. Для SPI Flash ROM большего объёма уже требуется 4-х байтовая адресация, а у меня есть серьёзные сомнения в том, что соответствующие команды были реализованы в ISP для Spartan-6 и Virtex-6.

Может быть у Вас получится запрограммировать нижнюю половину N25Q256A если:
1. задать переменную окружения XIL_IMPACT_SKIPIDCODECHECK=1,
2. в iMAPACT указать, что к ПЛИС подключена N25Q128A.

P.S. Подобным образом мне удавалось запрограммировать нижнюю половину N25Q512, подключенную к Virtex-7, однако в этом случае ситуация существенно отличалась от Вашей: N25Q512 - это сборка двух независимых N25Q256 в одном корпусе, поэтому нижняя N25Q256 программировалась "естественным" образом.
Arlleex
Цитата(Boris_TS @ Aug 27 2018, 18:44) *
Хоть это нигде и не прозвучало, но, наверное, Вы используете что-то вроде ISE 14.7. В таком случае в меню iMAPACT необходимо вызвать Help->Help Topics.

Да, так и есть.
Спасибо за подробный комментарий!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.