[an error occurred while processing this directive]
|
Три модуля. Синтезатору сказать, что "Cascade chain" есть "Мanual"
Первый - самый нижний уровень - mux_bit.tdf
-----------------------------------------------------------------------------
subdesign mux_bit
(
data_in[1..0] : input;
data_out : output;
sel,ena:input;
)begin
data_out=( (data_in[0] & !sel & ena) # (data_in[1] & sel & ena));
end;
----------------------------------------------------------------------------------
include "mux_bit.inc";subdesign mux_16bit
(
data_in[15..0] : input;
data_out : output;
ena[7..0],sel:input;
)
begin
data_out = mux_bit(data_in[0],data_in[1],sel,ena[0]) #
cascade(mux_bit(data_in[2],data_in[3],sel,ena[1]) #
cascade(mux_bit(data_in[4],data_in[5],sel,ena[2]) #
cascade(mux_bit(data_in[6],data_in[7],sel,ena[3]) #
cascade(mux_bit(data_in[8],data_in[9],sel,ena[4]) #
cascade(mux_bit(data_in[10],data_in[11],sel,ena[5]) #
cascade(mux_bit(data_in[12],data_in[13],sel,ena[6]) #
cascade(mux_bit(data_in[14],data_in[15],sel,ena[7]))))))));
end;
Ну и top-файл.
--------------------------------------------------------------------------
include "mux_16bit.inc";subdesign mux_7x16bit
(
data_in[6..0][15..0] : input;
data_out[6..0] : output;
sel[3..0]:input;
)
variable
ena[7..0]:node;
beginfor I in 0 to 7 generate
ena[I]=(sel[3..1]==I);
end generate;for I in 0 to 6 generate
data_out[I] = mux_16bit(data_in[I][],ena[],sel[0]);
end generate;
end;
E-mail: info@telesys.ru