Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: For для wire в verilog
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
-=Vitaly=-
Здравствуйте Уважаемые!

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

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

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

Cпасибо, а жаль...
sazh
Чего жалеть то. Чем вас не устраивает
genvar i;
generate for (i = 0; i < width; i = i + 1)
-=Vitaly=-
Цитата(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];

не синтезируется.
sazh
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
-=Vitaly=-
Цитата(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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.