【发布时间】:2016-06-23 05:12:05
【问题描述】:
我写的代码是这样的:
integer x=0, count_valid=1, count_down=0;
reg valid_1, valid_reg;
always@(posedge clk)
begin
if(tag==1) begin
if(valid) begin
count_valid <= count_valid +1;
x<=x+1;
valid_reg <= 1;
end
else begin
x<=0;
count_down <= count_down+1;
if(count_valid>0) begin
valid_reg <= 1;
count_valid <= count_valid -1;
end
else if(count_down>0) begin
valid_reg <= 0;
count_down <= count_down-1;
end
end
end
else begin
valid_reg <= valid;
if (valid) x<=x+1;
else x<=0;
end
valid_1 <= valid_reg;
end
valid是图片中的原始信号,valid_reg是修改后的信号。 count_valid 用于计算高的周期数,并用它来减一以实现加倍。然后count_down 用于计算低信号的周期。但我意识到当有效高时valid_reg 会高。
谁能告诉我如何使低信号在输出信号中运行相同的周期?任何想法也很棒。
【问题讨论】:
-
您的时钟图片缺少源时钟,您使用了时钟分频。这需要在图表中。
标签: verilog