Worldmaster 0 8 июля Опубликовано 8 июля (изменено) · Жалоба Здравствуйте. Чип GW2AR-LV18EQ144C8/I7 Подскажите пожалуйста где я что не заметил? Весь алгоритм допилил как положено. В моделсиме все как часы работает. В железе запросы в периферии тоже на ура. Но вот встроенная оператива SDRAM никак не хочет запускаться. Сама корка SDRAM_Controller_HS_Top вроде бы работает. через GAO видно что при запросах меняется состояние линий выходных данных. К тому же на команды всегда приходит ответ ACK. А вот при команде на чтение всегда FFF идет. Даже мусора нет никакого. Вот тот же фрагмент в моделсиме: Тут все нормально читается и данные приходят. Все стабильно. Даташит уже вдоль и поперек перерыл. Менял фазы сигналов по всякому. Частоту sdram снижал до минимум. И нивкакую. Линии указал в топе с таким же именем, все собралось. Нигде в логах ошибок по раме нет. Референса именно на эту корку в природе я так понял что нет. На сайте старая версия лежит но в ней тоже ничего такого нет. Может есть какие нибудь идеи что вообще можно еще сделать то? Врядли же чип бракованный попался и внутри не стартует рама? Но как проверить ?? К линиям выхода IO_sdram_dq gao подключиться не дает. Подкиньте хоть каких нибудь идей пожалуйста, уже проект в финальной части, вся периферия отлажена и работает. осталось только эта злосчастная SDRAM. Спасибо. IPUG756-1.0.1E_Gowin SDRAM HS IP User Guide.pdf Изменено 8 июля пользователем Worldmaster Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 июля Опубликовано 8 июля · Жалоба А вас не смущает частота 160 Мгц ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 8 июля Опубликовано 8 июля · Жалоба В 08.07.2024 в 17:34, Flip-fl0p сказал: А вас не смущает частота 160 Мгц ? Нет. А где вы увидели 160? Вообще в корке старого образца вообще 166 установлено и если верить даташита то работает. В этом проекте частота снижена до 100мгц. И 70 ставил и 20. Результат всегда один и тот же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 июля Опубликовано 8 июля · Жалоба 4 минуты назад, Worldmaster сказал: Нет. А где вы увидели 160? Вообще в корке старого образца вообще 166 установлено и если верить даташита то работает. В этом проекте частота снижена до 100мгц. И 70 ставил и 20. Результат всегда один и тот же. В GAO Состояние DQM какое ? Как инициализирована SDRAM ? Точно ли у вас двунаправленный буффер правильно подключен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 8 июля Опубликовано 8 июля · Жалоба В 08.07.2024 в 18:09, Flip-fl0p сказал: В GAO На картинках название сигнала показано но поскольку я его меняю туда сюда я уже забил на то чтобы переименовывать сигналы постоянно. Сейчас работает на частоте 100мгц. Частота на sdram сдвинута на 90градусов относительно частоты корки. В 08.07.2024 в 18:09, Flip-fl0p сказал: Как инициализирована SDRAM ? Если верить тестбенчу то вот такие: # testbench.SDRAMV : at time 427783.0 ns AREF : Auto Refresh # testbench.SDRAMV : at time 427883.0 ns AREF : Auto Refresh # testbench.SDRAMV : at time 427983.0 ns LMR : Load Mode Register # testbench.SDRAMV : CAS Latency = 2 # testbench.SDRAMV : Burst Length = 1 # testbench.SDRAMV : Burst Type = Sequential # testbench.SDRAMV : Write Burst Mode = Programmed Burst Length # testbench.SDRAMV : at time 428053.0 ns AREF : Auto Refresh Корка это делает сама. всегда с одинаковыми параметрами. Мне лишь возвращается флаг Ready когда все готово. В 08.07.2024 в 18:09, Flip-fl0p сказал: Состояние DQM какое ? если про O_sdram_dqm то оно всегда 0х000 В 08.07.2024 в 18:09, Flip-fl0p сказал: Точно ли у вас двунаправленный буффер правильно подключен. В мануале к корке сказано чтобы я просто не менял имена сигналов. Вот я и не менял их. По идее IDE сама все должна подключить как положено. IO_sdram_dq: inout std_logic_vector(31 downto 0); O_sdram_clk: out std_logic := '0'; O_sdram_cke: out std_logic := '0'; O_sdram_cs_n: out std_logic := '0'; O_sdram_cas_n: out std_logic := '0'; O_sdram_ras_n: out std_logic := '0'; O_sdram_wen_n: out std_logic := '0'; O_sdram_dqm: out std_logic_vector(3 downto 0); O_sdram_addr: out std_logic_vector(10 downto 0); O_sdram_ba: out std_logic_vector(1 downto 0) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 июля Опубликовано 8 июля · Жалоба Вижу какую-то хрень на самом деле. Вы настроили память на BL = 1. Т.е за одну команду вы записываете только одно слово. (одна команда записи на одно слово) А подкидываете целую кучу данных. Явное несоответствие настроек памяти и работы с ней. Вы на саму память даташит читали ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 8 июля Опубликовано 8 июля (изменено) · Жалоба В 08.07.2024 в 19:15, Flip-fl0p сказал: Вижу какую-то хрень на самом деле. Вы настроили память на BL = 1. Т.е за одну команду вы записываете только одно слово. (одна команда записи на одно слово) А подкидываете целую кучу данных. Явное несоответствие настроек памяти и работы с ней. Вы на саму память даташит читали ? Я же написал что я не настраиваю память. Корка делает все сама. Какая там внутри память стоит вообще хз. В корку можно передать длину и подразумевается что можно писать серией. Это мне тестовый модуль показал такие настройки но для встроенной рамы возможно эти параметры настраивают другой режим. Тут же написано что режим вот такой: Write Burst Mode = Programmed Burst Length Может быть корка сама и определяет длину записи когда я передаю команду запись и длину. Изменено 8 июля пользователем Worldmaster Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 июля Опубликовано 8 июля · Жалоба 7 минут назад, Worldmaster сказал: Я же написал что я не настраиваю память. Корка делает все сама. Какая там внутри память стоит вообще хз. В корку можно передать длину и подразумевается что можно писать серией. Это мне тестовый модуль показал такие настройки но для встроенной рамы возможно эти параметры настраивают другой режим. Тогда нельзя однозначно говорить что работа в симуляторе модели памяти будет соответствовать работе памяти в реально железке. Ибо китайцы могли навертеть что угодно. Я например вообще не смог заставить работать на симуляции PSRAM. Я вот указал на то, что явно мне не понравилось, поскольку имею опыт написания собственного SDRAM контроллера для памяти (для чипов Altera). И меня удивило несоответствие того, как ядро контроллера памяти настроило mode_register. Может для встроенной памяти - это норм. Я не знаю. Но мне кажется все-же китайцы взяли кристалл памяти и просто прилепили его рядом с кристаллом FPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 8 июля Опубликовано 8 июля · Жалоба В 08.07.2024 в 19:50, Flip-fl0p сказал: Но мне кажется все-же китайцы взяли кристалл памяти и просто прилепили его рядом с кристаллом FPGA. Так вот хочется в это верить. В 08.07.2024 в 19:50, Flip-fl0p сказал: Я например вообще не смог заставить работать на симуляции PSRAM. А в железе получилось? Все омрачается что нет примера для этой корки. В даташите они ссылаются на код, но на сайте нигде его нет. Валяется только для старой корки. Но с другой стороны все требования даташита то выполнены. Пишут что перед любой командой надо делать активацию - делаю командой 3. далее при команде чтения или записи нужно передать длину - тоже делаю. ACK приходит значит контроллер понимает чего от него хотят. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 9 июля Опубликовано 9 июля · Жалоба А самописный SDRAM не работает ? Этих контроллеров в сети - навалом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 9 июля Опубликовано 9 июля · Жалоба В 09.07.2024 в 09:58, Flip-fl0p сказал: А самописный SDRAM не работает ? А как я привяжусь к линиям то нужным? Я так понял тут IDE как то рулит этими связями внутри. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 9 июля Опубликовано 9 июля · Жалоба 9 минут назад, Worldmaster сказал: А как я привяжусь к линиям то нужным? Я так понял тут IDE как то рулит этими связями внутри. В случае PSRAM я просто эти выводы объявил на топовом уровне. Правда я и контроллер от GOWIN пользовал. Но сдается мне, контроллер не обязательная штука. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 9 июля Опубликовано 9 июля · Жалоба 15 часов назад, Worldmaster сказал: Какая там внутри память стоит вообще хз. Как можно управлять неизвестной мс памяти? Где-то в доках должна быть инфа о чипе SDRAM - однозначно! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 9 июля Опубликовано 9 июля · Жалоба В 09.07.2024 в 10:15, Flip-fl0p сказал: В случае PSRAM я просто эти выводы объявил на топовом уровне. интересно конечно.. В 09.07.2024 в 10:15, Flip-fl0p сказал: Но сдается мне, контроллер не обязательная штука. Ну неужели корка официальная и не рабочая от слова совсем? мало верится в такое .. А можете что нибудь посоветовать из рабочих модулей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 9 июля Опубликовано 9 июля · Жалоба 16 часов назад, Worldmaster сказал: CAS Latency = 2 Я бы 3 попробовал, и частоту не выше 133 MHz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться