//----------------------------------------------------- // Design Name : config_latch // File Name : config_latch.v // Coder : Xifan TANG //----------------------------------------------------- //----------------------------------------------------- // Function : A Configurable Latch with // - an active-high write enable signal //----------------------------------------------------- module LATCH ( input WE, // Write enable input D, // Data input output Q, // Q output output QN // Q negative output ); //------------Internal Variables-------- reg q_reg; //-------------Code Starts Here--------- always @ (WE or D) begin if (1'b1 == WE) begin q_reg <= D; end end // Wire q_reg to Q `ifndef ENABLE_FORMAL_VERIFICATION assign Q = q_reg; assign QN = ~q_reg; `else assign Q = 1'bZ; assign QN = !Q; `endif endmodule //----------------------------------------------------- // Function : A Configurable Latch with // - an active-high write enable signal // - an active-high reset signal //----------------------------------------------------- module LATCHR ( input RST, // Reset signal input WE, // Write enable input D, // Data input output Q, // Q output output QN // Q negative output ); //------------Internal Variables-------- reg q_reg; //-------------Code Starts Here--------- always @ (RST or WE or D) begin if (RST) begin q_reg <= 1'b0; end else if (1'b1 == WE) begin q_reg <= D; end end // Wire q_reg to Q `ifndef ENABLE_FORMAL_VERIFICATION assign Q = q_reg; assign QN = ~q_reg; `else assign Q = 1'bZ; assign QN = !Q; `endif endmodule //----------------------------------------------------- // Function : A Configurable Latch with // - an active-high write enable signal // - an active-low reset signal //----------------------------------------------------- module LATCHRN ( input RSTN, // Reset signal input WE, // Write enable input D, // Data input output Q, // Q output output QN // Q negative output ); //------------Internal Variables-------- reg q_reg; //-------------Code Starts Here--------- always @ (RSTN or WE or D) begin if (~RSTN) begin q_reg <= 1'b0; end else if (1'b1 == WE) begin q_reg <= D; end end // Wire q_reg to Q `ifndef ENABLE_FORMAL_VERIFICATION assign Q = q_reg; assign QN = ~q_reg; `else assign Q = 1'bZ; assign QN = !Q; `endif endmodule //----------------------------------------------------- // Function : A Configurable Latch with // - an active-high write enable signal // - an active-high set signal //----------------------------------------------------- module LATCHS ( input SET, // Set signal input WE, // Write enable input D, // Data input output Q, // Q output output QN // Q negative output ); //------------Internal Variables-------- reg q_reg; //-------------Code Starts Here--------- always @ (SET or WE or D) begin if (SET) begin q_reg <= 1'b1; end else if (1'b1 == WE) begin q_reg <= D; end end // Wire q_reg to Q `ifndef ENABLE_FORMAL_VERIFICATION assign Q = q_reg; assign QN = ~q_reg; `else assign Q = 1'bZ; assign QN = !Q; `endif endmodule //----------------------------------------------------- // Function : A Configurable Latch with // - an active-high write enable signal // - an active-low set signal //----------------------------------------------------- module LATCHSN ( input SETN, // Set signal input WE, // Write enable input D, // Data input output Q, // Q output output QN // Q negative output ); //------------Internal Variables-------- reg q_reg; //-------------Code Starts Here--------- always @ (SETN or WE or D) begin if (~SETN) begin q_reg <= 1'b1; end else if (1'b1 == WE) begin q_reg <= D; end end // Wire q_reg to Q `ifndef ENABLE_FORMAL_VERIFICATION assign Q = q_reg; assign QN = ~q_reg; `else assign Q = 1'bZ; assign QN = !Q; `endif endmodule //----------------------------------------------------- // Function : A Configurable Latch with // - an active-high write enable signal // - an active-high reset signal // - an active-high set signal //----------------------------------------------------- module LATCHSR ( input RST, // Reset signal input SET, // Set signal input WE, // Write enable input D, // Data input output Q, // Q output output QN // Q negative output ); //------------Internal Variables-------- reg q_reg; //-------------Code Starts Here--------- always @ (RST or SET or WE or D) begin if (RST) begin q_reg <= 1'b0; end else if (SET) begin q_reg <= 1'b1; end else if (1'b1 == WE) begin q_reg <= D; end end // Wire q_reg to Q `ifndef ENABLE_FORMAL_VERIFICATION assign Q = q_reg; assign QN = ~q_reg; `else assign Q = 1'bZ; assign QN = !Q; `endif endmodule //----------------------------------------------------- // Function : A Configurable Latch with // - an active-high write enable signal // - an active-high reset signal // - an active-high set signal //----------------------------------------------------- module LATCHSNRN ( input RSTN, // Reset signal input SETN, // Set signal input WE, // Write enable input D, // Data input output Q, // Q output output QN // Q negative output ); //------------Internal Variables-------- reg q_reg; //-------------Code Starts Here--------- always @ (RSTN or SETN or WE or D) begin if (~RSTN) begin q_reg <= 1'b0; end else if (~SETN) begin q_reg <= 1'b1; end else if (1'b1 == WE) begin q_reg <= D; end end // Wire q_reg to Q `ifndef ENABLE_FORMAL_VERIFICATION assign Q = q_reg; assign QN = ~q_reg; `else assign Q = 1'bZ; assign QN = !Q; `endif endmodule