Как TODO в правопреемника один выходной переменных после 10 TimeUnits или часы:
В конструкции уровня:
испытательный стенд
reg c,d,e;
initial begin
#10;
c = a+b;
d = a;
e = b;
end
Для RTL (синтеза) сначала нужно испытательный стенд с часами.
Я бы генерировать часы, как это в моем testharness:
reg clk ; //Rising edge every 10 timesteps
initial begin
clk = 0;
#5;
forever begin
#5 ;
clk = ~clk;
end
end
построить счетчик, который отсчитывает 10, и как только он достигает 10 Включает флип-флоп, чтобы загрузить новые значения.
wire enable = (counter == 4'b10);
always @(posedge clk or negedge rst_n) begin
if (~rst_n) begin
c <= 1'b0;
d <= 1'b0;
e <= 1'b0;
end
else if (enable) begin
c <= (a+b);
d <= a;
e <= b;
end
end
endmodule
Дополнительные Verilog Советы
Выходы неявно провода нет необходимости переопределять их.
Неблокирующие присвоения <=
предназначены для использования всегда @(posedge clk)
при выводе триггеров.
reg
s или logic
типы могут быть назначены внутри always
или initial
блоков. wire
s используются с assign
или для подключения портов.
Что вы пытаетесь сделать с помощью '# 10', добавить задержку к непрерывному назначению? – Morgan
@Morgan - мне нужно ВСЕ 3 операции assinment для c, d и e выполняться на одних и тех же часах (часы 10) – Yakov
Вам понадобятся часы, которые будут входными, а затем введите триггеры. – Morgan