Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB для SoPC
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Kuzmi4
Здравствуйте.

В инете накопал вот такую вещь:
Цитата
Avalon OpenCores 10/100 Ethernet MAC

Как пишется:
Цитата
The Wishbone interface has been completely removed and replaced with a new Avalon module.

Что не может не радовать biggrin.gif

Интересует информация касательно USB - никто не собирал похожего для USB ??
В принципе накопал пока физику и собсно реализацию USB на OpenCores`ах.
На верилоге конечно и для Wishbone, но не в том суть - Wishbon-овский модуль можно поменять на Avalon-овский как в прожекте для Ethernet MAC. Но как то разрознено получается..На форуме порылся и нашёл, что некоторые даже пытались их колупать и соединять но как то глухо и мутновато всё равно....
Если кто уже решал такую задачу и есть наработки буду признателен за любую помощь.
help.gif

PS
Лицензии для SLS нету(+ есть вроде сведения что немного подглючивает с вендорами и ID) да и плюс есчё внешнюю микркруху городить надо, ISP которая sad.gif(кстати физика на OpenCores`ах вроде как раз самое то)...

---
пока суть до дела, колупаюсь в
Цитата
USB 1.1 Function IP Core: Overview

с OpenCores`ов - с описания, там только текстовик README.txt в папке doc - есть у кого побольше информации кроме как эти 4 килобайта - для 2.0 у автора есть хотя бы PDF с описанием 1111493779.gif

Кстати, физика для USB аки usb_phy.tar.gz - USB 1.1 PHY. Автор пишет что тестировал для корки 1.1 и нормально вроде всё..
des00
Цитата(Kuzmi4 @ Aug 15 2008, 04:55) *
В принципе накопал пока физику и собсно реализацию USB на OpenCores`ах.
На верилоге конечно и для Wishbone, но не в том суть - Wishbon-овский модуль можно поменять на Avalon-овский как в прожекте для Ethernet MAC. Но как то разрознено получается..На форуме порылся и нашёл, что некоторые даже пытались их колупать и соединять но как то глухо и мутновато всё равно....
Если кто уже решал такую задачу и есть наработки буду признателен за любую помощь.
help.gif


Не вижу ничего сложного, скажу более того :
если корка сделана с поддержкой только wishbone classic и не использует дополнительные выходы ошибок rty_o, err_o то пристегивается а avalon совершенно свободно.

У wishbone classic КА простой на 2-4 состояния.


ЗЫ. насчет Ethernet MAC у Игоря Мохора достаточно просто вырезается вишбоновский модуль и вместо него вставляется свой %) я так делал для своего проекта.
Kuzmi4
2 des00 - в принципе сшить докучи физику и саму корку не составляет труда как и моменять Wishbone на Avalon, просто не нашёл какой либо документации как собсно оно работает - то есть хотя бы какой либо документации по регистрам и хотя бы приблизительного описания, как это сделано в PDF-е для USB 2.0 у того же автора в тех же интерфейсных корках.
Глубоко пока не копал - боюсь зарыться с головй и совсем потеряться, оттого хотелось бы хоть какое либо описалово что к чему..
1.1 вообсче какая то мутноватая - но к ней есть физика, в 2.0 вроде всё понятней, но физику к ней я так понимаю переделывать надо будет crying.gif ....
Вот потому и прошу просветить по этому вопросу..
des00
Цитата(Kuzmi4 @ Aug 15 2008, 06:44) *
Вот потому и прошу просветить по этому вопросу..


сам с усб ip не работал, ответ не знаю. но по опыту лазания на опенкоресах могу сказать : это опенсосрс. привыкайте. часто разработчиков на доки не хватает smile.gif Если проект сделан без кодо генераторов, то разобраться не сложно.
Kuzmi4
2 des00 - спасибо за разъяснение ситуации.
Тогда прийдётся колдовать над физикой для 2.0, что на мой взгляд гораздо проще чем с USB2.0.
Тут на корку хоть дока есть smile.gif

