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

Собственно вопрос такой - есть мастера и слейвы, шина выбрана Wishbone, реализация времянок понятна со спецификации, но логика построения а-ля Interconnect fabric(avalon) (арбитража взаимодействия мастеров) для Wishbone остаётся на разработчике smile3046.gif .
В прицнипе есть пару идей реализации, но хотелось бы услышать у людей кто с этим сталкивался biggrin.gif - как проще и быстрей это делать?
des00
Цитата(Kuzmi4 @ Jul 9 2009, 00:54) *
В прицнипе есть пару идей реализации, но хотелось бы услышать у людей кто с этим сталкивался biggrin.gif - как проще и быстрей это делать?


слить генератор интерконекта с опенкорес
Kuzmi4
Благодарствую beer.gif
так понимаю мне поможет WISHBONE Builder
Цитата
WISHBONE builder is a script which generates a wishbone interconnect matrix in HDL


Однако всё же не ясно - как его слить одним архивом ? залогинится то я залогинился, но пустое окно не пропало:
Нажмите для просмотра прикрепленного файла
да и багов открытых - 4 штуки....
Может у кого есть в закромах подрихтованный ??
des00
Цитата(Kuzmi4 @ Jul 9 2009, 01:21) *
так понимаю мне поможет WISHBONE Builder


в частности может помочь он, но и кроме него там есть другие инерконнекты

Цитата
да и багов открытых - 4 штуки....
Может у кого есть в закромах подрихтованный ??


так в чем проблема ? берете скрипт и исправляйте, все же в сорцах на перле %) А если серьезно, по памяти вроде там баги только граничных случаев, типа лишние теги когда они в принципе не нужны + еще нет верилога и поддержки расширенных тегов + lock транзакций. Более того он еще и жутко не оптимальный (ручная правка позволила уменьшить ресурс в 4 раза). Но так все рабочее.

в общем велкам то опен сорс

ЗЫ. можно вишбон напрямую к авалону цеплять, если вы не используете расширенные теги.
Kuzmi4
2 des00 - я в перле такой же специалист как и в балете.. smile3046.gif потому правка перла выглядит проблематично.. скорее ручками буду править то что он нагенерит.
В обсчем спасибо за архивы - буду читать мануалы...
(Работать буду с виртексом5, оттого и вишбон, иначеб давно авалон заюзал и не было б траблов.....
torik
Просто интересно: Вы с альтеры на хилых перешли по религиозным соображениям? Вроде бы, помню, альтеру вовсю осваивали...
Kuzmi4
2 torik - альтера мне и до сих пор нравится (счас вот бороться с ней буду laughing.gif ), особенно ихний авалон (начинаю понимать ценность) biggrin.gif . Но у хилых девборда более привлекательная - с той точки зрения что нужной периферии есть (специфическая она)..
Serhiy_UA
Цитата(Kuzmi4 @ Jul 9 2009, 13:56) *
... девборда более привлекательная...

Какая, и в сравнении с чем.
Не ломает ли все заново осваивать на ISE, там не мало...
Kuzmi4
2 Serhiy_UA - в принципе не ломает, работал со спартанами уже biggrin.gif ...
Борда - ML555.

А если по теме - если у кого есчё есть мысли или чем поделится - буду премного благодарен wink.gif
Kuzmi4
2 des00 - а не подскажете, как у вас так получилось архивы стянуть ????
des00
Цитата(Kuzmi4 @ Jul 16 2009, 10:09) *
2 des00 - а не подскажете, как у вас так получилось архивы стянуть ????


зарегистрировался и скачал что мне нужно %) Вот только у меня регистрация не пользователя, а разработчика (выложил свой проект). Может быть по этому мне дали адреса, пороли, явки за 3 дня %)
Maverick
Цитата(des00 @ Jul 20 2009, 06:04) *
зарегистрировался и скачал что мне нужно %) Вот только у меня регистрация не пользователя, а разработчика (выложил свой проект). Может быть по этому мне дали адреса, пороли, явки за 3 дня %)

Я тоже пытался скачать - облом.
ЗЫ Странно это как-то
Kuzmi4
2 des00 - ясно, спасибо smile.gif буду знать
des00
Цитата(Kuzmi4 @ Jul 9 2009, 01:54) *
Здравствуйте.
В прицнипе есть пару идей реализации, но хотелось бы услышать у людей кто с этим сталкивался biggrin.gif - как проще и быстрей это делать?


сделал я тут SV интерконнект для классического вишбона (решил проверить умный ква или нет), получилось все однотактно, компактно и понятно + можно конфигурировать систему полностью на лету (спасибо SV и квартусу !!!), но боюсь что для хилых вы не сможете это использовать %)

