OpenCores
URL https://opencores.org/ocsvn/logicprobe/logicprobe/trunk

Subversion Repositories logicprobe

[/] [logicprobe/] [trunk/] [tst/] [sim-v/] [lfsr128.v] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 hellwig
//
2
// lfsr128.v -- a linear feedback shift register with 128 bits
3
//              (actually constructed from 4 instances of a 32-bit lfsr)
4
//
5
 
6
`include "../../src/fpga/LogicProbe.v"
7
`timescale 1ns/1ns
8
 
9
module lfsr128(clk, reset_in_n, s, rs232_txd);
10
    input clk;
11
    input reset_in_n;
12
    output [3:0] s;
13
    output rs232_txd;
14
 
15
  wire reset;
16
  reg [3:0] reset_counter;
17
 
18
  reg [31:0] lfsr0;
19
  reg [31:0] lfsr1;
20
  reg [31:0] lfsr2;
21
  reg [31:0] lfsr3;
22
 
23
  wire trigger;
24
  wire sample;
25
  wire [127:0] log_data;
26
 
27
  assign reset = (reset_counter == 4'hF) ? 0 : 1;
28
  always @(posedge clk) begin
29
    if (reset_in_n == 0) begin
30
      reset_counter <= 4'h0;
31
    end else begin
32
      if (reset_counter != 4'hF) begin
33
        reset_counter <= reset_counter + 1;
34
      end
35
    end
36
  end
37
 
38
  always @(posedge clk) begin
39
    if (reset == 1) begin
40
      lfsr0 <= 32'hC70337DB;
41
      lfsr1 <= 32'h7F4D514F;
42
      lfsr2 <= 32'h75377599;
43
      lfsr3 <= 32'h7D5937A3;
44
    end else begin
45
      if (lfsr0[0] == 0) begin
46
        lfsr0 <= lfsr0 >> 1;
47
      end else begin
48
        lfsr0 <= (lfsr0 >> 1) ^ 32'hD0000001;
49
      end
50
      if (lfsr1[0] == 0) begin
51
        lfsr1 <= lfsr1 >> 1;
52
      end else begin
53
        lfsr1 <= (lfsr1 >> 1) ^ 32'hD0000001;
54
      end
55
      if (lfsr2[0] == 0) begin
56
        lfsr2 <= lfsr2 >> 1;
57
      end else begin
58
        lfsr2 <= (lfsr2 >> 1) ^ 32'hD0000001;
59
      end
60
      if (lfsr3[0] == 0) begin
61
        lfsr3 <= lfsr3 >> 1;
62
      end else begin
63
        lfsr3 <= (lfsr3 >> 1) ^ 32'hD0000001;
64
      end
65
    end
66
  end
67
 
68
  assign s[3] = lfsr0[27];
69
  assign s[2] = lfsr1[13];
70
  assign s[1] = lfsr2[23];
71
  assign s[0] = lfsr3[11];
72
 
73
  assign trigger = (lfsr0 == 32'h7119C0CD) ? 1 : 0;
74
  assign sample = 1;
75
  assign log_data = { lfsr0, lfsr1, lfsr2, lfsr3 };
76
  LogicProbe lp(clk, reset, trigger, sample, log_data, rs232_txd);
77
 
78
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.