---
Значится автор USB_PHY 1.1 , который и автор корок для USB 1.1 и USB2.0, использовал XESS XCV800 а на нём с внешних елементов USB был только PDIUSBP11A, который собсно является эдаким разделителем IN/OUT для сигналов с USB D+/D-
Нажмите для просмотра прикрепленного файла
Касательно приёма-передачи:
Нажмите для просмотра прикрепленного файла
То есть видно, что VP,VM - входы с D+/D- в FPGA, а VPO,VMO - выходы с FPGA на D+/D-...

Меня смущают триггированные выходы VP,VM - вроде бы можно реализовать в FPGA аналог PDIUSBP11A, вот только как быть с этим триггером шмита- он так догадываюсь для защиты от дребезга/шума стоит... То есть, если линия короткая , то можно пренебречь и поставить что-то типа GBUF я так думаю..
Stewart Little
Есть ip-ядра USB2.0 от Sls и Ifi (у последнего в т.ч. и OTG). Физика нужна внешняя, поддерживаются и UTMI и ULPI (можно использовать Cypress и NXP). Могу залить на ftp, буде он очухается.
Kuzmi4
2 Stewart Little - на счёт SLS - как то видел. На счёт выложить - неплохая идея - там по ходу генерится полноценный пакет файлов , которые можно потом переработать и подшивать к SoPC и про лицензию не думать.
Но и для SLS нужна физика..

Тут дело как раз в том, что если дЫвайсина недалеко от PC USB, то в принципе зачем там внешнее городить, можно и без них обойтись - а как рассказывает Rudolf Usselman в своих описанию к USB1.1 PHY - у него на 12Mbs пахало с PDIUSBP11A - а это по сути просто разделитель(вверху приводил рисунок).
Я думаю на FPGA чтото похожее реализовать возможно.
Вот приблизительная простенькая реализация:
Нажмите для просмотра прикрепленного файла
Вроде как должно работать - только на симуляция отчего то вот такая:
Нажмите для просмотра прикрепленного файла

DP и DM не меняются, а вместо них у нас есть ~result.. smile3046.gif
Kuzmi4
2 Stewart Little - фтп уже вроде не лежит smile.gif
Stewart Little
Цитата(Kuzmi4 @ Aug 18 2008, 13:08) *
2 Stewart Little - фтп уже вроде не лежит smile.gif

Залил :
upload/FPGA/_IP_Cores_/Sls
upload/FPGA/_IP_Cores_/Ifi
Kuzmi4
2 Stewart Little - тут вопросик есть касательно SLS.
За прошедшее время добил я саппорт SLS - дали они мне скачать екзешник, правда только сегодня с утра и то много вопросов задавали. Поставил попробовал - выскакивает ошибка
Цитата
Error: Node instance "the_sls_avalon_usb20hr" instantiates undefined entity "sls_avalon_usb20hr"

так понимаю найти он не может этот самый компонент - нужно файлик подрубить.
Указал путь в setting-сах прожекта - теперь выдаёт
Цитата
Error: Can't find valid feature line for core 5750_0A01 in current license

Это чего - а где лицензия, которая должна была даться мне, сервиса блин нету... На скачать экзешник надо 24 часа ждать а потом долго и нудно переписываться, на лицензию - тоже траблы думаю аналогичные будут....

Кстати нашёл в глубине папки ip файл sls_avalon_usb20hr.v но он в закарлючках. Я так понимаю декриптитьего надо. Подекрипченый знаю где взять(правда папки lib нету, но положить можно и в
Цитата
C:\altera\72\ip\sopc_builder_ip\SLS\usb20hr_ocp_eval_pack-v2.1\sls_avalon_usb20hr

Вот структура:
Нажмите для просмотра прикрепленного файла
).
Но суть не в том - там verilog файлы, а у меня прожект на VHDL - несостыковочка выходит.. crying.gif Никак я verilog к VHDL не приконекчу...

VHDL версия я так понимаю отсутствует... ??
Stewart Little
Цитата(Kuzmi4 @ Aug 18 2008, 18:45) *
Это чего - а где лицензия, которая должна была даться мне, сервиса блин нету...

Лицензию должны были по e-mail прислать.
Попробуйте добавить в квартусовский лицензионный файл приаттаченну лицензию (HOSTID свой подставьте). Только этого все равно будет недостаточно - декриптить надо.

Цитата(Kuzmi4 @ Aug 18 2008, 18:45) *
Но суть не в том - там verilog файлы, а у меня прожект на VHDL - несостыковочка выходит.. crying.gif Никак я verilog к VHDL не приконекчу...
VHDL версия я так понимаю отсутствует... ??

Это совершенно без разницы - на чем он там написан. И мешать это совершенно не должно. Мегавизард будет работать, все равно все в один нетлист сольет.
Kuzmi4
2 Stewart Little есть вопросик.

Структура папок для компонента в ip такая:
Нажмите для просмотра прикрепленного файла

Заменил verilog файлы на декрипченые, остался там не декрипченый самый верхний файл sls_avalon_usb20hr.v
Смущают варнинги типа:
Цитата
Warning (14110): No clock transition on "CPU_02:inst|sls_avalon_usb20hr_inst:the_sls_avalon_usb20hr_inst|sls_avalon_
usb20hr:the_sls_avalon_usb20hr|usb_top:usb_top|proto_layer:u1|memory_idma:u2|dtm
p
_r[0]" register due to stuck clock or clock enable

wacko.gif
То есть получатеся что клок не заводится на регистр ???
Stewart Little
Цитата(Kuzmi4 @ Aug 19 2008, 16:30) *
Заменил verilog файлы на декрипченые, остался там не декрипченый самый верхний файл sls_avalon_usb20hr.v
Смущают варнинги типа:

А где декриптованные исходники брали? У меня нет версии 2.1.
А если Вы в новую версию подсунули исходники от старой, то может быть все что угодно.
Kuzmi4
..понятно..
Посмотрим, у меня есть 2.1, может знакомый декриптить сможет - выложу.
Там я так понял есчё 1 сигнал добавился...
Kuzmi4
Вопрос к людям, которые использовали USB core от SLS - схему, как физику(ISP1504) коннектить, где можно взять??
А то я на сайте пошарился у SLS, на схем намёков нету вроде... А в даташите на ISP1504 - как то нету однозначного подключения..
Единственное что нашёл , так это файлик "rm_scusb20ul_1.3.pdf" в котром есть такая картинка:
Нажмите для просмотра прикрепленного файла
А схемы - нет.........
Stewart Little
У меня есть где-то USB EDB Sls-овский. На след. неделе посмотрю, нет ли там сидюка со схемами.
Kuzmi4
2 Stewart Little - благодарствую smile.gif
Kuzmi4
Товарисчи!!! Братья!!!
Ну так как быть с физикой?? Есть у кого схема подключения ??
Stewart Little
Цитата(Kuzmi4 @ Aug 26 2008, 17:54) *
Товарисчи!!! Братья!!!
Ну так как быть с физикой?? Есть у кого схема подключения ??

Ловите схему.
Kuzmi4
2 Stewart Little - благодарствую!
Самое оно вроде, только вот вопросы есть по схеме:
Нажмите для просмотра прикрепленного файла
Зачем там такая хитрая схема для CS ??
И потом клок от ISP1504 - зачем там к резюку кондёр на 100 нан -> RC цепочки порядка получается 2.2 мкс получается 07.gif
Это что за клок такой он должен гнать ??

А так в принципе - похоже на вот такую схему с даташита:
Нажмите для просмотра прикрепленного файла
maugli
Перед номиналом некоторых компонентов на данной схеме присутствует префикс NL . По всей видимости он означает , что этот компонент устанавливается при необходимости . Т.е. на плате формируется место под установку компонента . Если надо он устанавливается .
Для CS_n устанавливается
либо R83 ( R82 - нет ) чип постоянно включен
либо R82 ( R83 - нет ) чип выключен
По поводу конденсатора С112 для частоты 60 МГц номинал великоват . Наверно скопировали изображение конденсатора , а номинал изменить забыли.
Kuzmi4
В обсчем разобрался - не буду пока сильно хитрож.. - возьму схему с даташита.
Потому как я так понял, что данная схема расчитана для работы с запиткой периферии - запитка Vbus от MAX890 и сигналы fault и pws для регуляции и мониторинга...
И на счёт ID разобрался:
Нажмите для просмотра прикрепленного файла

