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

Subversion Repositories sc2v

[/] [sc2v/] [tags/] [arelease/] [examples/] [rng.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jcastillo
module rng(clk,reset,loadseed_i,seed_i,number_o);
2
input clk;
3
input reset;
4
input loadseed_i;
5
input [31:0] seed_i;
6
output [31:0] number_o;
7
 
8
reg [31:0] number_o;
9
 
10
reg [42:0] LFSR_reg;
11
reg [36:0] CASR_reg;
12
 
13
 
14
//CASR:
15
reg[42:0] CASR_varCASR,CASR_outCASR;
16
always @(posedge clk or negedge reset)
17
 
18
   begin
19
 
20
 
21
 
22
 
23
   if (!reset )
24
 
25
      begin
26
 
27
      CASR_reg  = (1);
28
 
29
      end
30
 
31
   else
32
 
33
      begin
34
 
35
      if (loadseed_i )
36
 
37
         begin
38
 
39
         CASR_varCASR [36:31]=0;
40
         CASR_varCASR [31:0]=seed_i ;
41
         CASR_reg  = (CASR_varCASR );
42
 
43
 
44
         end
45
 
46
      else
47
 
48
         begin
49
 
50
         CASR_varCASR =CASR_reg ;
51
 
52
         CASR_outCASR [36]=CASR_varCASR [35]^CASR_varCASR [0];
53
         CASR_outCASR [35]=CASR_varCASR [34]^CASR_varCASR [36];
54
         CASR_outCASR [34]=CASR_varCASR [33]^CASR_varCASR [35];
55
         CASR_outCASR [33]=CASR_varCASR [32]^CASR_varCASR [34];
56
         CASR_outCASR [32]=CASR_varCASR [31]^CASR_varCASR [33];
57
         CASR_outCASR [31]=CASR_varCASR [30]^CASR_varCASR [32];
58
         CASR_outCASR [30]=CASR_varCASR [29]^CASR_varCASR [31];
59
         CASR_outCASR [29]=CASR_varCASR [28]^CASR_varCASR [30];
60
         CASR_outCASR [28]=CASR_varCASR [27]^CASR_varCASR [29];
61
         CASR_outCASR [27]=CASR_varCASR [26]^CASR_varCASR [28];
62
         CASR_outCASR [26]=CASR_varCASR [25]^CASR_varCASR [27];
63
         CASR_outCASR [25]=CASR_varCASR [24]^CASR_varCASR [26];
64
         CASR_outCASR [24]=CASR_varCASR [23]^CASR_varCASR [25];
65
         CASR_outCASR [23]=CASR_varCASR [22]^CASR_varCASR [24];
66
         CASR_outCASR [22]=CASR_varCASR [21]^CASR_varCASR [23];
67
         CASR_outCASR [21]=CASR_varCASR [20]^CASR_varCASR [22];
68
         CASR_outCASR [20]=CASR_varCASR [19]^CASR_varCASR [21];
69
         CASR_outCASR [19]=CASR_varCASR [18]^CASR_varCASR [20];
70
         CASR_outCASR [18]=CASR_varCASR [17]^CASR_varCASR [19];
71
         CASR_outCASR [17]=CASR_varCASR [16]^CASR_varCASR [18];
72
         CASR_outCASR [16]=CASR_varCASR [15]^CASR_varCASR [17];
73
         CASR_outCASR [15]=CASR_varCASR [14]^CASR_varCASR [16];
74
         CASR_outCASR [14]=CASR_varCASR [13]^CASR_varCASR [15];
75
         CASR_outCASR [13]=CASR_varCASR [12]^CASR_varCASR [14];
76
         CASR_outCASR [12]=CASR_varCASR [11]^CASR_varCASR [13];
77
         CASR_outCASR [11]=CASR_varCASR [10]^CASR_varCASR [12];
78
         CASR_outCASR [10]=CASR_varCASR [9]^CASR_varCASR [11];
79
         CASR_outCASR [9]=CASR_varCASR [8]^CASR_varCASR [10];
80
         CASR_outCASR [8]=CASR_varCASR [7]^CASR_varCASR [9];
81
         CASR_outCASR [7]=CASR_varCASR [6]^CASR_varCASR [8];
82
         CASR_outCASR [6]=CASR_varCASR [5]^CASR_varCASR [7];
83
         CASR_outCASR [5]=CASR_varCASR [4]^CASR_varCASR [6];
84
         CASR_outCASR [4]=CASR_varCASR [3]^CASR_varCASR [5];
85
         CASR_outCASR [3]=CASR_varCASR [2]^CASR_varCASR [4];
86
         CASR_outCASR [2]=CASR_varCASR [1]^CASR_varCASR [3];
87
         CASR_outCASR [1]=CASR_varCASR [0]^CASR_varCASR [2];
88
         CASR_outCASR [0]=CASR_varCASR [36]^CASR_varCASR [1];
89
 
90
         CASR_reg  = (CASR_outCASR );
91
 
92
         end
93
 
94
 
95
      end
96
 
97
 
98
   end
99
//LFSR:
100
reg[42:0] LFSR_varLFSR;
101
reg outbitLFSR;
102
always @(posedge clk or negedge reset)
103
 
104
   begin
105
 
106
 
107
 
108
 
109
 
110
   if (!reset )
111
 
112
      begin
113
 
114
      LFSR_reg  = (1);
115
 
116
      end
117
 
118
   else
119
 
120
      begin
121
 
122
      if (loadseed_i )
123
 
124
         begin
125
 
126
         LFSR_varLFSR [42:31]=0;
127
         LFSR_varLFSR [31:0]=seed_i ;
128
         LFSR_reg  = (LFSR_varLFSR );
129
 
130
 
131
         end
132
 
133
      else
134
 
135
         begin
136
 
137
         LFSR_varLFSR =LFSR_reg ;
138
 
139
         outbitLFSR =LFSR_varLFSR [42];
140
         LFSR_varLFSR [42]=LFSR_varLFSR [41];
141
         LFSR_varLFSR [41]=LFSR_varLFSR [40]^outbitLFSR ;
142
         LFSR_varLFSR [40]=LFSR_varLFSR [39];
143
         LFSR_varLFSR [39]=LFSR_varLFSR [38];
144
         LFSR_varLFSR [38]=LFSR_varLFSR [37];
145
         LFSR_varLFSR [37]=LFSR_varLFSR [36];
146
         LFSR_varLFSR [36]=LFSR_varLFSR [35];
147
         LFSR_varLFSR [35]=LFSR_varLFSR [34];
148
         LFSR_varLFSR [34]=LFSR_varLFSR [33];
149
         LFSR_varLFSR [33]=LFSR_varLFSR [32];
150
         LFSR_varLFSR [32]=LFSR_varLFSR [31];
151
         LFSR_varLFSR [31]=LFSR_varLFSR [30];
152
         LFSR_varLFSR [30]=LFSR_varLFSR [29];
153
         LFSR_varLFSR [29]=LFSR_varLFSR [28];
154
         LFSR_varLFSR [28]=LFSR_varLFSR [27];
155
         LFSR_varLFSR [27]=LFSR_varLFSR [26];
156
         LFSR_varLFSR [26]=LFSR_varLFSR [25];
157
         LFSR_varLFSR [25]=LFSR_varLFSR [24];
158
         LFSR_varLFSR [24]=LFSR_varLFSR [23];
159
         LFSR_varLFSR [23]=LFSR_varLFSR [22];
160
         LFSR_varLFSR [22]=LFSR_varLFSR [21];
161
         LFSR_varLFSR [21]=LFSR_varLFSR [20];
162
         LFSR_varLFSR [20]=LFSR_varLFSR [19]^outbitLFSR ;
163
         LFSR_varLFSR [19]=LFSR_varLFSR [18];
164
         LFSR_varLFSR [18]=LFSR_varLFSR [17];
165
         LFSR_varLFSR [17]=LFSR_varLFSR [16];
166
         LFSR_varLFSR [16]=LFSR_varLFSR [15];
167
         LFSR_varLFSR [15]=LFSR_varLFSR [14];
168
         LFSR_varLFSR [14]=LFSR_varLFSR [13];
169
         LFSR_varLFSR [13]=LFSR_varLFSR [12];
170
         LFSR_varLFSR [12]=LFSR_varLFSR [11];
171
         LFSR_varLFSR [11]=LFSR_varLFSR [10];
172
         LFSR_varLFSR [10]=LFSR_varLFSR [9];
173
         LFSR_varLFSR [9]=LFSR_varLFSR [8];
174
         LFSR_varLFSR [8]=LFSR_varLFSR [7];
175
         LFSR_varLFSR [7]=LFSR_varLFSR [6];
176
         LFSR_varLFSR [6]=LFSR_varLFSR [5];
177
         LFSR_varLFSR [5]=LFSR_varLFSR [4];
178
         LFSR_varLFSR [4]=LFSR_varLFSR [3];
179
         LFSR_varLFSR [3]=LFSR_varLFSR [2];
180
         LFSR_varLFSR [2]=LFSR_varLFSR [1];
181
         LFSR_varLFSR [1]=LFSR_varLFSR [0]^outbitLFSR ;
182
         LFSR_varLFSR [0]=LFSR_varLFSR [42];
183
 
184
         LFSR_reg  = (LFSR_varLFSR );
185
 
186
         end
187
 
188
 
189
      end
190
 
191
 
192
   end
193
//combinate:
194
always @(posedge clk or negedge reset)
195
 
196
   begin
197
 
198
   if (!reset )
199
 
200
      begin
201
 
202
      number_o  = (0);
203
 
204
      end
205
 
206
   else
207
 
208
      begin
209
 
210
      number_o  = (LFSR_reg [31:0]^CASR_reg [31:0]);
211
 
212
      end
213
 
214
 
215
   end
216
 
217
endmodule

powered by: WebSVN 2.1.0

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