模块编译为0门

问题描述 投票:0回答:1

我正在 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 不允许我选择任何语言,而且我找不到其他方法来完成此任务。

更具体地说明我来这里的目的:

  • 导致问题的原因是什么?
  • 我该如何解决此类问题?
  • 我的理解有什么问题吗?
module verilog quartus
1个回答
0
投票

问题是设计没有输出 看起来变量

bMKR_D
旨在作为输出,但在设计中的任何地方都没有驱动它。

造成混乱的一件事是您对端口使用模式“inout”。 没有理由将其用于您拥有的代码。 使用“输入”或“输出”。 仔细检查您的设计并进行更改;很快你就会意识到你没有任何产出。 如果没有输出(“bMKR_D”未驱动),综合将删除整个设计。

模式“inout”端口用于推断三态驱动程序。

您不需要 Quartus 来模拟这个小型设计。 www.edaplayground 是免费的,非常适合像这样的小型设计。 使用机构电子邮件注册,您可以运行所有行业标准模拟工具的近乎完整版本,只需进行几次剪切和粘贴,然后单击一个大运行按钮即可。

© www.soinside.com 2019 - 2024. All rights reserved.