Вставим туда переключатель smile.gif и прицепим vbus пока как по даташиту камня..
Kuzmi4
ТУт поступила информация , что можно с PLL-а заводить на камень 60МГц и не ставить дополнительные компоненты, жду пока уточнения (меня fault, pws и vbus беспокоят - как их правильно подключать wacko.gif а то компонент в MLF корпусе - новую печатку сделать не проблема -> перепаивать стрёмно его)..
Касательно самого кора - читаю докуметацию - v2.0 - как то коряво сделано - выводятся все пины - ULPI и UTMI а ты которые нужно, те и подсоединяй... sad.gif Что не нужно, конекть ручками к земле..
Поставил v2.0 с лечилкой - всё нормально, но эта куча лап twak.gif + описание к ULPI не совсем..
Поставил по верху v.2.1 - и описание к ULPI есть нормательное (кроме ессно схематика cranky.gif ), но выдаёт мне при синтезе вот такое:
Нажмите для просмотра прикрепленного файла
И во втором варианте на 100 лутов больше где-то получается дизайн...
Печально... crying.gif
Ни у кого нету лечилки для v2.1?? А то неплохо смотрится в обсчем..

Так же вот что интересует - этот charge pump - если я планирую, что моё устройсво будет втыкаться в комп, то я так понимаю оно будет слейвом и тогда мои дейставия будут такие - vbus нужно коннектить через резюк к лапе коннектора V+, ID- оставить болтаться в воздухе - периферия я типа буду, выводы fault, pws можно вывести на дополнительные коннекторы (по сути оставить в воздухе) и клок можно подавать с выхода лапы циклона2 с PLL
Кто уже имел дело с этим чудом - просветите help.gif
Kuzmi4
PCB сделано, все компоненты припаяны, вчера пытался запустить, в результате - НИЧЕГО... crying.gif
При чём что интересно - USB открывается коннект делается - а со стороны компа - вооПсче ничего...
Прицепил PDF-ку со схематиком.
В дизайне использую PLL - на вход 50MHz клок.
Выходы:
1) выход на внешнюю лапу для подачи клока на ISP1504 и этот же клок отводится и для SLS USB что в NIOSII (60MHz)
2) клок на NIOSII систему (50MHz)
3) клок на внешнюю лапу SDRAM (50MHz)

При синтезе получаю варнинг про то что USB clock подрубила на non-dedicated pin и будет джиттер.
Далее заливаю в железо, наблюдаю 60 МГц на выходной лапе.
Далее гружу прогу в ниос - по UART`у вижу что всё вроде отрабатывается и в USB read мы виснем - потому как ничего не приходит.. А не приход потому как комп ничего не видит - со стороны компа ничего...
help.gif
У меня пока есть идея что надо бы NIOSII завести на частоте большей 60MHz.. wacko.gif
Может кто сталкивался - подклитесь опытом борьбы ??

Вот схематик
Нажмите для просмотра прикрепленного файла
R2 = 0
С18 не монтировал.
Вроде всё как по ДШ и AN10048.. Ан нет - не выходит цветок... smile3046.gif
misyachniy
Цитата(Kuzmi4 @ Sep 18 2008, 17:13) *
Далее гружу прогу в ниос - по UART`у вижу что всё вроде отрабатывается и в USB read мы виснем - потому как ничего не приходит.. А не приход потому как комп ничего не видит - со стороны компа ничего...
help.gif


Во первых нужно проинициализировать регистры внутри ISP1504.
Для того чтобы компьютер "увидел" устройство нужно включить внутренний подтягивающий резистор 1,5К на D+ для full/high speed или на D- low spreed.

Как проинициализировать регистры не скажу. По скольку не работал с ним.
Kuzmi4
2 misyachniy - на счёт регистров - я так понимаю это делает сама корка, то есть софтина к ней прилагающаяся - там как раз есть open() и configure().. Только молоТцы прикладывают только OBJ-файл и описание ф-ций...Так что сильно не разгонишся..
Для high speed - там в спецификации написано что резюк не обязателен.

