Skip to content

Commit 21f4580

Browse files
committed
Updated SR trigger variation modules
1 parent 51f484b commit 21f4580

File tree

4 files changed

+144
-10
lines changed

4 files changed

+144
-10
lines changed

reset_set.sv

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
//--------------------------------------------------------------------------------
55

66
// 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
99

1010

1111
/* --- INSTANTIATION TEMPLATE BEGIN ---
@@ -32,11 +32,11 @@ module reset_set(
3232
);
3333

3434
always_ff @(posedge clk) begin
35-
if (~nrst) begin
35+
if( ~nrst ) begin
3636
q = 0;
3737
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;
4040
end
4141
end
4242

reset_set_comb.sv

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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

set_reset.sv

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
//--------------------------------------------------------------------------------
55

66
// 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
99

1010

1111
/* --- INSTANTIATION TEMPLATE BEGIN ---
@@ -32,11 +32,11 @@ module set_reset(
3232
);
3333

3434
always_ff @(posedge clk) begin
35-
if (~nrst) begin
35+
if( ~nrst ) begin
3636
q = 0;
3737
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;
4040
end
4141
end
4242

set_reset_comb.sv

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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

0 commit comments

Comments
 (0)