реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> altufm_i2c, плохо работает
vitan
сообщение Nov 20 2013, 13:38
Сообщение #1


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



В epm570TC100 (Quartus 9.0) плохо работает сабж. Сбоит, часто не определяется на живом железе.
При компиляции варнинг:
Цитата
Circuit may not operate. Detected 4 non-operational path(s) clocked by clock "SCL" with clock skew larger than data delay.


Что с этим можно сделать? Перепробовал кучу настроек компилятора, создал тестовый проект с одной только этой функцией, менял назначение пинов... Цифры в репорте меняются не намного.

Кто-нибудь это юзал вживую?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 20 2013, 13:48
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(vitan @ Nov 20 2013, 17:38) *
В epm570TC100 (Quartus 9.0) плохо работает сабж. Сбоит, часто не определяется на живом железе.

Чисто навскидку... У i2c медленные фронты... Я ставил фильтр от дребезга по фронтам..


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
vitan
сообщение Nov 20 2013, 14:02
Сообщение #3


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



Цитата(iosifk @ Nov 20 2013, 17:48) *
Чисто навскидку... У i2c медленные фронты... Я ставил фильтр от дребезга по фронтам..

Да тут почище дело...
Взял квартус 7.2. То же самое.
Удалил все ассайнменты, девайс сменил. Хоть бы хны.

Вот что дальше делать? cranky.gif

UPD. Исходно хотел сделать размер памяти 1К. Но если увеличивать, то и количество этих non-operational path(s) увеличивается.

UPD. Скачал с альтеры пример из комплекта к AN489. И там то же самое. Это как понимать-то?
Go to the top of the page
 
+Quote Post
vitan
сообщение Nov 20 2013, 17:53
Сообщение #4


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



Какой-то бред...
Выставил констрейн на другой клок, который вообще никак не связан с этим куском проекта, варнинги исчезли.

Но проблема осталась. Единственное, что еще можно попрбовать - это поставить поменьше подтяжку, чтобы фронт положительный был покруче. Но звонов никаких нет, снижение частоты тоже не помогает. Повторяется на двух платах.

Неужели никто не пользовал UFM в MAXII?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 20 2013, 18:47
Сообщение #5


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(vitan @ Nov 20 2013, 20:53) *
Неужели никто не пользовал UFM в MAXII?

Я использовал, правда не I2C, а самописаный MicroWire в стиле 93Cxx. Проблем не припомню, завелось с пол-оборота, и на несколькис сотнях экземпляров работало без проблем. Правда, это было еще в дотаймквестовскую эру sm.gif , так что sdc для этого проекта не существовало.
А вот еще вопрос с уровнем Ваших внешних сигналов I2C - какой он у Вас? 3,3В? 5В?
Я, к примеру, делал специальный диодно-резисторный согласователь между FT254BM и MAX II.

Цитата(vitan @ Nov 20 2013, 16:38) *
Перепробовал кучу настроек компилятора...

А в настройках мегафункции чего-нибудь не пробовали подкрутить?


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
vitan
сообщение Nov 20 2013, 19:16
Сообщение #6


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



Цитата(Stewart Little @ Nov 20 2013, 22:47) *
А вот еще вопрос с уровнем Ваших внешних сигналов I2C - какой он у Вас? 3,3В? 5В?
Я, к примеру, делал специальный диодно-резисторный согласователь между FT254BM и MAX II.

Всё трехвольтовое.

Цитата(Stewart Little @ Nov 20 2013, 22:47) *
А в настройках мегафункции чего-нибудь не пробовали подкрутить?

Пробовал. Единственное, что получилось (правда уже могу ошибаться, много экспериментов уже прошло с тех пор) - указать режим записи Page, доступ разрешить по записи, и при этом указать, что нет стирания (NO_ERASE). Вроде бы, при таких настройках проходила успешно запись в "епромину", но только один раз, первый после прошивки самой плисины, да и то нестабильно.
Это еще как-то понять можно, но вот остальное я понять не могу. В частности, не понятно, почему она плохо определяется (делаю u-boot-ом i2c probe несколько раз). Ну и не пишется тоже.
Даже не знаю, мастер на шине аппаратно реализован в проце, другие девайсы на этой же шине работают... Времянки что ли анализировать альтеровские i2с-шные на предмет общеупотребительных значений?
Мда, не ожидал, думал, все с полпинка заведется... sad.gif
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 20 2013, 20:45
Сообщение #7


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(vitan @ Nov 20 2013, 22:16) *
Пробовал. Единственное, что получилось (правда уже могу ошибаться, много экспериментов уже прошло с тех пор) - указать режим записи Page, доступ разрешить по записи, и при этом указать, что нет стирания (NO_ERASE). Вроде бы, при таких настройках проходила успешно запись в "епромину", но только один раз, первый после прошивки самой плисины, да и то нестабильно.
Это еще как-то понять можно, но вот остальное я понять не могу. В частности, не понятно, почему она плохо определяется (делаю u-boot-ом i2c probe несколько раз). Ну и не пишется тоже.
Даже не знаю, мастер на шине аппаратно реализован в проце, другие девайсы на этой же шине работают... Времянки что ли анализировать альтеровские i2с-шные на предмет общеупотребительных значений?
Мда, не ожидал, думал, все с полпинка заведется... sad.gif

