|
Wiznet vs Altera, голова уже болит(((( |
|
|
|
Apr 18 2013, 15:19
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Здравсвуйте, очень надеюсь что кто-нибудь сможет подсказать. Заранее хочу извиниться если тема повторялась.. уже третий день не могу понять в чем проблема((((( Есть Циклон 4 + Визнет w5300. пытаюсь настроить Визнет. частота 100 мгц. делаю все как по даташиту. Код void sbros() // функция сброса reset {
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x07); // сброс reset
for (i=0; i<23; i++){} // пауза 4 мкс
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0F); // настройка PLL
for (i=0; i<45000; i++){} // пауза 20мс }
void write_wiz(unsigned short adr, unsigned short data) // функция записи {
IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADR_BASE, adr); IOWR_ALTERA_AVALON_PIO_DATA(PIO_DATA_BASE, data);
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0E); // установка cs
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0A); // установка wr
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0E); // снятие wr
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0F); // снятие cs }
void read_wiz(unsigned short adr) // функция чтения { unsigned short data;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADR_BASE, adr); // выставлzем адресс
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0E); // установка cs
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0C); // установка rd
data=IORD_ALTERA_AVALON_PIO_DATA(PIO_ADR_BASE);
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0E); // сн€тие rd
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0F); // сн€тие cs
printf("%X %X\n",adr,data); // вывод адреса и данных }
int main() {
IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_DATA_BASE, 0xFFFF); // тристабильные ножки данных на выход
IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0F); // управляющие в единицы
sbros();
write_wiz(0x000,0xB800); // запись MR -- прямая адрессация
write_wiz(0x008,0x0000); // установка MAC
write_wiz(0x00A,0x0000);
write_wiz(0x00C,0x0014);
IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_DATA_BASE, 0x0000); // тристабильные ножки данных на вход
read_wiz(0x000); // чтение данных по адресам
read_wiz(0x008);
read_wiz(0x00A);
read_wiz(0x00C);
while(1){}
return 0; } Результат: чтобы я не записывал читается во всех регистрах 0xB800. И комп не видит MAC-адрес.... Может кто-нибудь скажет в чем ошибка. Заранее спасибо)))
|
|
|
|
|
Apr 18 2013, 16:31
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
По моему, вы не соблюли временные интервалы для управляющих сигналов. 100МГц соответствует 10нС на такт, а по даташиту на W5300 мин Trd, Tcs = 65нС. Сделайте, для начала, сигналы заведомо длиннее, чем заявленые. Читайте данные также не ранее чем Tdata_setup = 42 нС. А вообще, можно было создать собственный компонент Avalon-MM, где и задать необходимые временные интервалы.
Сообщение отредактировал Копейкин - Apr 18 2013, 16:31
|
|
|
|
|
Apr 18 2013, 17:14
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Сигналы и так длинные. Промежуток между операциями, к примеру:запись в порт (две подряд идущие операции), равен 320 нс. Код IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0A); // установка wr IOWR_ALTERA_AVALON_PIO_DATA(PIO_MANAG_BASE, 0x0E); // снятие wr Цитата(Копейкин @ Apr 18 2013, 20:31)  А вообще, можно было создать собственный компонент Avalon-MM, где и задать необходимые временные интервалы. А как его сделать собственный компонент? читал что-то про это. Но где он в SOPC находиться и как настраивается не нашел(((
Сообщение отредактировал lons83 - Apr 18 2013, 17:19
|
|
|
|
|
Apr 19 2013, 04:56
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата(Копейкин @ Apr 19 2013, 00:11)  Касательно W5300, у меня обеспечивает поток ~45мбит UDP. Аппаратная поддержка TCP/IP, UDP. А что вы от него хотите? TCP и DHCP если есть возможность. Ну и настоящий ТСР, а не урезанный с кучей ограничений, то есть чтобы не выяснилось в середине работы что втыкание этого устройства возможно только в определенные виды сетей, а любая не регламентированная активность в сети валит его или он валит сеть насмерть. Или что он не может работать с пакетами произвольной длинны, или что он дохнет от коротких пакетов. правильно я понимаю что вы в него пихаете данные, он их пакует в ТСП пакет и пускает дальше, а все что пришло обратно с его айпишником или широковещательно с правильным мак адресом, он распаковывает и отдает вам как тело пакета, с отрезанными заголовками и прочей сервисной надстройкой?
|
|
|
|
|
Apr 19 2013, 05:17
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Цитата(Копейкин @ Apr 18 2013, 20:31)  100МГц соответствует 10нС Такой вопрос. у меня на вход подается 50 Мгц. я через PLL разгоняю до 100Мгц и подаяю на вход своего МК. В SOPC стоит источник частоты - External со 100 Мгц... Я все правильно делаю? Просто я тут задумался... как я уже сказал между снять сигнал и выставить сигнал проходит 320нс... или это уже особенность компилятора?
|
|
|
|
|
Apr 19 2013, 08:08
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Так, по пунктам. 1) TCP и DHCP есть такая возможность. Можно даже посмотреть как это делают, скачав на сайте wiznet wirmware для EVB-B1 демо-платы. Там "С" исходники для Atmel AVR. Про ограничение сетей - 10\100 Мбит сети. Я в большую сеть не втыкал, но 3-4 устройства у меня на столе жили исправно, кстати на коротких пакетах. Передаёт пакеты не больше стандартной длины. Содержимое буфера сам делит на пакеты. Приходящим, отрезает заголовки Ethernet, оставляет TCP и UDP. В режиме MACRAW, позволяет оставить все заголовки на месте и разбирать вручную.
2) lons83, скриншот из СОПЦбилдера можно? И как сгенерированая система дальше подключается тоже... Если вы тактируете систему 100МГц, то между 2 соседними операциями вывода в порт 320нс - это много. Чем измеряете? PLL правильно сконфигурирована? Тактовая частота одна, для всех компонентов Nios, GPIO ?
|
|
|
|
|
Apr 19 2013, 20:44
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(Копейкин @ Apr 19 2013, 00:11)  Касательно W5300 О! Интересно узнать, w5300 также греется как w5100? И как она по ЭМС, на помехах мощных не зависает, не отваливается? Есть опыть с 5100, греется зараза как печка, выше определенной температуры (летом) без радиатора глючит напрочь. И на мощные помехи (типа пускатели на 75кВт рядом выключаются, ну как рядом - в соседнем шкафу) реагирует - отваливается TCP коннект, иногда просто виснет и не работает пока заножку ресета не дернешь. В W5300 это исправлено? Сейчас поднял TCP/IP/UDP на опенкоровском эзернете - в лабораторных условиях работает, скоро проверю девайс в суровых условиях - частотники, пускатели, разрядники. Если все ок - забываю про визнет и пользую только опенсорсы. Так хоть поправить можно если что, все под контролем. Цитата Скажи лучше этот W5300 - нормальная штука, или так заплатка для ленивых? Типа модулей USB от FTDI когда по быстрому надо сделать что-то, а на нормальные разбиралки сил и времени нет? По мне так больше для ленивых  Год с лишним мучился с 5100 - отваливался коннект - через 2 года увидел свежую эрату - там моя проблема и написано что решения нет! Ресетьте мол чип и все заново. Ну это я и без них выяснил...
|
|
|
|
|
Apr 22 2013, 04:33
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Цитата(Копейкин @ Apr 19 2013, 12:08)  2) lons83, скриншот из СОПЦбилдера можно? И как сгенерированая система дальше подключается тоже... Если вы тактируете систему 100МГц, то между 2 соседними операциями вывода в порт 320нс - это много. Чем измеряете? PLL правильно сконфигурирована? Тактовая частота одна, для всех компонентов Nios, GPIO ? Выкладываю скрины. Измеряю осциллографом. PLL. ну вроде по стандарту. Режим Нормал. 18 Мгц на входе 100 Мгц ны выходе. P.S. Если просто создать PLL. Подать на вход частоту и на выходе смотреть осциллографом то будет 100Мгц. и 10 нс а если через NIOS (то есть на вход 100Мгц и смотреть соседние операции вкл и выкл то будет 320 нс)
Сообщение отредактировал lons83 - Apr 22 2013, 05:23
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 22 2013, 12:40
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Тогда остаётся только предположить, что вы используете экономный вариант ядра Nios. Он действительно очень медленый, может лучше стандартный взять? Далее, посмотрите эпюры ваших сигналов с помощью SignalTap. Это очень полезный инструмент, стоит освоить. Мне всё-таки не нравится в вашем коде, что чтение данных идёт непосредственно после установки сигнала RD для W5300. Попробуйте вставить задержку на 4 пустых (nop) инструкции и посмотрите, измениться ли читаемое значение. И потом, почему, в вашем коде, вы читаете данные из порта адреса (PIO_ADR_BASE), а не данных (PIO_DATA_BASE). Может в этом причина?
|
|
|
|
|
Apr 23 2013, 10:57
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Цитата(Копейкин @ Apr 22 2013, 16:40)  Тогда остаётся только предположить, что вы используете экономный вариант ядра Nios. Он действительно очень медленый, может лучше стандартный взять? Далее, посмотрите эпюры ваших сигналов с помощью SignalTap. Это очень полезный инструмент, стоит освоить. Мне всё-таки не нравится в вашем коде, что чтение данных идёт непосредственно после установки сигнала RD для W5300. Попробуйте вставить задержку на 4 пустых (nop) инструкции и посмотрите, измениться ли читаемое значение. И потом, почему, в вашем коде, вы читаете данные из порта адреса (PIO_ADR_BASE), а не данных (PIO_DATA_BASE). Может в этом причина? Да. я забыл упомянуть что использую самый слабый проц. Я поставил в WEB версии самый сильный проц. и залил в режиме Run AS, предварительно увеличев задержки между операциями. (хотя по данным осциллгрофа и даташит на визнет времени мне хватало) Результат. Я наконец прочитал то что записывал, поставив между КАЖДОЙ операцией задержку вида : for (i=0;i<2000;i++  ; Но компьютер по прежнему не видит плату с Визнет((((((( P.S. да виноват c PIO_DATA_BASE и PIO_ADR_BASE просто опечатка вышла))))
|
|
|
|
|
Apr 23 2013, 12:33
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Скажите, а каким осциллографом вы наблюдаете 100МГц сигналы? Советую настоятельно освоить SignalTap (внутрикристалльный многоканальный логический анализатор). Компьютер не видит Wiznet, в смысле не пингается? Без корректной настройки собственного IP и MAC и не будет пингаться... Возьмите готовый пример Для предыдущей версии (W3150), станет понятно, как работать с микросхемой.
|
|
|
|
|
Apr 23 2013, 21:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(lons83 @ Apr 23 2013, 14:57)  Но компьютер по прежнему не видит плату с Визнет((((((( Ну так стандартно по порядку: питание проверить, аналоговое и цифровое, аналоговое должно идти через ферриты (хотя у меня и с перемычками работало) подключение трансформатора (кстати, линк-то светится на визнете?), сам трансформатор правильный (т.е. 1:1)? Средние точки по рефренс дизайну? Резисторы на 50 ом на трансформаторе правильные висят? Генератор генерит? (хотя вроде без генератора не читается то что запишешь) MAC, subnet mask, ip записали - прочитали. Совпадает? У компа которым пингуете подсеть та же? Включить лучше через свитч какой-нибудь. Напрямую был случай не пинговался визнет пока не выставил принудительно 100 Мбит на компе. В остальных режимах (авто, 10 мбит) визнет молчал. Через свитч - пинговался всяко. Ну и тупо замыкания между ногами в аналоговой части посмотрите Если все ОК обязано работать
|
|
|
|
|
Apr 24 2013, 05:39
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Цитата(Копейкин @ Apr 23 2013, 16:33)  Скажите, а каким осциллографом вы наблюдаете 100МГц сигналы? Советую настоятельно освоить SignalTap (внутрикристалльный многоканальный логический анализатор). Компьютер не видит Wiznet, в смысле не пингается? Без корректной настройки собственного IP и MAC и не будет пингаться... Возьмите готовый пример Для предыдущей версии (W3150), станет понятно, как работать с микросхемой. Textronix модель не помню 500 Mhz. Начал осваивать))) Даже соединения не видит с компом . Нет сети и все. Хотя в компе все настроено. Сейчас буду схему смотреть. Есть подозрение что кварц как-то не так работает или вообще не работает(((( Цитата(alexPec @ Apr 24 2013, 01:28)  Ну так стандартно по порядку:
питание проверить, аналоговое и цифровое, аналоговое должно идти через ферриты (хотя у меня и с перемычками работало) подключение трансформатора (кстати, линк-то светится на визнете?), сам трансформатор правильный (т.е. 1:1)? Средние точки по рефренс дизайну? Резисторы на 50 ом на трансформаторе правильные висят? Генератор генерит? (хотя вроде без генератора не читается то что запишешь) MAC, subnet mask, ip записали - прочитали. Совпадает? У компа которым пингуете подсеть та же? Включить лучше через свитч какой-нибудь. Напрямую был случай не пинговался визнет пока не выставил принудительно 100 Мбит на компе. В остальных режимах (авто, 10 мбит) визнет молчал. Через свитч - пинговался всяко. Ну и тупо замыкания между ногами в аналоговой части посмотрите
Если все ОК обязано работать Сейчас буду проверять все то что Вы написали. с генератором не понятно... то ли не генерит,то ли генерит но не так как надо. Да записываю MAC, subnet mask, ip - читает если выставлять большие задержки. Если выставлять как согласно дата шиту из все регистров читается только 0xB800... с увелечением задержек появляются другие значения уже (такое ощущение что информация на выходах DATA просто не успевает меняться) Не то что не пингуется так и не видет соединения - нет сети и все((( У ALTER'ы входные PIO с подтягивающим резистором или нет? то есть нужно ли на соединении Wiznet (DATA) - Cyclone (PIO - biddirection) вешать подтягивающий резистор?
|
|
|
|
|
Apr 24 2013, 06:48
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(lons83 @ Apr 24 2013, 09:39)  Не то что не пингуется так и не видет соединения - нет сети и все(((
У ALTER'ы входные PIO с подтягивающим резистором или нет? то есть нужно ли на соединении Wiznet (DATA) - Cyclone (PIO - biddirection) вешать подтягивающий резистор? У циклона есть пул-апы если надо. Если линка нет то в первую очередь генератор. Линк по-моему должен быть дже если не конфигурировать регистры, после сброса. А вообще сброс-то правильный? Может в состоянии сброса находится (активный уровень на ресете)? На кварце висит 1М резистор? Без него генератор не заводится, и такое было. На RSET (1 нога) резистор правильный? Test mode на земле должны быть, проверьте.
|
|
|
|
|
Apr 24 2013, 07:51
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Цитата(alexPec @ Apr 24 2013, 10:48)  У циклона есть пул-апы если надо.
Если линка нет то в первую очередь генератор. Линк по-моему должен быть дже если не конфигурировать регистры, после сброса. А вообще сброс-то правильный? Может в состоянии сброса находится (активный уровень на ресете)? На кварце висит 1М резистор? Без него генератор не заводится, и такое было. На RSET (1 нога) резистор правильный? Test mode на земле должны быть, проверьте. Сброс правильный. ну как правильный - время чуть больше чем в даташите, подаю 0 - примерно 4 мкс на ресет потом в 1. жду 20 мс пока встанет PLL. и начинаю зашивать mac, ip и т.д. на кварце 2.5 мегома. Кстати не могу найти обвязку кварца. в даташите6 ее нет. на RSET правильно. 1 резистор 12,3ком TEST MODE на земле. нога LINKED в 1 все время. P.S. а как установить пул-апы? не нашел функции.
Сообщение отредактировал lons83 - Apr 24 2013, 08:00
|
|
|
|
|
Apr 24 2013, 10:06
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Цитата(Golikov A. @ Apr 24 2013, 13:46)  народ обсуждал что если делать кварц по даташиту то про 1 МОм резистор нет ни слова и не работает, в тестовых платах резистор есть, ставили и начинало работать... Простите не очень понял. То есть должен быть кварц четко на 1 Мом ?
|
|
|
|
|
Apr 24 2013, 11:41
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Цитата(Golikov A. @ Apr 24 2013, 15:29)  нет, там должен быть 1 мегоомный резистор, кажется в параллель кварцу... поищите где то тема была, что-то найти не могу. По памяти смысл такой что есть отладочные платы от них, и надо делать как на платах, там этот резистор добавлен, если делать как в даташите то не работает... В даташите нет вообще этой обвязки касательно кварца. Но, я на сайте, только что нашел в разделе визнет 5300 схему подключения - там есть резистор 1 Мом. Да и он в параллель.
|
|
|
|
|
Apr 27 2013, 06:18
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Генератор нормально заработал. комп видит сеть. Запись и чтение проходят нормально. Однако пинга так и нет(((( Настройка в компе: IP 192.168.0.2 MASK 255.255.255.0 Основной шлюз 192,168,0,1 может что-то не так записываю. Запись в визнет - write_wiz( адресс, данные): Код write_wiz(0x000,0xB800); // запись MR прямая адресация
write_wiz(0x008,0x0000); // Запись MAC 0.0.0.0.0.14 write_wiz(0x00A,0x0000); write_wiz(0x00C,0x0014);
write_wiz(0x010,0xC0A8); // запись IP (то что в компе называется Основной шлюз) 192,168,0,1 write_wiz(0x012,0x0001);
write_wiz(0x014,0xFFFF); // запись MASK 255,255,255,0 write_wiz(0x016,0xFF00);
write_wiz(0x018,0xC0A8); // Запись IP самого Визнета 192,168,0,14 write_wiz(0x01A,0x0014); Подключение пряиое (копм - визнет) Пробовал через хаб тоже не помогло(((((((((
Сообщение отредактировал lons83 - Apr 27 2013, 08:58
|
|
|
|
|
Apr 27 2013, 12:18
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296

|
Всем спасибо. Все заработало. Проблема была в не работающем кварце. И моей не которой не внимательности ))))
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|