1 |
2 |
slai |
/*
|
2 |
|
|
Multibits Shift Register
|
3 |
|
|
2010-2011 sclai <laikos@yahoo.com>
|
4 |
|
|
|
5 |
|
|
This library is free software; you can redistribute it and/or modify it
|
6 |
|
|
under the terms of the GNU Lesser General Public License as published by
|
7 |
|
|
the Free Software Foundation; either version 2.1 of the License,
|
8 |
|
|
or (at your option) any later version.
|
9 |
|
|
|
10 |
|
|
This library is distributed in the hope that it will be useful, but
|
11 |
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13 |
|
|
Lesser General Public License for more details.
|
14 |
|
|
|
15 |
|
|
You should have received a copy of the GNU Lesser General Public
|
16 |
|
|
License along with this library; if not, write to the Free Software
|
17 |
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
18 |
|
|
USA
|
19 |
|
|
*/
|
20 |
|
|
module ddr3_sr36 #(
|
21 |
|
|
parameter PIPE_LEN=7
|
22 |
|
|
)(
|
23 |
|
|
input wire clk,
|
24 |
|
|
input wire [35:0] shift_in,
|
25 |
|
|
output wire [35:0]shift_out
|
26 |
|
|
);
|
27 |
|
|
//register to hold value
|
28 |
|
|
reg [PIPE_LEN-1:0] d0;
|
29 |
|
|
reg [PIPE_LEN-1:0] d1;
|
30 |
|
|
reg [PIPE_LEN-1:0] d2;
|
31 |
|
|
reg [PIPE_LEN-1:0] d3;
|
32 |
|
|
reg [PIPE_LEN-1:0] d4;
|
33 |
|
|
reg [PIPE_LEN-1:0] d5;
|
34 |
|
|
reg [PIPE_LEN-1:0] d6;
|
35 |
|
|
reg [PIPE_LEN-1:0] d7;
|
36 |
|
|
reg [PIPE_LEN-1:0] d8;
|
37 |
|
|
reg [PIPE_LEN-1:0] d9;
|
38 |
|
|
reg [PIPE_LEN-1:0] d10;
|
39 |
|
|
reg [PIPE_LEN-1:0] d11;
|
40 |
|
|
reg [PIPE_LEN-1:0] d12;
|
41 |
|
|
reg [PIPE_LEN-1:0] d13;
|
42 |
|
|
reg [PIPE_LEN-1:0] d14;
|
43 |
|
|
reg [PIPE_LEN-1:0] d15;
|
44 |
|
|
reg [PIPE_LEN-1:0] d16;
|
45 |
|
|
reg [PIPE_LEN-1:0] d17;
|
46 |
|
|
reg [PIPE_LEN-1:0] d18;
|
47 |
|
|
reg [PIPE_LEN-1:0] d19;
|
48 |
|
|
reg [PIPE_LEN-1:0] d20;
|
49 |
|
|
reg [PIPE_LEN-1:0] d21;
|
50 |
|
|
reg [PIPE_LEN-1:0] d22;
|
51 |
|
|
reg [PIPE_LEN-1:0] d23;
|
52 |
|
|
reg [PIPE_LEN-1:0] d24;
|
53 |
|
|
reg [PIPE_LEN-1:0] d25;
|
54 |
|
|
reg [PIPE_LEN-1:0] d26;
|
55 |
|
|
reg [PIPE_LEN-1:0] d27;
|
56 |
|
|
reg [PIPE_LEN-1:0] d28;
|
57 |
|
|
reg [PIPE_LEN-1:0] d29;
|
58 |
|
|
reg [PIPE_LEN-1:0] d30;
|
59 |
|
|
reg [PIPE_LEN-1:0] d31;
|
60 |
|
|
reg [PIPE_LEN-1:0] d32;
|
61 |
|
|
reg [PIPE_LEN-1:0] d33;
|
62 |
|
|
reg [PIPE_LEN-1:0] d34;
|
63 |
|
|
reg [PIPE_LEN-1:0] d35;
|
64 |
|
|
always @(posedge clk)
|
65 |
|
|
begin
|
66 |
|
|
d35 <={shift_in[35],d35[PIPE_LEN-1:1]};
|
67 |
|
|
d34 <={shift_in[34],d34[PIPE_LEN-1:1]};
|
68 |
|
|
d33 <={shift_in[33],d33[PIPE_LEN-1:1]};
|
69 |
|
|
d32 <={shift_in[32],d32[PIPE_LEN-1:1]};
|
70 |
|
|
d31 <={shift_in[31],d31[PIPE_LEN-1:1]};
|
71 |
|
|
d30 <={shift_in[30],d30[PIPE_LEN-1:1]};
|
72 |
|
|
d29 <={shift_in[29],d29[PIPE_LEN-1:1]};
|
73 |
|
|
d28 <={shift_in[28],d28[PIPE_LEN-1:1]};
|
74 |
|
|
d27 <={shift_in[27],d27[PIPE_LEN-1:1]};
|
75 |
|
|
d26 <={shift_in[26],d26[PIPE_LEN-1:1]};
|
76 |
|
|
d25 <={shift_in[25],d25[PIPE_LEN-1:1]};
|
77 |
|
|
d24 <={shift_in[24],d24[PIPE_LEN-1:1]};
|
78 |
|
|
d23 <={shift_in[23],d23[PIPE_LEN-1:1]};
|
79 |
|
|
d22 <={shift_in[22],d22[PIPE_LEN-1:1]};
|
80 |
|
|
d21 <={shift_in[21],d21[PIPE_LEN-1:1]};
|
81 |
|
|
d20 <={shift_in[20],d20[PIPE_LEN-1:1]};
|
82 |
|
|
d19 <={shift_in[19],d19[PIPE_LEN-1:1]};
|
83 |
|
|
d18 <={shift_in[18],d18[PIPE_LEN-1:1]};
|
84 |
|
|
d17 <={shift_in[17],d17[PIPE_LEN-1:1]};
|
85 |
|
|
d16 <={shift_in[16],d16[PIPE_LEN-1:1]};
|
86 |
|
|
d15 <={shift_in[15],d15[PIPE_LEN-1:1]};
|
87 |
|
|
d14 <={shift_in[14],d14[PIPE_LEN-1:1]};
|
88 |
|
|
d13 <={shift_in[13],d13[PIPE_LEN-1:1]};
|
89 |
|
|
d12 <={shift_in[12],d12[PIPE_LEN-1:1]};
|
90 |
|
|
d11 <={shift_in[11],d11[PIPE_LEN-1:1]};
|
91 |
|
|
d10 <={shift_in[10],d10[PIPE_LEN-1:1]};
|
92 |
|
|
d9 <={shift_in[ 9], d9[PIPE_LEN-1:1]};
|
93 |
|
|
d8 <={shift_in[ 8], d8[PIPE_LEN-1:1]};
|
94 |
|
|
d7 <={shift_in[ 7], d7[PIPE_LEN-1:1]};
|
95 |
|
|
d6 <={shift_in[ 6], d6[PIPE_LEN-1:1]};
|
96 |
|
|
d5 <={shift_in[ 5], d5[PIPE_LEN-1:1]};
|
97 |
|
|
d4 <={shift_in[ 4], d4[PIPE_LEN-1:1]};
|
98 |
|
|
d3 <={shift_in[ 3], d3[PIPE_LEN-1:1]};
|
99 |
|
|
d2 <={shift_in[ 2], d2[PIPE_LEN-1:1]};
|
100 |
|
|
d1 <={shift_in[ 1], d1[PIPE_LEN-1:1]};
|
101 |
|
|
d0 <={shift_in[ 0], d0[PIPE_LEN-1:1]};
|
102 |
|
|
end
|
103 |
|
|
|
104 |
|
|
assign shift_out={d35[0],d34[0],d33[0],d32[0],
|
105 |
|
|
d31[0],d30[0],d29[0],d28[0],d27[0],d26[0],d25[0],d24[0],
|
106 |
|
|
d23[0],d22[0],d21[0],d20[0],d19[0],d18[0],d17[0],d16[0],
|
107 |
|
|
d15[0],d14[0],d13[0],d12[0],d11[0],d10[0],d9[0],d8[0],
|
108 |
|
|
d7[0],d6[0],d5[0],d4[0],d3[0],d2[0],d1[0],d0[0]
|
109 |
|
|
};
|
110 |
|
|
endmodule
|
111 |
|
|
|
112 |
|
|
|
113 |
|
|
|