Кому интересна реализация смотрите в атаче, RTL написал где то часа за 4, на тестбенч и украшательства ушло времени чуть больше. Для изучающих как писать tb там будет пара вкусных мест %)

ЗЫ. на основе этих компонентов чуть позже сделаю кросбар.
Kuzmi4
2 des00 - благодарствуем biggrin.gif
А на счёт хилых - тут вроде симплифай есть - он то должен SV понимать??
des00
а вот и crossbar и расширеный shared bus. smile.gif

добавил настроек, сигналов, кое что допилил в тестбенче. квартус собирает все нормально. вроде неплохо получилось, думаю может на опенкоресы выложить....

Цитата(Kuzmi4 @ Sep 6 2009, 08:18) *
А на счёт хилых - тут вроде симплифай есть - он то должен SV понимать??


не в курсе, у меня нет симплифая, тот же квартус начал понимать массивы параметров с переменной разрядностью только начиная с 9 ой версии, до этого ему башню рвало (в свое время хотел сделать шаблон FIR фильтра, так квартус не дал). Так что это проверять надо.

А переписывать это под V, врагу не пожелаю %)
Kuzmi4
Появилось время, решил загнать вашу реализацию в Synplify(2009.06sp1) и посмотреть что там будет (камень XC5VLX50T-1136-1), настройки по дефолту (всмысле ничего не пытался руками докрутить).

В результате Estimated Frequency 327.8 MHz.
Вырезка с лога:
Цитата
.....
Worst Path Information

***********************
Path information for path number 1:
Requested Period: 2.593
- Setup time: 0.004
+ Clock delay at ending point: 4.116
= Required time: 6.705

- Propagation time: 3.047
- Clock delay at starting point: 4.116
= Slack (critical) : -0.458

Number of logic level(s): 3
Starting point: genblk0\.slave_ports_gen\[3\]\.m_port.genblk2\.genblk3\.rra.last_grant[1] / Q
Ending point: genblk0\.slave_ports_gen\[3\]\.m_port.genblk2\.genblk3\.rra.last_winner[0] / D
The start point is clocked by wb_cross|wb_clk [rising] on pin C
The end point is clocked by wb_cross|wb_clk [rising] on pin C

...
***********************

Resource Usage Report for wb_cross

Mapping to part: xc5vlx50tff1136-1
Cell usage:
FDC 10 uses
FDCE 17 uses
GND 1 use
VCC 3 uses
LUT2 2 uses
LUT3 4 uses
LUT4 15 uses
LUT5 43 uses
LUT6 474 uses
LUT6_2 12 uses

....

Mapping Summary:
Total LUTs: 550 (1%)

Так что с первого взгляда для хилых покатить должно laughing.gif..

Вот что не понял - так это иерархию вообсче (собирал как топ wb_cross.v, исходил из Crossbar Switch Interconnection мировоззрений unsure.gif так сказать, не ясно зачем bus[шаред?] и s_port[если слейв - почему его нет cross-е?]). Когда будет время, выложите пожалуста хоть какою нибудь рид-мю rolleyes.gif
Builder
Цитата(des00 @ Sep 7 2009, 09:54) *
А переписывать это под V, врагу не пожелаю %)

Похоже пора и мне озабитится отношеня к тому, как оформлять свои модули,
а то разнобой - кто во что гаразд начинает утомлять. То ли на авалон запасть, то-ли на вишбон...
В общем вопрос, если уж на SV пишете, почему объявления по старинке:
Код
module wb_bus(
  wb_clk,
  wb_rst
);
input  logic                wb_clk;
input  logic                wb_rst;

Вроде так компактнее, меньше писанины и нагляднее так:
Код
module wb_bus(
  input  logic wb_clk,
  input  logic wb_rst
);

Что это, привычка или есть какой-то принципиальный момент?
des00
Цитата(Kuzmi4 @ Nov 16 2009, 11:44) *
Появилось время, решил загнать вашу реализацию в Synplify(2009.06sp1) и посмотреть что там будет (камень XC5VLX50T-1136-1), настройки по дефолту (всмысле ничего не пытался руками докрутить).
В результате Estimated Frequency 327.8 MHz.


симплифай начал понимать SV на хорошем уровне, это хорошо.

В коде кстати есть мега ошибка (сыплю голову пеплом) : ошибка в модуле wb_m_ack_rra.v и заключается в отсутствии режима удержания запроса мастера в случае многотактного ws. Тест ее не выявил, т.к. эта ошибка не приводила к косякам записи/чтения из памяти, т.к. в тесте память была между мастерами разделена по адресам. Ошибка вылезла только тогда, когда несколько мастеров полезли к одной и той же области памяти (например FIFO Slave).

Кстати этой ошибки не возникло бы если бы арбитры были двухтактные, также это дало бы еще прирост тактовой, но хотелось сделать именно однотактный арбитр, а не копировать то, что уже есть на опенкорес %)

Цитата
Вот что не понял - так это иерархию вообсче (собирал как топ wb_cross.v, исходил из Crossbar Switch Interconnection мировоззрений unsure.gif так сказать, не ясно зачем bus[шаред?] и s_port[если слейв - почему его нет cross-е?]). Когда будет время, выложите пожалуста хоть какою нибудь рид-мю rolleyes.gif


хмм, вы комментарии при объявлении модулей не читаете вообще ? smile.gif

wb_bus.v :: component is wishbone system bus based upon shared bus architecture for pM_N masters and pS_N slaves
wb_cross.v :: component is wishbone system bus based upon crossbar switch architecture for pM_N masters and pS_N slaves
wb_s_port.v :: component to decode slave addreses and map single master to multi slaves

wb_bus.v это 2 порта : порт мастеров == арбитр доступа pM_N мастеров к разделяемой шине и порт слейвов == декодер адреса мастера, который получил доступ, на pS_N слейвов
wb_cross.v это pS_N портов мастеров == арбитров доступа pM_N мастеров к каждому слейву

Цитата(Builder @ Nov 16 2009, 16:24) *
В общем вопрос, если уж на SV пишете, почему объявления по старинке:
Вроде так компактнее, меньше писанины и нагляднее так:
Что это, привычка или есть какой-то принципиальный момент?


ответ простой, потому что я их не пишу %) этим (генерацией объявления, инстанса, присаивание входов, генерация шаблонов модулей, выравнивание пробелов и т.д.) занимается генератор шаблонов модулей. Мне остается только вписывать функциональность. Кому интересно могу поделиться, ничего сложного нет %)

А раньше придерживался такого метода описания потому что модули было проще вставлять, т.к. объявление модуля и его портов это готовая заготовка для инстанса, нужно только в column mode редактора поставить точки и скобки, ну и при разработке генератора шаблонов решил коней на переправе не менять %)
Kuzmi4
2 des00
коментарии читаю, потому и вопросы появляются laughing.gif (не ясно было где в cross-е порты слейвов - они ж там должны быть biggrin.gif точно). Теперь вроде понял что wb_cross.v - это и есть аналогия interconnection fabric-а в авалоне. Тольок всё равно не ясны принципы арбитража. Будет время - выложите хоть какую рид-мю.

Как будет время соберу что нибудь работоспособное (потому как аналогия TB (SV, классы всякие непонятные smile.gif ) думаю точно не засинтезится) и проверю в железяке rolleyes.gif чтоб спать спокойно
des00
Цитата(Kuzmi4 @ Nov 17 2009, 03:17) *
(не ясно было где в cross-е порты слейвов - они ж там должны быть biggrin.gif точно). Теперь вроде понял что wb_cross.v - это и есть аналогия interconnection fabric-а в авалоне.


хмм, порты же называются wb_m_xxx/wb_s_xxx - wishbone master/slave странно что не увидели %)

Цитата
Тольок всё равно не ясны принципы арбитража. Будет время - выложите хоть какую рид-мю.


wb_m_req_rra.v :: // Single Cycle Round Robin Arbiter which use only grant signals to re-arbitrate masters arbitration is based upon packet requests

тип арбитража везде RRA, просто в случае wb_m_req_rra время захвата шины определяется сигналом запроса шины wb_m_cyc_i, а в случае wb_m_ack_rra завершением wb транзакции wb_m_cyc_i & wb_m_stb_i & (wb_s_ack_o | wb_s_rty_o | wb_s_err_o). Первый удобнее для систем с бурстами и фифо, т.к. тразакция получается блокирующая, второй когда бурстов нет.

Когда появиться время собираюсь сделать доку + добавить теги к интерконнекту и выложить на опенкоресы, правда когда оно появиться не понятно ... %)
Kuzmi4
Цитата(des00 @ Nov 17 2009, 12:32) *
хмм, порты же называются wb_m_xxx/wb_s_xxx - wishbone master/slave странно что не увидели

вы наверно не так поняли: в wb_cross - есть только wb_m_port - это меня и смутило (по идее ж должен быть и слейв, как бы.. но потом начало доходить что wb_m_port - это разгребатель арбитража для мастера, а не вишбон мастер порт).

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