1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
module latchp ( input d, clk, en, output reg q ); always @* if ( en ) q <= d; endmodule module latchn ( input d, clk, en, output reg q ); always @* if ( !en ) q <= d; endmodule module latchsr ( input d, clk, en, clr, pre, output reg q ); always @* if ( clr ) q <= 1'b0; else if ( pre ) q <= 1'b1; else if ( en ) q <= d; endmodule