Create list_ch04_11_mod_m_counter.v
diff --git a/verilog/rtl/list_ch04_11_mod_m_counter.v b/verilog/rtl/list_ch04_11_mod_m_counter.v new file mode 100644 index 0000000..6b7236c --- /dev/null +++ b/verilog/rtl/list_ch04_11_mod_m_counter.v
@@ -0,0 +1,31 @@ +// Listing 4.11 +module mod_m_counter + #( + parameter N=4, // number of bits in counter + M=10 // mod-M + ) + ( + input wire clk, reset, + output wire max_tick, + output wire [N-1:0] q + ); + + //signal declaration + reg [N-1:0] r_reg; + wire [N-1:0] r_next; + + // body + // register + always @(posedge clk, posedge reset) + if (reset) + r_reg <= 0; + else + r_reg <= r_next; + + // next-state logic + assign r_next = (r_reg==(M-1)) ? 0 : r_reg + 1; + // output logic + assign q = r_reg; + assign max_tick = (r_reg==(M-1)) ? 1'b1 : 1'b0; + +endmodule \ No newline at end of file