1

这是我第一次访问 stackoverflow.com,也是 Verilog 编码的新手。我可能会错误地使用某些术语,所以如果我这样做了,请纠正我,以便我在以后的帖子中更清楚。

我正在使用一个 Altera FPGA 板,其中有 7 个 LEDG 灯可以触发和关闭。对于我的项目,我正在制作一个 BCD 加法器,当 BCD 值不是 0 - 9 时,LEDG [7] 打开。但是,我不想声明输出 [6:4]。LEDG[3:0] 显示两个输入之和的二进制等效值。

我以为我可以使用两个单独的声明语句,但它告诉我 LEDG 已经被声明了。然后我尝试使用方括号将它组合起来,但它也抱怨这一点。有什么方法可以简化我的代码。以下是我尝试过的示例。

示例 1:

module BCD (..., LEDG, ...);
output reg [3:0] LEDG;
output reg [7] LEDG;
endmodule

示例 2:

module BCD (..., LEDG, ...);
output reg ({[3:0], [7]} LEDG);
endmodule

任何帮助将不胜感激!提前致谢。:-)

4

2 回答 2

0

您尝试做的事情是不可能的,如果您要输出总线,那么您必须指定一个连续的范围。

如果您需要输出 [7] 和 [3:0],您应该只声​​明一个输出 reg [7:0]。

您可以不驱动未使用的位,或者如果这会给出综合警告/错误,那么如果您不关心它们的值(LEDG[6:4] = 3'b0),则将它们绑定到 0 或 1。

于 2013-04-20T03:01:49.413 回答
0
module(...NBCD_FLAG, LEDG...);
output reg [3:0] LEDG;
output wire NBCD_FLAG;

在您的 .qsf 文件中,将 LEDG 分配给您板上的 LED 3-0,将 NBED_FLAG 分配给 LED 7。这样您就可以将 LED 6-4 用于其他目的。

于 2013-04-23T01:31:06.670 回答