我正在 Intel Quartus Prime Lite 23.1 中使用 Arduino MKR Vidor 4000 的模板项目。具体来说,它使用 Cyclone 10 LP 10CL016YU256C8G。
现在我正在尝试编写一个模块,暂时将一些电线重新路由到一组连接到 LED 的端口以进行调试。现在唯一发送的数据是 32 位时钟的 MSB。
有问题的模块
TestLeds
与顶级模块实体 MKRVIDOR4000_top
一起定义,如下所示:
module TestLeds(
inout wire [6:0] bMKR_A,
inout wire [14:0] bMKR_D,
inout wire [7:0] bByte
);
assign bByte = '{bMKR_A[5], bMKR_A[6], bMKR_D[0], bMKR_D[1], bMKR_D[2], bMKR_D[3], bMKR_D[4], bMKR_D[5]};
endmodule
module MKRVIDOR4000_top
(
// system signals
input iCLK,
// SAM D21 PINS
inout [6:0] bMKR_A,
inout [14:0] bMKR_D
);
reg [5:0] rRESETCNT;
reg [31:0] hadcounter;
always @(posedge iCLK) begin
if (!rRESETCNT[5]) begin
rRESETCNT <= rRESETCNT+1;
hadcounter <= 0;
end else begin
hadcounter <= hadcounter + 1;
end
end
wire [7:0]bMKR_LED;
TestLeds leds(
.bMKR_A(bMKR_A),
.bMKR_D(bMKR_D),
.bByte(bMKR_LED));
assign bMKR_LED[7:0] = hadcounter[31:31-7];
endmodule
这是基于上面的模板的精简版本,希望与我实际使用的版本相同。
据我了解,线路定义应该通过直接连接到
bMKR_A
“寄存器”来更新特定的 bMKR_D
和 hadcounter
端口,但所有这些似乎都被忽略了。也就是说,Quartus 声称没有编译门。我收到错误 Warning (12158): Entity "TestLeds" contains only dangling pins
但不明白这是如何发生的或如何解决它。
我也尝试过模拟这个项目,但 Quartus 不允许我选择任何语言,而且我找不到其他方法来完成此任务。
更具体地说明我来这里的目的:
问题是设计没有输出 看起来变量
bMKR_D
旨在作为输出,但在设计中的任何地方都没有驱动它。
造成混乱的一件事是您对端口使用模式“inout”。 没有理由将其用于您拥有的代码。 使用“输入”或“输出”。 仔细检查您的设计并进行更改;很快你就会意识到你没有任何产出。 如果没有输出(“bMKR_D”未驱动),综合将删除整个设计。
模式“inout”端口用于推断三态驱动程序。
您不需要 Quartus 来模拟这个小型设计。 www.edaplayground 是免费的,非常适合像这样的小型设计。 使用机构电子邮件注册,您可以运行所有行业标准模拟工具的近乎完整版本,只需进行几次剪切和粘贴,然后单击一个大运行按钮即可。