1

对于我们的学校项目,我正在尝试使用线性反馈移位寄存器在硬件(七段)上生成伪随机数。我已经编写了 LFSR 和七段模块,但是我无法将这两个模块相互连接。该项目综合,但 HDL 图没有显示 LFSR 和七段模块之间的任何连接。下面是代码。

//main module
module expo(input clock, reset,
            output a,b,c,d,e,f,g
            );
wire [3:0]connect, clk, a,b,c,d,e,f,g;

LFSR_4_bit lfsr(
    .clock(clock),
    .LFSR(connect)
);

seven_seg seven(
     .in(connect),
     .reset(reset),
     .a(a),
     .b(b),
     .c(c),
     .d(d),
     .e(e),
     .f(f),
     .g(g)
);

endmodule

 //LFSR module
 module LFSR_4_bit(
            input clock,
            output reg[3:0]LFSR = 15  
);

    wire feedback = LFSR[4];

    always @(posedge clock)
       begin
      LFSR[0] <= feedback;
      LFSR[1] <= LFSR[0];
      LFSR[2] <= LFSR[1];
      LFSR[3] <= LFSR[2] ^ feedback;
      LFSR[4] <= LFSR[3];
      end

  endmodule

  //input and output for seven seg module

module sevenseg(
    input reset,
    input[3:0] in,  //the 4 inputs for each display
    output a, b, c, d, e, f, g, //the individual LED output for the seven segment along                           with the digital point
    output [3:0] an   // the 4 bit enable signal
    );

谢谢您的帮助。

4

1 回答 1

2

1)您实例化seven_seg但模块被称为module sevenseg这是一个编译错误。

2)你的LFSR有4位0到3,使用了第五位LFSR[4],这也是编译错误。

由于编译错误,我不确定您是否查看了当前综合的结果,因为它应该失败了。您很可能在连接之前查看的是旧结果。

我会改变的其他事情:
a)当你定义wire [3:0]connect, clk, a,b,c,d,e,f,g;它们都是 4 位。

但是,作为时钟(不是 clk)并a,b,c,d,e,f,g在您的端口列表中定义,它们已经被声明。那条线可能只是wire [3:0]connect.

b)当初始化触发器的值而不使用复位时,最好使用初始开始:这对 FPGA 有效,不适用于应该使用复位信号的 ASIC

initial begin
  LFSR = 4'd15;
end
于 2014-05-10T07:13:24.660 回答