当前位置:   article > 正文

【FPGA & Verilog】模24计数器

模24

2.1 设计输⼊

1. 模块名称:counter

2. 输⼊输出:CLK、Loadn、CLRn、D、Q、Co (位宽⾃定义)

2.2 引脚约束

1. 输⼊端 ⾃定义

2. 输出端 ⾃定义

2.3 设计要求

1. 计数模值为24,带置数、清零、进位功能

2. 使⽤RTL View分析电路的区别

2.4 电路仿真1. 使⽤ModelSim仿真

1.设计代码和编译:

模块名称:counter

输⼊输出:CLK、Loadn、CLRn、D(5bit)、Q(5bit)、Co(1bit)

模24计数器,4bit为0~15不够,5bit为0~31

module counter(CLK,Loadn,CLRn,D,Q,Co);

input CLK,Loadn,CLRn;

input [4:0]D;

output reg [4:0]Q;

output reg Co;

always@(posedge CLK or negedge CLRn or negedge Loadn)

begin

  if(! CLRn)

    begin

  Q <= 0;

  Co<= 0;

  end

  else if(! Loadn)

  Q <= D;

  else if(Q < 23)

    begin

  Q <= Q + 1;

  Co<= 0;

  end

  else

        begin

    Q <= 0;

    Co<= 1;

  end

end

endmodule

         (注意事项:使用前应先使其处于清零状态一段时间,即CLRn=0一段时间

            D为置入的数据,固定在D=5'b10010, 

            Co是进位信号,当计了24个数的时候,Co=1

5.使用Modelsim进行仿真:

两个文件:counter.v (由源文件copy)和counter_tb.v(拿来测试仿真的textbench)

测试文件代码:

`timescale 1ns/1ns
module counter_tb1;
 reg clk,clrn,loadn;
 reg [4:0]d;
 wire [4:0]q;
 wire co;
  counter U1(.CLK(clk),
       .Loadn(loadn),
       .CLRn(clrn),
       .D(d),
       .Q(q),
       .Co(co));
always #10 clk=~clk;
initial begin
clk=0;
d<=5'b10010;
clrn=0;
loadn=0;
#30 loadn=1;
#20 clrn=1;
end
endmodule

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/779357
推荐阅读
相关标签
  

闽ICP备14008679号