代码运行时没有任何语法错误,但是当我试图将代码移植到basys板并使用它时,它就不工作了。我认为给定的Vivado错误是问题所在,但我不确定。我不知道距离是如何被闲置的。Vivado错误 (对不起,我没有足够的声誉直接把这张照片放上去)
`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端模
发布于 2018-04-03 15:44:33
打开综合->原理图,查找距离寄存器(distance_reg.)。检查是否真的删除了所有的寄存器。我刚刚运行了你的设计,我也收到了信息,但大多数仍然存在。(至少直至注册纪录册27)。
如果它们真的都消失了,最有可能的原因是“回声”信号总是0。
下一步:使用整数作为寄存器是不好的风格。通常的编码方式是使用:
reg [31:0] distance;(整数也是有符号的,您可能需要一个无符号计数器)
最后:您的“触发器=1”代码:
https://stackoverflow.com/questions/49633330
复制相似问题