FPGA学习笔记1.2——模24计数器

设计思路:

模24计数器,从零开始计数,计数到23时(10111),产生一个进位信号1,同时计数状态清零。

原理图:FPGA学习笔记1.2——模24计数器_第1张图片

功能模块代码:

module counter100(clk, rst_n, en, dout, co);
input clk, rst_n, en;
output[4:0] dout;
reg [4:0] dout;
output co;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
dout <= 5'b00000;       
else if(en)
if(dout == 5'b10111)    
dout <= 5'b00000;
else
dout <= dout + 1'b1; 
else
dout <= dout;
end
assign co = dout[0]&dout[1]&dout[2]&dout[4];  
endmodule

测试模块代码:

`timescale 1ns/1ps
module counter100_tb;
reg clk, rst_n, en;
wire[4:0] dout;
wire co;
always
begin
#1 clk = ~clk;

#2 $display("clk:%b -- rst:%b -- en:%b -- dout:%b -- co:%b", clk, rst_n,en,dout,co);
end
initial
begin
clk = 1'b0;
rst_n = 1'b1;
en = 1'b0;
#2 rst_n = 1'b0;
#2 rst_n = 1'b1; en = 1'b1;    
end
counter100 u1(.clk(clk), .rst_n(rst_n), .en(en), .dout(dout), .co(co));
endmodule

运行图:

FPGA学习笔记1.2——模24计数器_第2张图片

FPGA学习笔记1.2——模24计数器_第3张图片

你可能感兴趣的:(fpga开发)