Насчет записи я не совсем понял. Вы хотите из MAX II сделать "полный аналог" еепромки?
Тогда следующие предостережения:
1. у UFM секторная организация. Соответственно, стриание происходит посекторно, ну и с повторной перезаписью вопросы возникают.
2. гарантированный ресурс UFM у МАХ II всего 100 циклов стирания-записи. По факту при нормальных условиях получается больше, но это уже на собственный страх и риск.
ПМСМ, из UFM хорошо можно только читать laughing.gif


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
vitan
сообщение Nov 21 2013, 06:09
Сообщение #8


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



Цитата(Stewart Little @ Nov 21 2013, 00:45) *
Насчет записи я не совсем понял. Вы хотите из MAX II сделать "полный аналог" еепромки?
Тогда следующие предостережения:
1. у UFM секторная организация. Соответственно, стриание происходит посекторно, ну и с повторной перезаписью вопросы возникают.
2. гарантированный ресурс UFM у МАХ II всего 100 циклов стирания-записи. По факту при нормальных условиях получается больше, но это уже на собственный страх и риск.
ПМСМ, из UFM хорошо можно только читать laughing.gif

Нет я про полный аналог все понимаю, мне не надо туда писать со страшной силой, имеющегося ресурса достаточно. Про секторную организацию тоже все правильно, но опять же, меня это устраивает. Вообще эта фигня планируется для хранения всякой ерунды типа мак-адресов, т.е. будет буквально один раз записываться на производстве, а потом даже может и блокироваться на запись (пока не решил, запустить бы...).
Тем не менее, запись хотелось бы иметь работающую, точнее даже так: я уверен, что если запись не работает, то и читаться\определяться нормально не будет. Т.е. я думаю, что косяк где-то в этой функции в части интерфейса i2c.
Уфф... Пойду резисторы попаяю...
Go to the top of the page
 
+Quote Post
vitan
сообщение Nov 22 2013, 09:04
Сообщение #9


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



Вот ведь.. И на старуху бывает проруха... sm.gif
Прошивал плисину не обычным байтбластером, а внешним программатором elnec, и с непривычки не заметил, что не выставлено предвариательное стирание. Сбои, вроде, исчезли.

Но теперь вторая проблема.
Хочу проинитить память данными. Подсовываю файл .mif, делаю дамп на железе и вижу, что данные идут через одно, а не друг за другом.
Т.е. у меня в файле написано:

00 : 55
01 : aa
02 : 12
03 : 34

А в реальности дамп следующий:

00 : 55
01 : ff
02 : aa
03 : ff
04 : 12
05 : ff
06 : 34
07 : ff

Перепробовал все комбинации width в файле не помогает. При этом ячейки с FF работают нормально (с учетом особенностей стирания, конечно), т.е. я могу их записать со стороны мастера на I2C.

В чем тут дело, не пойму никак?
Go to the top of the page
 
+Quote Post
vitan
сообщение Nov 22 2013, 21:10
Сообщение #10


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



А дело, похоже, в общей кривизне этой функции и документации на неё. Впервые столкнулся с тем, что для запуска функции недостаточно хелпа в квартусе.
Вот здесь объясняют, почему в данных пропуски, а также много чего еще. Зачем и почему такие сложности - загадка. И как именно сделать тот самый padding в mif-файле тоже весьма не отчетливо написано.
Но это еще не все. Реально можно указать размер 8К, о чем нигде ни слова, и это работает, только непонятно, как там все мапится...
Мда... Неожиданно низкое качество... crying.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th July 2025 - 15:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.02874 секунд с 7
ELECTRONIX ©2004-2016