File tree 4 files changed +144
-10
lines changed
4 files changed +144
-10
lines changed Original file line number Diff line number Diff line change 4
4
// --------------------------------------------------------------------------------
5
5
6
6
// INFO --------------------------------------------------------------------------------
7
- // SR trigger variant
8
- // No metastable state. SET dominates here
7
+ // Synchronous SR trigger variant
8
+ // No metastable state. SET signal dominates here
9
9
10
10
11
11
/* --- INSTANTIATION TEMPLATE BEGIN ---
@@ -32,11 +32,11 @@ module reset_set(
32
32
);
33
33
34
34
always_ff @ (posedge clk) begin
35
- if ( ~ nrst) begin
35
+ if ( ~ nrst ) begin
36
36
q = 0 ;
37
37
end else begin
38
- if r q = 0 ;
39
- if s q = 1 ;
38
+ if ( r ) q = 1'b0 ;
39
+ if ( s ) q = 1'b1 ;
40
40
end
41
41
end
42
42
Original file line number Diff line number Diff line change
1
+ // --------------------------------------------------------------------------------
2
+ // reset_set_comb.sv
3
+ // Konstantin Pavlov, [email protected]
4
+ // --------------------------------------------------------------------------------
5
+
6
+ // INFO --------------------------------------------------------------------------------
7
+ // Synchronous SR trigger, but has a combinational output that changes
8
+ // "with no delay" after inputs
9
+ // No metastable state. SET signal dominates here
10
+
11
+
12
+ // | | +---+ | | | | | | SET
13
+ // | | | | | | | | | |
14
+ // +------------+ +--------------------------------+
15
+ // | | | | | | | | | |
16
+ // | | | | | | +---+ | | RESET
17
+ // | | | | | | | | | |
18
+ // +----------------------------+ +----------------+
19
+ // | | | | | | | | | |
20
+ // | | | +---------------+ | | Q output, original
21
+ // | | | | | | | | | | reset_set.sv
22
+ // +----------------+ | | | +----------------+
23
+ // | | | | | | | | | |
24
+ // | | +---------------+ | | | Q output, this module
25
+ // | | | | | | | | | | reset_set_comb.sv
26
+ // +------------+ | | | +--------------------+
27
+ // | | | | | | | | | |
28
+ // | | | | | | | | | |
29
+
30
+
31
+ /* --- INSTANTIATION TEMPLATE BEGIN ---
32
+
33
+ reset_set_comb RS1 (
34
+ .clk( clk ),
35
+ .nrst( 1'b1 ),
36
+ .s( ),
37
+ .r( ),
38
+ .q( ),
39
+ .nq( )
40
+ );
41
+
42
+ --- INSTANTIATION TEMPLATE END ---*/
43
+
44
+
45
+ module reset_set_comb (
46
+ input clk,
47
+ input nrst,
48
+ input s,
49
+ input r,
50
+ output q,
51
+ output nq
52
+ );
53
+
54
+ logic q_reg = 0 ;
55
+ always_ff @ (posedge clk) begin
56
+ if ( ~ nrst ) begin
57
+ q_reg = 0 ;
58
+ end else begin
59
+ if ( r ) q_reg = 1'b0 ;
60
+ if ( s ) q_reg = 1'b1 ;
61
+ end
62
+ end
63
+
64
+ assign q = s || (q_reg && ~ r);
65
+ assign nq = ~ q;
66
+
67
+ endmodule
Original file line number Diff line number Diff line change 4
4
// --------------------------------------------------------------------------------
5
5
6
6
// INFO --------------------------------------------------------------------------------
7
- // SR trigger variant
8
- // No metastable state. RESET dominates here
7
+ // Synchronous SR trigger variant
8
+ // No metastable state. RESET signal dominates here
9
9
10
10
11
11
/* --- INSTANTIATION TEMPLATE BEGIN ---
@@ -32,11 +32,11 @@ module set_reset(
32
32
);
33
33
34
34
always_ff @ (posedge clk) begin
35
- if ( ~ nrst) begin
35
+ if ( ~ nrst ) begin
36
36
q = 0 ;
37
37
end else begin
38
- if s q = 1 ;
39
- if r q = 0 ;
38
+ if ( s ) q = 1'b1 ;
39
+ if ( r ) q = 1'b0 ;
40
40
end
41
41
end
42
42
Original file line number Diff line number Diff line change
1
+ // --------------------------------------------------------------------------------
2
+ // set_reset_comb.sv
3
+ // Konstantin Pavlov, [email protected]
4
+ // --------------------------------------------------------------------------------
5
+
6
+ // INFO --------------------------------------------------------------------------------
7
+ // Synchronous SR trigger, but has a combinational output that changes
8
+ // "with no delay" after inputs
9
+ // No metastable state. RESET signal dominates here
10
+
11
+
12
+ // | | +---+ | | | | | | SET
13
+ // | | | | | | | | | |
14
+ // +------------+ +--------------------------------+
15
+ // | | | | | | | | | |
16
+ // | | | | | | +---+ | | RESET
17
+ // | | | | | | | | | |
18
+ // +----------------------------+ +----------------+
19
+ // | | | | | | | | | |
20
+ // | | | +---------------+ | | Q output, original
21
+ // | | | | | | | | | | set_reset.sv
22
+ // +----------------+ | | | +----------------+
23
+ // | | | | | | | | | |
24
+ // | | +---------------+ | | | Q output, this module
25
+ // | | | | | | | | | | set_reset_comb.sv
26
+ // +------------+ | | | +--------------------+
27
+ // | | | | | | | | | |
28
+ // | | | | | | | | | |
29
+
30
+
31
+ /* --- INSTANTIATION TEMPLATE BEGIN ---
32
+
33
+ set_reset_comb SR1 (
34
+ .clk( clk ),
35
+ .nrst( 1'b1 ),
36
+ .s( ),
37
+ .r( ),
38
+ .q( ),
39
+ .nq( )
40
+ );
41
+
42
+ --- INSTANTIATION TEMPLATE END ---*/
43
+
44
+
45
+ module set_reset_comb (
46
+ input clk,
47
+ input nrst,
48
+ input s,
49
+ input r,
50
+ output q,
51
+ output nq
52
+ );
53
+
54
+ logic q_reg = 0 ;
55
+ always_ff @ (posedge clk) begin
56
+ if ( ~ nrst ) begin
57
+ q_reg = 0 ;
58
+ end else begin
59
+ if ( s ) q_reg = 1'b1 ;
60
+ if ( r ) q_reg = 1'b0 ;
61
+ end
62
+ end
63
+
64
+ assign q = (s || q_reg) && ~ r;
65
+ assign nq = ~ q;
66
+
67
+ endmodule
You can’t perform that action at this time.
0 commit comments