File tree Expand file tree Collapse file tree 4 files changed +56
-20
lines changed Expand file tree Collapse file tree 4 files changed +56
-20
lines changed Original file line number Diff line number Diff line change 10
10
//
11
11
12
12
module SRL16E
13
+ #(
14
+ parameter [15 :0 ] INIT = 16'h0 ,
15
+ parameter [0 :0 ] IS_CLK_INVERTED = 1'b0
16
+ )
13
17
(
14
18
// Clock
15
19
input wire CLK,
@@ -22,7 +26,6 @@ module SRL16E
22
26
// Data out
23
27
output wire Q
24
28
);
25
- parameter [15 :0 ] INIT = 16'h0000 ;
26
29
27
30
wire [3 :0 ] _w_addr = { A3, A2, A1, A0 };
28
31
@@ -35,12 +38,24 @@ module SRL16E
35
38
end
36
39
37
40
// Shifter logic
38
- always @(posedge CLK) begin : SHIFTER_16B
39
-
40
- if (CE) begin
41
- _r_srl <= { _r_srl[14 :0 ], D };
41
+ generate
42
+ if (IS_CLK_INVERTED) begin : GEN_CLK_NEG
43
+ always @(negedge CLK) begin : SHIFTER_16B
44
+
45
+ if (CE) begin
46
+ _r_srl <= { _r_srl[14 :0 ], D };
47
+ end
48
+ end
42
49
end
43
- end
50
+ else begin : GEN_CLK_POS
51
+ always @(posedge CLK) begin : SHIFTER_16B
52
+
53
+ if (CE) begin
54
+ _r_srl <= { _r_srl[14 :0 ], D };
55
+ end
56
+ end
57
+ end
58
+ endgenerate
44
59
45
60
// Data out
46
61
assign Q = _r_srl[_w_addr];
Original file line number Diff line number Diff line change 10
10
//
11
11
12
12
module SRL32E
13
+ #(
14
+ parameter [31 :0 ] INIT = 32'h0 ,
15
+ parameter [0 :0 ] IS_CLK_INVERTED = 1'b0
16
+ )
13
17
(
14
18
// Clock
15
19
input wire CLK,
@@ -22,8 +26,6 @@ module SRL32E
22
26
// Data out
23
27
output wire Q
24
28
);
25
- parameter [31 :0 ] INIT = 32'h00000000 ;
26
- parameter [0 :0 ] IS_CLK_INVERTED = 1'b0 ;
27
29
28
30
// 32-bit shift register
29
31
reg [31 :0 ] _r_srl;
@@ -36,14 +38,14 @@ module SRL32E
36
38
// Shifter logic
37
39
generate
38
40
if (IS_CLK_INVERTED) begin : GEN_CLK_NEG
39
- always @(negedge CLK) begin
41
+ always @(negedge CLK) begin : SHIFTER_32B
40
42
if (CE) begin
41
43
_r_srl <= { _r_srl[30 :0 ], D };
42
44
end
43
45
end
44
46
end
45
47
else begin : GEN_CLK_POS
46
- always @(posedge CLK) begin
48
+ always @(posedge CLK) begin : SHIFTER_32B
47
49
if (CE) begin
48
50
_r_srl <= { _r_srl[30 :0 ], D };
49
51
end
Original file line number Diff line number Diff line change 10
10
//
11
11
12
12
module SRLC16E
13
+ #(
14
+ parameter [15 :0 ] INIT = 16'h0 ,
15
+ parameter [0 :0 ] IS_CLK_INVERTED = 1'b0
16
+ )
13
17
(
14
18
// Clock
15
19
input wire CLK,
@@ -24,8 +28,6 @@ module SRLC16E
24
28
// Cascading data out
25
29
output wire Q15
26
30
);
27
- parameter [15 :0 ] INIT = 16'h0000 ;
28
- parameter [0 :0 ] IS_CLK_INVERTED = 1'b0 ;
29
31
30
32
// 32-bit shift register
31
33
reg [15 :0 ] _r_srl;
@@ -41,14 +43,16 @@ module SRLC16E
41
43
// Shifter logic
42
44
generate
43
45
if (IS_CLK_INVERTED) begin : GEN_CLK_NEG
44
- always @(negedge CLK) begin
46
+ always @(negedge CLK) begin : SHIFTER_16B
47
+
45
48
if (CE) begin
46
49
_r_srl <= { _r_srl[14 :0 ], D };
47
50
end
48
51
end
49
52
end
50
53
else begin : GEN_CLK_POS
51
- always @(posedge CLK) begin
54
+ always @(posedge CLK) begin : SHIFTER_16B
55
+
52
56
if (CE) begin
53
57
_r_srl <= { _r_srl[14 :0 ], D };
54
58
end
Original file line number Diff line number Diff line change 10
10
//
11
11
12
12
module SRLC32E
13
+ #(
14
+ parameter [31 :0 ] INIT = 32'h0 ,
15
+ parameter [0 :0 ] IS_CLK_INVERTED = 1'b0
16
+ )
13
17
(
14
18
// Clock
15
19
input wire CLK,
@@ -24,7 +28,6 @@ module SRLC32E
24
28
// Cascading data out
25
29
output wire Q31
26
30
);
27
- parameter [31 :0 ] INIT = 32'h00000000 ;
28
31
29
32
// 32-bit shift register
30
33
reg [31 :0 ] _r_srl;
@@ -35,12 +38,24 @@ module SRLC32E
35
38
end
36
39
37
40
// Shifter logic
38
- always @(posedge CLK) begin : SHIFTER_32B
39
-
40
- if (CE) begin
41
- _r_srl <= { _r_srl[30 :0 ], D };
41
+ generate
42
+ if (IS_CLK_INVERTED) begin : GEN_CLK_NEG
43
+ always @(negedge CLK) begin : SHIFTER_32B
44
+
45
+ if (CE) begin
46
+ _r_srl <= { _r_srl[30 :0 ], D };
47
+ end
48
+ end
42
49
end
43
- end
50
+ else begin : GEN_CLK_POS
51
+ always @(posedge CLK) begin : SHIFTER_32B
52
+
53
+ if (CE) begin
54
+ _r_srl <= { _r_srl[30 :0 ], D };
55
+ end
56
+ end
57
+ end
58
+ endgenerate
44
59
45
60
// Data out
46
61
assign Q = _r_srl[A];
You can’t perform that action at this time.
0 commit comments