使用Verilog在7 Seg Decoder中显示数字

时间:2014-02-08 19:56:02

标签: verilog

此代码应显示编号0 -15。我试图使这个代码工作,但我尝试了一切,没有任何作用......

reg number;
number[3] = Qd;
number[2] = Qc;
number[1] = Qb;
number[0] = Qa;

wire circuitB;
reg[3:0] tenth;

comparator cm (circuitB,number);

always@(circuitB)
    if(circuitB)begin
        number[3] = 0;
        number[2] = 0;
        number[1] = number[3]&number[2]&number[1];
        number[0] = ~(number[1]^number[0]);
        tenth[0] = 1;           
    end

Dec7SegDisp big (HEX0,number);
Dec7SegDisp big1 (HEX1,tenth);

Qa,Qb,Qc,Qd从计数器输出。

所以,我尝试过的事情:

  1. 使用数字和第十作为连线 - 我会得到错误,例如左手赋值必须有可变数据类型等。
  2. 使用numer和tennth作为reg - 我得到的错误是说Qa,Qb,Qc和Qd对它们是非法的,因为错误(10170):在partII.v(22)附近文本“=”的Verilog HDL语法错误;期待“。”或标识符
  3. 我不知道还能做些什么。谢谢你的阅读。

1 个答案:

答案 0 :(得分:1)

以下是您需要解决的一些问题:

  • 您将number定义为单个标量变量,但将其用作数组。它应该是reg [3:0]编号或wire [3:0]编号。
  • 您应该使用连续分配号码:分配号码[3] = Qd;或者只在始终块中分配给它。你现在在代码开头的方式是错误的。为什么不将所有赋值放在一个单独的数字中总是阻止?
  • 您无法两次分配号码。目前,您在开始时和始终在块中分配它。
  • 您没有显示所有代码以及比较器和QA,..,QD的说明。也许您可以在此处发布更完整的代码:http://www.edaplayground.com/