| module counter1(clk, rst, ping); | |
| input clk, rst; | |
| output ping; | |
| reg [31:0] count; | |
| always @(posedge clk) begin | |
| if (rst) | |
| count <= 0; | |
| else | |
| count <= count + 1; | |
| end | |
| assign ping = &count; | |
| endmodule | |
| module counter2(clk, rst, ping); | |
| input clk, rst; | |
| output ping; | |
| reg [31:0] count; | |
| integer i; | |
| reg carry; | |
| always @(posedge clk) begin | |
| carry = 1; | |
| for (i = 0; i < 32; i = i+1) begin | |
| count[i] <= !rst & (count[i] ^ carry); | |
| carry = count[i] & carry; | |
| end | |
| end | |
| assign ping = &count; | |
| endmodule | |