Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: подключение lan91c111 для асинхронного режима
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Fast Ethernet/Gigabit Ethernet/FibreChannel
value
С lan91c111 работаю в составе Nios Development Board, управление контроллером осуществляется со стороны ПЛИС ALTERA Stratix без использования самого NIOS II,EEPROM и M II интерфейс не подключены. Для работы выбран асинхронный режим и 16ти разрядная шина данных.Насколько я понимаю для работы в асинхронном режиме контроллер должен быть включен как для работы с шиной ISA, если я ошибаюсь, то поправьте меня.В моем случае контроллер подключен следующим образом:
1.LCLK - GND
2.nBE[3..2] - VCC
3.nBE[1..0] - GND
4.RDYRTN - VCC
5.nCYCLE - VCC
6.W/nR - VCC
7.nADS - GND

Может я упустил какой-то момент в подключении или ошибся?
Serhiy_UA
Цитата(value @ May 19 2009, 09:45) *
... если я ошибаюсь, то поправьте меня....

1. Похоже у Вас тоже DK-NIOS-2S60N, на StratixII, так? Тогда Вы уже должны были бы подключиться к серверу, а также управлять светодиодами кита через Ethernet.
2. Один мой знакомый управлял lan91c111 или подобным чипом аппаратно от FPGA, то есть без процессора, как у Вас. Этот путь запредельной сложности, советую от него отказаться сразу.
3. Если у Вас есть Nios Development Board, то надо осилить сам NiosII, а дальше управлять lan91c111 от этого софт-процессора.
4. Выполнив пункт 3, появится возможность легко работать с протоколами TCP/IP. На аппаратном уровне это не достижимо, может, если только для группы из нескольких гениев....
value
Stratix первый там стоит.Задача состоит в том чтобы обеспечить обмен данными с ПЛИС через lan91c111.Полная поддержка протоколов TCP/IP думаю не требуется.
Serhiy_UA
Цитата(value @ May 19 2009, 10:53) *
...Задача состоит в том чтобы обеспечить обмен данными с ПЛИС через lan91c111...

Если это получится с lan91c111 на аппаратном уровне и без софт-процессора, то Вы специалист экстра класса.
Просто я знаю, как сложно настроить, управлять и обмениваться данными с lan91c111, хотя работает этот чип изумительно, и это так.
Удачи.
value
Возможно вы правы и мои попытки работы с lan91c111 потерпят фиаско, но тем не мение пока задача мне кажется выполнимой. А что касается подключения контроллера, я все правильно сделал?Есть предположения по каким причинам я вижу все FF при чтении регистров?
Serhiy_UA
Цитата(value @ May 19 2009, 11:32) *
А что касается подключения контроллера, я все правильно сделал?

Сравните с рис.3.2, все ли подключено правильно.
value
Да, спасибо, эти доки у меня есть.Подключено все верно (как в доке).Единственное что, нужно ли выполнять какие-либо манипуляции перед подачей адреса и команды чтения?Например записать "1" в 13й разряд POINTER REGISTER (READ = 1) или читать регистры можно без дополнительных манипуляций?
Serhiy_UA
1. Внутри чипа много регистров, которые сгруппированы в 4-х банках. Перед доступом к регистру, нужно предварительной записью задать номер банка, а потом обращаться к регистру внутри этого банка. В общем, все это в доках описано.
2. В состав чипа входят ФИФО выдачи и приема. К ним стандартный способ обращения, прямой или с авто увеличением адреса. Ваш вопрос касался видимо этого. Но здесь тоже нужно обращаться через банки, как описано в пункте 1.
3. Еще в чип входят группа регистров настройки и управления PHY. Обращение к данным регистрам осуществляется последовательным кодом, то есть нужно в один из разрядов регистров банка, последовательно записывать биты и выдавать их в PHY. Там циклы, и их много. Регистров с последовательным доступом тоже много...

Если на все это писать FSM, то это будет такое ФээСэМище, не позавидуешь…
value
Все это мне известно и понятно.Я не точно выразился: для начала я хочу прочесть содержимое регистра BSR (Bank Select Register) (базовый адрес 300 + смещение E) в старшем байте которого, как я понимаю, всегда лежит 0x33, но при чтении я вижу все FF. Получив правильное значение для этого регистра буду уже двигаться дальше.Для чтения BSR нужны дополнительные манипуляции или же нет?
Serhiy_UA
Цитата(value @ May 19 2009, 15:29) *
.Для чтения BSR нужны дополнительные манипуляции или же нет?

Не нужны. Регистр всегда доступен, считывается сразу. То есть, Вы бы уже должны его считать.

Чип нужно инициализировать перед работой. В приложении файл, где описана функции s91_reset() и s91_init(). А без этих функций дальше никак.
value
Отлично.Думаю в этом зогвоздка.Спасибо большое!
racot-god
Плиз поведуйте мне немного об адресации памяти)))) я не догоняю))) Где именно хранятся регистры? как к ним обращаться? и как если у нас 8 килобайтный буффер мы его адресуем тремя пинами А1,A2,A3 ? это же всего 8 адресов? и ещё немного про эти смещения в регистрах кому не лень расскажите)))
value
Смещения относительно базового адреса (по умолчанию он 0x300h).
racot-god
А что такое базовый адресс?? и зачем нужна EEPROM??
racot-god
Ладно это я дотумкал)))) но я так и не понял вот что - если мы не ставим EEPROM то куда мы деваем все эти регистры??? и разве MAC адрес не внутри контроллера должен храниться???
Serhiy_UA
Цитата(racot-god @ May 27 2009, 13:22) *
...... и разве MAC адрес не внутри контроллера должен храниться???


