[an error occurred while processing this directive]
|
1. Начнем стого, что я переписывался с алтерой, когда посмотрел как они сделали контроллер, они так и сказали, что он расчитан на работу на низких частотах, т.к. адрес и данные проходят довольно длинный путь, выходят из DataMaster и через логику арбитров попадают сразу на ножки (где-то 30нс). Поэтому на частотах более 33МГц контроллер так плохо и работает.
2. промоделируй работу девайса в моделсиме с подключенной моделью памяти. Модели можно найти на www.micron.com, или на сайте производителя твоей памяти. Если родной нет, то бери лучше с мокронаюком, времена в ней поправишь на необходимые. Увидишь, что какие-нибудь биты не успеваью долетать до памяти, вот она у тебя и глючит.
3. Чтобы все заработало надо сгенерить проц с SDRAM контроллером настроенным на твои парметры, и поставить частоту работы системы на необходимую тебе(при этом реальная работа системы будет ниже). Контролер генерится в отдельный файл (обычно sdram_controller_0.vhd) и его правишь.
3. Контроллер сам по себе (без изменений) работает где-то на 70МГц(при включении в систему я добивался 54МНц, но приходится править class.ptf добавлять параметр read_delay= "1"; (посмотри в доке на шину Avalon режим работы с задержкой по чтению) ). Чтобы заставить его работать лучше необходимо изменить немного управлющий автомат контроллера, чтобы при обращении к нему защелкивать в нем адрес и данные, это удленяет цикл чтения на такт(будет 4 такта). Если не хочется тратить еще один такт, то надо разносить частоты работы проца и контроллера на разные(у меня проц=66, контролер=100МГц) при этом цикл чтения 3 такта, запись за два.
Файл генерится на VHDL, так что если его знаешь, переделка займет дня два.
E-mail: info@telesys.ru