-1

嘿,所以我基本上是 Verilog 的新手,不太确定语法是如何工作的以及类似的事情。

任务如下

使用 Altera 板上的按钮和开关来增加或减少 4 位计数器。计数器的值应使用板载 LED 显示。使用开关控制计数器的方向,使用按钮更改计数器值。

这就是我到目前为止所得到的,我不知道它是否正确,当我到达那一点时,我知道如何在板上分配输入和输出,但就是无法编译代码。我不断得到:

错误 (10043):Lab2pt2.v(11) 中的 Verilog HDL 不支持功能错误:不支持对寄存器的程序连续分配。

下面是代码:

module counter(A,B,F);
input A,B;
output reg [3:0] F;

always @(A or B)

begin
if (A == 1 & B==1)

assign F = F+1;

else(A == 0 & B==1)

assign F = F-1;

end
endmodule 
4

1 回答 1

0

您是今天第二个尝试使用程序分配(一种相当晦涩的语言功能)的人!

快速的答案是简单地将“分配”放在您的...分配中,事情会更快乐。这种结构将在模拟器中工作,但在物理硬件中会暗示一些不寻常的逻辑。它真的适用于测试台(如果那样的话)。

你在这里所做的还有一些其他问题。您的 if/else 表达式中的条件之前缺少一个“if”。

更一般地,您需要开始将 Verilog 视为描述硬件。您的递增/递减语句在 RHS 上使用 F。F以前是什么?在这种情况下,“之前”甚至意味着什么?F的第一个值是多少?电路如何知道何时从一个状态移动到下一个状态?如果你能回答这些问题,你就可以顺利找到解决方案。

于 2017-10-02T18:16:02.843 回答