После включения, базовый адрес (БА) всегда равен 0х0300.
Однако БА может быть загружен с EEPROM, то есть, при желании изменен. Менять адрес полезно, когда на шине ISA несколько чипов, а не один. Но я так не делал, у меня на шине ISA один чип LAN91C111, и все регистры доступны по адресам 0х0300. 0х0301 … 0х030E. То есть задаете адрес: получаете доступ…
Только не забывайте, что внутри чипа регистры рассредоточены по банкам. По этому, чтобы обратиться к произвольному регистру, необходимо заранее задать банк, в котором этот регистр находится. Делать это лучше всего с помощью любого программируемого микроконтроллера; я здесь об этом уже писал, что применяю NiosII. По другому - очень трудно...

Чип очень сложный для понимания, не пойму мотива, почему Вы его осваиваете. Есть другие чипы для Ethernet, попроще…. Это судя по Вашим вопросам.
racot-god
Спасибо))) это я уже более менее понял))) а насчёт EEPROM??? если я её не подвешу то что изменится??? куда эти регистры девать???

А насчёт почему этот контроллер - на работе сказали этот взять. вот я и взял... я человек подневольный))))
Serhiy_UA
Цитата(racot-god @ May 27 2009, 14:32) *
... а насчёт EEPROM??? если я её не подвешу то что изменится??? куда эти регистры девать???

EEPROM можно не ставить.
А регистров внутри много их нужно инициализировать, иначе lan91c111 работать не будет.
Текст программ инициализации был выложен в предыдущем посте. Но это только часть необходимых программ, нужно еще пять раз по столько же, других. В Интернете есть примеры программ, надо поискать...
racot-god
Спасибо) покапаюсь))

правдад не нашёл текстов инициализации(((
racot-god
не могли бы вы поподробнее рассказать как обращаться к регистрам PHY?? по каким адресам?? я из даташита не понял (LAN91C111.pdf))) и ещё эти регистры просто вначале нужно проинициализировать и потом они меняться не будут??? или они их значение изменяется и нужно писать прогу для управления ими??? (заранее спасибо...очень нужно))

пытаюсь сам разобраться но мне не понятно((( наверно не хватает каких то знаний((((
Serhiy_UA
1. Какой микроконтроллер будет работать с LAN91C111?
2. Скорей всего Вы их состыкуете через шину ISA BUS и других чипов на этой шине не будет, так?
3. Если используется ISA BUS, то обращение к регистрам через адреса 0х0300. 0х0301 … 0х030E, об этом уже писалось. То есть других кодов адреса не будет, а только эти. Теперь на стр.56 перечислены все доступные регистры, но доступ к ним через задания номера банка, об этом тоже писал. Документ прилагается.
4. Теперь об регистрах PHY, их много и доступ к ним организован по особому, последовательным кодом, через регистр MGMT, см.страницу 77. Обычно эти регистры инициализируются один раз, а потом ничего там не меняют. Программу управления и инициализации ими, нужно писать обязательно. Почти все, что нужно есть в прилагаемом директории smsc91x. Правда, это относится к NiosII, который применен мною, но для других микроконтроллер все аналогично.
racot-god
контроллер который будет работать с 91с111 - TMS320F28335. Подключение будет по асинхронному интерфейсу XINTF (встроенный в TMS для общения с внешней памятью и устройствами ввода- вывода).
Регистр MGMT на 67 стр.( вы наверно ошиблись). Я так и не особо понял на счёт адресации... Вот например к основным регистрам я обрщаюсь так - BASE ADDRESS + смещение... а там как???

.zip скачаю только вечером дома... на работе никак)) smile.gif
Serhiy_UA
Цитата(racot-god @ Jun 10 2009, 14:12) *
.. а там как???


1. Смотрите таблицу 9.1 на стр.82 (пока опираемся на мой документ). Там MII Serial Frame Structure и в поле PHY Addr задается адрес нужного регистра PHY. Сформировав фрейм, последовательно выталкиваем его через MGMT в регистры PHY. Я работал и с другими Ethernet-контроллерами, и этот способ мне более всего не нравится в LAN91C111, хотя в целом это очень милое существо… smile.gif
Остальное можно понять, изучив smsc_phy.c. Здесь я долго не мудрствовал, а просто взял С-код как есть… Хотя в остальном софте была адаптация. Кстати есть С-коды и для других микроконтроллеров.
2. По поводу TMS320F28335 – приятный чип.
racot-god
А smsc_phy.c где взять? и какие нибудь примеры хотелось бы глянуть))))) smile.gif А адрес наверно всё таки задаётся в поле REG.Addr а не PHY Addr?? Хотя тогда что подразумевается под PHY ADDR - это когда несколько трансиверов??? И главное куда REG.ADDR записпть (в какой регистр)??? и тогда будет обращение к PHY регистрам BASE_ADRESS + REG.ADDR???

похоже без примеров мне не обойтись...

А такие глупые вопросы потому что только год как универ закончил и немного не по этой специальности)) а на работе запрягают))) вот у меня и много не поняток)))
Serhiy_UA
Цитата(racot-god @ Jun 10 2009, 15:31) *
А smsc_phy.c где взять? и какие нибудь примеры хотелось бы глянуть))))) smile.gif А адрес наверно всё таки задаётся в поле REG.Addr а не PHY Addr?? Хотя тогда что подразумевается под PHY ADDR - это когда несколько трансиверов??? И главное куда REG.ADDR записпть (в какой регистр)??? и тогда будет обращение к PHY регистрам BASE_ADRESS + REG.ADDR???


К регистрам PHY напрямую через MGMT, а к MGMT через BASE_ADRESS + 8. Вот такая конитель, неужели не понятно...
Примеры я уже выслал, читайте.
Вот еще пример от Ethernut_de.
racot-god
Я малый не дурак....да и дурак не малый... smile.gif

Спасибо! буду разбираться)))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.