10. Пример 3
generate
case (WIDTH)
// 1-битовый сумматор
1: adder_1bit x1(co, sum, a, b, ci);
// 2-битовый сумматор
2: adder_2bit x1(co, sum, a, b, ci);
// сумматор CLA
default: adder_cla #(WIDTH) x1(co, sum, a, b, ci);
endcase
endgenerate
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 10
hahanova@mail.ru
11. Использование вложенных generate
parameter SIZE = 2;
genvar i, j, k, m;
Generate // Многоуровненый оператор generate
for (i=0; i<SIZE+1; i=i+1) begin:B1 // область действия B1[i]
M1 N1(); // копии B1[i].N1[i] компонента M1
for (j=0; j<SIZE; j=j+1) begin:B2 // область действия B1[i].B2[j]
M2 N2(); // копии B1[i].B2[j].N2 компонента M2
for (k=0; k<SIZE; k=k+1) begin:B3
// область действия B1[i].B2[j].B3[k]
// копии B1[i].B2[j].B3[k].N3
M3 N3();
end
end
if (i>0) for (m=0; m<SIZE; m=m+1) begin:B4
// область действия B1[i].B4[m]
M4 N4(); // копии B1[i].B4[m].N4
end
end
endgenerate
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 11
hahanova@mail.ru
12. Контрольные вопросы и задания.1
1. Разработать структурную модель 32-битного
двунаправленного трансивера, использующую в
качестве компонента функциональную модель 1-
битного трансивера, который имеет два
двунаправленных входа данных – a и b.
Асинхронный, активный по низкому уровню порт
разрешения выходов oe_n. Порт направления dir.
Когда oe_n = 0 и dir = 0, данные передаются из b в
a; если oe_n = 0 и dir = 1, то данные передаются с
a на b. Если oe_n = 1, то a и b имеют значение
высокого импеданса.
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 12
hahanova@mail.ru
13. Контрольные вопросы и задания.2
1. Нарисовать схему, соответствующую следующему оператору
generate:
generate
genvar stage
for (stage = 1; stage <= 4; stage = stage +1) begin: Ui
d_ff delay_ff (.clk(sys_clk),
.d(delayed_data[stage-1]), .q(delayed_data[stage]));
end
endgenerate
2. Создать условный оператор generate, который соединяет
переменную external_clk с сигналом internal_clk, если
параметр positive_clk = 1. В противном случае на линию
internal_clk подается инверсное значение external_clk.
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 13
hahanova@mail.ru
14. Контрольные вопросы и задания.3
1. Разработать структурную
A0
модель устройства,
состоящую из n C0
мультиплексоров 2-в-1, B0
соединенных параллельно. Sel
Входами устройства
являются сигнал
...
управления Sel, два n-
битовых вектора A и B. An-1
Выход описан n-битовым
сектором C. Величина n Cn-1
определена с помощью Bn-1
директивы `define.
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 14
hahanova@mail.ru
16. Оператор disable
module disable1;
initial begin
do_it;
$display("Finished do it at time %0d",$time);
end
initial begin
#55 disable do_it;
end
task do_it;
forever
#10 $display("doing it at time %0d",$time);
endtask
endmodule
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 16
hahanova@mail.ru
17. Mux with Parameterized Width and Number of Inputs
module muxMto1 (Z, SEL, D);
parameter N = 8; // number of bits wide
parameter M = 4; // number of inputs
parameter S = 2; // number of select lines
parameter W = M * N;
`define DTOTAL W-1:0
`define DWIDTH N-1:0
`define SELW S-1:0
`define WORDS M-1:0
input [` DTOTAL] D;
input [` SELW] SEL;
output [` DWIDTH] Z;
integer i;
reg[`DWIDTH] tmp, Z; // tmp will be use to minimize events
always @(SEL or D) begin
for(i=0; i < N; i = i + 1) // for bits in the width
tmp[i] = D[N*SEL + i];
Z = tmp;
end
endmodule
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 17
hahanova@mail.ru