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

Подскажите, пожалуйста, правильно ли я понял, что все порты у GW1N, включая LVCMOS18 толерантны к приходящим 3,3 V?

 

Без имени.png

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


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

Получилось задействовать MULTI BOOT - очень быстрое переключение между двумя конфигурациями, хранящихся в виде двух отдельных "битстримов" на внешней флеш для GW1NR9-C (и Tang Nano 9k)

Работает замечательно и, что главное, плис переконфигурируется практически мнгновенно. Но мне не удалось добиться переключения между более чем двумя конфигурациями.

Кто-нибудь смог победить?

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


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

В 08.02.2023 в 12:39, ValeiyT сказал:

все порты у GW1N, включая LVCMOS18 толерантны к приходящим 3,3 V?

По таблице похоже, что так, но гляньте на те же данные у ПЛИС других вендоров - что там?

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


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

1 час назад, ValeiyT сказал:

очень быстрое

Абсолютно не инженерный подход. См. прилагаемый документ 

ПСВСЦПW100-1.1 – Время старта центрального процессора - Web.pdf

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


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

3 часа назад, Zversky сказал:

Абсолютно не инженерный подход.

Я понимаю ) В данном случае необхомости проводить исследовательские работы необходимости не было. И вот почему - все тайминги, участвующие в данной процедуре довольно подробно описаны в документации и не верить им, во всяком случае на данном этапе, оснований нет. Единственная переменная величина - это размер самой прошивки, но и в этом случае зная скорость тактирования EEPROM, вычислить время загрузки не представляет сложности. Однако, тем не менее, соглашусь с Вами, что в дальнейшем, когда задуманное дойдет до некоего продкшна, это сделать так или иначе придется. А сейчас важен сам факт.

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


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

26 минут назад, ValeiyT сказал:

и не верить им

Одна из любимых цитат классика бывшего тестя:
"Блажен, кто верует:
Тепло ему на свете"

28 минут назад, ValeiyT сказал:

А сейчас важен сам факт.

Если важен сам факт, то слова "практически мгновенно" абсолютно лишние. Именно с них всё и началось. И именно на этом хочу закончить обсуждение этого аспекта.

6 часов назад, ValeiyT сказал:

Кто-нибудь смог победить?

А вот это остаётся открытым. Могу попробовать на досуге, если расскажете, применим ли данный режим к GW2A?

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


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

56 минут назад, Zversky сказал:

А вот это остаётся открытым. Могу попробовать на досуге, если расскажете, применим ли данный режим к GW2A?

Пишут, что применим.

Кратко - готовится два проекта. Плис переводится в режим MSPI (MODE[2:0]=2)

В настройках первого:

Спойлер

image.thumb.png.50b0df62321a2bef6b41028ec270ebba.png

Параметр SPI Flash Address это адрес во флэш, с которого будет загружена вторая прошивка.

Расчитывается так: размер бинарного (*.bin) файла первой прошивки в байтах+4096, полученное число первести в шестнадцатиричный формат и обнулить у него 12 младших разрядов.

В настройках второй прошивки:

Спойлер

image.thumb.png.df9c0d82c9da7b177cb9980b9acec48a.png

Здесь SPI Flash Address начальный адрес следующей прошивки. У меня стоит ноль (то есть после срабатывания RECONFIG_N запуститься прошивка с нулевого адреса, как после включения питания), хотя по идее можно начальный адрес третьей писать.

Третья и последующая у меня не заработала. Только две.

Само переключение конфигураций можно делать прямо в коде в конструкции типа:

module clip_led (
	input clk,
    output reg [5:0]led,
    output reg Reconfig = 1'b1,
    input Reset_Button);
	
	reg [31:0] time_r = 16'd70;
    reg [31:0] count = 32'd6000000;

        always @(posedge clk)
        begin
           if(Reset_Button) begin
            if(time_r < 16'd70) begin time_r <= time_r + 1; Reconfig <= 0;end
            else Reconfig <= 1;
           end 
           else time_r <= 0;
        end

    always @(posedge clk)
        begin
        if (count == 0)
            begin
                led[5:0] <= ~led[5:0]; count <= 32'd6000000;
            end
        else  count <= count - 1'b1;
        end
endmodule

В констрейнах прописать:

IO_LOC "led[5]" 16;
IO_PORT "led[5]" PULL_MODE=UP DRIVE=8;
IO_LOC "led[4]" 15;
IO_PORT "led[4]" PULL_MODE=UP DRIVE=8;
IO_LOC "led[3]" 14;
IO_PORT "led[3]" PULL_MODE=UP DRIVE=8;
IO_LOC "led[2]" 13;
IO_PORT "led[2]" PULL_MODE=UP DRIVE=8;
IO_LOC "led[1]" 11;
IO_PORT "led[1]" PULL_MODE=UP DRIVE=8;
IO_LOC "led[0]" 10;
IO_PORT "led[0]" PULL_MODE=UP DRIVE=8;
IO_LOC "clk" 52;
IO_PORT "clk" IO_TYPE=LVCMOS33 PULL_MODE=UP;
IO_LOC "Reset_Button" 4;
IO_LOC "Reconfig" 9; //RECONFIG_N  Для GW2A это B10

Как оказалось ножку RECONFIG_N вовсе не нужно выводить наружу. Можно прямо в коде дергать её к нулю на необходимое время.

Ну и :

openFPGALoader --external-flash -o 0x0 /home/tvl/Gowin/Projects/proba-1/impl/pnr/proba-1.fs

openFPGALoader --external-flash -o 0x41000 /home/tvl/Gowin/Projects/proba-2/impl/pnr/proba-2.fs

(у меня линукс, а внем штатный программатор не работает)

Как-то так.

Изменено пользователем ValeiyT

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


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

14 часов назад, ValeiyT сказал:

Как оказалось ножку RECONFIG_N вовсе не нужно выводить наружу. Можно прямо в коде дергать её к нулю на необходимое время.

Подробнее про это можно, пожалуйста? У парсера Gowin Reconfig_N является зарезервированным словом? Как нужно написать в точности, чтобы не пришлось наружу ногу тащить?

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


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

1 час назад, fingertouch сказал:

Подробнее про это можно, пожалуйста? У парсера Gowin Reconfig_N является зарезервированным словом? Как нужно написать в точности, чтобы не пришлось наружу ногу тащить?

Да все просто: в констрейне (*.cst) обзываете эту ногу каким угодно образом, напрмие как у меня:

IO_LOC "Reconfig" 9;

(девятая нога у GW1NR-LV9QN88PC6/I5 в Tang Nano-9k - это как раз RECONFIG_N)

Даете этому имени сатус "output" в параметрах модуля с обязательным первоначальным присвоением высокого уровня:

output reg Reconfig = 1'b1

и обращаетесь к нему через "Reconfig" , а не через RECONFIG_N

Работает)

Добавлю - ни в коем случае не назначать RECONFIG_N в "Dual Purpose Pin" этот вывод как "Regular IO" - сразу все станет колом. Конфликты...

Хотя... в общем не надо назначать как вход и все будет ок )

Изменено пользователем ValeiyT

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


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

В 06.03.2023 в 19:28, ValeiyT сказал:

(у меня линукс, а внем штатный программатор не работает)

Прекрасно штатный программатор из Gowin EDA работает в Linux - проверено в центосе, убунте и минте.

Нужно только правильно права прописать.

 

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


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

4 часа назад, ValeiyT сказал:

и обращаетесь к нему через "Reconfig" , а не через RECONFIG_N

А вот это о чём?:

image.thumb.png.3305fa57f1cb4b6be2f574d5ad103b03.png

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


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

50 минут назад, StewartLittle сказал:

Прекрасно штатный программатор из Gowin EDA работает в Linux - проверено в центосе, убунте и минте.

Нужно только правильно права прописать.

 

На tang nano 9k программатор выполнен на bl702 и он заработал в линуксе только после его  перепрошивки, взятой с этого форума (спасибо, кстати). Но даже после этого он шьет только SRAM и embedded flash. Внешнюю память ни в какую. Про права в курсе - второй десяток лет линукс-администор ) Но, как говорится, еще не вечер - поробуем разобраться.

 

17 минут назад, Zversky сказал:

А вот это о чём?:

 

Вообще говоря, было бы странно если бы подобного предупреждения не было. В смысле: а че это ты, пользователь, вдруг захотел напрямую вызывать (какой-то) gwConfig для программирования )

Думаю, это предупреждение для невнимательных пользователей, вздумавших бездумно испоьзовать пины.

 

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


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

В 07.03.2023 в 15:02, ValeiyT сказал:

На tang nano 9k программатор выполнен на bl702

Ну, я-то про штатный программатор писал, который на FT2232H.

 

Кстати, а какая именно версия Gowin EDA у Вас?

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


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

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

Кстати, а какая именно версия Gowin EDA у Вас?

Благодаря, Вам 1.9.8.10

Спасибо еще раз! 

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


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

В 06.03.2023 в 19:28, ValeiyT сказал:

Параметр SPI Flash Address это адрес во флэш, с которого будет загружена вторая прошивка.

Расчитывается так: размер бинарного (*.bin) файла первой прошивки в байтах+4096, полученное число первести в шестнадцатиричный формат и обнулить у него 12 младших разрядов.

Это где-то английским (китайским) по белому прописано?

Как, например, здесь?: Patents Assigned to Gowin Semiconductor Corporation

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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