Тут знакомый говорит что у него эта шняга работает - только он заводит частоту(19.2МГц) внутрь а 60МГц берёт для системы с ISP1504. Надо бу попробовать так + поднять тактовую самой системы , а то она у меня на 50 бегает при 60 на USB...
1111493779.gif
Кстати - такой вопрос - наколупал v2.2 - там *.tcl файл - как его добавить в SoPC Builder ??
А то после инстала компонент не видится crying.gif
Добавление в IP Search Path пути к *.tcl ничего не даёт.... smile3046.gif
Нажмите для просмотра прикрепленного файла
misyachniy
Цитата(Kuzmi4 @ Sep 23 2008, 12:32) *
2 misyachniy - на счёт регистров - я так понимаю это делает сама корка, то есть софтина к ней прилагающаяся - там как раз есть open() и configure().. Только молоТцы прикладывают только OBJ-файл и описание ф-ций...Так что сильно не разгонишся..
Для high speed - там в спецификации написано что резюк не обязателен.

Тут знакомый говорит что у него эта шняга работает - только он заводит частоту(19.2МГц) внутрь а 60МГц берёт для системы с ISP1504. Надо бу попробовать так + поднять тактовую самой системы , а то она у меня на 50 бегает при 60 на USB...
1111493779.gif
Кстати - такой вопрос - наколупал v2.2 - там *.tcl файл - как его добавить в SoPC Builder ??
А то после инстала компонент не видится crying.gif
Добавление в IP Search Path пути к *.tcl ничего не даёт.... smile3046.gif
Нажмите для просмотра прикрепленного файла



Корка то сама делает, но для того чтобы Windows показал "Неизвестное устройство" на шине USB, достаточно резистора 1,5К.
Судя по всему у вас он не присоединяется.

Для high speed - там в спецификации написано что резюк не обязателен.
Не верное уьверждение. Резистор присоединяется к D+, после конфигурации на Full Speed, хост должен разрешить работу на high speed. После этого резистор с D+ убирается для выравнивания импеданса.

По поводу разной чатоты системы и PHY не могу сказать ничего определенного.

Есть реализации с промежуточными регистрами для устранения гонок импульсов и укороченых импульсов.

Решение с тактированием от PHY выглядит разумным.
Kuzmi4
2 misyachniy - на счёт резюка - после инициализации физика узнаёт кем она будет - full или high speed - и далее сама проводит нужные манипуляции - где то в ДШ прочитал. Не нужен там внешний резюк в оПсчем..

На счёт
Цитата
Есть реализации с промежуточными регистрами для устранения гонок импульсов и укороченых импульсов.

Это чего.. можно поподробнее ??
misyachniy
Цитата(Kuzmi4 @ Sep 23 2008, 14:45) *
Есть реализации с промежуточными регистрами для устранения гонок импульсов и укороченых импульсов.

Это чего.. можно поподробнее ??


Если посмотреть в документацию на PHY то видно что ве сигналы изменяются и считываются по фронтам тактовых импульсов. Соответсвенно данные внешним устройством(ПЛИС) должны выставлятся/приниматся синхронно с этой частотой.

Если тактирование системы не совпадает(точнее если источник тактирования не один и тот-же) то нужно предусматривать ФИФО.

В приложеной блок схеме Видео контроллера есть две частоты тактирования sys_clk и vga_clk_int.
Для коректной передачи данных использован большой буфер шириной 32 бита.
Для передачи сигналов управления - достаточно 2-х регистров.

Подозреваю, что в вашем компоненте есть два входа тактирования: 60МГц и тактировние шины Авалон.
Kuzmi4
2 misyachniy - на счёт по фронтам - была у меня такая идея.. как раз чтоб её проверить хочу завести внутрь 26Мгц, а не 60 как клок - оно там себе всё правильно генерит, а моя задача только снять клок и по нему данные.. Хотя всё же не ясно почему ему не нравится мой клок...
На счёт
Цитата
Подозреваю, что в вашем компоненте есть два входа тактирования

правильно подозреваете - да я и говорил про это к тому же...

На счёт фифо - вы имели ввиду асинхронное фифо с своими сигналами на RD/WR ?
Так тут вроде без такаго буфера работать должно..
Kuzmi4
Вывел 26MHz на ISP1504 - выхода в 60 не наблюдал.. В результате после ф-ции open получаю ошибку...
Ну всё.. приехали...... crying.gif
Kuzmi4
Ага!
Секас имел по ходу оттого, что кормус MLF не сильно дружит с флюсом..
Попробуем по другому smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.