Перейти к содержанию
    

On 6/3/2024 at 11:25 AM, vladec said:

Не совсем понятно, если вы грузите по SSPI, то откуда в еще не загруженной ПЛИС возьмется USER CODE?

До этого работал с FPGA Lattice - там без проблем USER CODE вычитывался, предварительно зашитый по JTAG. Что-то Gowin перемудрил с внешней настройкой режима загрузки. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/3/2024 at 11:51 AM, Муравей said:

Через JTAG прошиваю USER CODE.

А как это будет работать после включения питания? Или в любом другом случае, когда внутри FPGA еще ничего нет? Если в процедуре по-любому задействован JTAG, то что мешает и дальше через него грузить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Raven said:

А как это будет работать после включения питания? Или в любом другом случае, когда внутри FPGA еще ничего нет? Если в процедуре по-любому задействован JTAG, то что мешает и дальше через него грузить?

JTAG может быть задействован при производстве модуля. В дальнейшем модуль общается с другим модулем через SSPI. Но это не важно, важно то, что по документации SSPI имеет команду для чтения USER_CODE, а по факту читает нули. При этом ID_CODE и прочее читает без проблем .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

58 минут назад, Муравей сказал:

JTAG может быть задействован при производстве модуля. В дальнейшем модуль общается с другим модулем через SSPI. Но это не важно, важно то, что по документации SSPI имеет команду для чтения USER_CODE, а по факту читает нули. При этом ID_CODE и прочее читает без проблем .

 А что он должен читать? usercode - это же контрольная сумма, а если нет прошивки вполне может быть, что она нулю и равняется как раз.

В 03.06.2024 в 11:51, Муравей сказал:

Через JTAG прошиваю USER CODE

Там только читать можно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, selax said:

 А что он должен читать? usercode - это же контрольная сумма, а если нет прошивки вполне может быть, что она нулю и равняется как раз.

Там только читать можно.

User code прекрасно задаётся из среды в настройках проекта и так же прекрасно зашивается вместе с конфигурацией.

Вопрос снимаю, для идентификации модуля решил использовать фрагмент user flash.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет. Есть одно интересное наблюдение по Gowin FPGA и вопрос.

Наблюдение:
  Работаю сейчас с GW1N-UV4LQ100C6/I5 и пишу для него свой код программирования через JTAG для микроконтроллера. Написал программирование SRAM - всё сразу взлетело успешно, после чего принялся писать программирование внутреннего флеша. В процессе написания кода я несколько раз (видимо, не удачно) "прошил" своим кодом internal flash и ... DEVICE ID код у FPGA поменялся ) Как такое может быть - не понятно. Вместо 0x1100381b стал читаться 0x1100181b !  Конечно все подумают, что у меня просто мой код JTAG бажил, но я сделал дамп логическим анализатором и убедился, что реально отсылаются именно такие биты. Более того я попробовал использовать мой код прошивания SRAM, залил прошивку и получил в статусном регистре ошибку VerifyIDCODEFailed (bit 2), то есть FPGA внутри себя тоже верила новому ID CODE )
  Я пробовал отключать питание, но это не помогало. Я даже перепаял на всякий случай FPGA, подключил, прочитал ID CODE - ни чего не поменялось, он всё ещё был не верным. И только одна вещь помогла - я дёрнул ногу RECONFIG_N (к земле) и о чудо - теперь снова всегда читается правильный ID и конфигурится SRAM без проблем.

Вопрос:
К сожалению я не заметил изначально какое значение у меня было в статус регистре до экспериментов с прошиванием internal flash, но сейчас при старте оно равно 0x18020 (MemoryErase, ReadyStatus, PORSuccess), то есть не установлен флаг GowinVLD (бит 12). Кроме того, что он связан как-то с internal flash я ни чего о нём не нашёл. Может тут кто-то знает больше об этом флаге? Может ли это быть из за "мусора" во флеше? Кто-то выводил FPGA из этого состояния? Судя по диаграммам в даташитах без этого флага я не могу писать флеш.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 13.06.2024 в 15:08, l-proger сказал:

Вопрос:
К сожалению я не заметил изначально какое значение у меня было в статус регистре до экспериментов с прошиванием internal flash, но сейчас при старте оно равно 0x18020 (MemoryErase, ReadyStatus, PORSuccess), то есть не установлен флаг GowinVLD (бит 12). Кроме того, что он связан как-то с internal flash я ни чего о нём не нашёл. Может тут кто-то знает больше об этом флаге? Может ли это быть из за "мусора" во флеше? Кто-то выводил FPGA из этого состояния? Судя по диаграммам в даташитах без этого флага я не могу писать флеш.

Данный вопрос обсуждался в этой же теме несколькими страницами выше. Коллегам удавалось оживить ПЛИС с взведенным битом VDL Down.

И еще в этой теме полезное обсуждение:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 minutes ago, StewartLittle said:

Данный вопрос обсуждался в этой же теме несколькими страницами выше. Коллегам удавалось оживить ПЛИС с взведенным битом VDL Down.

И еще в этой теме полезное обсуждение:

 

Да, я почитал и эту тему и указанную вами соседнюю перед тем, как писать вопрос ) Тема GOWIN JTAG программирование из МК полезная, но с алгоритмом прошивания я уже разобрался. Изучил svf файл, даташиты, дамп с логического анализатора успешного прошивания официальным программатором. Тут как раз вопросов уже (вроде как ) нет.

По VLD - тут в теме видел несколько сообщений. Кто-то писал, что OpenFpgaLoader волшебным образом выводит FPGA из такого состояния. Я изучил его код и попробовал странные действия, которые там есть, но безуспешно. Потому и написал ещё раз - вдруг у кого-то информация обновилась по этой теме )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может кто-то прояснить про ассортимент микросхем от GoWin, конкретно интересует GW1N-LV1QN48C6/I5.

На сайте Гаммы она значится в наличии, IDE тоже знает про этот корпус. Но на сайте GoWin и в актуальной документации этой микросхемы как бы нет. Однако, если посмотреть "GW1N series of FPGA Products
Package & Pinout User Guide" в раздел Revision History, можно увидеть следующее:

image.thumb.png.f599e9245d41a93b5aa7676f900d7312.png

Чего китайцев так штормит? Вообще можно закладывать подобное в изделие?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 минуту назад, Liseev сказал:

Чего китайцев так штормит?

Похоже они ищут себя и судя по таблице из DS теперь для GW1N-1 будет только один корпус:
image.thumb.png.05403713cc12889a588e6123eaf3dc25.png

Вот на него и нужно ориентироваться, если хотите закладывать их в серию. А что было раньше - то было  раньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, makc said:

Похоже они ищут себя и судя по таблице из DS теперь для GW1N-1 будет только один корпус:

да, но если глянуть в ту табличку, то и этот корпус тоже пропадал и появлялся...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 21.06.2024 в 15:06, Liseev сказал:

да, но если глянуть в ту табличку, то и этот корпус тоже пропадал и появлялся...

Gowin сотрудничал с тремя фабриками - HLMC, TSMC и SMIC.

На HLMC выпускались как раз пластины с чипами GW1N-1/1S.

На SMIC выпускаются пластины с чипами GW1NS/NSE.

Все прочее выпускается на TSMC.

С некоторого времени Gowin перестал использовать мощности HLMC, и объявил о снятии GW1N-1/1S с производства.

Наличие на локальных складах - это остатки от старых заказов.

Поддержка в новых версиях САПР сохраняется для обратной совместимости.

Для новых разработок, вместо GW1N-1 я рекомендовал бы использовать GW1N-2 , тем более, что там есть варианты со встроенным LDO (UV).

Можно было бы и GW1N-1P5, но там номенклатура типов корпусов победнее.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/23/2024 at 2:55 AM, milt said:

код, который вроде как однозначен, время от времени работает со сбоем

удалось решить проблему?

посмотрел код который вы ниже запостили.

В топ-модуле есть два параллельных места где присваивается pcm_memrq

// 1) стр 440
    if (pcm_memrqexec) pcm_memrq <= MC_IDLE;    // сброс запроса
// ...
// 2) параллельное место стр 446
    case (pcm_state)
      // ...
      // вот к этому "кейсу" в конечном счёте относится проблемный код в строке 679
      pcm_memrq <= MC_PBSPCRD;

так можно? Что в RTL сгенерировано для этих конструкций?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, StewartLittle said:

Gowin сотрудничал с тремя фабриками - HLMC, TSMC и SMIC.

 

О как, спасибо, прояснили

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...