代码运行时没有任何语法错误但是当我尝试将代码移植到basys板并使用它时它不起作用。我认为给定的Vivado错误是问题,但我不确定。我不知道距离是如何显示为未使用的。 Vivado error(抱歉,我没有足够的声誉来直接拍照)
`timescale 1us/1us
module ProximitySensor(output reg trigger, input echo, input clk, output reg isCrash);
integer distance;
always @(posedge clk) //every clock pulse
begin
case (echo)
0:
begin
if(distance <= 294117 && distance > 0)
begin
isCrash <= 1;
distance <=0;
end
else if(distance > 294117)
begin
isCrash <= 0;
distance <= 0;
end
trigger = 1;
end
1:
begin
trigger <= 0;
distance <= distance + 1;
end
endcase
end
endmodule
答案 0 :(得分:0)
打开Synthesis-&gt;原理图并查找距离寄存器(distance_reg [..])。检查是否真的删除了所有寄存器。我只是运行你的设计我也得到了消息,但大多数仍然存在。 (至少uptil登记册27)。
如果它们真的全部消失了,最可能的原因是“回声”信号始终为0.
下一篇:使用整数作为寄存器是不好的风格。正常的编码风格是使用:
reg [31:0] distance;
(整数也是有符号的,你可能想要一个无符号计数器)
最后:你的&#34;触发器= 1;&#34;代码: