[an error occurred while processing this directive]
|
Дайте задачки по Verilog-у (желательно не только на знание языка, но и на сообразительность).
Я придумал одну, но боюсь кривовата:
Надо изменить модуль A, так чтобы:
1. Он был синтезируемый (и синхронный);
2. Модуль task1 не выводил ошибки;
3. Использовал наименьшее число триггеров.
4. Нельзя использовать комбинаторную логику для проверки делимости без остатка (кстати, а возможно ее спользовать?)
`timescale 1 us / 1 ns
module A(clk, reset, signal);
input clk, reset;
output signal;
wire clk, signal;
assign signal = clk;
endmodule
module task1;
reg clk;
reg reset;
wire signal;
integer i, rand;
A a0(clk, reset, signal);
initial // Clock generator
begin
i = 0;
clk <= 0;
reset <= 0;
#20 reset = 1;
forever #10 clk = !clk;
end
initial
#60000 $stop;
always @(posedge clk)
begin
rand = $random%9 + 10;
#(rand)
if (i%76 == 0)
begin
if (signal == 1'b0)
$display("Error");
end
else
begin
if (signal == 1'b1)
$display("Error");
end
if (i < 912)
i = i + 1;
else
i = 0;
end
endmodule
E-mail: info@telesys.ru