mirror of
https://github.com/pConst/basic_verilog.git
synced 2025-01-28 07:02:55 +08:00
Updated SR trigger variation modules
This commit is contained in:
parent
51f484b204
commit
21f4580a78
10
reset_set.sv
10
reset_set.sv
@ -4,8 +4,8 @@
|
|||||||
//--------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------
|
||||||
|
|
||||||
// INFO --------------------------------------------------------------------------------
|
// INFO --------------------------------------------------------------------------------
|
||||||
// SR trigger variant
|
// Synchronous SR trigger variant
|
||||||
// No metastable state. SET dominates here
|
// No metastable state. SET signal dominates here
|
||||||
|
|
||||||
|
|
||||||
/* --- INSTANTIATION TEMPLATE BEGIN ---
|
/* --- INSTANTIATION TEMPLATE BEGIN ---
|
||||||
@ -32,11 +32,11 @@ module reset_set(
|
|||||||
);
|
);
|
||||||
|
|
||||||
always_ff @(posedge clk) begin
|
always_ff @(posedge clk) begin
|
||||||
if (~nrst) begin
|
if( ~nrst ) begin
|
||||||
q = 0;
|
q = 0;
|
||||||
end else begin
|
end else begin
|
||||||
if r q = 0;
|
if( r ) q = 1'b0;
|
||||||
if s q = 1;
|
if( s ) q = 1'b1;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
67
reset_set_comb.sv
Normal file
67
reset_set_comb.sv
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
//--------------------------------------------------------------------------------
|
||||||
|
// reset_set_comb.sv
|
||||||
|
// Konstantin Pavlov, pavlovconst@gmail.com
|
||||||
|
//--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// INFO --------------------------------------------------------------------------------
|
||||||
|
// Synchronous SR trigger, but has a combinational output that changes
|
||||||
|
// "with no delay" after inputs
|
||||||
|
// No metastable state. SET signal dominates here
|
||||||
|
|
||||||
|
|
||||||
|
// | | +---+ | | | | | | SET
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// +------------+ +--------------------------------+
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// | | | | | | +---+ | | RESET
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// +----------------------------+ +----------------+
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// | | | +---------------+ | | Q output, original
|
||||||
|
// | | | | | | | | | | reset_set.sv
|
||||||
|
// +----------------+ | | | +----------------+
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// | | +---------------+ | | | Q output, this module
|
||||||
|
// | | | | | | | | | | reset_set_comb.sv
|
||||||
|
// +------------+ | | | +--------------------+
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// | | | | | | | | | |
|
||||||
|
|
||||||
|
|
||||||
|
/* --- INSTANTIATION TEMPLATE BEGIN ---
|
||||||
|
|
||||||
|
reset_set_comb RS1 (
|
||||||
|
.clk( clk ),
|
||||||
|
.nrst( 1'b1 ),
|
||||||
|
.s( ),
|
||||||
|
.r( ),
|
||||||
|
.q( ),
|
||||||
|
.nq( )
|
||||||
|
);
|
||||||
|
|
||||||
|
--- INSTANTIATION TEMPLATE END ---*/
|
||||||
|
|
||||||
|
|
||||||
|
module reset_set_comb(
|
||||||
|
input clk,
|
||||||
|
input nrst,
|
||||||
|
input s,
|
||||||
|
input r,
|
||||||
|
output q,
|
||||||
|
output nq
|
||||||
|
);
|
||||||
|
|
||||||
|
logic q_reg = 0;
|
||||||
|
always_ff @(posedge clk) begin
|
||||||
|
if( ~nrst ) begin
|
||||||
|
q_reg = 0;
|
||||||
|
end else begin
|
||||||
|
if( r ) q_reg = 1'b0;
|
||||||
|
if( s ) q_reg = 1'b1;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
assign q = s || (q_reg && ~r);
|
||||||
|
assign nq = ~q;
|
||||||
|
|
||||||
|
endmodule
|
10
set_reset.sv
10
set_reset.sv
@ -4,8 +4,8 @@
|
|||||||
//--------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------
|
||||||
|
|
||||||
// INFO --------------------------------------------------------------------------------
|
// INFO --------------------------------------------------------------------------------
|
||||||
// SR trigger variant
|
// Synchronous SR trigger variant
|
||||||
// No metastable state. RESET dominates here
|
// No metastable state. RESET signal dominates here
|
||||||
|
|
||||||
|
|
||||||
/* --- INSTANTIATION TEMPLATE BEGIN ---
|
/* --- INSTANTIATION TEMPLATE BEGIN ---
|
||||||
@ -32,11 +32,11 @@ module set_reset(
|
|||||||
);
|
);
|
||||||
|
|
||||||
always_ff @(posedge clk) begin
|
always_ff @(posedge clk) begin
|
||||||
if (~nrst) begin
|
if( ~nrst ) begin
|
||||||
q = 0;
|
q = 0;
|
||||||
end else begin
|
end else begin
|
||||||
if s q = 1;
|
if( s ) q = 1'b1;
|
||||||
if r q = 0;
|
if( r ) q = 1'b0;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
67
set_reset_comb.sv
Normal file
67
set_reset_comb.sv
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
//--------------------------------------------------------------------------------
|
||||||
|
// set_reset_comb.sv
|
||||||
|
// Konstantin Pavlov, pavlovconst@gmail.com
|
||||||
|
//--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// INFO --------------------------------------------------------------------------------
|
||||||
|
// Synchronous SR trigger, but has a combinational output that changes
|
||||||
|
// "with no delay" after inputs
|
||||||
|
// No metastable state. RESET signal dominates here
|
||||||
|
|
||||||
|
|
||||||
|
// | | +---+ | | | | | | SET
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// +------------+ +--------------------------------+
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// | | | | | | +---+ | | RESET
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// +----------------------------+ +----------------+
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// | | | +---------------+ | | Q output, original
|
||||||
|
// | | | | | | | | | | set_reset.sv
|
||||||
|
// +----------------+ | | | +----------------+
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// | | +---------------+ | | | Q output, this module
|
||||||
|
// | | | | | | | | | | set_reset_comb.sv
|
||||||
|
// +------------+ | | | +--------------------+
|
||||||
|
// | | | | | | | | | |
|
||||||
|
// | | | | | | | | | |
|
||||||
|
|
||||||
|
|
||||||
|
/* --- INSTANTIATION TEMPLATE BEGIN ---
|
||||||
|
|
||||||
|
set_reset_comb SR1 (
|
||||||
|
.clk( clk ),
|
||||||
|
.nrst( 1'b1 ),
|
||||||
|
.s( ),
|
||||||
|
.r( ),
|
||||||
|
.q( ),
|
||||||
|
.nq( )
|
||||||
|
);
|
||||||
|
|
||||||
|
--- INSTANTIATION TEMPLATE END ---*/
|
||||||
|
|
||||||
|
|
||||||
|
module set_reset_comb(
|
||||||
|
input clk,
|
||||||
|
input nrst,
|
||||||
|
input s,
|
||||||
|
input r,
|
||||||
|
output q,
|
||||||
|
output nq
|
||||||
|
);
|
||||||
|
|
||||||
|
logic q_reg = 0;
|
||||||
|
always_ff @(posedge clk) begin
|
||||||
|
if( ~nrst ) begin
|
||||||
|
q_reg = 0;
|
||||||
|
end else begin
|
||||||
|
if( s ) q_reg = 1'b1;
|
||||||
|
if( r ) q_reg = 1'b0;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
assign q = (s || q_reg) && ~r;
|
||||||
|
assign nq = ~q;
|
||||||
|
|
||||||
|
endmodule
|
Loading…
x
Reference in New Issue
Block a user