Veirlog 学习记录(1) ,十(多)进制可加计数器的实现

【Veirlog 学习记录(1) ,十(多)进制可加计数器的实现】最近在学校上FPGA这门课,课上做了一些小实验,现在记录一下。
我用的软件是vivado2015.4
代码如下:

module M10_counter( input EN,//使能端 input CP, //时钟 input Rd, //清零 output reg Cout, //进位 output reg [3:0] Q //输出 ); always @ (posedge CP,negedge Rd) if(~Rd) Q<=4'b0000; //异步清零 else if(EN) begin if(Q<4'b1001) Q<=Q+1'b1; //加计数 else Q<=4'b0000; end else Q<=Q; always @ (Q) if(Q==4'b1001) Cout =1; //进位 else Cout=0; endmodule

测试文件:
module M10_counter_tb(); reg EN,CP,Rd; wire Cout; wire [3:0] Q; M10_counter test(.EN(EN), .CP(CP), .Rd(Rd), .Cout(Cout), .Q(Q)); initial fork CP=0; EN=1; #20 EN=0; #50 EN=1; Rd=0; #30 Rd=1; join always #8 CP=~CP; endmodule

仿真图:
Veirlog 学习记录(1) ,十(多)进制可加计数器的实现
文章图片
同理可以改成任意进制,或者是可以改成减计数。
我也写了几篇关于Veirlog的文章,感兴趣的同学可以去看看。该模块链接如下:
https://blog.csdn.net/weixin_43877139/article/category/8778400
希望会对你有所启发。

    推荐阅读