реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Interconnect switch в Wishbone, кто как реализовывает арбитраж ??
des00
сообщение Sep 7 2009, 06:54
Сообщение #16


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



а вот и crossbar и расширеный shared bus. smile.gif

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

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


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

А переписывать это под V, врагу не пожелаю %)
Прикрепленные файлы
Прикрепленный файл  sv_prj_wb_intercon_07092009.zip ( 19.22 килобайт ) Кол-во скачиваний: 100
 


--------------------
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Nov 16 2009, 17:44
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 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%)

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

Вот что не понял - так это иерархию вообсче (собирал как топ wb_cross.v, исходил из Crossbar Switch Interconnection мировоззрений unsure.gif так сказать, не ясно зачем bus[шаред?] и s_port[если слейв - почему его нет cross-е?]). Когда будет время, выложите пожалуста хоть какою нибудь рид-мю rolleyes.gif
Go to the top of the page
 
+Quote Post
Builder
сообщение Nov 16 2009, 22:24
Сообщение #18


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
);

Что это, привычка или есть какой-то принципиальный момент?
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 17 2009, 04:35
Сообщение #19


Вечный ламер
******

Группа: Модераторы
Сообщений: 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 мировоззрений 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 редактора поставить точки и скобки, ну и при разработке генератора шаблонов решил коней на переправе не менять %)
Прикрепленные файлы
Прикрепленный файл  sv_prj_wb_intercon_17112009.zip ( 19.37 килобайт ) Кол-во скачиваний: 94
 


--------------------
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Nov 17 2009, 09:17
Сообщение #20


Гуру
******

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



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

Как будет время соберу что нибудь работоспособное (потому как аналогия TB (SV, классы всякие непонятные smile.gif ) думаю точно не засинтезится) и проверю в железяке rolleyes.gif чтоб спать спокойно
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 17 2009, 10:32
Сообщение #21


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(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). Первый удобнее для систем с бурстами и фифо, т.к. тразакция получается блокирующая, второй когда бурстов нет.

Когда появиться время собираюсь сделать доку + добавить теги к интерконнекту и выложить на опенкоресы, правда когда оно появиться не понятно ... %)


--------------------
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Nov 17 2009, 10:49
Сообщение #22


Гуру
******

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



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

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

За описание арбитража спасибо, поразгребаюсь на досуге с модулями..
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016