先上一段计数器的verilog代码:
/*4位计数器 这例子非常好的表达了一个概念就是同步复位的概念。 这个概念非常重要,在XILINX的器件所有硬核都使用同步复位。 如果使用异步复位需要多耗费资源。 接着说计数器,计数器必须有时钟,如果要能进入到初始值,必须有复位输入。 和一个计数器的输出。该4位计数器,三个选项全部具备。 在时钟上升沿,如果复位信号有效,则复位为0,如果复位信号无效,则计数器需要加一。 另外让大家思考下,如果是计数器的最大值是 13怎么办? 低电平复位 时钟上升沿计数 */ module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1'b1; //计数 end endmodule
再附一首testbeach:
/* File Name : ctr_tb.v Description : The testbench of the ctr_4.v Written By : LiMing Data : 2011/04/19 16:13 modefied : Period = 4ns */ `timesca