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

 
 
 
Reply to this topicStart new topic
> For для wire в verilog, можно ли?
-=Vitaly=-
сообщение Apr 24 2007, 12:06
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Здравствуйте Уважаемые!

Можно ли использовать for для сигналов типа wire, а то приходится использоватьсигналы класса reg внутри always. Я понимаю, что он триггер не сделает, но интересно узнать.

Спасибо!
Go to the top of the page
 
+Quote Post
dxp
сообщение Apr 24 2007, 16:09
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(-=Vitaly=- @ Apr 24 2007, 16:06) *
Можно ли использовать for для сигналов типа wire, а то приходится использоватьсигналы класса reg внутри always. Я понимаю, что он триггер не сделает, но интересно узнать.

for разрешается применять только в процедурных блоках (initial, always). Присваивание в процедурных блоках допускается только сигналам типа reg, integer, но не wire. Итого, ответ: нет.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Apr 24 2007, 16:33
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(dxp @ Apr 24 2007, 16:09) *
for разрешается применять только в процедурных блоках (initial, always). Присваивание в процедурных блоках допускается только сигналам типа reg, integer, но не wire. Итого, ответ: нет.

Cпасибо, а жаль...
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 24 2007, 16:49
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Чего жалеть то. Чем вас не устраивает
genvar i;
generate for (i = 0; i < width; i = i + 1)
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Apr 25 2007, 12:53
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(sazh @ Apr 24 2007, 16:49) *
Чего жалеть то. Чем вас не устраивает
genvar i;
generate for (i = 0; i < width; i = i + 1)

Да в принципе устраивает, но не всегда удобно, ведь для generate нужен екземпляр примитива, чтобы размножить, а для for нет.

Ведь конструкция
genvar i;
generate for (i = 0; i < width; i = i + 1)
FR[i]=FR_INT | !FR_EN[i];

не синтезируется.
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 25 2007, 13:33
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



module g_enerate
#(
parameter width = 4
)
(
input FR_INT,
input [width-1:0] FR_EN,
output [width-1:0] FR
);

genvar i;

generate for (i = 0; i < width; i = i + 1)
begin : block
assign FR[i] = FR_INT | !FR_EN[i];
end
endgenerate

endmodule
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Apr 25 2007, 16:12
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(sazh @ Apr 25 2007, 13:33) *
module g_enerate
#(
parameter width = 4
)
(
input FR_INT,
input [width-1:0] FR_EN,
output [width-1:0] FR
);

genvar i;

generate for (i = 0; i < width; i = i + 1)
begin : block
assign FR[i] = FR_INT | !FR_EN[i];
end
endgenerate

endmodule


Огромное спасибо, то что доктор прописал!! a14.gif
Go to the top of the page
 
+Quote Post

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

 


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


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