2014-05-10 3 views
1

Для нашего школьного проекта я пытаюсь использовать линейный сдвиговый регистр обратной связи для генерации псевдослучайных чисел на оборудовании (семь сегментов). Я написал LFSR и семисегментный модуль, однако мне трудно подключить два модуля друг к другу. Проект синтезируется, но на диаграмме HDL нет связи между LFSR и семисегментным модулем. Ниже приведен код.Подключение 4-разрядного регистра сдвига к входу 4 бит в другом модуле в Verilog

//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 
    ); 

Спасибо за помощь.

ответ

2

1) инстанцировании seven_seg но модуль называется module sevenseg Это ошибка компиляции.

2) Ваш LFSR имеет 4 бита 0-3, используется пятый бит LFSR[4], это также ошибка компиляции.

Из-за ошибок компиляции я не уверен, что вы просматриваете результаты текущего синтеза, поскольку он должен был сбой. Вполне вероятно, что вы просматриваете старый результат, прежде чем они будут связаны.

Другие вещи, которые я бы изменить:
а) При определении 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.

б) При инициализации значения триггера, а не с помощью перезагрузки, то лучше рекомендуется использовать первоначальный начать: Это справедливо для FPGA не для СБИСА, где вы должны использовать сброс сигналы

initial begin 
    LFSR = 4'd15; 
end 
+0

Я думаю, что начальные утверждения обычно используются для внедрения тестовых стендов и не синтезируются. – aaamourao

+0

И сигнал сброса заставит ваш LFSR генерировать одну и ту же последовательность чисел при каждом включении. – aaamourao

+0

@dasho lfsr, как ожидается, будут давать такую ​​же последовательность при включении поэтому они являются псевдослучайными. Исходные утверждения являются синтезируемыми и используются для установки значений по умолчанию для fpgas. – Morgan

 Смежные вопросы

  • Нет связанных вопросов^_^