删除了未使用的时序逻辑元素。不确定为什么它未被使用
Unused sequential logic element removed. Unsure why it is unused
代码运行时没有任何语法错误,但是当我尝试将代码移植到 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
结束模块
打开 Synthesis->Schematic 并查找距离寄存器 (distance_reg[..])。检查是否真的删除了所有寄存器。我只是 运行 你的设计 我也收到了消息,但其中大部分仍然存在。 (至少到寄存器 27)。
如果它们真的都消失了,最可能的原因是“回声”信号始终为 0。
下一篇:使用整数作为寄存器是不好的风格。正常的编码风格是使用:
reg [31:0] distance;
(整数也是有符号的,你可能想要一个无符号的计数器)
上次:您的 "trigger = 1;" 代码:
- 应该是non-blocking:"trigger <= 1;"(虽然我更喜欢1'b1)
- 缩进错误。它表明它属于 "if(distance > 294117)" 部分,但事实并非如此。
代码运行时没有任何语法错误,但是当我尝试将代码移植到 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
结束模块
打开 Synthesis->Schematic 并查找距离寄存器 (distance_reg[..])。检查是否真的删除了所有寄存器。我只是 运行 你的设计 我也收到了消息,但其中大部分仍然存在。 (至少到寄存器 27)。
如果它们真的都消失了,最可能的原因是“回声”信号始终为 0。
下一篇:使用整数作为寄存器是不好的风格。正常的编码风格是使用:
reg [31:0] distance;
(整数也是有符号的,你可能想要一个无符号的计数器)
上次:您的 "trigger = 1;" 代码:
- 应该是non-blocking:"trigger <= 1;"(虽然我更喜欢1'b1)
- 缩进错误。它表明它属于 "if(distance > 294117)" 部分,但事实并非如此。