|
Interconnect switch в Wishbone, кто как реализовывает арбитраж ?? |
|
|
|
Jul 9 2009, 07:21
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
Благодарствую так понимаю мне поможет WISHBONE BuilderЦитата WISHBONE builder is a script which generates a wishbone interconnect matrix in HDL Однако всё же не ясно - как его слить одним архивом ? залогинится то я залогинился, но пустое окно не пропало:
да и багов открытых - 4 штуки.... Может у кого есть в закромах подрихтованный ??
|
|
|
|
|
Jul 9 2009, 07:48
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Kuzmi4 @ Jul 9 2009, 01:21)  так понимаю мне поможет WISHBONE Builderв частности может помочь он, но и кроме него там есть другие инерконнекты Цитата да и багов открытых - 4 штуки.... Может у кого есть в закромах подрихтованный ?? так в чем проблема ? берете скрипт и исправляйте, все же в сорцах на перле %) А если серьезно, по памяти вроде там баги только граничных случаев, типа лишние теги когда они в принципе не нужны + еще нет верилога и поддержки расширенных тегов + lock транзакций. Более того он еще и жутко не оптимальный (ручная правка позволила уменьшить ресурс в 4 раза). Но так все рабочее. в общем велкам то опен сорс ЗЫ. можно вишбон напрямую к авалону цеплять, если вы не используете расширенные теги.
--------------------
|
|
|
|
|
Jul 9 2009, 11:40
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(Kuzmi4 @ Jul 9 2009, 13:56)  ... девборда более привлекательная... Какая, и в сравнении с чем. Не ломает ли все заново осваивать на ISE, там не мало...
|
|
|
|
|
Sep 4 2009, 09:51
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Kuzmi4 @ Jul 9 2009, 01:54)  Здравствуйте. В прицнипе есть пару идей реализации, но хотелось бы услышать у людей кто с этим сталкивался  - как проще и быстрей это делать? сделал я тут SV интерконнект для классического вишбона (решил проверить умный ква или нет), получилось все однотактно, компактно и понятно + можно конфигурировать систему полностью на лету (спасибо SV и квартусу !!!), но боюсь что для хилых вы не сможете это использовать %) Кому интересна реализация смотрите в атаче, RTL написал где то часа за 4, на тестбенч и украшательства ушло времени чуть больше. Для изучающих как писать tb там будет пара вкусных мест %) ЗЫ. на основе этих компонентов чуть позже сделаю кросбар.
--------------------
|
|
|
|
|
Sep 7 2009, 06:54
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
а вот и crossbar и расширеный shared bus. добавил настроек, сигналов, кое что допилил в тестбенче. квартус собирает все нормально. вроде неплохо получилось, думаю может на опенкоресы выложить.... Цитата(Kuzmi4 @ Sep 6 2009, 08:18)  А на счёт хилых - тут вроде симплифай есть - он то должен SV понимать?? не в курсе, у меня нет симплифая, тот же квартус начал понимать массивы параметров с переменной разрядностью только начиная с 9 ой версии, до этого ему башню рвало (в свое время хотел сделать шаблон FIR фильтра, так квартус не дал). Так что это проверять надо. А переписывать это под V, врагу не пожелаю %)
--------------------
|
|
|
|
|
Nov 16 2009, 17:44
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
Появилось время, решил загнать вашу реализацию в 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%) Так что с первого взгляда для хилых покатить должно  .. Вот что не понял - так это иерархию вообсче (собирал как топ wb_cross.v, исходил из Crossbar Switch Interconnection мировоззрений  так сказать, не ясно зачем bus[шаред?] и s_port[если слейв - почему его нет cross-е?]). Когда будет время, выложите пожалуста хоть какою нибудь рид-мю
|
|
|
|
|
Nov 16 2009, 22:24
|
iBuilder©
   
Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322

|
Цитата(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 ); Что это, привычка или есть какой-то принципиальный момент?
|
|
|
|
|
Nov 17 2009, 04:35
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(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 мировоззрений  так сказать, не ясно зачем bus[шаред?] и s_port[если слейв - почему его нет cross-е?]). Когда будет время, выложите пожалуста хоть какою нибудь рид-мю  хмм, вы комментарии при объявлении модулей не читаете вообще ? 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 редактора поставить точки и скобки, ну и при разработке генератора шаблонов решил коней на переправе не менять %)
--------------------
|
|
|
|
|
Nov 17 2009, 10:32
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Kuzmi4 @ Nov 17 2009, 03:17)  (не ясно было где в cross-е порты слейвов - они ж там должны быть  точно). Теперь вроде понял что 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). Первый удобнее для систем с бурстами и фифо, т.к. тразакция получается блокирующая, второй когда бурстов нет. Когда появиться время собираюсь сделать доку + добавить теги к интерконнекту и выложить на опенкоресы, правда когда оно появиться не понятно ... %)
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|