Перейти к содержанию
    

ADHL: как сгруппировать Input и Output в единую связку?

Добрый день

 

Имеется SubDesign

например такой

SubDesign t_Arbitr
(
clock			:	Input;

A_ADDR[17..0]		:	Input;
A_DATA[15..0]		:	Input;
A_TAG			:	Input;
A_REQ			:	Input;
A_ACK			:	Output;	

B_ADDR[17..0]		:	Input;
B_DATA[15..0]		:	Input;
B_TAG			:	Input;
B_REQ			:	Input;
B_ACK			:	Output;

M_ADDR[17..0]		:	Output;
M_DATA[15..0]		:	Output;
M_TAG			:	Output;
M_REQ			:	Output;
M_ACK			:	Input;	
)

 

У которого A_xxxx и B_xxxx - соединяется с подчинёнными ведомыми арбитрами а M_xxxx с ведущим.

Как это переписать на ADHL чтоб было только одно символьное имя?

Т.е. типа:

 

SubDesign t_Arbitr
(
clock			:	Input;

A_BIND[36..0]		:	BiDir;	
B_BIND[36..0]		:	BiDir;

M_BIND[36..0]		:	BiDir;
)

 

а внутри арбитра уже разделить на конкретные имена?

 

Проблема в том что если сделать так как я описал то напрямую соеденить невозможно

при попытке написать

arbitr_master.a_bind = arbitr_slave.m_bind;

 

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

 

Приходится извращаться:

 

variable
...
n[36..0]:node;
...
begin
...
n=arbitr_master.a_bind;
n=arbitr_slave.m_bind;
...

 

что читается плохо и можно наделать ошибок столько же сколько в исходном

 

Как описать чтоб можно было сделать напрямую

arbitr_master.a_bind = arbitr_slave.m_bind;

Изменено пользователем Porty

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Bidir Вы можете поставить только снаружи плисины.

Где то в самих исходниках альтеры видел что бидир внутри компонентов использовался.

М.б. не сам бидир а TRI буфер нельзя использовать, т.к. Z состояние реально можно получить только драйверами пинов.

Изменено пользователем Porty

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TRI есть в каждом LUTe, так что для развязки сигналов его и используют. В TRI не используются bidir сигналы, и вы можете с помощью арбитров соединить входы-выходы как Вам надо.

пример от альтеры

Описание TRI

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TRI есть в каждом LUTe

а мужики то не знают (с) покажите где в документации на современные плис это написано?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут я с Вами не спорю. Как таковых TRI-state буферов в LUT нет. Они виртуальны, т.е. компилятор синтезирует логику TRI в LUT. По моему...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

стоп, вопрос был как из

 

M_ADDR[17..0] : Output;

M_DATA[15..0] : Output;

M_TAG : Output;

M_REQ : Output;

M_ACK : Input;

 

сделать одно имя и как это описать чтоб в сотнях местах не лепить и не наделать ошибки, и только в этом,

давайте о TRI и CHETYRE поговорим в личке или другой ветке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

стоп, вопрос был как из

сделать одно имя и как это описать чтоб в сотнях местах не лепить и не наделать ошибки, и только в этом,

никак, если мне не изменяет память, в AHDL нет поддержки массивов векторов. переходите на VHDL/SV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сделать одно имя

 

Можно и одномерным массивом работать

типа

parameters (width = 4);
subdesign generat_e
(
a[width-1..0]   : input;
b[width-1..0]   : output;
c[2*width-1..0] : output;
)

begin
for i in 0 to width-1 generate
b[i] = a[width-1-i];
c[2*i] = a[i];
c[2*i+1] = a[i];
end generate;
end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...